Version 2.12.0-280.0.dev
Merge commit '1be653147440fd4139577791a3eb90503df15bf7' into 'dev'
diff --git a/.dart_tool/package_config.json b/.dart_tool/package_config.json
index c6e4271..429b915 100644
--- a/.dart_tool/package_config.json
+++ b/.dart_tool/package_config.json
@@ -77,7 +77,7 @@
"name": "analyzer",
"rootUri": "../pkg/analyzer",
"packageUri": "lib/",
- "languageVersion": "2.7"
+ "languageVersion": "2.12"
},
{
"name": "analyzer_cli",
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart b/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
index 3135c01..c6cd12aa 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
@@ -4897,73 +4897,97 @@
bool _attemptPrecedenceLevelRecovery(Token token, int precedence,
int currentLevel, bool allowCascades, TypeParamOrArgInfo typeArg) {
// Attempt recovery.
- assert(_token_recovery_replacements.containsKey(token.next!.lexeme));
- TokenType replacement = _token_recovery_replacements[token.next!.lexeme]!;
- if (currentLevel >= 0) {
- // Check that the new precedence and currentLevel would have accepted this
- // replacement here.
- int newLevel = replacement.precedence;
- // The loop it would normally have gone through is something like
- // for (; ; --level) {
- // while (identical(tokenLevel, level)) {
- // }
- // }
- // So if the new tokens level <= the "old" (current) level, [level] (in
- // the above code snippet) would get down to it and accept it.
- // But if the new tokens level > the "old" (current) level, normally we
- // would never get to it - so we shouldn't here either. As the loop starts
- // by taking the first tokens tokenLevel as level, recursing below won't
- // weed that out so we need to do it here.
- if (newLevel > currentLevel) return false;
- }
-
- _currentlyRecovering = true;
_recoverAtPrecedenceLevel = false;
- Listener originalListener = listener;
- TokenStreamRewriter? originalRewriter = cachedRewriter;
- NullListener nullListener = listener = new NullListener();
- UndoableTokenStreamRewriter undoableTokenStreamRewriter =
- new UndoableTokenStreamRewriter();
- cachedRewriter = undoableTokenStreamRewriter;
- rewriter.replaceNextTokenWithSyntheticToken(token, replacement);
- bool acceptRecovery = false;
- Token afterExpression = _parsePrecedenceExpressionLoop(
- precedence, allowCascades, typeArg, token);
+ assert(_tokenRecoveryReplacements.containsKey(token.next!.lexeme));
+ List<TokenType> replacements =
+ _tokenRecoveryReplacements[token.next!.lexeme]!;
+ for (int i = 0; i < replacements.length; i++) {
+ TokenType replacement = replacements[i];
- if (!nullListener.hasErrors &&
- isOneOfOrEof(afterExpression.next!, const [';', ',', ')', '{', '}'])) {
- // Seems good!
- acceptRecovery = true;
- }
+ if (currentLevel >= 0) {
+ // Check that the new precedence and currentLevel would have accepted
+ // this replacement here.
+ int newLevel = replacement.precedence;
+ // The loop it would normally have gone through is something like
+ // for (; ; --level) {
+ // while (identical(tokenLevel, level)) {
+ // }
+ // }
+ // So if the new tokens level <= the "old" (current) level, [level] (in
+ // the above code snippet) would get down to it and accept it.
+ // But if the new tokens level > the "old" (current) level, normally we
+ // would never get to it - so we shouldn't here either.
+ // As the loop starts by taking the first tokens tokenLevel as level,
+ // recursing below won't weed that out so we need to do it here.
+ if (newLevel > currentLevel) continue;
+ }
- // Undo all changes and reset.
- _currentlyRecovering = false;
- undoableTokenStreamRewriter.undo();
- listener = originalListener;
- cachedRewriter = originalRewriter;
-
- if (acceptRecovery) {
- // Report and redo recovery.
- reportRecoverableError(
- token.next!,
- codes.templateBinaryOperatorWrittenOut
- .withArguments(token.next!.lexeme, replacement.lexeme));
+ _currentlyRecovering = true;
+ Listener originalListener = listener;
+ TokenStreamRewriter? originalRewriter = cachedRewriter;
+ NullListener nullListener = listener = new NullListener();
+ UndoableTokenStreamRewriter undoableTokenStreamRewriter =
+ new UndoableTokenStreamRewriter();
+ cachedRewriter = undoableTokenStreamRewriter;
rewriter.replaceNextTokenWithSyntheticToken(token, replacement);
- return true;
+ bool acceptRecovery = false;
+ Token afterExpression = _parsePrecedenceExpressionLoop(
+ precedence, allowCascades, typeArg, token);
+ Token afterExpressionNext = afterExpression.next!;
+
+ if (!nullListener.hasErrors &&
+ token != afterExpression &&
+ (isOneOfOrEof(afterExpressionNext,
+ const [';', ',', ')', '{', '}', '|', '||', '&', '&&']) ||
+ (afterExpressionNext.type == TokenType.IDENTIFIER &&
+ _tokenRecoveryReplacements
+ .containsKey(afterExpressionNext.lexeme)))) {
+ // Seems good!
+ acceptRecovery = true;
+ }
+
+ // Undo all changes and reset.
+ _currentlyRecovering = false;
+ undoableTokenStreamRewriter.undo();
+ listener = originalListener;
+ cachedRewriter = originalRewriter;
+
+ if (acceptRecovery) {
+ // Report and redo recovery.
+ reportRecoverableError(
+ token.next!,
+ codes.templateBinaryOperatorWrittenOut
+ .withArguments(token.next!.lexeme, replacement.lexeme));
+ rewriter.replaceNextTokenWithSyntheticToken(token, replacement);
+ return true;
+ }
}
+
return false;
}
bool _recoverAtPrecedenceLevel = false;
bool _currentlyRecovering = false;
- static const Map<String, TokenType> _token_recovery_replacements = const {
- // E.g. in Kotlin these are written out, see.
+ static const Map<String, List<TokenType>> _tokenRecoveryReplacements = const {
+ // E.g. in Kotlin binary operators are written out, see.
// https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/.
- "xor": TokenType.CARET,
- "and": TokenType.AMPERSAND,
- "or": TokenType.BAR,
- "shl": TokenType.LT_LT,
- "shr": TokenType.GT_GT,
+ "xor": [
+ TokenType.CARET,
+ ],
+ "and": [
+ TokenType.AMPERSAND,
+ TokenType.AMPERSAND_AMPERSAND,
+ ],
+ "or": [
+ TokenType.BAR,
+ TokenType.BAR_BAR,
+ ],
+ "shl": [
+ TokenType.LT_LT,
+ ],
+ "shr": [
+ TokenType.GT_GT,
+ ],
};
int _computePrecedence(Token token) {
@@ -4992,7 +5016,7 @@
// An identifier at this point is not right. So some recovery is going to
// happen soon. The question is, if we can do a better recovery here.
if (!_currentlyRecovering &&
- _token_recovery_replacements.containsKey(token.lexeme)) {
+ _tokenRecoveryReplacements.containsKey(token.lexeme)) {
_recoverAtPrecedenceLevel = true;
}
}
diff --git a/pkg/_fe_analyzer_shared/lib/src/testing/id.dart b/pkg/_fe_analyzer_shared/lib/src/testing/id.dart
index f2821d2..fd2ed54 100644
--- a/pkg/_fe_analyzer_shared/lib/src/testing/id.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/testing/id.dart
@@ -364,7 +364,7 @@
/// Registers [value] with [id] in [actualMap].
///
/// Checks for duplicate data for [id].
- void registerValue(Uri uri, int offset, Id id, T value, Object object) {
+ void registerValue(Uri uri, int offset, Id id, T? value, Object object) {
if (value != null) {
ActualData<T> newData = new ActualData<T>(id, value, uri, offset, object);
if (actualMap.containsKey(id)) {
diff --git a/pkg/_fe_analyzer_shared/lib/src/testing/id_testing.dart b/pkg/_fe_analyzer_shared/lib/src/testing/id_testing.dart
index 4149cca..6494ac3 100644
--- a/pkg/_fe_analyzer_shared/lib/src/testing/id_testing.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/testing/id_testing.dart
@@ -636,7 +636,7 @@
}
typedef Future<Map<String, TestResult<T>>> RunTestFunction<T>(TestData testData,
- {bool testAfterFailures,
+ {required bool testAfterFailures,
bool verbose,
bool succinct,
bool printCode,
diff --git a/pkg/analysis_server/lib/src/analysis_server_abstract.dart b/pkg/analysis_server/lib/src/analysis_server_abstract.dart
index f0db479..caf7177 100644
--- a/pkg/analysis_server/lib/src/analysis_server_abstract.dart
+++ b/pkg/analysis_server/lib/src/analysis_server_abstract.dart
@@ -269,11 +269,6 @@
return null;
}
- /// Return the appropriate analysis session for the file with the given
- /// [path].
- AnalysisSession getAnalysisSession(String path) =>
- getAnalysisDriver(path).currentSession;
-
DartdocDirectiveInfo getDartdocDirectiveInfoFor(ResolvedUnitResult result) {
return declarationsTracker
?.getContext(result.session.analysisContext)
diff --git a/pkg/analysis_server/lib/src/computer/imported_elements_computer.dart b/pkg/analysis_server/lib/src/computer/imported_elements_computer.dart
index e30c41a..8d2c2f4 100644
--- a/pkg/analysis_server/lib/src/computer/imported_elements_computer.dart
+++ b/pkg/analysis_server/lib/src/computer/imported_elements_computer.dart
@@ -31,8 +31,7 @@
if (_regionIncludesDirectives()) {
return const <ImportedElements>[];
}
- var visitor =
- _Visitor(unit.declaredElement.library, offset, offset + length);
+ var visitor = _Visitor(offset, offset + length);
unit.accept(visitor);
return visitor.importedElements.values.toList();
}
@@ -54,9 +53,6 @@
/// The visitor used by an [ImportedElementsComputer] to record the names of all
/// imported elements.
class _Visitor extends UnifyingAstVisitor<void> {
- /// The element representing the library containing the code being visited.
- final LibraryElement containingLibrary;
-
/// The offset of the start of the region of text being copied.
final int startOffset;
@@ -69,7 +65,7 @@
/// Initialize a newly created visitor to visit nodes within a specified
/// region.
- _Visitor(this.containingLibrary, this.startOffset, this.endOffset);
+ _Visitor(this.startOffset, this.endOffset);
@override
void visitNode(AstNode node) {
diff --git a/pkg/analysis_server/lib/src/context_manager.dart b/pkg/analysis_server/lib/src/context_manager.dart
index b8c3793..d3df682 100644
--- a/pkg/analysis_server/lib/src/context_manager.dart
+++ b/pkg/analysis_server/lib/src/context_manager.dart
@@ -60,20 +60,11 @@
/// A list containing paths of removed files.
final List<String> removedFiles = [];
- /// Return `true` if this change set does not contain any changes.
- bool get isEmpty =>
- addedFiles.isEmpty && changedFiles.isEmpty && removedFiles.isEmpty;
-
/// Record that the file with the specified [path] has been added.
void addedSource(String path) {
addedFiles.add(path);
}
- /// Record that the file with the specified [path] has been changed.
- void changedSource(String path) {
- changedFiles.add(path);
- }
-
/// Record that the file with the specified [path] has been removed.
void removedSource(String path) {
removedFiles.add(path);
@@ -172,11 +163,6 @@
/// Returns `true` if [path] should be ignored.
bool ignored(String path) => pathFilter.ignored(path);
- /// Returns `true` if [path] is the package description file for this context
- /// (pubspec.yaml or .packages).
- bool isPathToPackageDescription(String path) =>
- path == packageDescriptionPath;
-
/// Update the set of dependencies for this context.
void setDependencies(Iterable<String> newDependencies) {
_dependencies = newDependencies.toSet();
@@ -346,9 +332,6 @@
/// The name of the `doc` directory.
static const String DOC_DIR_NAME = 'doc';
- /// The name of the `lib` directory.
- static const String LIB_DIR_NAME = 'lib';
-
/// File name of Android manifest files.
static const String MANIFEST_NAME = 'AndroidManifest.xml';
@@ -358,11 +341,6 @@
/// File name of package spec files.
static const String PACKAGE_SPEC_NAME = '.packages';
- /// The name of the key in an embedder file whose value is the list of
- /// libraries in the SDK.
- /// TODO(brianwilkerson) This is also defined in sdk.dart.
- static const String _EMBEDDED_LIB_MAP_KEY = 'embedded_libs';
-
/// The [ResourceProvider] using which paths are converted into [Resource]s.
final ResourceProvider resourceProvider;
@@ -419,9 +397,6 @@
pathContext = resourceProvider.pathContext;
}
- /// Check if this map defines embedded libraries.
- bool definesEmbeddedLibs(Map map) => map[_EMBEDDED_LIB_MAP_KEY] != null;
-
@override
Folder getContextFolderFor(String path) {
return _getInnermostContextInfoFor(path)?.folder;
@@ -1621,14 +1596,6 @@
/// object that resulted from parsing the ".packages" file.
Packages get packages;
- /// Create all the [UriResolver]s which should be used to resolve packages in
- /// contexts governed by this [FolderDisposition].
- ///
- /// [resourceProvider] is provided since it is needed to construct most
- /// [UriResolver]s.
- Iterable<UriResolver> createPackageUriResolvers(
- ResourceProvider resourceProvider);
-
/// Return the locator used to locate the _embedder.yaml file used to
/// configure the SDK. The [resourceProvider] is used to access the file
/// system in cases where that is necessary.
@@ -1647,11 +1614,6 @@
Packages get packages => null;
@override
- Iterable<UriResolver> createPackageUriResolvers(
- ResourceProvider resourceProvider) =>
- const <UriResolver>[];
-
- @override
EmbedderYamlLocator getEmbedderLocator(ResourceProvider resourceProvider) =>
EmbedderYamlLocator(null);
}
@@ -1684,19 +1646,6 @@
}
@override
- Iterable<UriResolver> createPackageUriResolvers(
- ResourceProvider resourceProvider) {
- if (packages != null) {
- var packageMap = buildPackageMap(resourceProvider);
- return <UriResolver>[
- PackageMapUriResolver(resourceProvider, packageMap),
- ];
- } else {
- return const <UriResolver>[];
- }
- }
-
- @override
EmbedderYamlLocator getEmbedderLocator(ResourceProvider resourceProvider) {
_embedderLocator ??= EmbedderYamlLocator(buildPackageMap(resourceProvider));
return _embedderLocator;
diff --git a/pkg/analysis_server/lib/src/domain_diagnostic.dart b/pkg/analysis_server/lib/src/domain_diagnostic.dart
index 58a03a6..747fb93 100644
--- a/pkg/analysis_server/lib/src/domain_diagnostic.dart
+++ b/pkg/analysis_server/lib/src/domain_diagnostic.dart
@@ -62,11 +62,3 @@
return null;
}
}
-
-class MemoryCpuSample {
- final DateTime time;
- final double cpuPercentage;
- final int memoryKB;
-
- MemoryCpuSample(this.time, this.cpuPercentage, this.memoryKB);
-}
diff --git a/pkg/analysis_server/lib/src/flutter/flutter_correction.dart b/pkg/analysis_server/lib/src/flutter/flutter_correction.dart
deleted file mode 100644
index 0ca0ab0..0000000
--- a/pkg/analysis_server/lib/src/flutter/flutter_correction.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2018, 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.
-
-import 'package:analysis_server/src/services/correction/util.dart';
-import 'package:analyzer/dart/analysis/results.dart';
-import 'package:analyzer/dart/ast/ast.dart';
-import 'package:analyzer/src/dart/ast/utilities.dart';
-import 'package:meta/meta.dart';
-
-class FlutterCorrections {
- final ResolvedUnitResult resolveResult;
- final int selectionOffset;
- final int selectionLength;
- final int selectionEnd;
-
- final CorrectionUtils utils;
-
- AstNode node;
-
- FlutterCorrections(
- {@required this.resolveResult,
- @required this.selectionOffset,
- @required this.selectionLength})
- : assert(resolveResult != null),
- assert(selectionOffset != null),
- assert(selectionLength != null),
- selectionEnd = selectionOffset + selectionLength,
- utils = CorrectionUtils(resolveResult) {
- node = NodeLocator(selectionOffset, selectionEnd)
- .searchWithin(resolveResult.unit);
- }
-
- /// Returns the EOL to use for this [CompilationUnit].
- String get eol => utils.endOfLine;
-}
diff --git a/pkg/analysis_server/lib/src/protocol/protocol_internal.dart b/pkg/analysis_server/lib/src/protocol/protocol_internal.dart
index c7c93b7..17d4837 100644
--- a/pkg/analysis_server/lib/src/protocol/protocol_internal.dart
+++ b/pkg/analysis_server/lib/src/protocol/protocol_internal.dart
@@ -17,42 +17,6 @@
final Map<String, RefactoringKind> REQUEST_ID_REFACTORING_KINDS =
HashMap<String, RefactoringKind>();
-/// Adds the given [sourceEdits] to the list in [sourceFileEdit].
-void addAllEditsForSource(
- SourceFileEdit sourceFileEdit, Iterable<SourceEdit> edits) {
- edits.forEach(sourceFileEdit.add);
-}
-
-/// Adds the given [sourceEdit] to the list in [sourceFileEdit].
-void addEditForSource(SourceFileEdit sourceFileEdit, SourceEdit sourceEdit) {
- var edits = sourceFileEdit.edits;
- var index = 0;
- while (index < edits.length && edits[index].offset > sourceEdit.offset) {
- index++;
- }
- edits.insert(index, sourceEdit);
-}
-
-/// Adds [edit] to the [FileEdit] for the given [file].
-void addEditToSourceChange(
- SourceChange change, String file, int fileStamp, SourceEdit edit) {
- var fileEdit = change.getFileEdit(file);
- if (fileEdit == null) {
- fileEdit = SourceFileEdit(file, fileStamp);
- change.addFileEdit(fileEdit);
- }
- fileEdit.add(edit);
-}
-
-/// Get the result of applying the edit to the given [code]. Access via
-/// SourceEdit.apply().
-String applyEdit(String code, SourceEdit edit) {
- if (edit.length < 0) {
- throw RangeError('length is negative');
- }
- return code.replaceRange(edit.offset, edit.end, edit.replacement);
-}
-
/// Get the result of applying a set of [edits] to the given [code]. Edits
/// are applied in the order they appear in [edits]. Access via
/// SourceEdit.applySequence().
@@ -63,16 +27,6 @@
return code;
}
-/// Returns the [FileEdit] for the given [file], maybe `null`.
-SourceFileEdit getChangeFileEdit(SourceChange change, String file) {
- for (var fileEdit in change.edits) {
- if (fileEdit.file == file) {
- return fileEdit;
- }
- }
- return null;
-}
-
/// Compare the lists [listA] and [listB], using [itemEqual] to compare
/// list elements.
bool listEqual<T1, T2>(
@@ -141,28 +95,6 @@
return result;
}
-RefactoringProblemSeverity maxRefactoringProblemSeverity(
- RefactoringProblemSeverity a, RefactoringProblemSeverity b) {
- if (b == null) {
- return a;
- }
- if (a == null) {
- return b;
- } else if (a == RefactoringProblemSeverity.INFO) {
- return b;
- } else if (a == RefactoringProblemSeverity.WARNING) {
- if (b == RefactoringProblemSeverity.ERROR ||
- b == RefactoringProblemSeverity.FATAL) {
- return b;
- }
- } else if (a == RefactoringProblemSeverity.ERROR) {
- if (b == RefactoringProblemSeverity.FATAL) {
- return b;
- }
- }
- return a;
-}
-
/// Create a [RefactoringFeedback] corresponding the given [kind].
RefactoringFeedback refactoringFeedbackFromJson(
JsonDecoder jsonDecoder, String jsonPath, Object json, Map feedbackJson) {
@@ -212,11 +144,6 @@
return null;
}
-/// Type of callbacks used to decode parts of JSON objects. [jsonPath] is a
-/// string describing the part of the JSON object being decoded, and [value] is
-/// the part to decode.
-typedef JsonDecoderCallback<E> = E Function(String jsonPath, Object value);
-
/// Instances of the class [HasToJson] implement [toJson] method that returns
/// a JSON presentation.
abstract class HasToJson {
diff --git a/pkg/analysis_server/lib/src/provisional/completion/completion_core.dart b/pkg/analysis_server/lib/src/provisional/completion/completion_core.dart
index 88b348e..7f3c747 100644
--- a/pkg/analysis_server/lib/src/provisional/completion/completion_core.dart
+++ b/pkg/analysis_server/lib/src/provisional/completion/completion_core.dart
@@ -5,7 +5,6 @@
import 'package:analyzer/dart/analysis/results.dart';
import 'package:analyzer/file_system/file_system.dart';
import 'package:analyzer/src/generated/source.dart';
-import 'package:analyzer_plugin/protocol/protocol_common.dart';
/// [AbortCompletion] is thrown when the current completion request
/// should be aborted because either
@@ -13,17 +12,6 @@
/// a new completion request was received.
class AbortCompletion {}
-/// An object used to produce completions at a specific location within a file.
-///
-/// Clients may implement this class when implementing plugins.
-abstract class CompletionContributor {
- /// Return a [Future] that completes with a list of suggestions
- /// for the given completion [request]. This will
- /// throw [AbortCompletion] if the completion request has been aborted.
- Future<List<CompletionSuggestion>> computeSuggestions(
- CompletionRequest request);
-}
-
/// The information about a requested list of completions.
///
/// Clients may not extend, implement or mix-in this class.
diff --git a/pkg/analysis_server/lib/src/server/crash_reporting.dart b/pkg/analysis_server/lib/src/server/crash_reporting.dart
index c76bba4..4849825 100644
--- a/pkg/analysis_server/lib/src/server/crash_reporting.dart
+++ b/pkg/analysis_server/lib/src/server/crash_reporting.dart
@@ -17,7 +17,7 @@
@override
void logException(dynamic exception,
[StackTrace stackTrace,
- List<InstrumentationServiceAttachment> attachments]) {
+ List<InstrumentationServiceAttachment> attachments = const []]) {
var crashReportAttachments = (attachments ?? []).map((e) {
return CrashReportAttachment.string(
field: 'attachment_${e.id}',
diff --git a/pkg/analysis_server/lib/src/server/error_notifier.dart b/pkg/analysis_server/lib/src/server/error_notifier.dart
index 1b911cf..a69f1f0 100644
--- a/pkg/analysis_server/lib/src/server/error_notifier.dart
+++ b/pkg/analysis_server/lib/src/server/error_notifier.dart
@@ -10,7 +10,7 @@
@override
void logException(dynamic exception,
[StackTrace stackTrace,
- List<InstrumentationServiceAttachment> attachments]) {
+ List<InstrumentationServiceAttachment> attachments = const []]) {
if (exception is SilentException) {
// Silent exceptions should not be reported to the user.
return;
@@ -34,6 +34,6 @@
/// Server may throw a [FatalException] to send a fatal error response to the
/// IDEs.
class FatalException extends CaughtException {
- FatalException(String message, Object exception, stackTrace)
+ FatalException(String message, Object exception, StackTrace stackTrace)
: super.withMessage(message, exception, stackTrace);
}
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/completion_ranking_internal.dart b/pkg/analysis_server/lib/src/services/completion/dart/completion_ranking_internal.dart
index 0c53e90..c853976 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/completion_ranking_internal.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/completion_ranking_internal.dart
@@ -5,8 +5,6 @@
import 'package:_fe_analyzer_shared/src/scanner/scanner.dart';
import 'package:analysis_server/src/protocol_server.dart';
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
-import 'package:analysis_server/src/services/correction/util.dart';
-import 'package:analyzer/dart/analysis/features.dart';
import 'package:analyzer/dart/ast/ast.dart';
/// Fuzzy matching between static analysis and model-predicted lexemes
@@ -64,23 +62,6 @@
return result.reversed.toList(growable: false);
}
-/// Constructs a [CompletionSuggestion] object.
-CompletionSuggestion createCompletionSuggestion(
- String completion, FeatureSet featureSet, int relevance) {
- final tokens = TokenUtils.getTokens(completion, featureSet);
- final token = tokens.isNotEmpty ? tokens[0] : null;
- final completionKind = token != null && token.isKeyword
- ? CompletionSuggestionKind.KEYWORD
- : CompletionSuggestionKind.IDENTIFIER;
- if (isLiteral(completion) &&
- (completion.startsWith('"package:') ||
- completion.startsWith('\'package:'))) {
- completion = completion.replaceAll('\'', '').replaceAll('\"', '');
- }
- return CompletionSuggestion(completionKind, relevance, completion,
- completion.length, 0, false, false);
-}
-
/// Maps included relevance tags formatted as
/// '${element.librarySource.uri}::${element.name}' to element.name.
String elementNameFromRelevanceTag(String tag) {
@@ -173,32 +154,6 @@
.toList();
}
-bool testFollowingDot(DartCompletionRequest request) {
- final token = getCurrentToken(request);
- return isTokenDot(token) || isTokenDot(token.previous);
-}
-
-bool testInsideQuotes(DartCompletionRequest request) {
- final token = getCurrentToken(request);
- if (token == null || token.isSynthetic) {
- return false;
- }
-
- final cursorOffset = request.offset;
- if (cursorOffset == token.offset ||
- cursorOffset == token.offset + token.length) {
- // We are not inside the current token, quoted or otherwise.
- return false;
- }
-
- final lexeme = token.lexeme;
- if (lexeme.length > 2 && lexeme[0] == 'r') {
- return lexeme[1] == "'" || lexeme[1] == '"';
- }
-
- return lexeme.length > 1 && (lexeme[0] == "'" || lexeme[0] == '"');
-}
-
/// Tests whether all completion suggestions are for named arguments.
bool testNamedArgument(List<CompletionSuggestion> suggestions) {
if (suggestions == null) {
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/extension_member_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/extension_member_contributor.dart
index 5d17ae8..f127ec1 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/extension_member_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/extension_member_contributor.dart
@@ -74,7 +74,7 @@
}
}
if (expression is ExtensionOverride) {
- _addInstanceMembers(expression.staticElement, -1.0);
+ _addInstanceMembers(expression.staticElement, 0.0);
} else {
var type = expression.staticType;
if (type == null) {
@@ -96,12 +96,10 @@
var extendedType =
_resolveExtendedType(containingLibrary, extension, type);
if (extendedType != null && typeSystem.isSubtypeOf(type, extendedType)) {
- double inheritanceDistance;
+ var inheritanceDistance = 0.0;
if (type is InterfaceType && extendedType is InterfaceType) {
inheritanceDistance = memberBuilder.request.featureComputer
.inheritanceDistanceFeature(type.element, extendedType.element);
- } else {
- inheritanceDistance = -1;
}
// TODO(brianwilkerson) We might want to apply the substitution to the
// members of the extension for display purposes.
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart b/pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart
index bb8262f..6461fbf 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart
@@ -10,6 +10,7 @@
show ElementKind;
import 'package:analysis_server/src/services/completion/dart/relevance_tables.g.dart';
import 'package:analysis_server/src/utilities/extensions/element.dart';
+import 'package:analysis_server/src/utilities/extensions/numeric.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/dart/ast/visitor.dart';
@@ -65,20 +66,56 @@
}
/// Convert a relevance score (assumed to be between `0.0` and `1.0` inclusive)
-/// to a relevance value between `0` and `1000`. If the score is outside that
-/// range, return the [defaultValue].
-int toRelevance(double score, int defaultValue) {
- if (score < 0.0 || score > 1.0) {
- return defaultValue;
- }
+/// to a relevance value between `0` and `1000`.
+int toRelevance(double score) {
+ assert(score.between(0.0, 1.0));
return (score * 1000).truncate();
}
+/// Return the weighted average of the given values, applying some constant and
+/// predetermined weights.
+double weightedAverage(
+ {double contextType = 0.0,
+ double elementKind = 0.0,
+ double hasDeprecated = 0.0,
+ double inheritanceDistance = 0.0,
+ double isConstant = 0.0,
+ double localVariableDistance = 0.0,
+ double startsWithDollar = 0.0,
+ double superMatches = 0.0}) {
+ assert(contextType.between(0.0, 1.0));
+ assert(elementKind.between(0.0, 1.0));
+ assert(hasDeprecated.between(-1.0, 0.0));
+ assert(inheritanceDistance.between(0.0, 1.0));
+ assert(isConstant.between(0.0, 1.0));
+ assert(localVariableDistance.between(0.0, 1.0));
+ assert(startsWithDollar.between(-1.0, 0.0));
+ assert(superMatches.between(0.0, 1.0));
+ var average = _weightedAverage([
+ contextType,
+ elementKind,
+ hasDeprecated,
+ inheritanceDistance,
+ isConstant,
+ localVariableDistance,
+ startsWithDollar,
+ superMatches,
+ ], [
+ 1.00, // contextType
+ 1.00, // elementKind
+ 0.50, // hasDeprecated
+ 1.00, // inheritanceDistance
+ 1.00, // isConstant
+ 1.00, // localVariableDistance
+ 0.50, // startsWithDollar
+ 1.00, // superMatches
+ ]);
+ return (average + 1.0) / 2.0;
+}
+
/// Return the weighted average of the given [values], applying the given
/// [weights]. The number of weights must be equal to the number of values.
-/// Values less than `0.0` are ignored. If there are no non-negative values then
-/// a negative value will be returned.
-double weightedAverage(List<double> values, List<double> weights) {
+double _weightedAverage(List<double> values, List<double> weights) {
assert(values.length == weights.length);
var totalValue = 0.0;
var totalWeight = 0.0;
@@ -86,12 +123,7 @@
var value = values[i];
var weight = weights[i];
totalWeight += weight;
- if (value >= 0.0) {
- totalValue += value * weight;
- }
- }
- if (totalWeight == 0.0) {
- return -1.0;
+ totalValue += value * weight;
}
return totalValue / totalWeight;
}
@@ -175,7 +207,7 @@
double contextTypeFeature(DartType contextType, DartType elementType) {
if (contextType == null || elementType == null) {
// Disable the feature if we don't have both types.
- return -1.0;
+ return 0.0;
}
if (elementType == contextType) {
// Exact match.
@@ -198,11 +230,11 @@
double elementKindFeature(Element element, String completionLocation,
{int distance}) {
if (completionLocation == null) {
- return -1.0;
+ return 0.0;
}
var locationTable = elementKindRelevance[completionLocation];
if (locationTable == null) {
- return -1.0;
+ return 0.0;
}
var range = locationTable[computeElementKind(element)];
if (range == null) {
@@ -216,7 +248,7 @@
/// Return the value of the _has deprecated_ feature for the given [element].
double hasDeprecatedFeature(Element element) {
- return element.hasOrInheritsDeprecated ? 0.0 : 1.0;
+ return element.hasOrInheritsDeprecated ? -1.0 : 0.0;
}
/// Return the inheritance distance between the [subclass] and the
@@ -261,11 +293,11 @@
/// completing at the given [completionLocation].
double keywordFeature(String keyword, String completionLocation) {
if (completionLocation == null) {
- return -1.0;
+ return 0.0;
}
var locationTable = keywordRelevance[completionLocation];
if (locationTable == null) {
- return -1.0;
+ return 0.0;
}
var range = locationTable[keyword];
if (range == null) {
@@ -366,21 +398,22 @@
}
/// Return the value of the _starts with dollar_ feature.
- double startsWithDollarFeature(String name) =>
- name.startsWith('\$') ? 0.0 : 1.0;
+ double startsWithDollarFeature(String name) {
+ return name.startsWith('\$') ? -1.0 : 0.0;
+ }
/// Return the value of the _super matches_ feature.
double superMatchesFeature(
String containingMethodName, String proposedMemberName) =>
containingMethodName == null
- ? -1.0
+ ? 0.0
: (proposedMemberName == containingMethodName ? 1.0 : 0.0);
/// Convert a [distance] to a percentage value and return the percentage. If
- /// the [distance] is negative, return `-1.0`.
+ /// the [distance] is negative, return `0.0`.
double _distanceToPercent(int distance) {
if (distance < 0) {
- return -1.0;
+ return 0.0;
}
return math.pow(0.98, distance);
}
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/local_library_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/local_library_contributor.dart
index 32e454f..df8ec96 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/local_library_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/local_library_contributor.dart
@@ -112,7 +112,7 @@
if (opType.includeReturnValueSuggestions) {
var parent = element.enclosingElement;
if (parent is ClassElement || parent is ExtensionElement) {
- builder.suggestAccessor(element, inheritanceDistance: -1.0);
+ builder.suggestAccessor(element, inheritanceDistance: 0.0);
} else {
builder.suggestTopLevelPropertyAccessor(element, prefix: prefix);
}
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/local_reference_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/local_reference_contributor.dart
index 53fed10..d92cc04 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/local_reference_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/local_reference_contributor.dart
@@ -270,7 +270,7 @@
opType.includeReturnValueSuggestions &&
(!opType.inStaticMethodBody || fieldDecl.isStatic)) ||
suggestLocalFields) {
- var inheritanceDistance = -1.0;
+ var inheritanceDistance = 0.0;
var enclosingClass = request.target.containingNode
.thisOrAncestorOfType<ClassDeclaration>();
if (enclosingClass != null) {
@@ -341,7 +341,7 @@
(opType.includeReturnValueSuggestions ||
opType.includeVoidReturnSuggestions) &&
(!opType.inStaticMethodBody || declaration.isStatic)) {
- var inheritanceDistance = -1.0;
+ var inheritanceDistance = 0.0;
var enclosingClass = request.target.containingNode
.thisOrAncestorOfType<ClassDeclaration>();
if (enclosingClass != null) {
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/static_member_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/static_member_contributor.dart
index 5c33b59..102365e 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/static_member_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/static_member_contributor.dart
@@ -36,7 +36,7 @@
if (accessor.isStatic &&
!accessor.isSynthetic &&
isVisible(accessor)) {
- builder.suggestAccessor(accessor, inheritanceDistance: -1.0);
+ builder.suggestAccessor(accessor, inheritanceDistance: 0.0);
}
}
for (var constructor in element.constructors) {
@@ -48,12 +48,12 @@
if (field.isStatic &&
(!field.isSynthetic || element.isEnum) &&
isVisible(field)) {
- builder.suggestField(field, inheritanceDistance: -1.0);
+ builder.suggestField(field, inheritanceDistance: 0.0);
}
}
for (var method in element.methods) {
if (method.isStatic && isVisible(method)) {
- builder.suggestMethod(method, inheritanceDistance: -1.0);
+ builder.suggestMethod(method, inheritanceDistance: 0.0);
}
}
} else if (element is ExtensionElement) {
@@ -61,17 +61,17 @@
if (accessor.isStatic &&
!accessor.isSynthetic &&
isVisible(accessor)) {
- builder.suggestAccessor(accessor, inheritanceDistance: -1.0);
+ builder.suggestAccessor(accessor, inheritanceDistance: 0.0);
}
}
for (var field in element.fields) {
if (field.isStatic && !field.isSynthetic && isVisible(field)) {
- builder.suggestField(field, inheritanceDistance: -1.0);
+ builder.suggestField(field, inheritanceDistance: 0.0);
}
}
for (var method in element.methods) {
if (method.isStatic && isVisible(method)) {
- builder.suggestMethod(method, inheritanceDistance: -1.0);
+ builder.suggestMethod(method, inheritanceDistance: 0.0);
}
}
}
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart b/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart
index 276c615..edc41bb 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart
@@ -222,7 +222,7 @@
var hasDeprecated = featureComputer.hasDeprecatedFeature(accessor);
var isConstant = request.inConstantContext
? featureComputer.isConstantFeature(accessor)
- : -1.0;
+ : 0.0;
var startsWithDollar =
featureComputer.startsWithDollarFeature(accessor.name);
var superMatches = featureComputer.superMatchesFeature(
@@ -240,6 +240,7 @@
elementKind: elementKind,
hasDeprecated: hasDeprecated,
inheritanceDistance: inheritanceDistance,
+ isConstant: isConstant,
startsWithDollar: startsWithDollar,
superMatches: superMatches);
_add(_createSuggestion(accessor, relevance: relevance));
@@ -254,12 +255,16 @@
var elementKind = _computeElementKind(parameter);
var isConstant = request.inConstantContext
? request.featureComputer.isConstantFeature(parameter)
- : -1.0;
- var relevance = toRelevance(
- weightedAverage(
- [contextType, elementKind, isConstant], [1.0, 1.0, 1.0]),
- 800);
- listener?.computedFeatures(contextType: contextType);
+ : 0.0;
+ var score = weightedAverage(
+ contextType: contextType,
+ elementKind: elementKind,
+ isConstant: isConstant);
+ var relevance = toRelevance(score);
+ listener?.computedFeatures(
+ contextType: contextType,
+ elementKind: elementKind,
+ isConstant: isConstant);
_add(_createSuggestion(parameter,
elementKind: protocol.ElementKind.PARAMETER, relevance: relevance));
}
@@ -431,7 +436,7 @@
var hasDeprecated = featureComputer.hasDeprecatedFeature(field);
var isConstant = request.inConstantContext
? featureComputer.isConstantFeature(field)
- : -1.0;
+ : 0.0;
var startsWithDollar = featureComputer.startsWithDollarFeature(field.name);
var superMatches =
featureComputer.superMatchesFeature(_containingMemberName, field.name);
@@ -448,6 +453,7 @@
elementKind: elementKind,
hasDeprecated: hasDeprecated,
inheritanceDistance: inheritanceDistance,
+ isConstant: isConstant,
startsWithDollar: startsWithDollar,
superMatches: superMatches);
_add(_createSuggestion(field, relevance: relevance));
@@ -490,11 +496,11 @@
/// Add a suggestion for a [keyword]. The [offset] is the offset from the
/// beginning of the keyword where the cursor will be left.
void suggestKeyword(String keyword, {int offset}) {
+ var keywordFeature = request.featureComputer
+ .keywordFeature(keyword, request.opType.completionLocation);
// TODO(brianwilkerson) The default value should probably be a constant.
- var relevance = toRelevance(
- request.featureComputer
- .keywordFeature(keyword, request.opType.completionLocation),
- 800);
+ var relevance = toRelevance(keywordFeature);
+ listener?.computedFeatures(keyword: keywordFeature);
_add(CompletionSuggestion(CompletionSuggestionKind.KEYWORD, relevance,
keyword, offset ?? keyword.length, 0, false, false));
}
@@ -526,20 +532,28 @@
/// Add a suggestion for a local [variable].
void suggestLocalVariable(LocalVariableElement variable) {
var variableType = variable.type;
+ var target = request.target;
+ var entity = target.entity;
+ var node = entity is AstNode ? entity : target.containingNode;
var contextType = request.featureComputer
.contextTypeFeature(request.contextType, variableType);
var elementKind = _computeElementKind(variable);
var isConstant = request.inConstantContext
? request.featureComputer.isConstantFeature(variable)
- : -1.0;
- var localVariableDistance = request.featureComputer
- .localVariableDistanceFeature(request.target.containingNode, variable);
- var relevance = toRelevance(
- weightedAverage(
- [contextType, elementKind, isConstant, localVariableDistance],
- [1.0, 1.0, 1.0, 1.0]),
- 800);
- listener?.computedFeatures(contextType: contextType);
+ : 0.0;
+ var localVariableDistance =
+ request.featureComputer.localVariableDistanceFeature(node, variable);
+ var score = weightedAverage(
+ contextType: contextType,
+ elementKind: elementKind,
+ isConstant: isConstant,
+ localVariableDistance: localVariableDistance);
+ var relevance = toRelevance(score);
+ listener?.computedFeatures(
+ contextType: contextType,
+ elementKind: elementKind,
+ isConstant: isConstant,
+ localVariableDistance: localVariableDistance);
_add(_createSuggestion(variable, relevance: relevance));
}
@@ -560,7 +574,7 @@
var hasDeprecated = featureComputer.hasDeprecatedFeature(method);
var isConstant = request.inConstantContext
? featureComputer.isConstantFeature(method)
- : -1.0;
+ : 0.0;
var startsWithDollar = featureComputer.startsWithDollarFeature(method.name);
var superMatches =
featureComputer.superMatchesFeature(_containingMemberName, method.name);
@@ -577,6 +591,7 @@
elementKind: elementKind,
hasDeprecated: hasDeprecated,
inheritanceDistance: inheritanceDistance,
+ isConstant: isConstant,
startsWithDollar: startsWithDollar,
superMatches: superMatches);
@@ -752,12 +767,16 @@
var elementKind = _computeElementKind(parameter);
var isConstant = request.inConstantContext
? request.featureComputer.isConstantFeature(parameter)
- : -1.0;
- var relevance = toRelevance(
- weightedAverage(
- [contextType, elementKind, isConstant], [1.0, 1.0, 1.0]),
- 800);
- listener?.computedFeatures(contextType: contextType);
+ : 0.0;
+ var score = weightedAverage(
+ contextType: contextType,
+ elementKind: elementKind,
+ isConstant: isConstant);
+ var relevance = toRelevance(score);
+ listener?.computedFeatures(
+ contextType: contextType,
+ elementKind: elementKind,
+ isConstant: isConstant);
_add(_createSuggestion(parameter, relevance: relevance));
}
@@ -767,7 +786,8 @@
// TODO(brianwilkerson) If we are in a constant context it would be nice
// to promote prefixes for libraries that define constants, but that
// might be more work than it's worth.
- var relevance = toRelevance(elementKind, Relevance.prefix);
+ var score = weightedAverage(elementKind: elementKind);
+ var relevance = toRelevance(score);
listener?.computedFeatures(elementKind: elementKind);
_add(_createSuggestion(library,
completion: prefix,
@@ -815,24 +835,29 @@
featureComputer.contextTypeFeature(request.contextType, type);
var elementKind = _computeElementKind(accessor);
var hasDeprecated = featureComputer.hasDeprecatedFeature(accessor);
+ var inheritanceDistance = 0.0;
var isConstant = request.inConstantContext
? featureComputer.isConstantFeature(accessor)
- : -1.0;
+ : 0.0;
var startsWithDollar =
featureComputer.startsWithDollarFeature(accessor.name);
+ var superMatches = 0.0;
var relevance = _computeMemberRelevance(
contextType: contextType,
elementKind: elementKind,
hasDeprecated: hasDeprecated,
- inheritanceDistance: -1.0,
+ inheritanceDistance: inheritanceDistance,
isConstant: isConstant,
startsWithDollar: startsWithDollar,
- superMatches: -1.0);
+ superMatches: superMatches);
listener?.computedFeatures(
contextType: contextType,
elementKind: elementKind,
hasDeprecated: hasDeprecated,
- startsWithDollar: startsWithDollar);
+ inheritanceDistance: inheritanceDistance,
+ isConstant: isConstant,
+ startsWithDollar: startsWithDollar,
+ superMatches: superMatches);
_add(_createSuggestion(accessor, prefix: prefix, relevance: relevance));
}
}
@@ -857,7 +882,7 @@
{CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION,
String prefix}) {
var relevance = _computeTopLevelRelevance(typeAlias,
- defaultRelevance: 750, elementType: _instantiateTypeAlias(typeAlias));
+ elementType: _instantiateTypeAlias(typeAlias));
_add(_createSuggestion(typeAlias,
kind: kind, prefix: prefix, relevance: relevance));
}
@@ -867,11 +892,12 @@
var elementKind = _computeElementKind(parameter);
var isConstant = request.inConstantContext
? request.featureComputer.isConstantFeature(parameter)
- : -1.0;
- var relevance = toRelevance(
- weightedAverage([elementKind, isConstant], [1.0, 1.0]),
- Relevance.typeParameter);
- listener?.computedFeatures(elementKind: elementKind);
+ : 0.0;
+ var score =
+ weightedAverage(elementKind: elementKind, isConstant: isConstant);
+ var relevance = toRelevance(score);
+ listener?.computedFeatures(
+ elementKind: elementKind, isConstant: isConstant);
_add(_createSuggestion(parameter,
kind: CompletionSuggestionKind.IDENTIFIER, relevance: relevance));
}
@@ -936,29 +962,20 @@
@required double isConstant,
@required double startsWithDollar,
@required double superMatches}) {
- var score = weightedAverage([
- contextType,
- elementKind,
- hasDeprecated,
- inheritanceDistance,
- isConstant,
- startsWithDollar,
- superMatches
- ], [
- 1.00, // contextType
- 0.75, // elementKind
- 0.50, // hasDeprecated
- 1.00, // inheritanceDistance
- 1.00, // isConstant
- 0.50, // startsWithDollar
- 1.00, // superMatches
- ]);
- return toRelevance(score, Relevance.member);
+ var score = weightedAverage(
+ contextType: contextType,
+ elementKind: elementKind,
+ hasDeprecated: hasDeprecated,
+ inheritanceDistance: inheritanceDistance,
+ isConstant: isConstant,
+ startsWithDollar: startsWithDollar,
+ superMatches: superMatches);
+ return toRelevance(score);
}
/// Return the relevance score for a top-level [element].
int _computeTopLevelRelevance(Element element,
- {int defaultRelevance = 800, @required DartType elementType}) {
+ {@required DartType elementType}) {
// TODO(brianwilkerson) The old relevance computation used a signal based
// on whether the element being suggested was from the same library in
// which completion is being performed. Explore whether that's a useful
@@ -970,15 +987,18 @@
var hasDeprecated = featureComputer.hasDeprecatedFeature(element);
var isConstant = request.inConstantContext
? featureComputer.isConstantFeature(element)
- : -1.0;
- var relevance = toRelevance(
- weightedAverage([contextType, elementKind, hasDeprecated, isConstant],
- [1.0, 0.75, 0.2, 1.0]),
- defaultRelevance);
+ : 0.0;
+ var score = weightedAverage(
+ contextType: contextType,
+ elementKind: elementKind,
+ hasDeprecated: hasDeprecated,
+ isConstant: isConstant);
+ var relevance = toRelevance(score);
listener?.computedFeatures(
contextType: contextType,
elementKind: elementKind,
- hasDeprecated: hasDeprecated);
+ hasDeprecated: hasDeprecated,
+ isConstant: isConstant);
return relevance;
}
@@ -1117,14 +1137,16 @@
void builtSuggestion(protocol.CompletionSuggestion suggestion);
/// Invoked with the values of the features that were computed in the process
- /// of building a suggestion. This method is only invoked when using the new
- /// relevance computations. If invoked, it is invoked prior to invoking
+ /// of building a suggestion. This method is invoked prior to invoking
/// [builtSuggestion].
void computedFeatures(
{double contextType,
double elementKind,
double hasDeprecated,
double inheritanceDistance,
+ double isConstant,
+ double keyword,
+ double localVariableDistance,
double startsWithDollar,
double superMatches});
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/utilities.dart b/pkg/analysis_server/lib/src/services/completion/dart/utilities.dart
index 3a3c9ae..5eaa1c5 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/utilities.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/utilities.dart
@@ -220,19 +220,6 @@
}
}
-/// Return `true` if the @deprecated annotation is present on the given [node].
-bool isDeprecated(AnnotatedNode node) {
- if (node != null) {
- var metadata = node.metadata;
- if (metadata != null) {
- return metadata.any((Annotation a) {
- return a.name is SimpleIdentifier && a.name.name == 'deprecated';
- });
- }
- }
- return false;
-}
-
/// Return name of the type of the given [identifier], or, if it unresolved, the
/// name of its declared [declaredType].
String nameForType(SimpleIdentifier identifier, TypeAnnotation declaredType) {
diff --git a/pkg/analysis_server/lib/src/services/correction/util.dart b/pkg/analysis_server/lib/src/services/correction/util.dart
index 46b3f03..b9a8e93 100644
--- a/pkg/analysis_server/lib/src/services/correction/util.dart
+++ b/pkg/analysis_server/lib/src/services/correction/util.dart
@@ -164,16 +164,6 @@
return ranges;
}
-/// Return the given [element] if it is a [CompilationUnitElement].
-/// Return the enclosing [CompilationUnitElement] of the given [element],
-/// maybe `null`.
-CompilationUnitElement getCompilationUnitElement(Element element) {
- if (element is CompilationUnitElement) {
- return element;
- }
- return element.thisOrAncestorOfType();
-}
-
String getDefaultValueCode(DartType type) {
if (type != null) {
if (type.isDartCoreBool) {
diff --git a/pkg/analysis_server/lib/src/services/flutter/class_description.dart b/pkg/analysis_server/lib/src/services/flutter/class_description.dart
index 5ab9dca..f3b8a83 100644
--- a/pkg/analysis_server/lib/src/services/flutter/class_description.dart
+++ b/pkg/analysis_server/lib/src/services/flutter/class_description.dart
@@ -21,17 +21,9 @@
final ClassElement element;
final ConstructorElement constructor;
- /// Mapping from a parameter to the default code for the corresponding
- /// argument in a new instance creation that calls the [constructor].
- ///
- /// TODO(scheglov) Should be a generator, not just [String].
- /// In general case we might need to import some libraries.
- final Map<ParameterElement, String> parameterToDefaultCode;
-
ClassDescription(
this.element,
this.constructor,
- this.parameterToDefaultCode,
);
}
@@ -71,16 +63,13 @@
var constructor = element.unnamedConstructor;
if (constructor == null) return null;
- var parameters = constructor.parameters;
- var defaultValueMap = <ParameterElement, String>{};
-
- for (var parameter in parameters) {
+ for (var parameter in constructor.parameters) {
if (parameter.isNotOptional || parameter.hasRequired) {
return null;
}
}
- return ClassDescription(element, constructor, defaultValueMap);
+ return ClassDescription(element, constructor);
}
bool _isOptedInClass(ClassElement element) {
diff --git a/pkg/analysis_server/lib/src/utilities/extensions/numeric.dart b/pkg/analysis_server/lib/src/utilities/extensions/numeric.dart
new file mode 100644
index 0000000..005763f
--- /dev/null
+++ b/pkg/analysis_server/lib/src/utilities/extensions/numeric.dart
@@ -0,0 +1,9 @@
+// Copyright (c) 2021, 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.
+
+extension DoubleExtensions on double {
+ /// Return `true` if this value is between the [lower] and [upper] bound,
+ /// inclusive.
+ bool between(double lower, double upper) => lower <= this && this <= upper;
+}
diff --git a/pkg/analysis_server/test/analysis/get_hover_test.dart b/pkg/analysis_server/test/analysis/get_hover_test.dart
index 060a52a..d1133a8 100644
--- a/pkg/analysis_server/test/analysis/get_hover_test.dart
+++ b/pkg/analysis_server/test/analysis/get_hover_test.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analysis_server/protocol/protocol_generated.dart';
+import 'package:meta/meta.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -16,7 +17,8 @@
}
@reflectiveTest
-class AnalysisHoverTest extends AbstractAnalysisTest {
+class AnalysisHoverTest extends AbstractAnalysisTest
+ with WithNonFunctionTypeAliasesMixin {
Future<HoverInformation> prepareHover(String search) {
var offset = findOffset(search);
return prepareHoverAt(offset);
@@ -829,4 +831,59 @@
expect(hover.elementDescription, 'void set foo(int x)');
expect(hover.elementKind, 'setter');
}
+
+ Future<void> test_simpleIdentifier_typedef_functionType() async {
+ addTestFile('''
+typedef A = void Function(int);
+''');
+ var hover = await prepareHover('A');
+ _assertHover(
+ hover,
+ elementDescription: 'typedef A = void Function(int )',
+ elementKind: 'type alias',
+ );
+ }
+
+ Future<void> test_simpleIdentifier_typedef_interfaceType() async {
+ addTestFile('''
+typedef A = Map<int, String>;
+''');
+ var hover = await prepareHover('A');
+ _assertHover(
+ hover,
+ elementDescription: 'typedef A = Map<int, String>',
+ elementKind: 'type alias',
+ );
+ }
+
+ Future<void> test_simpleIdentifier_typedef_legacy() async {
+ addTestFile('''
+typedef void A(int a);
+''');
+ var hover = await prepareHover('A');
+ _assertHover(
+ hover,
+ elementDescription: 'typedef A = void Function(int a)',
+ elementKind: 'type alias',
+ );
+ }
+
+ void _assertHover(
+ HoverInformation hover, {
+ String containingLibraryPath,
+ String containingLibraryName,
+ @required String elementDescription,
+ @required String elementKind,
+ bool isDeprecated = false,
+ }) {
+ containingLibraryName ??= 'bin/test.dart';
+ expect(hover.containingLibraryName, containingLibraryName);
+
+ containingLibraryPath ??= testFile;
+ expect(hover.containingLibraryPath, containingLibraryPath);
+
+ expect(hover.elementDescription, elementDescription);
+ expect(hover.elementKind, elementKind);
+ expect(hover.isDeprecated, isDeprecated);
+ }
}
diff --git a/pkg/analysis_server/test/context_manager_test.dart b/pkg/analysis_server/test/context_manager_test.dart
index fea3b43..1dd7834 100644
--- a/pkg/analysis_server/test/context_manager_test.dart
+++ b/pkg/analysis_server/test/context_manager_test.dart
@@ -1533,18 +1533,18 @@
String projPath;
AnalysisError missing_return =
- AnalysisError(null, 0, 1, HintCode.MISSING_RETURN, [
+ AnalysisError(_MockSource('test.dart'), 0, 1, HintCode.MISSING_RETURN, [
['x']
]);
- AnalysisError invalid_assignment_error =
- AnalysisError(null, 0, 1, CompileTimeErrorCode.INVALID_ASSIGNMENT, [
+ AnalysisError invalid_assignment_error = AnalysisError(
+ _MockSource('test.dart'), 0, 1, CompileTimeErrorCode.INVALID_ASSIGNMENT, [
['x'],
['y']
]);
- AnalysisError unused_local_variable =
- AnalysisError(null, 0, 1, HintCode.UNUSED_LOCAL_VARIABLE, [
+ AnalysisError unused_local_variable = AnalysisError(
+ _MockSource('test.dart'), 0, 1, HintCode.UNUSED_LOCAL_VARIABLE, [
['x']
]);
@@ -2382,3 +2382,15 @@
lastFlushedFiles = flushedFiles;
}
}
+
+class _MockSource implements Source {
+ @override
+ final String fullName;
+
+ _MockSource(this.fullName);
+
+ @override
+ dynamic noSuchMethod(Invocation invocation) {
+ throw StateError('Unexpected invocation of ${invocation.memberName}');
+ }
+}
diff --git a/pkg/analysis_server/test/integration/analysis/get_errors_non_standard_sdk_test.dart b/pkg/analysis_server/test/integration/analysis/get_errors_non_standard_sdk_test.dart
index 0cf5684..e80f671 100644
--- a/pkg/analysis_server/test/integration/analysis/get_errors_non_standard_sdk_test.dart
+++ b/pkg/analysis_server/test/integration/analysis/get_errors_non_standard_sdk_test.dart
@@ -55,14 +55,15 @@
class Fake {}
''');
- var libsDir = path.join(
- sdkPath,
- 'lib',
- '_internal',
- 'sdk_library_metadata',
- 'lib',
- );
+ var libsInternalDir = path.join(sdkPath, 'lib', '_internal');
+ Directory(libsInternalDir).createSync(recursive: true);
+
+ File(path.join(sdkPath, 'lib', '_internal', 'allowed_experiments.json'))
+ .writeAsStringSync('{}');
+
+ var libsDir = path.join(libsInternalDir, 'sdk_library_metadata', 'lib');
Directory(libsDir).createSync(recursive: true);
+
File(path.join(libsDir, 'libraries.dart')).writeAsStringSync(r'''
final LIBRARIES = const <String, LibraryInfo> {
"core": const LibraryInfo("core/core.dart"),
diff --git a/pkg/analysis_server/test/mock_packages/.dart_tool/package_config.json b/pkg/analysis_server/test/mock_packages/.dart_tool/package_config.json
new file mode 100644
index 0000000..19affdb
--- /dev/null
+++ b/pkg/analysis_server/test/mock_packages/.dart_tool/package_config.json
@@ -0,0 +1,35 @@
+{
+ "configVersion": 2,
+ "packages": [
+ {
+ "name": "flutter",
+ "rootUri": "../flutter",
+ "packageUri": "lib/",
+ "languageVersion": "2.9"
+ },
+ {
+ "name": "meta",
+ "rootUri": "../meta",
+ "packageUri": "lib/",
+ "languageVersion": "2.9"
+ },
+ {
+ "name": "pedantic",
+ "rootUri": "../pedantic",
+ "packageUri": "lib/",
+ "languageVersion": "2.9"
+ },
+ {
+ "name": "ui",
+ "rootUri": "../ui",
+ "packageUri": "lib/",
+ "languageVersion": "2.9"
+ },
+ {
+ "name": "vector_math",
+ "rootUri": "../vector_math",
+ "packageUri": "lib/",
+ "languageVersion": "2.9"
+ }
+ ]
+}
diff --git a/pkg/analysis_server/test/mock_packages/.packages b/pkg/analysis_server/test/mock_packages/.packages
deleted file mode 100644
index 08d79f7..0000000
--- a/pkg/analysis_server/test/mock_packages/.packages
+++ /dev/null
@@ -1,3 +0,0 @@
-flutter:flutter/lib
-meta:meta/lib
-ui:ui/lib
diff --git a/pkg/analysis_server/test/src/flutter/flutter_correction_test.dart b/pkg/analysis_server/test/src/flutter/flutter_correction_test.dart
deleted file mode 100644
index 3ab09de..0000000
--- a/pkg/analysis_server/test/src/flutter/flutter_correction_test.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2018, 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.
-
-import 'package:analysis_server/src/flutter/flutter_correction.dart';
-import 'package:test/test.dart';
-import 'package:test_reflective_loader/test_reflective_loader.dart';
-
-import '../../abstract_single_unit.dart';
-
-void main() {
- defineReflectiveSuite(() {
- defineReflectiveTests(FlutterCorrectionTest);
- });
-}
-
-@reflectiveTest
-class FlutterCorrectionTest extends AbstractSingleUnitTest {
- int offset;
- int length = 0;
- FlutterCorrections corrections;
-
- @override
- int findOffset(String search) {
- var offset = testCode.indexOf(search);
- expect(offset, isNonNegative, reason: "Not found '$search' in\n$testCode");
- return offset;
- }
-
- @override
- void setUp() {
- super.setUp();
- writeTestPackageConfig(flutter: true);
- }
-
-// void _assertChange(SourceChange change, String expectedCode) {
-// expect(change, isNotNull);
-//
-// List<SourceFileEdit> files = change.edits;
-// expect(files, hasLength(1));
-// expect(files[0].file, testFile);
-//
-// List<SourceEdit> fileEdits = files[0].edits;
-// String resultCode = SourceEdit.applySequence(testCode, fileEdits);
-// if (resultCode != expectedCode) {
-// print(resultCode);
-// }
-// expect(resultCode, expectedCode);
-// }
-//
-// void _createCorrections() {
-// corrections = new FlutterCorrections(
-// resolveResult: testAnalysisResult,
-// selectionOffset: offset,
-// selectionLength: length,
-// );
-// }
-}
diff --git a/pkg/analysis_server/test/src/flutter/test_all.dart b/pkg/analysis_server/test/src/flutter/test_all.dart
index 66e99d6..48db007 100644
--- a/pkg/analysis_server/test/src/flutter/test_all.dart
+++ b/pkg/analysis_server/test/src/flutter/test_all.dart
@@ -4,13 +4,11 @@
import 'package:test_reflective_loader/test_reflective_loader.dart';
-import 'flutter_correction_test.dart' as flutter_correction;
import 'flutter_outline_computer_test.dart' as outline_computer;
import 'flutter_outline_notification_test.dart' as outline_notification;
void main() {
defineReflectiveSuite(() {
- flutter_correction.main();
outline_computer.main();
outline_notification.main();
});
diff --git a/pkg/analysis_server/test/src/plugin/plugin_watcher_test.dart b/pkg/analysis_server/test/src/plugin/plugin_watcher_test.dart
index 3ac4dac..08c6c05 100644
--- a/pkg/analysis_server/test/src/plugin/plugin_watcher_test.dart
+++ b/pkg/analysis_server/test/src/plugin/plugin_watcher_test.dart
@@ -8,7 +8,6 @@
import 'package:analysis_server/src/plugin/plugin_manager.dart';
import 'package:analysis_server/src/plugin/plugin_watcher.dart';
import 'package:analyzer/dart/analysis/results.dart';
-import 'package:analyzer/dart/analysis/session.dart';
import 'package:analyzer/file_system/memory_file_system.dart';
import 'package:analyzer/src/context/context_root.dart';
import 'package:analyzer/src/dart/analysis/driver.dart';
@@ -112,8 +111,10 @@
@override
SourceFactory sourceFactory;
+
@override
- AnalysisSession currentSession;
+ AnalysisSessionImpl currentSession;
+
@override
AnalysisOptionsImpl analysisOptions = AnalysisOptionsImpl();
diff --git a/pkg/analysis_server/test/utils/test_instrumentation_service.dart b/pkg/analysis_server/test/utils/test_instrumentation_service.dart
index 4fd7157..f271860 100644
--- a/pkg/analysis_server/test/utils/test_instrumentation_service.dart
+++ b/pkg/analysis_server/test/utils/test_instrumentation_service.dart
@@ -11,7 +11,7 @@
void logException(
exception, [
StackTrace stackTrace,
- List<InstrumentationServiceAttachment> attachments,
+ List<InstrumentationServiceAttachment> attachments = const [],
]) {
throw CaughtException(exception, stackTrace);
}
diff --git a/pkg/analyzer/CHANGELOG.md b/pkg/analyzer/CHANGELOG.md
index a8e8b53..ac3f422 100644
--- a/pkg/analyzer/CHANGELOG.md
+++ b/pkg/analyzer/CHANGELOG.md
@@ -1,4 +1,5 @@
-## 0.41.2-dev
+## 0.42.0
+* Migrated to null safety, min SDK is `2.12.0`.
* Deprecated `FunctionTypeAliasElement.function`.
Use `TypeAliasElement.aliasedElement` instead.
* Widened the dependency on package:crypto to include version 3.0.0.
diff --git a/pkg/analyzer/example/analyze.dart b/pkg/analyzer/example/analyze.dart
index d9d5cb3..dcd2920 100644
--- a/pkg/analyzer/example/analyze.dart
+++ b/pkg/analyzer/example/analyze.dart
@@ -10,7 +10,7 @@
/// A simple example of using the AnalysisContextCollection API.
void main(List<String> args) async {
- var entity = Directory.current;
+ FileSystemEntity entity = Directory.current;
if (args.isNotEmpty) {
String arg = args.first;
entity = FileSystemEntity.isDirectorySync(arg) ? Directory(arg) : File(arg);
@@ -31,7 +31,7 @@
continue;
}
- final errorsResult = await context.currentSession.getErrors(filePath);
+ final errorsResult = (await context.currentSession.getErrors(filePath))!;
for (final error in errorsResult.errors) {
if (error.errorCode.type != ErrorType.TODO) {
print(
diff --git a/pkg/analyzer/lib/dart/analysis/analysis_context.dart b/pkg/analyzer/lib/dart/analysis/analysis_context.dart
index 97ff59c..984ffaa 100644
--- a/pkg/analyzer/lib/dart/analysis/analysis_context.dart
+++ b/pkg/analyzer/lib/dart/analysis/analysis_context.dart
@@ -30,7 +30,7 @@
/// The root directory of the SDK against which files of this context are
/// analyzed, or `null` if the SDK is not directory based.
- Folder get sdkRoot;
+ Folder? get sdkRoot;
/// Return the workspace for containing the context root.
Workspace get workspace;
diff --git a/pkg/analyzer/lib/dart/analysis/analysis_context_collection.dart b/pkg/analyzer/lib/dart/analysis/analysis_context_collection.dart
index b2fba13..1f95fa7 100644
--- a/pkg/analyzer/lib/dart/analysis/analysis_context_collection.dart
+++ b/pkg/analyzer/lib/dart/analysis/analysis_context_collection.dart
@@ -5,7 +5,6 @@
import 'package:analyzer/dart/analysis/analysis_context.dart';
import 'package:analyzer/file_system/file_system.dart';
import 'package:analyzer/src/dart/analysis/analysis_context_collection.dart';
-import 'package:meta/meta.dart';
/// A collection of analysis contexts.
///
@@ -19,9 +18,9 @@
/// If a [resourceProvider] is given, then it will be used to access the file
/// system, otherwise the default resource provider will be used.
factory AnalysisContextCollection(
- {@required List<String> includedPaths,
- List<String> excludedPaths,
- ResourceProvider resourceProvider}) = AnalysisContextCollectionImpl;
+ {required List<String> includedPaths,
+ List<String>? excludedPaths,
+ ResourceProvider? resourceProvider}) = AnalysisContextCollectionImpl;
/// Return all of the analysis contexts in this collection.
List<AnalysisContext> get contexts;
diff --git a/pkg/analyzer/lib/dart/analysis/context_builder.dart b/pkg/analyzer/lib/dart/analysis/context_builder.dart
index 08cbd34..d3db2f3 100644
--- a/pkg/analyzer/lib/dart/analysis/context_builder.dart
+++ b/pkg/analyzer/lib/dart/analysis/context_builder.dart
@@ -7,7 +7,6 @@
import 'package:analyzer/dart/analysis/declared_variables.dart';
import 'package:analyzer/file_system/file_system.dart';
import 'package:analyzer/src/dart/analysis/context_builder.dart';
-import 'package:meta/meta.dart';
/// A utility class used to build an analysis context based on a context root.
///
@@ -37,9 +36,9 @@
/// If an [sdkSummaryPath] is provided, then that file will be used as the
/// summary file for the SDK.
AnalysisContext createContext(
- {@required ContextRoot contextRoot,
- DeclaredVariables declaredVariables,
- List<String> librarySummaryPaths,
- String sdkPath,
- String sdkSummaryPath});
+ {required ContextRoot contextRoot,
+ DeclaredVariables? declaredVariables,
+ List<String>? librarySummaryPaths,
+ String? sdkPath,
+ String? sdkSummaryPath});
}
diff --git a/pkg/analyzer/lib/dart/analysis/context_locator.dart b/pkg/analyzer/lib/dart/analysis/context_locator.dart
index 484099e..478e064 100644
--- a/pkg/analyzer/lib/dart/analysis/context_locator.dart
+++ b/pkg/analyzer/lib/dart/analysis/context_locator.dart
@@ -5,7 +5,6 @@
import 'package:analyzer/dart/analysis/context_root.dart';
import 'package:analyzer/file_system/file_system.dart';
import 'package:analyzer/src/dart/analysis/context_locator.dart';
-import 'package:meta/meta.dart';
/// Determines the list of analysis contexts that can be used to analyze the
/// files and folders that should be analyzed given a list of included files and
@@ -32,8 +31,8 @@
/// `.packages` file that should be used in place of the one that would be
/// found by looking in the directories containing the context roots.
List<ContextRoot> locateRoots(
- {@required List<String> includedPaths,
- List<String> excludedPaths,
- String optionsFile,
- String packagesFile});
+ {required List<String> includedPaths,
+ List<String>? excludedPaths,
+ String? optionsFile,
+ String? packagesFile});
}
diff --git a/pkg/analyzer/lib/dart/analysis/context_root.dart b/pkg/analyzer/lib/dart/analysis/context_root.dart
index ccb15b5..9767602 100644
--- a/pkg/analyzer/lib/dart/analysis/context_root.dart
+++ b/pkg/analyzer/lib/dart/analysis/context_root.dart
@@ -31,11 +31,11 @@
/// The analysis options file that should be used when analyzing the files
/// within this context root, or `null` if there is no options file.
- File get optionsFile;
+ File? get optionsFile;
/// The packages file that should be used when analyzing the files within this
/// context root, or `null` if there is no options file.
- File get packagesFile;
+ File? get packagesFile;
/// The resource provider used to access the file system.
ResourceProvider get resourceProvider;
diff --git a/pkg/analyzer/lib/dart/analysis/declared_variables.dart b/pkg/analyzer/lib/dart/analysis/declared_variables.dart
index bb835a4..607163d 100644
--- a/pkg/analyzer/lib/dart/analysis/declared_variables.dart
+++ b/pkg/analyzer/lib/dart/analysis/declared_variables.dart
@@ -25,6 +25,6 @@
Iterable<String> get variableNames => _declaredVariables.keys;
/// Return the raw string value of the variable with the given [name],
- /// or `null` of the variable is not defined.
- String get(String name) => _declaredVariables[name];
+ /// or `null` if the variable is not defined.
+ String? get(String name) => _declaredVariables[name];
}
diff --git a/pkg/analyzer/lib/dart/analysis/features.dart b/pkg/analyzer/lib/dart/analysis/features.dart
index 5390ffa..31698ee 100644
--- a/pkg/analyzer/lib/dart/analysis/features.dart
+++ b/pkg/analyzer/lib/dart/analysis/features.dart
@@ -43,11 +43,11 @@
/// experimental flag that may be used to enable it. Otherwise `null`.
///
/// Should be `null` if [status] is `current` or `abandoned`.
- String get experimentalFlag;
+ String? get experimentalFlag;
/// If [status] is not `future`, the first language version in which this
/// feature was enabled by default. Otherwise `null`.
- Version get releaseVersion;
+ Version? get releaseVersion;
/// The status of the feature.
FeatureStatus get status;
@@ -75,8 +75,8 @@
/// Computes the set of features implied by the given set of experimental
/// enable flags.
factory FeatureSet.fromEnableFlags2({
- @required Version sdkLanguageVersion,
- @required List<String> flags,
+ required Version sdkLanguageVersion,
+ required List<String> flags,
}) = ExperimentStatus.fromStrings2;
/// Computes the set of features for the latest language version known
diff --git a/pkg/analyzer/lib/dart/analysis/results.dart b/pkg/analyzer/lib/dart/analysis/results.dart
index d76add7..7e16f11 100644
--- a/pkg/analyzer/lib/dart/analysis/results.dart
+++ b/pkg/analyzer/lib/dart/analysis/results.dart
@@ -16,7 +16,9 @@
/// Clients may not extend, implement or mix-in this class.
abstract class AnalysisResult {
/// The absolute and normalized path of the file that was analyzed.
- String get path;
+ ///
+ /// TODO(migration): should not be nullable
+ String? get path;
/// Return the session used to compute this result.
AnalysisSession get session;
@@ -48,11 +50,11 @@
/// If this declaration is returned from [ParsedLibraryResult], the parsed
/// unit that contains the [node]. Otherwise `null`.
- ParsedUnitResult get parsedUnit;
+ ParsedUnitResult? get parsedUnit;
/// If this declaration is returned from [ResolvedLibraryResult], the
/// resolved unit that contains the [node]. Otherwise `null`.
- ResolvedUnitResult get resolvedUnit;
+ ResolvedUnitResult? get resolvedUnit;
}
/// The result of computing all of the errors contained in a single file, both
@@ -78,12 +80,14 @@
/// Clients may not extend, implement or mix-in this class.
abstract class ParsedLibraryResult implements AnalysisResult {
/// The parsed units of the library.
- List<ParsedUnitResult> get units;
+ ///
+ /// TODO(migration): should not be null, probably empty list
+ List<ParsedUnitResult>? get units;
/// Return the declaration of the [element], or `null` if the [element]
/// is synthetic. Throw [ArgumentError] if the [element] is not defined in
/// this library.
- ElementDeclarationResult getElementDeclaration(Element element);
+ ElementDeclarationResult? getElementDeclaration(Element element);
}
/// The result of parsing of a single file. The errors returned include only
@@ -124,18 +128,18 @@
/// Clients may not extend, implement or mix-in this class.
abstract class ResolvedLibraryResult implements AnalysisResult {
/// The element representing this library.
- LibraryElement get element;
+ LibraryElement? get element;
/// The type provider used when resolving the library.
TypeProvider get typeProvider;
/// The resolved units of the library.
- List<ResolvedUnitResult> get units;
+ List<ResolvedUnitResult>? get units;
/// Return the declaration of the [element], or `null` if the [element]
/// is synthetic. Throw [ArgumentError] if the [element] is not defined in
/// this library.
- ElementDeclarationResult getElementDeclaration(Element element);
+ ElementDeclarationResult? getElementDeclaration(Element element);
}
/// The result of building a resolved AST for a single file. The errors returned
@@ -144,7 +148,7 @@
/// Clients may not extend, implement or mix-in this class.
abstract class ResolvedUnitResult implements AnalysisResultWithErrors {
/// The content of the file that was scanned, parsed and resolved.
- String get content;
+ String? get content;
/// The element representing the library containing the compilation [unit].
LibraryElement get libraryElement;
@@ -156,7 +160,7 @@
TypeSystem get typeSystem;
/// The fully resolved compilation unit for the [content].
- CompilationUnit get unit;
+ CompilationUnit? get unit;
}
/// An indication of whether an analysis result is valid, and if not why.
diff --git a/pkg/analyzer/lib/dart/analysis/session.dart b/pkg/analyzer/lib/dart/analysis/session.dart
index 276b81e..b922cb2 100644
--- a/pkg/analyzer/lib/dart/analysis/session.dart
+++ b/pkg/analyzer/lib/dart/analysis/session.dart
@@ -36,7 +36,9 @@
///
/// If the file cannot be analyzed by this session, then the result will have
/// a result state indicating the nature of the problem.
- Future<ErrorsResult> getErrors(String path);
+ ///
+ /// TODO(migration): should not be nullable
+ Future<ErrorsResult?> getErrors(String path);
/// Return information about the file at the given absolute, normalized
/// [path].
@@ -80,18 +82,24 @@
/// Return a future that will complete with information about the results of
/// resolving the file with the given absolute, normalized [path].
- Future<ResolvedUnitResult> getResolvedUnit(String path);
+ ///
+ /// TODO(migration): should not be nullable
+ Future<ResolvedUnitResult?> getResolvedUnit(String path);
/// Return a future that will complete with the source kind of the file with
/// the given absolute, normalized [path]. If the path does not represent a
/// file or if the kind of the file cannot be determined, then the future will
/// complete with [SourceKind.UNKNOWN].
- Future<SourceKind> getSourceKind(String path);
+ ///
+ /// TODO(migration): should not be nullable
+ Future<SourceKind?> getSourceKind(String path);
/// Return a future that will complete with information about the results of
/// building the element model for the file with the given absolute,
/// normalized[path].
- Future<UnitElementResult> getUnitElement(String path);
+ ///
+ /// TODO(migration): should not be nullable
+ Future<UnitElementResult?> getUnitElement(String path);
/// Return a future that will complete with the signature for the file with
/// the given absolute, normalized [path], or `null` if the file cannot be
diff --git a/pkg/analyzer/lib/dart/analysis/uri_converter.dart b/pkg/analyzer/lib/dart/analysis/uri_converter.dart
index a93d045..511b4c8 100644
--- a/pkg/analyzer/lib/dart/analysis/uri_converter.dart
+++ b/pkg/analyzer/lib/dart/analysis/uri_converter.dart
@@ -15,12 +15,12 @@
///
/// Throws an `ArgumentError` if the [path] is `null` or is not a valid
/// absolute file path.
- Uri pathToUri(String path, {String containingPath});
+ Uri? pathToUri(String path, {String? containingPath});
/// Return the absolute path of the file to which the absolute [uri] resolves,
/// or `null` if the [uri] cannot be resolved in this converter’s context.
///
/// Throws an `ArgumentError` if the [uri] is `null` or is not an absolute
/// URI.
- String uriToPath(Uri uri);
+ String? uriToPath(Uri uri);
}
diff --git a/pkg/analyzer/lib/dart/analysis/utilities.dart b/pkg/analyzer/lib/dart/analysis/utilities.dart
index 10fb211..28ff71b 100644
--- a/pkg/analyzer/lib/dart/analysis/utilities.dart
+++ b/pkg/analyzer/lib/dart/analysis/utilities.dart
@@ -15,7 +15,6 @@
import 'package:analyzer/src/dart/scanner/scanner.dart';
import 'package:analyzer/src/generated/parser.dart';
import 'package:analyzer/src/string_source.dart';
-import 'package:meta/meta.dart';
/// Return the result of parsing the file at the given [path].
///
@@ -38,13 +37,10 @@
/// will be thrown. If the parameter is `false`, then the caller can check the
/// result to see whether there are any errors.
ParseStringResult parseFile(
- {@required String path,
- ResourceProvider resourceProvider,
- @required FeatureSet featureSet,
+ {required String path,
+ ResourceProvider? resourceProvider,
+ required FeatureSet featureSet,
bool throwIfDiagnostics = true}) {
- if (featureSet == null) {
- throw ArgumentError('A non-null feature set must be provided.');
- }
resourceProvider ??= PhysicalResourceProvider.INSTANCE;
var content = (resourceProvider.getResource(path) as File).readAsStringSync();
return parseString(
@@ -72,12 +68,12 @@
/// errors should pass `false` and check `result.errors` to determine what parse
/// errors, if any, have occurred.
ParseStringResult parseString(
- {@required String content,
- FeatureSet featureSet,
- String path,
+ {required String content,
+ FeatureSet? featureSet,
+ String? path,
bool throwIfDiagnostics = true}) {
featureSet ??= FeatureSet.latestLanguageVersion();
- var source = StringSource(content, path);
+ var source = StringSource(content, path ?? '');
var reader = CharSequenceReader(content);
var errorCollector = RecordingErrorListener();
var scanner = Scanner(source, reader, errorCollector)
@@ -108,8 +104,10 @@
/// Note that if more than one file is going to be resolved then this function
/// is inefficient. Clients should instead use [AnalysisContextCollection] to
/// create one or more contexts and use those contexts to resolve the files.
-Future<ResolvedUnitResult> resolveFile(
- {@required String path, ResourceProvider resourceProvider}) async {
+///
+/// TODO(migration): should not be nullable
+Future<ResolvedUnitResult?> resolveFile(
+ {required String path, ResourceProvider? resourceProvider}) async {
AnalysisContext context =
_createAnalysisContext(path: path, resourceProvider: resourceProvider);
return await context.currentSession.getResolvedUnit(path);
@@ -120,7 +118,7 @@
///
/// If a [resourceProvider] is given, it will be used to access the file system.
AnalysisContext _createAnalysisContext(
- {@required String path, ResourceProvider resourceProvider}) {
+ {required String path, ResourceProvider? resourceProvider}) {
AnalysisContextCollection collection = AnalysisContextCollection(
includedPaths: <String>[path],
resourceProvider: resourceProvider ?? PhysicalResourceProvider.INSTANCE,
diff --git a/pkg/analyzer/lib/dart/ast/ast.dart b/pkg/analyzer/lib/dart/ast/ast.dart
index 809579d..471b883 100644
--- a/pkg/analyzer/lib/dart/ast/ast.dart
+++ b/pkg/analyzer/lib/dart/ast/ast.dart
@@ -65,11 +65,11 @@
abstract class AnnotatedNode implements AstNode {
/// Return the documentation comment associated with this node, or `null` if
/// this node does not have a documentation comment associated with it.
- Comment get documentationComment;
+ Comment? get documentationComment;
/// Set the documentation comment associated with this node to the given
/// [comment].
- set documentationComment(Comment comment);
+ set documentationComment(Comment? comment);
/// Return the first token following the comment and metadata.
Token get firstTokenAfterCommentAndMetadata;
@@ -94,11 +94,11 @@
abstract class Annotation implements AstNode {
/// Return the arguments to the constructor being invoked, or `null` if this
/// annotation is not the invocation of a constructor.
- ArgumentList get arguments;
+ ArgumentList? get arguments;
/// Set the arguments to the constructor being invoked to the given
/// [arguments].
- set arguments(ArgumentList arguments);
+ set arguments(ArgumentList? arguments);
/// Return the at sign that introduced the annotation.
Token get atSign;
@@ -108,26 +108,26 @@
/// Return the name of the constructor being invoked, or `null` if this
/// annotation is not the invocation of a named constructor.
- SimpleIdentifier get constructorName;
+ SimpleIdentifier? get constructorName;
/// Set the name of the constructor being invoked to the given [name].
- set constructorName(SimpleIdentifier name);
+ set constructorName(SimpleIdentifier? name);
/// Return the element associated with this annotation, or `null` if the AST
/// structure has not been resolved or if this annotation could not be
/// resolved.
- Element get element;
+ Element? get element;
/// Set the element associated with this annotation to the given [element].
- set element(Element element);
+ set element(Element? element);
/// Return the element annotation representing this annotation in the element
- /// model.
- ElementAnnotation get elementAnnotation;
+ /// model; `null` when the AST has not been resolved.
+ ElementAnnotation? get elementAnnotation;
/// Set the element annotation representing this annotation in the element
/// model to the given [annotation].
- set elementAnnotation(ElementAnnotation annotation);
+ set elementAnnotation(ElementAnnotation? annotation);
/// Return the name of the class defining the constructor that is being
/// invoked or the name of the field that is being referenced.
@@ -137,12 +137,15 @@
/// or the name of the field that is being referenced to the given [name].
set name(Identifier name);
+ @override
+ AstNode get parent;
+
/// Return the period before the constructor name, or `null` if this
/// annotation is not the invocation of a named constructor.
- Token get period;
+ Token? get period;
/// Set the period before the constructor name to the given [token].
- set period(Token token);
+ set period(Token? token);
}
/// A list of arguments in the invocation of an executable element (that is, a
@@ -167,7 +170,7 @@
/// list to the given list of [parameters]. The list of parameters must be the
/// same length as the number of arguments, but can contain `null` entries if
/// a given argument does not correspond to a formal parameter.
- set correspondingStaticParameters(List<ParameterElement> parameters);
+ set correspondingStaticParameters(List<ParameterElement?> parameters);
/// Return the left parenthesis.
Token get leftParenthesis;
@@ -229,11 +232,11 @@
/// Return the comma between the [condition] and the [message], or `null` if
/// no message was supplied.
- Token get comma;
+ Token? get comma;
/// Set the comma between the [condition] and the [message] to the given
/// [token].
- set comma(Token token);
+ set comma(Token? token);
/// Return the condition that is being asserted to be `true`.
Expression get condition;
@@ -250,11 +253,11 @@
/// Return the message to report if the assertion fails, or `null` if no
/// message was supplied.
- Expression get message;
+ Expression? get message;
/// Set the message to report if the assertion fails to the given
/// [expression].
- set message(Expression expression);
+ set message(Expression? expression);
/// Return the right parenthesis.
Token get rightParenthesis;
@@ -360,7 +363,7 @@
///
/// Note that the relationship between an AST node and its parent node may
/// change over the lifetime of a node.
- AstNode get parent;
+ AstNode? get parent;
/// Return the node at the root of this node's AST structure.
///
@@ -372,26 +375,26 @@
///
/// Return the value returned by the visitor as a result of visiting this
/// node.
- E accept<E>(AstVisitor<E> visitor);
+ E? accept<E>(AstVisitor<E> visitor);
/// Return the token before [target] or `null` if it cannot be found.
- Token findPrevious(Token target);
+ Token? findPrevious(Token target);
/// Return the value of the property with the given [name], or `null` if this
/// node does not have a property with the given name.
- E getProperty<E>(String name);
+ E? getProperty<E>(String name);
/// Set the value of the property with the given [name] to the given [value].
/// If the value is `null`, the property will effectively be removed.
- void setProperty(String name, Object value);
+ void setProperty(String name, Object? value);
/// Return either this node or the most immediate ancestor of this node for
/// which the [predicate] returns `true`, or `null` if there is no such node.
- E thisOrAncestorMatching<E extends AstNode>(Predicate<AstNode> predicate);
+ E? thisOrAncestorMatching<E extends AstNode>(Predicate<AstNode> predicate);
/// Return either this node or the most immediate ancestor of this node that
/// has the given type, or `null` if there is no such node.
- E thisOrAncestorOfType<E extends AstNode>();
+ E? thisOrAncestorOfType<E extends AstNode>();
/// Return a textual description of this node in a form approximating valid
/// source.
@@ -418,248 +421,248 @@
/// * ThrowingAstVisitor which implements every visit method by throwing an
/// exception.
abstract class AstVisitor<R> {
- R visitAdjacentStrings(AdjacentStrings node);
+ R? visitAdjacentStrings(AdjacentStrings node);
- R visitAnnotation(Annotation node);
+ R? visitAnnotation(Annotation node);
- R visitArgumentList(ArgumentList node);
+ R? visitArgumentList(ArgumentList node);
- R visitAsExpression(AsExpression node);
+ R? visitAsExpression(AsExpression node);
- R visitAssertInitializer(AssertInitializer node);
+ R? visitAssertInitializer(AssertInitializer node);
- R visitAssertStatement(AssertStatement assertStatement);
+ R? visitAssertStatement(AssertStatement assertStatement);
- R visitAssignmentExpression(AssignmentExpression node);
+ R? visitAssignmentExpression(AssignmentExpression node);
- R visitAwaitExpression(AwaitExpression node);
+ R? visitAwaitExpression(AwaitExpression node);
- R visitBinaryExpression(BinaryExpression node);
+ R? visitBinaryExpression(BinaryExpression node);
- R visitBlock(Block node);
+ R? visitBlock(Block node);
- R visitBlockFunctionBody(BlockFunctionBody node);
+ R? visitBlockFunctionBody(BlockFunctionBody node);
- R visitBooleanLiteral(BooleanLiteral node);
+ R? visitBooleanLiteral(BooleanLiteral node);
- R visitBreakStatement(BreakStatement node);
+ R? visitBreakStatement(BreakStatement node);
- R visitCascadeExpression(CascadeExpression node);
+ R? visitCascadeExpression(CascadeExpression node);
- R visitCatchClause(CatchClause node);
+ R? visitCatchClause(CatchClause node);
- R visitClassDeclaration(ClassDeclaration node);
+ R? visitClassDeclaration(ClassDeclaration node);
- R visitClassTypeAlias(ClassTypeAlias node);
+ R? visitClassTypeAlias(ClassTypeAlias node);
- R visitComment(Comment node);
+ R? visitComment(Comment node);
- R visitCommentReference(CommentReference node);
+ R? visitCommentReference(CommentReference node);
- R visitCompilationUnit(CompilationUnit node);
+ R? visitCompilationUnit(CompilationUnit node);
- R visitConditionalExpression(ConditionalExpression node);
+ R? visitConditionalExpression(ConditionalExpression node);
- R visitConfiguration(Configuration node);
+ R? visitConfiguration(Configuration node);
- R visitConstructorDeclaration(ConstructorDeclaration node);
+ R? visitConstructorDeclaration(ConstructorDeclaration node);
- R visitConstructorFieldInitializer(ConstructorFieldInitializer node);
+ R? visitConstructorFieldInitializer(ConstructorFieldInitializer node);
- R visitConstructorName(ConstructorName node);
+ R? visitConstructorName(ConstructorName node);
- R visitContinueStatement(ContinueStatement node);
+ R? visitContinueStatement(ContinueStatement node);
- R visitDeclaredIdentifier(DeclaredIdentifier node);
+ R? visitDeclaredIdentifier(DeclaredIdentifier node);
- R visitDefaultFormalParameter(DefaultFormalParameter node);
+ R? visitDefaultFormalParameter(DefaultFormalParameter node);
- R visitDoStatement(DoStatement node);
+ R? visitDoStatement(DoStatement node);
- R visitDottedName(DottedName node);
+ R? visitDottedName(DottedName node);
- R visitDoubleLiteral(DoubleLiteral node);
+ R? visitDoubleLiteral(DoubleLiteral node);
- R visitEmptyFunctionBody(EmptyFunctionBody node);
+ R? visitEmptyFunctionBody(EmptyFunctionBody node);
- R visitEmptyStatement(EmptyStatement node);
+ R? visitEmptyStatement(EmptyStatement node);
- R visitEnumConstantDeclaration(EnumConstantDeclaration node);
+ R? visitEnumConstantDeclaration(EnumConstantDeclaration node);
- R visitEnumDeclaration(EnumDeclaration node);
+ R? visitEnumDeclaration(EnumDeclaration node);
- R visitExportDirective(ExportDirective node);
+ R? visitExportDirective(ExportDirective node);
- R visitExpressionFunctionBody(ExpressionFunctionBody node);
+ R? visitExpressionFunctionBody(ExpressionFunctionBody node);
- R visitExpressionStatement(ExpressionStatement node);
+ R? visitExpressionStatement(ExpressionStatement node);
- R visitExtendsClause(ExtendsClause node);
+ R? visitExtendsClause(ExtendsClause node);
- R visitExtensionDeclaration(ExtensionDeclaration node);
+ R? visitExtensionDeclaration(ExtensionDeclaration node);
- R visitExtensionOverride(ExtensionOverride node);
+ R? visitExtensionOverride(ExtensionOverride node);
- R visitFieldDeclaration(FieldDeclaration node);
+ R? visitFieldDeclaration(FieldDeclaration node);
- R visitFieldFormalParameter(FieldFormalParameter node);
+ R? visitFieldFormalParameter(FieldFormalParameter node);
- R visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node);
+ R? visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node);
- R visitForEachPartsWithIdentifier(ForEachPartsWithIdentifier node);
+ R? visitForEachPartsWithIdentifier(ForEachPartsWithIdentifier node);
- R visitForElement(ForElement node);
+ R? visitForElement(ForElement node);
- R visitFormalParameterList(FormalParameterList node);
+ R? visitFormalParameterList(FormalParameterList node);
- R visitForPartsWithDeclarations(ForPartsWithDeclarations node);
+ R? visitForPartsWithDeclarations(ForPartsWithDeclarations node);
- R visitForPartsWithExpression(ForPartsWithExpression node);
+ R? visitForPartsWithExpression(ForPartsWithExpression node);
- R visitForStatement(ForStatement node);
+ R? visitForStatement(ForStatement node);
- R visitFunctionDeclaration(FunctionDeclaration node);
+ R? visitFunctionDeclaration(FunctionDeclaration node);
- R visitFunctionDeclarationStatement(FunctionDeclarationStatement node);
+ R? visitFunctionDeclarationStatement(FunctionDeclarationStatement node);
- R visitFunctionExpression(FunctionExpression node);
+ R? visitFunctionExpression(FunctionExpression node);
- R visitFunctionExpressionInvocation(FunctionExpressionInvocation node);
+ R? visitFunctionExpressionInvocation(FunctionExpressionInvocation node);
- R visitFunctionTypeAlias(FunctionTypeAlias functionTypeAlias);
+ R? visitFunctionTypeAlias(FunctionTypeAlias functionTypeAlias);
- R visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node);
+ R? visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node);
- R visitGenericFunctionType(GenericFunctionType node);
+ R? visitGenericFunctionType(GenericFunctionType node);
- R visitGenericTypeAlias(GenericTypeAlias node);
+ R? visitGenericTypeAlias(GenericTypeAlias node);
- R visitHideCombinator(HideCombinator node);
+ R? visitHideCombinator(HideCombinator node);
- R visitIfElement(IfElement node);
+ R? visitIfElement(IfElement node);
- R visitIfStatement(IfStatement node);
+ R? visitIfStatement(IfStatement node);
- R visitImplementsClause(ImplementsClause node);
+ R? visitImplementsClause(ImplementsClause node);
- R visitImportDirective(ImportDirective node);
+ R? visitImportDirective(ImportDirective node);
- R visitIndexExpression(IndexExpression node);
+ R? visitIndexExpression(IndexExpression node);
- R visitInstanceCreationExpression(InstanceCreationExpression node);
+ R? visitInstanceCreationExpression(InstanceCreationExpression node);
- R visitIntegerLiteral(IntegerLiteral node);
+ R? visitIntegerLiteral(IntegerLiteral node);
- R visitInterpolationExpression(InterpolationExpression node);
+ R? visitInterpolationExpression(InterpolationExpression node);
- R visitInterpolationString(InterpolationString node);
+ R? visitInterpolationString(InterpolationString node);
- R visitIsExpression(IsExpression node);
+ R? visitIsExpression(IsExpression node);
- R visitLabel(Label node);
+ R? visitLabel(Label node);
- R visitLabeledStatement(LabeledStatement node);
+ R? visitLabeledStatement(LabeledStatement node);
- R visitLibraryDirective(LibraryDirective node);
+ R? visitLibraryDirective(LibraryDirective node);
- R visitLibraryIdentifier(LibraryIdentifier node);
+ R? visitLibraryIdentifier(LibraryIdentifier node);
- R visitListLiteral(ListLiteral node);
+ R? visitListLiteral(ListLiteral node);
- R visitMapLiteralEntry(MapLiteralEntry node);
+ R? visitMapLiteralEntry(MapLiteralEntry node);
- R visitMethodDeclaration(MethodDeclaration node);
+ R? visitMethodDeclaration(MethodDeclaration node);
- R visitMethodInvocation(MethodInvocation node);
+ R? visitMethodInvocation(MethodInvocation node);
- R visitMixinDeclaration(MixinDeclaration node);
+ R? visitMixinDeclaration(MixinDeclaration node);
- R visitNamedExpression(NamedExpression node);
+ R? visitNamedExpression(NamedExpression node);
- R visitNativeClause(NativeClause node);
+ R? visitNativeClause(NativeClause node);
- R visitNativeFunctionBody(NativeFunctionBody node);
+ R? visitNativeFunctionBody(NativeFunctionBody node);
- R visitNullLiteral(NullLiteral node);
+ R? visitNullLiteral(NullLiteral node);
- R visitOnClause(OnClause node);
+ R? visitOnClause(OnClause node);
- R visitParenthesizedExpression(ParenthesizedExpression node);
+ R? visitParenthesizedExpression(ParenthesizedExpression node);
- R visitPartDirective(PartDirective node);
+ R? visitPartDirective(PartDirective node);
- R visitPartOfDirective(PartOfDirective node);
+ R? visitPartOfDirective(PartOfDirective node);
- R visitPostfixExpression(PostfixExpression node);
+ R? visitPostfixExpression(PostfixExpression node);
- R visitPrefixedIdentifier(PrefixedIdentifier node);
+ R? visitPrefixedIdentifier(PrefixedIdentifier node);
- R visitPrefixExpression(PrefixExpression node);
+ R? visitPrefixExpression(PrefixExpression node);
- R visitPropertyAccess(PropertyAccess node);
+ R? visitPropertyAccess(PropertyAccess node);
- R visitRedirectingConstructorInvocation(
+ R? visitRedirectingConstructorInvocation(
RedirectingConstructorInvocation node);
- R visitRethrowExpression(RethrowExpression node);
+ R? visitRethrowExpression(RethrowExpression node);
- R visitReturnStatement(ReturnStatement node);
+ R? visitReturnStatement(ReturnStatement node);
- R visitScriptTag(ScriptTag node);
+ R? visitScriptTag(ScriptTag node);
- R visitSetOrMapLiteral(SetOrMapLiteral node);
+ R? visitSetOrMapLiteral(SetOrMapLiteral node);
- R visitShowCombinator(ShowCombinator node);
+ R? visitShowCombinator(ShowCombinator node);
- R visitSimpleFormalParameter(SimpleFormalParameter node);
+ R? visitSimpleFormalParameter(SimpleFormalParameter node);
- R visitSimpleIdentifier(SimpleIdentifier node);
+ R? visitSimpleIdentifier(SimpleIdentifier node);
- R visitSimpleStringLiteral(SimpleStringLiteral node);
+ R? visitSimpleStringLiteral(SimpleStringLiteral node);
- R visitSpreadElement(SpreadElement node);
+ R? visitSpreadElement(SpreadElement node);
- R visitStringInterpolation(StringInterpolation node);
+ R? visitStringInterpolation(StringInterpolation node);
- R visitSuperConstructorInvocation(SuperConstructorInvocation node);
+ R? visitSuperConstructorInvocation(SuperConstructorInvocation node);
- R visitSuperExpression(SuperExpression node);
+ R? visitSuperExpression(SuperExpression node);
- R visitSwitchCase(SwitchCase node);
+ R? visitSwitchCase(SwitchCase node);
- R visitSwitchDefault(SwitchDefault node);
+ R? visitSwitchDefault(SwitchDefault node);
- R visitSwitchStatement(SwitchStatement node);
+ R? visitSwitchStatement(SwitchStatement node);
- R visitSymbolLiteral(SymbolLiteral node);
+ R? visitSymbolLiteral(SymbolLiteral node);
- R visitThisExpression(ThisExpression node);
+ R? visitThisExpression(ThisExpression node);
- R visitThrowExpression(ThrowExpression node);
+ R? visitThrowExpression(ThrowExpression node);
- R visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node);
+ R? visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node);
- R visitTryStatement(TryStatement node);
+ R? visitTryStatement(TryStatement node);
- R visitTypeArgumentList(TypeArgumentList node);
+ R? visitTypeArgumentList(TypeArgumentList node);
- R visitTypeName(TypeName node);
+ R? visitTypeName(TypeName node);
- R visitTypeParameter(TypeParameter node);
+ R? visitTypeParameter(TypeParameter node);
- R visitTypeParameterList(TypeParameterList node);
+ R? visitTypeParameterList(TypeParameterList node);
- R visitVariableDeclaration(VariableDeclaration node);
+ R? visitVariableDeclaration(VariableDeclaration node);
- R visitVariableDeclarationList(VariableDeclarationList node);
+ R? visitVariableDeclarationList(VariableDeclarationList node);
- R visitVariableDeclarationStatement(VariableDeclarationStatement node);
+ R? visitVariableDeclarationStatement(VariableDeclarationStatement node);
- R visitWhileStatement(WhileStatement node);
+ R? visitWhileStatement(WhileStatement node);
- R visitWithClause(WithClause node);
+ R? visitWithClause(WithClause node);
- R visitYieldStatement(YieldStatement node);
+ R? visitYieldStatement(YieldStatement node);
}
/// An await expression.
@@ -713,10 +716,10 @@
/// The function type of the invocation, or `null` if the AST structure has
/// not been resolved, or if the invocation could not be resolved.
- FunctionType get staticInvokeType;
+ FunctionType? get staticInvokeType;
/// Sets the function type of the invocation.
- set staticInvokeType(FunctionType value);
+ set staticInvokeType(FunctionType? value);
}
/// A sequence of statements.
@@ -756,10 +759,10 @@
set block(Block block);
/// Set token representing the 'async' or 'sync' keyword to the given [token].
- set keyword(Token token);
+ set keyword(Token? token);
/// Set the star following the 'async' or 'sync' keyword to the given [token].
- set star(Token token);
+ set star(Token? token);
}
/// A boolean literal expression.
@@ -794,10 +797,10 @@
/// Return the label associated with the statement, or `null` if there is no
/// label.
- SimpleIdentifier get label;
+ SimpleIdentifier? get label;
/// Set the label associated with the statement to the given [identifier].
- set label(SimpleIdentifier identifier);
+ set label(SimpleIdentifier? identifier);
/// Return the semicolon terminating the statement.
Token get semicolon;
@@ -813,11 +816,11 @@
/// or `null` if the AST has not yet been resolved or if the target could not
/// be resolved. Note that if the source code has errors, the target might be
/// invalid (e.g. trying to break to a switch case).
- AstNode get target;
+ AstNode? get target;
/// Set the node from which this break statement is breaking to the given
/// [node].
- set target(AstNode node);
+ set target(AstNode? node);
}
/// A sequence of cascaded expressions: expressions that share a common target.
@@ -872,61 +875,61 @@
/// Return the token representing the 'catch' keyword, or `null` if there is
/// no 'catch' keyword.
- Token get catchKeyword;
+ Token? get catchKeyword;
/// Set the token representing the 'catch' keyword to the given [token].
- set catchKeyword(Token token);
+ set catchKeyword(Token? token);
/// Return the comma separating the exception parameter from the stack trace
/// parameter, or `null` if there is no stack trace parameter.
- Token get comma;
+ Token? get comma;
/// Set the comma separating the exception parameter from the stack trace
/// parameter to the given [token].
- set comma(Token token);
+ set comma(Token? token);
/// Return the parameter whose value will be the exception that was thrown, or
/// `null` if there is no 'catch' keyword.
- SimpleIdentifier get exceptionParameter;
+ SimpleIdentifier? get exceptionParameter;
/// Set the parameter whose value will be the exception that was thrown to the
/// given [parameter].
- set exceptionParameter(SimpleIdentifier parameter);
+ set exceptionParameter(SimpleIdentifier? parameter);
/// Return the type of exceptions caught by this catch clause, or `null` if
/// this catch clause catches every type of exception.
- TypeAnnotation get exceptionType;
+ TypeAnnotation? get exceptionType;
/// Set the type of exceptions caught by this catch clause to the given
/// [exceptionType].
- set exceptionType(TypeAnnotation exceptionType);
+ set exceptionType(TypeAnnotation? exceptionType);
/// Return the left parenthesis, or `null` if there is no 'catch' keyword.
- Token get leftParenthesis;
+ Token? get leftParenthesis;
/// Set the left parenthesis to the given [token].
- set leftParenthesis(Token token);
+ set leftParenthesis(Token? token);
/// Return the token representing the 'on' keyword, or `null` if there is no
/// 'on' keyword.
- Token get onKeyword;
+ Token? get onKeyword;
/// Set the token representing the 'on' keyword to the given [token].
- set onKeyword(Token token);
+ set onKeyword(Token? token);
/// Return the right parenthesis, or `null` if there is no 'catch' keyword.
- Token get rightParenthesis;
+ Token? get rightParenthesis;
/// Set the right parenthesis to the given [token].
- set rightParenthesis(Token token);
+ set rightParenthesis(Token? token);
/// Return the parameter whose value will be the stack trace associated with
/// the exception, or `null` if there is no stack trace parameter.
- SimpleIdentifier get stackTraceParameter;
+ SimpleIdentifier? get stackTraceParameter;
/// Set the parameter whose value will be the stack trace associated with the
/// exception to the given [parameter].
- set stackTraceParameter(SimpleIdentifier parameter);
+ set stackTraceParameter(SimpleIdentifier? parameter);
}
/// The declaration of a class.
@@ -940,10 +943,10 @@
/// Clients may not extend, implement or mix-in this class.
abstract class ClassDeclaration implements ClassOrMixinDeclaration {
/// Return the 'abstract' keyword, or `null` if the keyword was absent.
- Token get abstractKeyword;
+ Token? get abstractKeyword;
/// Set the 'abstract' keyword to the given [token].
- set abstractKeyword(Token token);
+ set abstractKeyword(Token? token);
/// Return the token representing the 'class' keyword.
Token get classKeyword;
@@ -953,13 +956,13 @@
/// Return the extends clause for this class, or `null` if the class does not
/// extend any other class.
- ExtendsClause get extendsClause;
+ ExtendsClause? get extendsClause;
/// Set the extends clause for this class to the given [extendsClause].
- set extendsClause(ExtendsClause extendsClause);
+ set extendsClause(ExtendsClause? extendsClause);
/// Set the implements clause for the class to the given [implementsClause].
- set implementsClause(ImplementsClause implementsClause);
+ set implementsClause(ImplementsClause? implementsClause);
/// Return `true` if this class is declared to be an abstract class.
bool get isAbstract;
@@ -969,31 +972,31 @@
/// Return the native clause for this class, or `null` if the class does not
/// have a native clause.
- NativeClause get nativeClause;
+ NativeClause? get nativeClause;
/// Set the native clause for this class to the given [nativeClause].
- set nativeClause(NativeClause nativeClause);
+ set nativeClause(NativeClause? nativeClause);
/// Set the right curly bracket to the given [token].
set rightBracket(Token token);
/// Set the type parameters for the class to the given list of
/// [typeParameters].
- set typeParameters(TypeParameterList typeParameters);
+ set typeParameters(TypeParameterList? typeParameters);
/// Return the with clause for the class, or `null` if the class does not have
/// a with clause.
- WithClause get withClause;
+ WithClause? get withClause;
/// Set the with clause for the class to the given [withClause].
- set withClause(WithClause withClause);
+ set withClause(WithClause? withClause);
/// Return the constructor declared in the class with the given [name], or
/// `null` if there is no such constructor.
///
/// If the [name] is `null` then the default constructor will be searched
/// for.
- ConstructorDeclaration getConstructor(String name);
+ ConstructorDeclaration? getConstructor(String? name);
}
/// A node that declares a name within the scope of a class declarations.
@@ -1009,11 +1012,11 @@
/// Clients may not extend, implement or mix-in this class.
abstract class ClassOrMixinDeclaration implements NamedCompilationUnitMember {
@override
- ClassElement get declaredElement;
+ ClassElement? get declaredElement;
/// Returns the implements clause for the class/mixin, or `null` if the
/// class/mixin does not implement any interfaces.
- ImplementsClause get implementsClause;
+ ImplementsClause? get implementsClause;
/// Returns the left curly bracket.
Token get leftBracket;
@@ -1021,20 +1024,23 @@
/// Returns the members defined by the class/mixin.
NodeList<ClassMember> get members;
+ @override
+ SimpleIdentifier get name;
+
/// Returns the right curly bracket.
Token get rightBracket;
/// Returns the type parameters for the class/mixin, or `null` if the
/// class/mixin does not have any type parameters.
- TypeParameterList get typeParameters;
+ TypeParameterList? get typeParameters;
/// Returns the field declared in the class/mixin with the given [name], or
/// `null` if there is no such field.
- VariableDeclaration getField(String name);
+ VariableDeclaration? getField(String name);
/// Returns the method declared in the class/mixin with the given [name], or
/// `null` if there is no such method.
- MethodDeclaration getMethod(String name);
+ MethodDeclaration? getMethod(String name);
}
/// A class type alias.
@@ -1049,13 +1055,13 @@
abstract class ClassTypeAlias implements TypeAlias {
/// Return the token for the 'abstract' keyword, or `null` if this is not
/// defining an abstract class.
- Token get abstractKeyword;
+ Token? get abstractKeyword;
/// Set the token for the 'abstract' keyword to the given [token].
- set abstractKeyword(Token token);
+ set abstractKeyword(Token? token);
@override
- ClassElement get declaredElement;
+ ClassElement? get declaredElement;
/// Return the token for the '=' separating the name from the definition.
Token get equals;
@@ -1066,14 +1072,17 @@
/// Return the implements clause for this class, or `null` if there is no
/// implements clause.
- ImplementsClause get implementsClause;
+ ImplementsClause? get implementsClause;
/// Set the implements clause for this class to the given [implementsClause].
- set implementsClause(ImplementsClause implementsClause);
+ set implementsClause(ImplementsClause? implementsClause);
/// Return `true` if this class is declared to be an abstract class.
bool get isAbstract;
+ @override
+ SimpleIdentifier get name;
+
/// Return the name of the superclass of the class being declared.
TypeName get superclass;
@@ -1083,11 +1092,11 @@
/// Return the type parameters for the class, or `null` if the class does not
/// have any type parameters.
- TypeParameterList get typeParameters;
+ TypeParameterList? get typeParameters;
/// Set the type parameters for the class to the given list of
/// [typeParameters].
- set typeParameters(TypeParameterList typeParameters);
+ set typeParameters(TypeParameterList? typeParameters);
/// Return the with clause for this class.
WithClause get withClause;
@@ -1175,10 +1184,10 @@
/// Return the token representing the 'new' keyword, or `null` if there was no
/// 'new' keyword.
- Token get newKeyword;
+ Token? get newKeyword;
/// Set the token representing the 'new' keyword to the given [token].
- set newKeyword(Token token);
+ set newKeyword(Token? token);
}
/// A compilation unit.
@@ -1214,47 +1223,43 @@
/// Return the element associated with this compilation unit, or `null` if the
/// AST structure has not been resolved.
- CompilationUnitElement get declaredElement;
+ CompilationUnitElement? get declaredElement;
/// Return the directives contained in this compilation unit.
NodeList<Directive> get directives;
/// Set the element associated with this compilation unit to the given
/// [element].
- set element(CompilationUnitElement element);
+ set element(CompilationUnitElement? element);
/// Set the last token included in this node's source range to the given
/// [token].
set endToken(Token token);
- /// The set of features available to this compilation unit, or `null` if
- /// unknown.
+ /// The set of features available to this compilation unit.
///
/// Determined by some combination of the .packages file, the enclosing
/// package's SDK version constraint, and/or the presence of a `@dart`
/// directive in a comment at the top of the file.
- ///
- /// Might be `null` if, for example, this [CompilationUnit] has been
- /// resynthesized from a summary.
FeatureSet get featureSet;
/// The language version override specified for this compilation unit using a
/// token like '// @dart = 2.7', or `null` if no override is specified.
- LanguageVersionToken get languageVersionToken;
+ LanguageVersionToken? get languageVersionToken;
/// Return the line information for this compilation unit.
- LineInfo get lineInfo;
+ LineInfo? get lineInfo;
/// Set the line information for this compilation unit to the given [info].
- set lineInfo(LineInfo info);
+ set lineInfo(LineInfo? info);
/// Return the script tag at the beginning of the compilation unit, or `null`
/// if there is no script tag in this compilation unit.
- ScriptTag get scriptTag;
+ ScriptTag? get scriptTag;
/// Set the script tag at the beginning of the compilation unit to the given
/// [scriptTag].
- set scriptTag(ScriptTag scriptTag);
+ set scriptTag(ScriptTag? scriptTag);
/// Return a list containing all of the directives and declarations in this
/// compilation unit, sorted in lexical order.
@@ -1299,7 +1304,7 @@
///
/// This element is `null` if the AST structure has not been resolved, or
/// if the target could not be resolved.
- Element get readElement;
+ Element? get readElement;
/// The type of the value read with the [readElement].
///
@@ -1310,7 +1315,7 @@
/// This type is `null` if the AST structure has not been resolved.
///
/// If the target could not be resolved, this type is `dynamic`.
- DartType get readType;
+ DartType? get readType;
/// The element that is used to write the result.
///
@@ -1327,12 +1332,12 @@
///
/// This element is `null` if the AST structure has not been resolved, or
/// if the target could not be resolved.
- Element get writeElement;
+ Element? get writeElement;
/// The types of assigned values must be subtypes of this type.
///
/// If the target could not be resolved, this type is `dynamic`.
- DartType get writeType;
+ DartType? get writeType;
}
/// A conditional expression.
@@ -1397,10 +1402,10 @@
abstract class Configuration implements AstNode {
/// Return the token for the equal operator, or `null` if the condition does
/// not include an equality test.
- Token get equalToken;
+ Token? get equalToken;
/// Set the token for the equal operator to the given [token].
- set equalToken(Token token);
+ set equalToken(Token? token);
/// Return the token for the 'if' keyword.
Token get ifKeyword;
@@ -1437,18 +1442,18 @@
set uri(StringLiteral uri);
/// Return the source to which the [uri] was resolved.
- Source get uriSource;
+ Source? get uriSource;
/// Set the source to which the [uri] was resolved to the given [source].
- set uriSource(Source source);
+ set uriSource(Source? source);
/// Return the value to which the value of the declared variable will be
/// compared, or `null` if the condition does not include an equality test.
- StringLiteral get value;
+ StringLiteral? get value;
/// Set the value to which the value of the declared variable will be
/// compared to the given [value].
- set value(StringLiteral value);
+ set value(StringLiteral? value);
}
/// A constructor declaration.
@@ -1475,44 +1480,44 @@
abstract class ConstructorDeclaration implements ClassMember {
/// Return the body of the constructor, or `null` if the constructor does not
/// have a body.
- FunctionBody get body;
+ FunctionBody? get body;
/// Set the body of the constructor to the given [functionBody].
- set body(FunctionBody functionBody);
+ set body(FunctionBody? functionBody);
/// Return the token for the 'const' keyword, or `null` if the constructor is
/// not a const constructor.
- Token get constKeyword;
+ Token? get constKeyword;
/// Set the token for the 'const' keyword to the given [token].
- set constKeyword(Token token);
+ set constKeyword(Token? token);
@override
- ConstructorElement get declaredElement;
+ ConstructorElement? get declaredElement;
/// Return the token for the 'external' keyword to the given [token].
- Token get externalKeyword;
+ Token? get externalKeyword;
/// Set the token for the 'external' keyword, or `null` if the constructor
/// is not external.
- set externalKeyword(Token token);
+ set externalKeyword(Token? token);
/// Return the token for the 'factory' keyword, or `null` if the constructor
/// is not a factory constructor.
- Token get factoryKeyword;
+ Token? get factoryKeyword;
/// Set the token for the 'factory' keyword to the given [token].
- set factoryKeyword(Token token);
+ set factoryKeyword(Token? token);
/// Return the initializers associated with the constructor.
NodeList<ConstructorInitializer> get initializers;
/// Return the name of the constructor, or `null` if the constructor being
/// declared is unnamed.
- SimpleIdentifier get name;
+ SimpleIdentifier? get name;
/// Set the name of the constructor to the given [identifier].
- set name(SimpleIdentifier identifier);
+ set name(SimpleIdentifier? identifier);
/// Return the parameters associated with the constructor.
FormalParameterList get parameters;
@@ -1523,19 +1528,19 @@
/// Return the token for the period before the constructor name, or `null` if
/// the constructor being declared is unnamed.
- Token get period;
+ Token? get period;
/// Set the token for the period before the constructor name to the given
/// [token].
- set period(Token token);
+ set period(Token? token);
/// Return the name of the constructor to which this constructor will be
/// redirected, or `null` if this is not a redirecting factory constructor.
- ConstructorName get redirectedConstructor;
+ ConstructorName? get redirectedConstructor;
/// Set the name of the constructor to which this constructor will be
/// redirected to the given [redirectedConstructor] name.
- set redirectedConstructor(ConstructorName redirectedConstructor);
+ set redirectedConstructor(ConstructorName? redirectedConstructor);
/// Return the type of object being created.
///
@@ -1549,11 +1554,11 @@
/// Return the token for the separator (colon or equals) before the
/// initializer list or redirection, or `null` if there are no initializers.
- Token get separator;
+ Token? get separator;
/// Set the token for the separator (colon or equals) before the initializer
/// list or redirection to the given [token].
- set separator(Token token);
+ set separator(Token? token);
}
/// The initialization of a field within a constructor's initialization list.
@@ -1587,18 +1592,18 @@
/// Return the token for the period after the 'this' keyword, or `null` if
/// there is no 'this' keyword.
- Token get period;
+ Token? get period;
/// Set the token for the period after the 'this' keyword to the given
/// [token].
- set period(Token token);
+ set period(Token? token);
/// Return the token for the 'this' keyword, or `null` if there is no 'this'
/// keyword.
- Token get thisKeyword;
+ Token? get thisKeyword;
/// Set the token for the 'this' keyword to the given [token].
- set thisKeyword(Token token);
+ set thisKeyword(Token? token);
}
/// A node that can occur in the initializer list of a constructor declaration.
@@ -1620,18 +1625,18 @@
abstract class ConstructorName implements AstNode, ConstructorReferenceNode {
/// Return the name of the constructor, or `null` if the specified constructor
/// is the unnamed constructor.
- SimpleIdentifier get name;
+ SimpleIdentifier? get name;
/// Set the name of the constructor to the given [name].
- set name(SimpleIdentifier name);
+ set name(SimpleIdentifier? name);
/// Return the token for the period before the constructor name, or `null` if
/// the specified constructor is the unnamed constructor.
- Token get period;
+ Token? get period;
/// Set the token for the period before the constructor name to the given
/// [token].
- set period(Token token);
+ set period(Token? token);
/// Return the name of the type defining the constructor.
TypeName get type;
@@ -1648,11 +1653,11 @@
/// Return the element associated with the referenced constructor based on
/// static type information, or `null` if the AST structure has not been
/// resolved or if the constructor could not be resolved.
- ConstructorElement get staticElement;
+ ConstructorElement? get staticElement;
/// Set the element associated with the referenced constructor based on static
/// type information to the given [element].
- set staticElement(ConstructorElement element);
+ set staticElement(ConstructorElement? element);
}
/// A continue statement.
@@ -1670,10 +1675,10 @@
/// Return the label associated with the statement, or `null` if there is no
/// label.
- SimpleIdentifier get label;
+ SimpleIdentifier? get label;
/// Set the label associated with the statement to the given [identifier].
- set label(SimpleIdentifier identifier);
+ set label(SimpleIdentifier? identifier);
/// Return the semicolon terminating the statement.
Token get semicolon;
@@ -1689,11 +1694,11 @@
/// could not be resolved. Note that if the source code has errors, the
/// target might be invalid (e.g. the target may be in an enclosing
/// function).
- AstNode get target;
+ AstNode? get target;
/// Set the node to which this continue statement is continuing to the given
/// [node].
- set target(AstNode node);
+ set target(AstNode? node);
}
/// A node that represents the declaration of one or more names.
@@ -1705,7 +1710,7 @@
/// Return the element associated with this declaration, or `null` if either
/// this node corresponds to a list of declarations or if the AST structure
/// has not been resolved.
- Element get declaredElement;
+ Element? get declaredElement;
}
/// The declaration of a single identifier.
@@ -1716,7 +1721,7 @@
/// Clients may not extend, implement or mix-in this class.
abstract class DeclaredIdentifier implements Declaration {
@override
- LocalVariableElement get declaredElement;
+ LocalVariableElement? get declaredElement;
/// Return the name of the variable being declared.
SimpleIdentifier get identifier;
@@ -1734,18 +1739,18 @@
/// Return the token representing either the 'final', 'const' or 'var'
/// keyword, or `null` if no keyword was used.
- Token get keyword;
+ Token? get keyword;
/// Set the token representing either the 'final', 'const' or 'var' keyword to
/// the given [token].
- set keyword(Token token);
+ set keyword(Token? token);
/// Return the name of the declared type of the parameter, or `null` if the
/// parameter does not have a declared type.
- TypeAnnotation get type;
+ TypeAnnotation? get type;
/// Set the declared type of the parameter to the given [type].
- set type(TypeAnnotation type);
+ set type(TypeAnnotation? type);
}
/// A formal parameter with a default value.
@@ -1763,11 +1768,11 @@
abstract class DefaultFormalParameter implements FormalParameter {
/// Return the expression computing the default value for the parameter, or
/// `null` if there is no default value.
- Expression get defaultValue;
+ Expression? get defaultValue;
/// Set the expression computing the default value for the parameter to the
/// given [expression].
- set defaultValue(Expression expression);
+ set defaultValue(Expression? expression);
/// Set the kind of this parameter to the given [kind].
set kind(ParameterKind kind);
@@ -1781,11 +1786,11 @@
/// Return the token separating the parameter from the default value, or
/// `null` if there is no default value.
- Token get separator;
+ Token? get separator;
/// Set the token separating the parameter from the default value to the given
/// [token].
- set separator(Token token);
+ set separator(Token? token);
}
/// A node that represents a directive.
@@ -1802,10 +1807,10 @@
/// Return the element associated with this directive, or `null` if the AST
/// structure has not been resolved or if this directive could not be
/// resolved.
- Element get element;
+ Element? get element;
/// Set the element associated with this directive to the given [element].
- set element(Element element);
+ set element(Element? element);
/// Return the token representing the keyword that introduces this directive
/// ('import', 'export', 'library' or 'part').
@@ -1951,7 +1956,7 @@
NodeList<EnumConstantDeclaration> get constants;
@override
- ClassElement get declaredElement;
+ ClassElement? get declaredElement;
/// Return the 'enum' keyword.
Token get enumKeyword;
@@ -1965,6 +1970,9 @@
/// Set the left curly bracket to the given [token].
set leftBracket(Token token);
+ @override
+ SimpleIdentifier get name;
+
/// Return the right curly bracket.
Token get rightBracket;
@@ -1980,7 +1988,7 @@
/// Clients may not extend, implement or mix-in this class.
abstract class ExportDirective implements NamespaceDirective {
@override
- ExportElement get element;
+ ExportElement? get element;
}
/// A node that represents an expression.
@@ -2009,14 +2017,14 @@
/// of the function being invoked, then return the parameter element
/// representing the parameter to which the value of this expression will be
/// bound. Otherwise, return `null`.
- ParameterElement get staticParameterElement;
+ ParameterElement? get staticParameterElement;
/// Return the static type of this expression, or `null` if the AST structure
/// has not been resolved.
- DartType get staticType;
+ DartType? get staticType;
/// Set the static type of this expression to the given [type].
- set staticType(DartType type);
+ set staticType(DartType? type);
/// If this expression is a parenthesized expression, return the result of
/// unwrapping the expression inside the parentheses. Otherwise, return this
@@ -2047,13 +2055,13 @@
set functionDefinition(Token token);
/// Set token representing the 'async' or 'sync' keyword to the given [token].
- set keyword(Token token);
+ set keyword(Token? token);
/// Return the semicolon terminating the statement.
- Token get semicolon;
+ Token? get semicolon;
/// Set the semicolon terminating the statement to the given [token].
- set semicolon(Token token);
+ set semicolon(Token? token);
}
/// An expression used as a statement.
@@ -2072,10 +2080,10 @@
/// Return the semicolon terminating the statement, or `null` if the
/// expression is a function expression and therefore isn't followed by a
/// semicolon.
- Token get semicolon;
+ Token? get semicolon;
/// Set the semicolon terminating the statement to the given [token].
- set semicolon(Token token);
+ set semicolon(Token? token);
}
/// The "extends" clause in a class declaration.
@@ -2107,7 +2115,7 @@
/// Clients may not extend, implement or mix-in this class.
abstract class ExtensionDeclaration implements CompilationUnitMember {
@override
- ExtensionElement get declaredElement;
+ ExtensionElement? get declaredElement;
/// Return the type that is being extended.
TypeAnnotation get extendedType;
@@ -2123,7 +2131,7 @@
/// Return the name of the extension, or `null` if the extension does not have
/// a name.
- SimpleIdentifier get name;
+ SimpleIdentifier? get name;
/// Return the token representing the 'on' keyword.
Token get onKeyword;
@@ -2133,7 +2141,7 @@
/// Return the type parameters for the extension, or `null` if the extension
/// does not have any type parameters.
- TypeParameterList get typeParameters;
+ TypeParameterList? get typeParameters;
}
/// An override to force resolution to choose a member from a specific
@@ -2152,7 +2160,7 @@
/// [typeArgumentTypes] to the generic type extended by the extension.
///
/// Return `null` if the AST structure has not been resolved.
- DartType get extendedType;
+ DartType? get extendedType;
/// Return the name of the extension being selected.
Identifier get extensionName;
@@ -2163,11 +2171,11 @@
/// Return the forced extension element.
///
/// Return `null` if the AST structure has not been resolved.
- ExtensionElement get staticElement;
+ ExtensionElement? get staticElement;
/// Return the type arguments to be applied to the extension, or `null` if no
/// type arguments were provided.
- TypeArgumentList get typeArguments;
+ TypeArgumentList? get typeArguments;
/// Return the actual type arguments to be applied to the extension, either
/// explicitly specified in [typeArguments], or inferred.
@@ -2176,7 +2184,7 @@
/// if the extension does not have type parameters.
///
/// Return `null` if the AST structure has not been resolved.
- List<DartType> get typeArgumentTypes;
+ List<DartType>? get typeArgumentTypes;
}
/// The declaration of one or more fields of the same type.
@@ -2205,16 +2213,16 @@
/// Clients may not extend, implement or mix-in this class.
abstract class FieldDeclaration implements ClassMember {
/// The `abstract` keyword, or `null` if the keyword was not used.
- Token get abstractKeyword;
+ Token? get abstractKeyword;
/// The 'covariant' keyword, or `null` if the keyword was not used.
- Token get covariantKeyword;
+ Token? get covariantKeyword;
/// Set the token for the 'covariant' keyword to the given [token].
- set covariantKeyword(Token token);
+ set covariantKeyword(Token? token);
/// The `external` keyword, or `null` if the keyword was not used.
- Token get externalKeyword;
+ Token? get externalKeyword;
/// Return the fields being declared.
VariableDeclarationList get fields;
@@ -2233,10 +2241,10 @@
/// Return the token representing the 'static' keyword, or `null` if the
/// fields are not static.
- Token get staticKeyword;
+ Token? get staticKeyword;
/// Set the token representing the 'static' keyword to the given [token].
- set staticKeyword(Token token);
+ set staticKeyword(Token? token);
}
/// A field formal parameter.
@@ -2247,21 +2255,24 @@
///
/// Clients may not extend, implement or mix-in this class.
abstract class FieldFormalParameter implements NormalFormalParameter {
+ @override
+ SimpleIdentifier get identifier;
+
/// Return the token representing either the 'final', 'const' or 'var'
/// keyword, or `null` if no keyword was used.
- Token get keyword;
+ Token? get keyword;
/// Set the token representing either the 'final', 'const' or 'var' keyword to
/// the given [token].
- set keyword(Token token);
+ set keyword(Token? token);
/// Return the parameters of the function-typed parameter, or `null` if this
/// is not a function-typed field formal parameter.
- FormalParameterList get parameters;
+ FormalParameterList? get parameters;
/// Set the parameters of the function-typed parameter to the given
/// [parameters].
- set parameters(FormalParameterList parameters);
+ set parameters(FormalParameterList? parameters);
/// Return the token representing the period.
Token get period;
@@ -2272,7 +2283,7 @@
/// If the parameter is function-typed, and has the question mark, then its
/// function type is nullable. Having a nullable function type means that the
/// parameter can be null.
- Token get question;
+ Token? get question;
/// Return the token representing the 'this' keyword.
Token get thisKeyword;
@@ -2285,18 +2296,18 @@
///
/// Note that if this is a function-typed field formal parameter this is the
/// return type of the function.
- TypeAnnotation get type;
+ TypeAnnotation? get type;
/// Set the declared type of the parameter to the given [type].
- set type(TypeAnnotation type);
+ set type(TypeAnnotation? type);
/// Return the type parameters associated with this method, or `null` if this
/// method is not a generic method.
- TypeParameterList get typeParameters;
+ TypeParameterList? get typeParameters;
/// Set the type parameters associated with this method to the given
/// [typeParameters].
- set typeParameters(TypeParameterList typeParameters);
+ set typeParameters(TypeParameterList? typeParameters);
}
/// The parts of a for-each loop that control the iteration.
@@ -2340,7 +2351,7 @@
abstract class ForElement implements CollectionElement {
/// Return the token representing the 'await' keyword, or `null` if there was
/// no 'await' keyword.
- Token get awaitKeyword;
+ Token? get awaitKeyword;
/// Return the body of the loop.
CollectionElement get body;
@@ -2381,14 +2392,16 @@
/// Clients may not extend, implement or mix-in this class.
abstract class FormalParameter implements AstNode {
/// The 'covariant' keyword, or `null` if the keyword was not used.
- Token get covariantKeyword;
+ Token? get covariantKeyword;
/// Return the element representing this parameter, or `null` if this
/// parameter has not been resolved.
- ParameterElement get declaredElement;
+ ParameterElement? get declaredElement;
- /// Return the name of the parameter being declared.
- SimpleIdentifier get identifier;
+ /// Return the name of the parameter being declared, or `null` if the
+ /// parameter doesn't have a name, such as when it's part of a generic
+ /// function type.
+ SimpleIdentifier? get identifier;
/// Return `true` if this parameter was declared with the 'const' modifier.
bool get isConst;
@@ -2443,7 +2456,7 @@
NodeList<Annotation> get metadata;
/// The 'required' keyword, or `null` if the keyword was not used.
- Token get requiredKeyword;
+ Token? get requiredKeyword;
}
/// The formal parameter list of a method declaration, function declaration, or
@@ -2477,11 +2490,11 @@
abstract class FormalParameterList implements AstNode {
/// Return the left square bracket ('[') or left curly brace ('{') introducing
/// the optional parameters, or `null` if there are no optional parameters.
- Token get leftDelimiter;
+ Token? get leftDelimiter;
/// Set the left square bracket ('[') or left curly brace ('{') introducing
/// the optional parameters to the given [token].
- set leftDelimiter(Token token);
+ set leftDelimiter(Token? token);
/// Return the left parenthesis.
Token get leftParenthesis;
@@ -2494,7 +2507,7 @@
///
/// The list will contain `null`s if the parameters in this list have not
/// been resolved.
- List<ParameterElement> get parameterElements;
+ List<ParameterElement?> get parameterElements;
/// Return the parameters associated with the method.
NodeList<FormalParameter> get parameters;
@@ -2502,11 +2515,11 @@
/// Return the right square bracket (']') or right curly brace ('}')
/// terminating the optional parameters, or `null` if there are no optional
/// parameters.
- Token get rightDelimiter;
+ Token? get rightDelimiter;
/// Set the right square bracket (']') or right curly brace ('}') terminating
/// the optional parameters to the given [token].
- set rightDelimiter(Token token);
+ set rightDelimiter(Token? token);
/// Return the right parenthesis.
Token get rightParenthesis;
@@ -2525,7 +2538,7 @@
abstract class ForParts implements ForLoopParts {
/// Return the condition used to determine when to terminate the loop, or
/// `null` if there is no condition.
- Expression get condition;
+ Expression? get condition;
/// Return the semicolon separating the initializer and the condition.
Token get leftSeparator;
@@ -2559,7 +2572,7 @@
abstract class ForPartsWithExpression implements ForParts {
/// Return the initialization expression, or `null` if there is no
/// initialization expression.
- Expression get initialization;
+ Expression? get initialization;
}
/// A for or for-each statement.
@@ -2582,7 +2595,7 @@
abstract class ForStatement implements Statement {
/// Return the token representing the 'await' keyword, or `null` if there is
/// no 'await' keyword.
- Token get awaitKeyword;
+ Token? get awaitKeyword;
/// Return the body of the loop.
Statement get body;
@@ -2620,11 +2633,11 @@
/// Return the token representing the 'async' or 'sync' keyword, or `null` if
/// there is no such keyword.
- Token get keyword;
+ Token? get keyword;
/// Return the star following the 'async' or 'sync' keyword, or `null` if
/// there is no star.
- Token get star;
+ Token? get star;
/// If [variable] is a local variable or parameter declared anywhere within
/// the top level function or method containing this [FunctionBody], return a
@@ -2661,14 +2674,14 @@
/// Clients may not extend, implement or mix-in this class.
abstract class FunctionDeclaration implements NamedCompilationUnitMember {
@override
- ExecutableElement get declaredElement;
+ ExecutableElement? get declaredElement;
/// Return the token representing the 'external' keyword, or `null` if this is
/// not an external function.
- Token get externalKeyword;
+ Token? get externalKeyword;
/// Set the token representing the 'external' keyword to the given [token].
- set externalKeyword(Token token);
+ set externalKeyword(Token? token);
/// Return the function expression being wrapped.
FunctionExpression get functionExpression;
@@ -2683,20 +2696,23 @@
/// Return `true` if this function declares a setter.
bool get isSetter;
+ @override
+ SimpleIdentifier get name;
+
/// Return the token representing the 'get' or 'set' keyword, or `null` if
/// this is a function declaration rather than a property declaration.
- Token get propertyKeyword;
+ Token? get propertyKeyword;
/// Set the token representing the 'get' or 'set' keyword to the given
/// [token].
- set propertyKeyword(Token token);
+ set propertyKeyword(Token? token);
/// Return the return type of the function, or `null` if no return type was
/// declared.
- TypeAnnotation get returnType;
+ TypeAnnotation? get returnType;
/// Set the return type of the function to the given [type].
- set returnType(TypeAnnotation type);
+ set returnType(TypeAnnotation? type);
}
/// A [FunctionDeclaration] used as a statement.
@@ -2720,30 +2736,30 @@
abstract class FunctionExpression implements Expression {
/// Return the body of the function, or `null` if this is an external
/// function.
- FunctionBody get body;
+ FunctionBody? get body;
/// Set the body of the function to the given [functionBody].
- set body(FunctionBody functionBody);
+ set body(FunctionBody? functionBody);
/// Return the element associated with the function, or `null` if the AST
/// structure has not been resolved.
- ExecutableElement get declaredElement;
+ ExecutableElement? get declaredElement;
/// Return the parameters associated with the function, or `null` if the
/// function is part of a top-level getter.
- FormalParameterList get parameters;
+ FormalParameterList? get parameters;
/// Set the parameters associated with the function to the given list of
/// [parameters].
- set parameters(FormalParameterList parameters);
+ set parameters(FormalParameterList? parameters);
/// Return the type parameters associated with this method, or `null` if this
/// method is not a generic method.
- TypeParameterList get typeParameters;
+ TypeParameterList? get typeParameters;
/// Set the type parameters associated with this method to the given
/// [typeParameters].
- set typeParameters(TypeParameterList typeParameters);
+ set typeParameters(TypeParameterList? typeParameters);
}
/// The invocation of a function resulting from evaluating an expression.
@@ -2772,15 +2788,15 @@
/// Return the element associated with the function being invoked based on
/// static type information, or `null` if the AST structure has not been
/// resolved or the function could not be resolved.
- ExecutableElement get staticElement;
+ ExecutableElement? get staticElement;
/// Set the element associated with the function being invoked based on static
/// type information to the given [element].
- set staticElement(ExecutableElement element);
+ set staticElement(ExecutableElement? element);
/// Set the type arguments to be applied to the method being invoked to the
/// given [typeArguments].
- set typeArguments(TypeArgumentList typeArguments);
+ set typeArguments(TypeArgumentList? typeArguments);
}
/// A function type alias.
@@ -2794,7 +2810,7 @@
/// Clients may not extend, implement or mix-in this class.
abstract class FunctionTypeAlias implements TypeAlias {
@override
- FunctionTypeAliasElement get declaredElement;
+ FunctionTypeAliasElement? get declaredElement;
/// Return the parameters associated with the function type.
FormalParameterList get parameters;
@@ -2805,19 +2821,19 @@
/// Return the return type of the function type being defined, or `null` if no
/// return type was given.
- TypeAnnotation get returnType;
+ TypeAnnotation? get returnType;
/// Set the return type of the function type being defined to the given
/// [type].
- set returnType(TypeAnnotation type);
+ set returnType(TypeAnnotation? type);
/// Return the type parameters for the function type, or `null` if the
/// function type does not have any type parameters.
- TypeParameterList get typeParameters;
+ TypeParameterList? get typeParameters;
/// Set the type parameters for the function type to the given list of
/// [typeParameters].
- set typeParameters(TypeParameterList typeParameters);
+ set typeParameters(TypeParameterList? typeParameters);
}
/// A function-typed formal parameter.
@@ -2828,6 +2844,9 @@
///
/// Clients may not extend, implement or mix-in this class.
abstract class FunctionTypedFormalParameter implements NormalFormalParameter {
+ @override
+ SimpleIdentifier get identifier;
+
/// Return the parameters of the function-typed parameter.
FormalParameterList get parameters;
@@ -2838,22 +2857,22 @@
/// Return the question mark indicating that the function type is nullable, or
/// `null` if there is no question mark. Having a nullable function type means
/// that the parameter can be null.
- Token get question;
+ Token? get question;
/// Return the return type of the function, or `null` if the function does not
/// have a return type.
- TypeAnnotation get returnType;
+ TypeAnnotation? get returnType;
/// Set the return type of the function to the given [type].
- set returnType(TypeAnnotation type);
+ set returnType(TypeAnnotation? type);
/// Return the type parameters associated with this function, or `null` if
/// this function is not a generic function.
- TypeParameterList get typeParameters;
+ TypeParameterList? get typeParameters;
/// Set the type parameters associated with this method to the given
/// [typeParameters].
- set typeParameters(TypeParameterList typeParameters);
+ set typeParameters(TypeParameterList? typeParameters);
}
/// An anonymous function type.
@@ -2902,22 +2921,22 @@
/// Set the question mark indicating that the type is nullable to the given
/// [token].
- set question(Token token);
+ set question(Token? token);
/// Return the return type of the function type being defined, or `null` if
/// no return type was given.
- TypeAnnotation get returnType;
+ TypeAnnotation? get returnType;
/// Set the return type of the function type being defined to the given[type].
- set returnType(TypeAnnotation type);
+ set returnType(TypeAnnotation? type);
/// Return the type parameters for the function type, or `null` if the
/// function type does not have any type parameters.
- TypeParameterList get typeParameters;
+ TypeParameterList? get typeParameters;
/// Set the type parameters for the function type to the given list of
/// [typeParameters].
- set typeParameters(TypeParameterList typeParameters);
+ set typeParameters(TypeParameterList? typeParameters);
}
/// A generic type alias.
@@ -2940,24 +2959,24 @@
///
/// When the non-function type aliases feature is enabled and the denoted
/// type is not a [GenericFunctionType], return `null`.
- GenericFunctionType get functionType;
+ GenericFunctionType? get functionType;
/// Set the type of function being defined by the alias to the given
/// [functionType].
@Deprecated('Clients should not build AST manually')
- set functionType(GenericFunctionType functionType);
+ set functionType(GenericFunctionType? functionType);
/// Return the type being defined by the alias.
TypeAnnotation get type;
/// Return the type parameters for the function type, or `null` if the
/// function type does not have any type parameters.
- TypeParameterList get typeParameters;
+ TypeParameterList? get typeParameters;
/// Set the type parameters for the function type to the given list of
/// [typeParameters].
@Deprecated('Clients should not build AST manually')
- set typeParameters(TypeParameterList typeParameters);
+ set typeParameters(TypeParameterList? typeParameters);
}
/// A combinator that restricts the names being imported to those that are not
@@ -2990,7 +3009,7 @@
///
/// One example of the latter case is an identifier that is not defined
/// within the scope in which it appears.
- Element get staticElement;
+ Element? get staticElement;
/// Return `true` if the given [name] is visible only within the library in
/// which it is declared.
@@ -3007,11 +3026,11 @@
/// Return the statement that is executed if the condition evaluates to
/// `false`, or `null` if there is no else statement.
- CollectionElement get elseElement;
+ CollectionElement? get elseElement;
/// Return the token representing the 'else' keyword, or `null` if there is no
/// else statement.
- Token get elseKeyword;
+ Token? get elseKeyword;
/// Return the token representing the 'if' keyword.
Token get ifKeyword;
@@ -3044,18 +3063,18 @@
/// Return the token representing the 'else' keyword, or `null` if there is no
/// else statement.
- Token get elseKeyword;
+ Token? get elseKeyword;
/// Set the token representing the 'else' keyword to the given [token].
- set elseKeyword(Token token);
+ set elseKeyword(Token? token);
/// Return the statement that is executed if the condition evaluates to
/// `false`, or `null` if there is no else statement.
- Statement get elseStatement;
+ Statement? get elseStatement;
/// Set the statement that is executed if the condition evaluates to `false`
/// to the given [statement].
- set elseStatement(Statement statement);
+ set elseStatement(Statement? statement);
/// Return the token representing the 'if' keyword.
Token get ifKeyword;
@@ -3116,8 +3135,8 @@
//
StringLiteral uri1 = import1.uri;
StringLiteral uri2 = import2.uri;
- String uriStr1 = uri1.stringValue;
- String uriStr2 = uri2.stringValue;
+ String? uriStr1 = uri1.stringValue;
+ String? uriStr2 = uri2.stringValue;
if (uriStr1 != null || uriStr2 != null) {
if (uriStr1 == null) {
return -1;
@@ -3133,10 +3152,10 @@
//
// as
//
- SimpleIdentifier prefix1 = import1.prefix;
- SimpleIdentifier prefix2 = import2.prefix;
- String prefixStr1 = prefix1?.name;
- String prefixStr2 = prefix2?.name;
+ SimpleIdentifier? prefix1 = import1.prefix;
+ SimpleIdentifier? prefix2 = import2.prefix;
+ String? prefixStr1 = prefix1?.name;
+ String? prefixStr2 = prefix2?.name;
if (prefixStr1 != null || prefixStr2 != null) {
if (prefixStr1 == null) {
return -1;
@@ -3217,28 +3236,28 @@
/// Return the token representing the 'as' keyword, or `null` if the imported
/// names are not prefixed.
- Token get asKeyword;
+ Token? get asKeyword;
/// Set the token representing the 'as' keyword to the given [token].
- set asKeyword(Token token);
+ set asKeyword(Token? token);
/// Return the token representing the 'deferred' keyword, or `null` if the
/// imported URI is not deferred.
- Token get deferredKeyword;
+ Token? get deferredKeyword;
/// Set the token representing the 'deferred' keyword to the given [token].
- set deferredKeyword(Token token);
+ set deferredKeyword(Token? token);
@override
- ImportElement get element;
+ ImportElement? get element;
/// Return the prefix to be used with the imported names, or `null` if the
/// imported names are not prefixed.
- SimpleIdentifier get prefix;
+ SimpleIdentifier? get prefix;
/// Set the prefix to be used with the imported names to the given
/// [identifier].
- set prefix(SimpleIdentifier identifier);
+ set prefix(SimpleIdentifier? identifier);
}
/// An index expression.
@@ -3272,15 +3291,15 @@
/// Return the period (".." | "?..") before a cascaded index expression, or
/// `null` if this index expression is not part of a cascade expression.
- Token get period;
+ Token? get period;
/// Set the period ("..") before a cascaded index expression to the given
/// [token].
- set period(Token token);
+ set period(Token? token);
/// Return the question mark before the left bracket, or `null` if there is no
/// question mark.
- Token get question;
+ Token? get question;
/// Return the expression used to compute the object being indexed.
///
@@ -3298,11 +3317,11 @@
///
/// Use [realTarget] to get the target independent of whether this is part of
/// a cascade expression.
- Expression get target;
+ Expression? get target;
/// Set the expression used to compute the object being indexed to the given
/// [expression].
- set target(Expression expression);
+ set target(Expression? expression);
/// Return `true` if this expression is computing a right-hand value (that is,
/// if this expression is in a context where the operator '[]' will be
@@ -3352,11 +3371,11 @@
/// Return the 'new' or 'const' keyword used to indicate how an object should
/// be created, or `null` if the keyword was not explicitly provided.
- Token get keyword;
+ Token? get keyword;
/// Set the 'new' or 'const' keyword used to indicate how an object should be
/// created to the given [token].
- set keyword(Token token);
+ set keyword(Token? token);
}
/// An integer literal expression.
@@ -3380,11 +3399,12 @@
/// Set the token representing the literal to the given [token].
set literal(Token token);
- /// Return the value of the literal.
- int get value;
+ /// Return the value of the literal, or `null` when [literal] does not
+ /// represent a valid `int` value, for example because of overflow.
+ int? get value;
/// Set the value of the literal to the given [value].
- set value(int value);
+ set value(int? value);
}
/// A node within a [StringInterpolation].
@@ -3424,10 +3444,10 @@
/// Return the right curly bracket, or `null` if the expression is an
/// identifier without brackets.
- Token get rightBracket;
+ Token? get rightBracket;
/// Set the right curly bracket to the given [token].
- set rightBracket(Token token);
+ set rightBracket(Token? token);
}
/// A non-empty substring of an interpolated string.
@@ -3481,15 +3501,15 @@
/// This will usually be a [FunctionType], but it can also be `dynamic` or
/// `Function`. In the case of interface types that have a `call` method, we
/// store the type of that `call` method here as parameterized.
- DartType get staticInvokeType;
+ DartType? get staticInvokeType;
/// Sets the function type of the invocation based on the static type
/// information.
- set staticInvokeType(DartType value);
+ set staticInvokeType(DartType? value);
/// Return the type arguments to be applied to the method being invoked, or
/// `null` if no type arguments were provided.
- TypeArgumentList get typeArguments;
+ TypeArgumentList? get typeArguments;
/// Return the actual type arguments of the invocation, either explicitly
/// specified in [typeArguments], or inferred.
@@ -3498,7 +3518,7 @@
/// if the [function] does not have type parameters.
///
/// Return `null` if the AST structure has not been resolved.
- List<DartType> get typeArgumentTypes;
+ List<DartType>? get typeArgumentTypes;
}
/// An is expression.
@@ -3524,10 +3544,10 @@
/// Return the not operator, or `null` if the sense of the test is not
/// negated.
- Token get notOperator;
+ Token? get notOperator;
/// Set the not operator to the given [token].
- set notOperator(Token token);
+ set notOperator(Token? token);
/// Return the type being tested for.
TypeAnnotation get type;
@@ -3708,14 +3728,14 @@
set body(FunctionBody functionBody);
@override
- ExecutableElement get declaredElement;
+ ExecutableElement? get declaredElement;
/// Return the token for the 'external' keyword, or `null` if the constructor
/// is not external.
- Token get externalKeyword;
+ Token? get externalKeyword;
/// Set the token for the 'external' keyword to the given [token].
- set externalKeyword(Token token);
+ set externalKeyword(Token? token);
/// Return `true` if this method is declared to be an abstract method.
bool get isAbstract;
@@ -3734,11 +3754,11 @@
/// Return the token representing the 'abstract' or 'static' keyword, or
/// `null` if neither modifier was specified.
- Token get modifierKeyword;
+ Token? get modifierKeyword;
/// Set the token representing the 'abstract' or 'static' keyword to the given
/// [token].
- set modifierKeyword(Token token);
+ set modifierKeyword(Token? token);
/// Return the name of the method.
SimpleIdentifier get name;
@@ -3748,41 +3768,41 @@
/// Return the token representing the 'operator' keyword, or `null` if this
/// method does not declare an operator.
- Token get operatorKeyword;
+ Token? get operatorKeyword;
/// Set the token representing the 'operator' keyword to the given [token].
- set operatorKeyword(Token token);
+ set operatorKeyword(Token? token);
/// Return the parameters associated with the method, or `null` if this method
/// declares a getter.
- FormalParameterList get parameters;
+ FormalParameterList? get parameters;
/// Set the parameters associated with the method to the given list of
/// [parameters].
- set parameters(FormalParameterList parameters);
+ set parameters(FormalParameterList? parameters);
/// Return the token representing the 'get' or 'set' keyword, or `null` if
/// this is a method declaration rather than a property declaration.
- Token get propertyKeyword;
+ Token? get propertyKeyword;
/// Set the token representing the 'get' or 'set' keyword to the given
/// [token].
- set propertyKeyword(Token token);
+ set propertyKeyword(Token? token);
/// Return the return type of the method, or `null` if no return type was
/// declared.
- TypeAnnotation get returnType;
+ TypeAnnotation? get returnType;
/// Set the return type of the method to the given [type].
- set returnType(TypeAnnotation type);
+ set returnType(TypeAnnotation? type);
/// Return the type parameters associated with this method, or `null` if this
/// method is not a generic method.
- TypeParameterList get typeParameters;
+ TypeParameterList? get typeParameters;
/// Set the type parameters associated with this method to the given
/// [typeParameters].
- set typeParameters(TypeParameterList typeParameters);
+ set typeParameters(TypeParameterList? typeParameters);
}
/// The invocation of either a function or a method.
@@ -3821,18 +3841,18 @@
///
/// In an ordinary method invocation this will be period ('.'). In a cascade
/// section this will be the cascade operator ('..').
- Token get operator;
+ Token? get operator;
/// Set the operator that separates the target from the method name to the
/// given [token].
- set operator(Token token);
+ set operator(Token? token);
/// Return the expression used to compute the receiver of the invocation.
///
/// If this invocation is not part of a cascade expression, then this is the
/// same as [target]. If this invocation is part of a cascade expression,
/// then the target stored with the cascade expression is returned.
- Expression get realTarget;
+ Expression? get realTarget;
/// Return the expression producing the object on which the method is defined,
/// or `null` if there is no target (that is, the target is implicitly `this`)
@@ -3840,15 +3860,15 @@
///
/// Use [realTarget] to get the target independent of whether this is part of
/// a cascade expression.
- Expression get target;
+ Expression? get target;
/// Set the expression producing the object on which the method is defined to
/// the given [expression].
- set target(Expression expression);
+ set target(Expression? expression);
/// Set the type arguments to be applied to the method being invoked to the
/// given [typeArguments].
- set typeArguments(TypeArgumentList typeArguments);
+ set typeArguments(TypeArgumentList? typeArguments);
}
/// An expression that implicitly makes reference to a method.
@@ -3860,11 +3880,11 @@
/// no meaningful static element to return (e.g. because this is a
/// non-compound assignment expression, or because the method referred to
/// could not be resolved).
- MethodElement get staticElement;
+ MethodElement? get staticElement;
/// Set the element associated with the expression based on static types to
/// the given [element].
- set staticElement(MethodElement element);
+ set staticElement(MethodElement? element);
}
/// The declaration of a mixin.
@@ -3880,7 +3900,7 @@
/// Return the on clause for the mixin, or `null` if the mixin does not have
/// any superclass constraints.
- OnClause get onClause;
+ OnClause? get onClause;
}
/// A node that declares a single name within the scope of a compilation unit.
@@ -3905,7 +3925,7 @@
/// Return the element representing the parameter being named by this
/// expression, or `null` if the AST structure has not been resolved or if
/// there is no parameter with the same name as this expression.
- ParameterElement get element;
+ ParameterElement? get element;
/// Return the expression with which the name is associated.
Expression get expression;
@@ -3942,18 +3962,18 @@
/// Set the question mark indicating that the type is nullable to the given
/// [token].
- set question(Token token);
+ set question(Token? token);
/// Set the type being named to the given [type].
- set type(DartType type);
+ set type(DartType? type);
/// Return the type arguments associated with the type, or `null` if there are
/// no type arguments.
- TypeArgumentList get typeArguments;
+ TypeArgumentList? get typeArguments;
/// Set the type arguments associated with the type to the given
/// [typeArguments].
- set typeArguments(TypeArgumentList typeArguments);
+ set typeArguments(TypeArgumentList? typeArguments);
}
/// A node that represents a directive that impacts the namespace of a library.
@@ -3980,7 +4000,7 @@
/// This will be the source from the first configuration whose condition is
/// true, or the [uriSource] if either there are no configurations or if
/// there are no configurations whose condition is true.
- Source get selectedSource;
+ Source? get selectedSource;
/// Return the content of the URI that was selected based on the declared
/// variables.
@@ -3988,7 +4008,7 @@
/// This will be the URI from the first configuration whose condition is
/// true, or the [uriContent] if either there are no configurations or if
/// there are no configurations whose condition is true.
- String get selectedUriContent;
+ String? get selectedUriContent;
/// Return the semicolon terminating the directive.
Token get semicolon;
@@ -4005,11 +4025,11 @@
/// Clients may not extend, implement or mix-in this class.
abstract class NativeClause implements AstNode {
/// Return the name of the native object that implements the class.
- StringLiteral get name;
+ StringLiteral? get name;
/// Set the name of the native object that implements the class to the given
/// [name].
- set name(StringLiteral name);
+ set name(StringLiteral? name);
/// Return the token representing the 'native' keyword.
Token get nativeKeyword;
@@ -4044,11 +4064,11 @@
/// Return the string literal representing the string after the 'native'
/// token.
- StringLiteral get stringLiteral;
+ StringLiteral? get stringLiteral;
/// Set the string literal representing the string after the 'native' token to
/// the given [stringLiteral].
- set stringLiteral(StringLiteral stringLiteral);
+ set stringLiteral(StringLiteral? stringLiteral);
}
/// A list of AST nodes that have a common parent.
@@ -4057,11 +4077,11 @@
abstract class NodeList<E extends AstNode> implements List<E> {
/// Return the first token included in this node list's source range, or
/// `null` if the list is empty.
- Token get beginToken;
+ Token? get beginToken;
/// Return the last token included in this node list's source range, or `null`
/// if the list is empty.
- Token get endToken;
+ Token? get endToken;
/// Return the node that is the parent of each of the elements in the list.
AstNode get owner;
@@ -4090,19 +4110,19 @@
/// Clients may not extend, implement or mix-in this class.
abstract class NormalFormalParameter implements FormalParameter {
/// Set the token for the 'covariant' keyword to the given [token].
- set covariantKeyword(Token token);
+ set covariantKeyword(Token? token);
/// Return the documentation comment associated with this parameter, or `null`
/// if this parameter does not have a documentation comment associated with
/// it.
- Comment get documentationComment;
+ Comment? get documentationComment;
/// Set the documentation comment associated with this parameter to the given
/// [comment].
- set documentationComment(Comment comment);
+ set documentationComment(Comment? comment);
/// Set the name of the parameter being declared to the given [identifier].
- set identifier(SimpleIdentifier identifier);
+ set identifier(SimpleIdentifier? identifier);
/// Set the metadata associated with this node to the given [metadata].
set metadata(List<Annotation> metadata);
@@ -4213,11 +4233,11 @@
abstract class PartOfDirective implements Directive {
/// Return the name of the library that the containing compilation unit is
/// part of.
- LibraryIdentifier get libraryName;
+ LibraryIdentifier? get libraryName;
/// Set the name of the library that the containing compilation unit is part
/// of to the given [libraryName].
- set libraryName(LibraryIdentifier libraryName);
+ set libraryName(LibraryIdentifier? libraryName);
/// Return the token representing the 'of' keyword.
Token get ofKeyword;
@@ -4240,12 +4260,12 @@
/// Return the URI of the library that the containing compilation unit is part
/// of, or `null` if no URI was given (typically because a library name was
/// provided).
- StringLiteral get uri;
+ StringLiteral? get uri;
/// Return the URI of the library that the containing compilation unit is part
/// of, or `null` if no URI was given (typically because a library name was
/// provided).
- set uri(StringLiteral uri);
+ set uri(StringLiteral? uri);
}
/// A postfix unary expression.
@@ -4383,11 +4403,11 @@
///
/// Use [realTarget] to get the target independent of whether this is part of
/// a cascade expression.
- Expression get target;
+ Expression? get target;
/// Set the expression computing the object defining the property being
/// accessed to the given [expression].
- set target(Expression expression);
+ set target(Expression? expression);
}
/// The invocation of a constructor in the same class from within a
@@ -4407,19 +4427,19 @@
/// Return the name of the constructor that is being invoked, or `null` if the
/// unnamed constructor is being invoked.
- SimpleIdentifier get constructorName;
+ SimpleIdentifier? get constructorName;
/// Set the name of the constructor that is being invoked to the given
/// [identifier].
- set constructorName(SimpleIdentifier identifier);
+ set constructorName(SimpleIdentifier? identifier);
/// Return the token for the period before the name of the constructor that is
/// being invoked, or `null` if the unnamed constructor is being invoked.
- Token get period;
+ Token? get period;
/// Set the token for the period before the name of the constructor that is
/// being invoked to the given [token].
- set period(Token token);
+ set period(Token? token);
/// Return the token for the 'this' keyword.
Token get thisKeyword;
@@ -4451,11 +4471,11 @@
abstract class ReturnStatement implements Statement {
/// Return the expression computing the value to be returned, or `null` if no
/// explicit value was provided.
- Expression get expression;
+ Expression? get expression;
/// Set the expression computing the value to be returned to the given
/// [expression].
- set expression(Expression expression);
+ set expression(Expression? expression);
/// Return the token representing the 'return' keyword.
Token get returnKeyword;
@@ -4569,18 +4589,18 @@
abstract class SimpleFormalParameter implements NormalFormalParameter {
/// Return the token representing either the 'final', 'const' or 'var'
/// keyword, or `null` if no keyword was used.
- Token get keyword;
+ Token? get keyword;
/// Set the token representing either the 'final', 'const' or 'var' keyword to
/// the given [token].
- set keyword(Token token);
+ set keyword(Token? token);
/// Return the declared type of the parameter, or `null` if the parameter does
/// not have a declared type.
- TypeAnnotation get type;
+ TypeAnnotation? get type;
/// Set the declared type of the parameter to the given [type].
- set type(TypeAnnotation type);
+ set type(TypeAnnotation? type);
}
/// A simple identifier.
@@ -4600,7 +4620,7 @@
/// Set the element associated with this identifier based on static type
/// information to the given [element].
- set staticElement(Element element);
+ set staticElement(Element? element);
/// If the identifier is a tear-off, return the inferred type arguments
/// applied to the function type of the element to produce its [staticType].
@@ -4612,7 +4632,7 @@
/// Return `null` if not a tear-off.
///
/// Return `null` if the AST structure has not been resolved.
- List<DartType> get tearOffTypeArgumentTypes;
+ List<DartType>? get tearOffTypeArgumentTypes;
/// Return the token representing the identifier.
Token get token;
@@ -4770,7 +4790,7 @@
abstract class StringLiteral implements Literal {
/// Return the value of the string literal, or `null` if the string is not a
/// constant string without any string interpolation.
- String get stringValue;
+ String? get stringValue;
}
/// The invocation of a superclass' constructor from within a constructor's
@@ -4790,19 +4810,19 @@
/// Return the name of the constructor that is being invoked, or `null` if the
/// unnamed constructor is being invoked.
- SimpleIdentifier get constructorName;
+ SimpleIdentifier? get constructorName;
/// Set the name of the constructor that is being invoked to the given
/// [identifier].
- set constructorName(SimpleIdentifier identifier);
+ set constructorName(SimpleIdentifier? identifier);
/// Return the token for the period before the name of the constructor that is
/// being invoked, or `null` if the unnamed constructor is being invoked.
- Token get period;
+ Token? get period;
/// Set the token for the period before the name of the constructor that is
/// being invoked to the given [token].
- set period(Token token);
+ set period(Token? token);
/// Return the token for the 'super' keyword.
Token get superKeyword;
@@ -4996,7 +5016,7 @@
/// Clients may not extend, implement or mix-in this class.
abstract class TopLevelVariableDeclaration implements CompilationUnitMember {
/// The `external` keyword, or `null` if the keyword was not used.
- Token get externalKeyword;
+ Token? get externalKeyword;
/// Return the semicolon terminating the declaration.
Token get semicolon;
@@ -5033,17 +5053,17 @@
/// Return the finally block contained in the try statement, or `null` if the
/// statement does not contain a finally clause.
- Block get finallyBlock;
+ Block? get finallyBlock;
/// Set the finally block contained in the try statement to the given [block].
- set finallyBlock(Block block);
+ set finallyBlock(Block? block);
/// Return the token representing the 'finally' keyword, or `null` if the
/// statement does not contain a finally clause.
- Token get finallyKeyword;
+ Token? get finallyKeyword;
/// Set the token representing the 'finally' keyword to the given [token].
- set finallyKeyword(Token token);
+ set finallyKeyword(Token? token);
/// Return the token representing the 'try' keyword.
Token get tryKeyword;
@@ -5063,6 +5083,9 @@
///
/// Clients may not extend, implement or mix-in this class.
abstract class TypeAlias implements NamedCompilationUnitMember {
+ @override
+ SimpleIdentifier get name;
+
/// Return the semicolon terminating the declaration.
Token get semicolon;
@@ -5086,11 +5109,11 @@
abstract class TypeAnnotation implements AstNode {
/// The question mark indicating that the type is nullable, or `null` if there
/// is no question mark.
- Token get question;
+ Token? get question;
/// Return the type being named, or `null` if the AST structure has not been
/// resolved.
- DartType get type;
+ DartType? get type;
}
/// A list of type arguments.
@@ -5126,10 +5149,10 @@
abstract class TypedLiteral implements Literal {
/// Return the token representing the 'const' keyword, or `null` if the
/// literal is not a constant.
- Token get constKeyword;
+ Token? get constKeyword;
/// Set the token representing the 'const' keyword to the given [token].
- set constKeyword(Token token);
+ set constKeyword(Token? token);
/// Return `true` if this literal is a constant expression, either because the
/// keyword `const` was explicitly provided or because no keyword was provided
@@ -5138,11 +5161,11 @@
/// Return the type argument associated with this literal, or `null` if no
/// type arguments were declared.
- TypeArgumentList get typeArguments;
+ TypeArgumentList? get typeArguments;
/// Set the type argument associated with this literal to the given
/// [typeArguments].
- set typeArguments(TypeArgumentList typeArguments);
+ set typeArguments(TypeArgumentList? typeArguments);
}
/// The name of a type, which can optionally include type arguments.
@@ -5162,20 +5185,20 @@
abstract class TypeParameter implements Declaration {
/// Return the upper bound for legal arguments, or `null` if there is no
/// explicit upper bound.
- TypeAnnotation get bound;
+ TypeAnnotation? get bound;
/// Set the upper bound for legal arguments to the given [type].
- set bound(TypeAnnotation type);
+ set bound(TypeAnnotation? type);
@override
- TypeParameterElement get declaredElement;
+ TypeParameterElement? get declaredElement;
/// Return the token representing the 'extends' keyword, or `null` if there is
/// no explicit upper bound.
- Token get extendsKeyword;
+ Token? get extendsKeyword;
/// Set the token representing the 'extends' keyword to the given [token].
- set extendsKeyword(Token token);
+ set extendsKeyword(Token? token);
/// Return the name of the type parameter.
SimpleIdentifier get name;
@@ -5216,11 +5239,12 @@
/// Set the URI referenced by this directive to the given [uri].
set uri(StringLiteral uri);
- /// Return the content of the [uri].
- String get uriContent;
+ /// Return the content of the [uri], or `null` if the AST structure has not
+ /// been resolved, or if the [uri] has a string interpolation.
+ String? get uriContent;
/// Set the content of the [uri] to the given [content].
- set uriContent(String content);
+ set uriContent(String? content);
/// Return the element associated with the [uri] of this directive, or `null`
/// if the AST structure has not been resolved or if the URI could not be
@@ -5228,13 +5252,13 @@
///
/// Examples of the latter case include a directive that contains an invalid
/// URL or a URL that does not exist.
- Element get uriElement;
+ Element? get uriElement;
/// Return the source to which the [uri] was resolved.
- Source get uriSource;
+ Source? get uriSource;
/// Set the source to which the [uri] was resolved to the given [source].
- set uriSource(Source source);
+ set uriSource(Source? source);
}
/// An identifier that has an initial value associated with it.
@@ -5252,23 +5276,23 @@
// extend [Declaration].
abstract class VariableDeclaration implements Declaration {
@override
- VariableElement get declaredElement;
+ VariableElement? get declaredElement;
/// Return the equal sign separating the variable name from the initial value,
/// or `null` if the initial value was not specified.
- Token get equals;
+ Token? get equals;
/// Set the equal sign separating the variable name from the initial value to
/// the given [token].
- set equals(Token token);
+ set equals(Token? token);
/// Return the expression used to compute the initial value for the variable,
/// or `null` if the initial value was not specified.
- Expression get initializer;
+ Expression? get initializer;
/// Set the expression used to compute the initial value for the variable to
/// the given [expression].
- set initializer(Expression expression);
+ set initializer(Expression? expression);
/// Return `true` if this variable was declared with the 'const' modifier.
bool get isConst;
@@ -5320,22 +5344,22 @@
/// Return the token representing the 'final', 'const' or 'var' keyword, or
/// `null` if no keyword was included.
- Token get keyword;
+ Token? get keyword;
/// Set the token representing the 'final', 'const' or 'var' keyword to the
/// given [token].
- set keyword(Token token);
+ set keyword(Token? token);
/// Return the token representing the 'late' keyword, or `null` if the late
/// modifier was not included.
- Token get lateKeyword;
+ Token? get lateKeyword;
/// Return the type of the variables being declared, or `null` if no type was
/// provided.
- TypeAnnotation get type;
+ TypeAnnotation? get type;
/// Set the type of the variables being declared to the given [type].
- set type(TypeAnnotation type);
+ set type(TypeAnnotation? type);
/// Return a list containing the individual variables being declared.
NodeList<VariableDeclaration> get variables;
@@ -5439,11 +5463,11 @@
set semicolon(Token token);
/// Return the star optionally following the 'yield' keyword.
- Token get star;
+ Token? get star;
/// Return the star optionally following the 'yield' keyword to the given
/// [token].
- set star(Token token);
+ set star(Token? token);
/// Return the 'yield' keyword.
Token get yieldKeyword;
diff --git a/pkg/analyzer/lib/dart/ast/ast_factory.dart b/pkg/analyzer/lib/dart/ast/ast_factory.dart
index 4dcba21..55a558c 100644
--- a/pkg/analyzer/lib/dart/ast/ast_factory.dart
+++ b/pkg/analyzer/lib/dart/ast/ast_factory.dart
@@ -6,7 +6,6 @@
import 'package:analyzer/dart/analysis/features.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/src/generated/utilities_dart.dart';
-import 'package:meta/meta.dart';
/// A collection of factory methods which may be used to create concrete
/// instances of the interfaces that constitute the AST.
@@ -21,8 +20,8 @@
/// [constructorName] can be `null` if the annotation is not referencing a
/// named constructor. The [arguments] can be `null` if the annotation is not
/// referencing a constructor.
- Annotation annotation(Token atSign, Identifier name, Token period,
- SimpleIdentifier constructorName, ArgumentList arguments);
+ Annotation annotation(Token atSign, Identifier name, Token? period,
+ SimpleIdentifier? constructorName, ArgumentList? arguments);
/// Returns a newly created list of arguments. The list of [arguments] can
/// be `null` if there are no arguments.
@@ -39,8 +38,8 @@
Token assertKeyword,
Token leftParenthesis,
Expression condition,
- Token comma,
- Expression message,
+ Token? comma,
+ Expression? message,
Token rightParenthesis);
/// Returns a newly created assert statement. The [comma] and [message] can
@@ -49,8 +48,8 @@
Token assertKeyword,
Token leftParenthesis,
Expression condition,
- Token comma,
- Expression message,
+ Token? comma,
+ Expression? message,
Token rightParenthesis,
Token semicolon);
@@ -76,7 +75,7 @@
/// statements. The [keyword] can be `null` if there is no keyword specified
/// for the block. The [star] can be `null` if there is no star following the
/// keyword (and must be `null` if there is no keyword).
- BlockFunctionBody blockFunctionBody(Token keyword, Token star, Block block);
+ BlockFunctionBody blockFunctionBody(Token? keyword, Token? star, Block block);
/// Returns a newly created boolean literal.
BooleanLiteral booleanLiteral(Token literal, bool value);
@@ -84,7 +83,7 @@
/// Returns a newly created break statement. The [label] can be `null` if
/// there is no label associated with the statement.
BreakStatement breakStatement(
- Token breakKeyword, SimpleIdentifier label, Token semicolon);
+ Token breakKeyword, SimpleIdentifier? label, Token semicolon);
/// Returns a newly created cascade expression. The list of
/// [cascadeSections] must contain at least one element.
@@ -96,14 +95,14 @@
/// [stackTraceParameter] can be `null` if the stack trace parameter is not
/// defined.
CatchClause catchClause(
- Token onKeyword,
- TypeAnnotation exceptionType,
- Token catchKeyword,
- Token leftParenthesis,
- SimpleIdentifier exceptionParameter,
- Token comma,
- SimpleIdentifier stackTraceParameter,
- Token rightParenthesis,
+ Token? onKeyword,
+ TypeAnnotation? exceptionType,
+ Token? catchKeyword,
+ Token? leftParenthesis,
+ SimpleIdentifier? exceptionParameter,
+ Token? comma,
+ SimpleIdentifier? stackTraceParameter,
+ Token? rightParenthesis,
Block body);
/// Returns a newly created class declaration. Either or both of the
@@ -115,15 +114,15 @@
/// corresponding clause. The list of [members] can be `null` if the class
/// does not have any members.
ClassDeclaration classDeclaration(
- Comment comment,
- List<Annotation> metadata,
- Token abstractKeyword,
+ Comment? comment,
+ List<Annotation>? metadata,
+ Token? abstractKeyword,
Token classKeyword,
SimpleIdentifier name,
- TypeParameterList typeParameters,
- ExtendsClause extendsClause,
- WithClause withClause,
- ImplementsClause implementsClause,
+ TypeParameterList? typeParameters,
+ ExtendsClause? extendsClause,
+ WithClause? withClause,
+ ImplementsClause? implementsClause,
Token leftBracket,
List<ClassMember> members,
Token rightBracket);
@@ -135,37 +134,35 @@
/// the class is not abstract. The [implementsClause] can be `null` if the
/// class does not implement any interfaces.
ClassTypeAlias classTypeAlias(
- Comment comment,
- List<Annotation> metadata,
+ Comment? comment,
+ List<Annotation>? metadata,
Token keyword,
SimpleIdentifier name,
- TypeParameterList typeParameters,
+ TypeParameterList? typeParameters,
Token equals,
- Token abstractKeyword,
+ Token? abstractKeyword,
TypeName superclass,
WithClause withClause,
- ImplementsClause implementsClause,
+ ImplementsClause? implementsClause,
Token semicolon);
/// Returns a newly created reference to a Dart element. The [newKeyword]
/// can be `null` if the reference is not to a constructor.
- CommentReference commentReference(Token newKeyword, Identifier identifier);
+ CommentReference commentReference(Token? newKeyword, Identifier identifier);
/// Returns a newly created compilation unit to have the given directives and
/// declarations. The [scriptTag] can be `null` (or omitted) if there is no
/// script tag in the compilation unit. The list of [declarations] can be
/// `null` (or omitted) if there are no directives in the compilation unit.
/// The list of `declarations` can be `null` (or omitted) if there are no
- /// declarations in the compilation unit. The [featureSet] can be `null` if
- /// the set of features for this compilation unit is not known (this
- /// restricts what analysis can be done of the compilation unit).
+ /// declarations in the compilation unit.
CompilationUnit compilationUnit(
- {@required Token beginToken,
- ScriptTag scriptTag,
- List<Directive> directives,
- List<CompilationUnitMember> declarations,
- @required Token endToken,
- @required FeatureSet featureSet});
+ {required Token beginToken,
+ ScriptTag? scriptTag,
+ List<Directive>? directives,
+ List<CompilationUnitMember>? declarations,
+ required Token endToken,
+ required FeatureSet featureSet});
/// Returns a newly created conditional expression.
ConditionalExpression conditionalExpression(
@@ -180,8 +177,8 @@
Token ifKeyword,
Token leftParenthesis,
DottedName name,
- Token equalToken,
- StringLiteral value,
+ Token? equalToken,
+ StringLiteral? value,
Token rightParenthesis,
StringLiteral libraryUri);
@@ -199,26 +196,26 @@
/// does not redirect to a different constructor. The [body] can be `null` if
/// the constructor does not have a body.
ConstructorDeclaration constructorDeclaration(
- Comment comment,
- List<Annotation> metadata,
- Token externalKeyword,
- Token constKeyword,
- Token factoryKeyword,
+ Comment? comment,
+ List<Annotation>? metadata,
+ Token? externalKeyword,
+ Token? constKeyword,
+ Token? factoryKeyword,
Identifier returnType,
- Token period,
- SimpleIdentifier name,
+ Token? period,
+ SimpleIdentifier? name,
FormalParameterList parameters,
- Token separator,
- List<ConstructorInitializer> initializers,
- ConstructorName redirectedConstructor,
- FunctionBody body);
+ Token? separator,
+ List<ConstructorInitializer>? initializers,
+ ConstructorName? redirectedConstructor,
+ FunctionBody? body);
/// Returns a newly created field initializer to initialize the field with
/// the given name to the value of the given expression. The [thisKeyword] and
/// [period] can be `null` if the 'this' keyword was not specified.
ConstructorFieldInitializer constructorFieldInitializer(
- Token thisKeyword,
- Token period,
+ Token? thisKeyword,
+ Token? period,
SimpleIdentifier fieldName,
Token equals,
Expression expression);
@@ -226,28 +223,28 @@
/// Returns a newly created constructor name. The [period] and [name] can be
/// `null` if the constructor being named is the unnamed constructor.
ConstructorName constructorName(
- TypeName type, Token period, SimpleIdentifier name);
+ TypeName type, Token? period, SimpleIdentifier? name);
/// Returns a newly created continue statement. The [label] can be `null` if
/// there is no label associated with the statement.
ContinueStatement continueStatement(
- Token continueKeyword, SimpleIdentifier label, Token semicolon);
+ Token continueKeyword, SimpleIdentifier? label, Token semicolon);
/// Returns a newly created formal parameter. Either or both of the
/// [comment] and [metadata] can be `null` if the declaration does not have
/// the corresponding attribute. The [keyword] can be `null` if a type name is
/// given. The [type] must be `null` if the keyword is 'var'.
DeclaredIdentifier declaredIdentifier(
- Comment comment,
- List<Annotation> metadata,
- Token keyword,
- TypeAnnotation type,
+ Comment? comment,
+ List<Annotation>? metadata,
+ Token? keyword,
+ TypeAnnotation? type,
SimpleIdentifier identifier);
/// Returns a newly created default formal parameter. The [separator] and
/// [defaultValue] can be `null` if there is no default value.
DefaultFormalParameter defaultFormalParameter(NormalFormalParameter parameter,
- ParameterKind kind, Token separator, Expression defaultValue);
+ ParameterKind kind, Token? separator, Expression? defaultValue);
/// Returns a documentation comment consisting of the given [tokens] and
/// having the given [references] (if supplied) embedded within it.
@@ -284,15 +281,15 @@
/// corresponding attribute. (Technically, enum constants cannot have
/// metadata, but we allow it for consistency.)
EnumConstantDeclaration enumConstantDeclaration(
- Comment comment, List<Annotation> metadata, SimpleIdentifier name);
+ Comment? comment, List<Annotation>? metadata, SimpleIdentifier name);
/// Returns a newly created enumeration declaration. Either or both of the
/// [comment] and [metadata] can be `null` if the declaration does not have
/// the corresponding attribute. The list of [constants] must contain at least
/// one value.
EnumDeclaration enumDeclaration(
- Comment comment,
- List<Annotation> metadata,
+ Comment? comment,
+ List<Annotation>? metadata,
Token enumKeyword,
SimpleIdentifier name,
Token leftBracket,
@@ -304,23 +301,23 @@
/// corresponding attribute. The list of [combinators] can be `null` if there
/// are no combinators.
ExportDirective exportDirective(
- Comment comment,
- List<Annotation> metadata,
+ Comment? comment,
+ List<Annotation>? metadata,
Token keyword,
StringLiteral libraryUri,
- List<Configuration> configurations,
- List<Combinator> combinators,
+ List<Configuration>? configurations,
+ List<Combinator>? combinators,
Token semicolon);
- /// Returns a newly created function body consisting of a block of statements.
+ /// Returns a newly created function body consisting of an expression.
/// The [keyword] can be `null` if the function body is not an async function
/// body.
- ExpressionFunctionBody expressionFunctionBody(Token keyword,
- Token functionDefinition, Expression expression, Token semicolon);
+ ExpressionFunctionBody expressionFunctionBody(Token? keyword,
+ Token functionDefinition, Expression expression, Token? semicolon);
/// Returns a newly created expression statement.
ExpressionStatement expressionStatement(
- Expression expression, Token semicolon);
+ Expression expression, Token? semicolon);
/// Returns a newly created extends clause.
ExtendsClause extendsClause(Token extendsKeyword, TypeName superclass);
@@ -328,37 +325,37 @@
/// Return a newly created extension declaration. The list of [typeParameters]
/// can be `null` if there are no type parameters.
ExtensionDeclaration extensionDeclaration(
- {Comment comment,
- List<Annotation> metadata,
- Token extensionKeyword,
- @required SimpleIdentifier name,
- TypeParameterList typeParameters,
- Token onKeyword,
- @required TypeAnnotation extendedType,
- Token leftBracket,
- List<ClassMember> members,
- Token rightBracket});
+ {Comment? comment,
+ List<Annotation>? metadata,
+ required Token extensionKeyword,
+ required SimpleIdentifier? name,
+ TypeParameterList? typeParameters,
+ required Token onKeyword,
+ required TypeAnnotation extendedType,
+ required Token leftBracket,
+ required List<ClassMember> members,
+ required Token rightBracket});
/// Return a newly created extension override. The list of [typeArguments]
/// can be `null` if there are no type arguments.
ExtensionOverride extensionOverride(
- {@required Identifier extensionName,
- TypeArgumentList typeArguments,
- @required ArgumentList argumentList});
+ {required Identifier extensionName,
+ TypeArgumentList? typeArguments,
+ required ArgumentList argumentList});
/// Returns a newly created field declaration. Either or both of the
/// [comment] and [metadata] can be `null` if the declaration does not have
/// the corresponding attribute. The [staticKeyword] can be `null` if the
/// field is not a static field.
FieldDeclaration fieldDeclaration2(
- {Comment comment,
- List<Annotation> metadata,
- Token abstractKeyword,
- Token covariantKeyword,
- Token externalKeyword,
- Token staticKeyword,
- @required VariableDeclarationList fieldList,
- @required Token semicolon});
+ {Comment? comment,
+ List<Annotation>? metadata,
+ Token? abstractKeyword,
+ Token? covariantKeyword,
+ Token? externalKeyword,
+ Token? staticKeyword,
+ required VariableDeclarationList fieldList,
+ required Token semicolon});
/// Returns a newly created formal parameter. Either or both of the [comment]
/// and [metadata] can be `null` if the parameter does not have the
@@ -368,37 +365,41 @@
/// [parameters] can be `null` if this is not a function-typed field formal
/// parameter.
FieldFormalParameter fieldFormalParameter2(
- {Comment comment,
- List<Annotation> metadata,
- Token covariantKeyword,
- Token requiredKeyword,
- Token keyword,
- TypeAnnotation type,
- @required Token thisKeyword,
- @required Token period,
- @required SimpleIdentifier identifier,
- TypeParameterList typeParameters,
- FormalParameterList parameters,
- Token question});
+ {Comment? comment,
+ List<Annotation>? metadata,
+ Token? covariantKeyword,
+ Token? requiredKeyword,
+ Token? keyword,
+ TypeAnnotation? type,
+ required Token thisKeyword,
+ required Token period,
+ required SimpleIdentifier identifier,
+ TypeParameterList? typeParameters,
+ FormalParameterList? parameters,
+ Token? question});
/// Returns a newly created for each part that includes a declaration.
ForEachPartsWithDeclaration forEachPartsWithDeclaration(
- {DeclaredIdentifier loopVariable, Token inKeyword, Expression iterable});
+ {required DeclaredIdentifier loopVariable,
+ required Token inKeyword,
+ required Expression iterable});
/// Returns a newly created for each part that includes an identifier that is
/// declared outside of the loop.
ForEachPartsWithIdentifier forEachPartsWithIdentifier(
- {SimpleIdentifier identifier, Token inKeyword, Expression iterable});
+ {required SimpleIdentifier identifier,
+ required Token inKeyword,
+ required Expression iterable});
/// Returns a newly created for element that can be part of a list, map or set
/// literal.
ForElement forElement(
- {Token awaitKeyword,
- Token forKeyword,
- Token leftParenthesis,
- ForLoopParts forLoopParts,
- Token rightParenthesis,
- CollectionElement body});
+ {Token? awaitKeyword,
+ required Token forKeyword,
+ required Token leftParenthesis,
+ required ForLoopParts forLoopParts,
+ required Token rightParenthesis,
+ required CollectionElement body});
/// Returns a newly created parameter list. The list of [parameters] can be
/// `null` if there are no parameters. The [leftDelimiter] and
@@ -406,34 +407,34 @@
FormalParameterList formalParameterList(
Token leftParenthesis,
List<FormalParameter> parameters,
- Token leftDelimiter,
- Token rightDelimiter,
+ Token? leftDelimiter,
+ Token? rightDelimiter,
Token rightParenthesis);
/// Returns a newly created for part that includes a declaration.
ForPartsWithDeclarations forPartsWithDeclarations(
- {VariableDeclarationList variables,
- Token leftSeparator,
- Expression condition,
- Token rightSeparator,
- List<Expression> updaters});
+ {required VariableDeclarationList variables,
+ required Token leftSeparator,
+ Expression? condition,
+ required Token rightSeparator,
+ List<Expression>? updaters});
/// Returns a newly created for part that includes an expression.
ForPartsWithExpression forPartsWithExpression(
- {Expression initialization,
- Token leftSeparator,
- Expression condition,
- Token rightSeparator,
- List<Expression> updaters});
+ {Expression? initialization,
+ required Token leftSeparator,
+ Expression? condition,
+ required Token rightSeparator,
+ List<Expression>? updaters});
/// Returns a newly created for statement.
ForStatement forStatement(
- {Token awaitKeyword,
- Token forKeyword,
- Token leftParenthesis,
- ForLoopParts forLoopParts,
- Token rightParenthesis,
- Statement body});
+ {Token? awaitKeyword,
+ required Token forKeyword,
+ required Token leftParenthesis,
+ required ForLoopParts forLoopParts,
+ required Token rightParenthesis,
+ required Statement body});
/// Returns a newly created function declaration. Either or both of the
/// [comment] and [metadata] can be `null` if the function does not have the
@@ -442,11 +443,11 @@
/// return type was specified. The [propertyKeyword] can be `null` if the
/// function is neither a getter or a setter.
FunctionDeclaration functionDeclaration(
- Comment comment,
- List<Annotation> metadata,
- Token externalKeyword,
- TypeAnnotation returnType,
- Token propertyKeyword,
+ Comment? comment,
+ List<Annotation>? metadata,
+ Token? externalKeyword,
+ TypeAnnotation? returnType,
+ Token? propertyKeyword,
SimpleIdentifier name,
FunctionExpression functionExpression);
@@ -455,12 +456,12 @@
FunctionDeclaration functionDeclaration);
/// Returns a newly created function declaration.
- FunctionExpression functionExpression(TypeParameterList typeParameters,
- FormalParameterList parameters, FunctionBody body);
+ FunctionExpression functionExpression(TypeParameterList? typeParameters,
+ FormalParameterList? parameters, FunctionBody? body);
/// Returns a newly created function expression invocation.
FunctionExpressionInvocation functionExpressionInvocation(Expression function,
- TypeArgumentList typeArguments, ArgumentList argumentList);
+ TypeArgumentList? typeArguments, ArgumentList argumentList);
/// Returns a newly created function type alias. Either or both of the
/// [comment] and [metadata] can be `null` if the function does not have the
@@ -468,12 +469,12 @@
/// was specified. The [typeParameters] can be `null` if the function has no
/// type parameters.
FunctionTypeAlias functionTypeAlias(
- Comment comment,
- List<Annotation> metadata,
+ Comment? comment,
+ List<Annotation>? metadata,
Token keyword,
- TypeAnnotation returnType,
+ TypeAnnotation? returnType,
SimpleIdentifier name,
- TypeParameterList typeParameters,
+ TypeParameterList? typeParameters,
FormalParameterList parameters,
Token semicolon);
@@ -482,34 +483,34 @@
/// corresponding attribute. The [returnType] can be `null` if no return type
/// was specified.
FunctionTypedFormalParameter functionTypedFormalParameter2(
- {Comment comment,
- List<Annotation> metadata,
- Token covariantKeyword,
- Token requiredKeyword,
- TypeAnnotation returnType,
- @required SimpleIdentifier identifier,
- TypeParameterList typeParameters,
- @required FormalParameterList parameters,
- Token question});
+ {Comment? comment,
+ List<Annotation>? metadata,
+ Token? covariantKeyword,
+ Token? requiredKeyword,
+ TypeAnnotation? returnType,
+ required SimpleIdentifier identifier,
+ TypeParameterList? typeParameters,
+ required FormalParameterList parameters,
+ Token? question});
/// Initialize a newly created generic function type.
GenericFunctionType genericFunctionType(
- TypeAnnotation returnType,
+ TypeAnnotation? returnType,
Token functionKeyword,
- TypeParameterList typeParameters,
+ TypeParameterList? typeParameters,
FormalParameterList parameters,
- {Token question});
+ {Token? question});
/// Returns a newly created generic type alias. Either or both of the
/// [comment] and [metadata] can be `null` if the variable list does not have
/// the corresponding attribute. The [typeParameters] can be `null` if there
/// are no type parameters.
GenericTypeAlias genericTypeAlias(
- Comment comment,
- List<Annotation> metadata,
+ Comment? comment,
+ List<Annotation>? metadata,
Token typedefKeyword,
SimpleIdentifier name,
- TypeParameterList typeParameters,
+ TypeParameterList? typeParameters,
Token equals,
TypeAnnotation type,
Token semicolon);
@@ -521,13 +522,13 @@
/// Returns a newly created if element that can be part of a list, map or set
/// literal.
IfElement ifElement(
- {Token ifKeyword,
- Token leftParenthesis,
- Expression condition,
- Token rightParenthesis,
- CollectionElement thenElement,
- Token elseKeyword,
- CollectionElement elseElement});
+ {required Token ifKeyword,
+ required Token leftParenthesis,
+ required Expression condition,
+ required Token rightParenthesis,
+ required CollectionElement thenElement,
+ Token? elseKeyword,
+ CollectionElement? elseElement});
/// Returns a newly created if statement. The [elseKeyword] and
/// [elseStatement] can be `null` if there is no else clause.
@@ -537,8 +538,8 @@
Expression condition,
Token rightParenthesis,
Statement thenStatement,
- Token elseKeyword,
- Statement elseStatement);
+ Token? elseKeyword,
+ Statement? elseStatement);
/// Returns a newly created implements clause.
ImplementsClause implementsClause(
@@ -551,44 +552,44 @@
/// does not specify a prefix. The list of [combinators] can be `null` if
/// there are no combinators.
ImportDirective importDirective(
- Comment comment,
- List<Annotation> metadata,
+ Comment? comment,
+ List<Annotation>? metadata,
Token keyword,
StringLiteral libraryUri,
- List<Configuration> configurations,
- Token deferredKeyword,
- Token asKeyword,
- SimpleIdentifier prefix,
- List<Combinator> combinators,
+ List<Configuration>? configurations,
+ Token? deferredKeyword,
+ Token? asKeyword,
+ SimpleIdentifier? prefix,
+ List<Combinator>? combinators,
Token semicolon);
/// Returns a newly created index expression.
IndexExpression indexExpressionForCascade2(
- {@required Token period,
- Token question,
- @required Token leftBracket,
- @required Expression index,
- @required Token rightBracket});
+ {required Token period,
+ Token? question,
+ required Token leftBracket,
+ required Expression index,
+ required Token rightBracket});
/// Returns a newly created index expression.
IndexExpression indexExpressionForTarget2(
- {@required Expression target,
- Token question,
- @required Token leftBracket,
- @required Expression index,
- @required Token rightBracket});
+ {required Expression target,
+ Token? question,
+ required Token leftBracket,
+ required Expression index,
+ required Token rightBracket});
/// Returns a newly created instance creation expression.
- InstanceCreationExpression instanceCreationExpression(
- Token keyword, ConstructorName constructorName, ArgumentList argumentList,
- {TypeArgumentList typeArguments});
+ InstanceCreationExpression instanceCreationExpression(Token? keyword,
+ ConstructorName constructorName, ArgumentList argumentList,
+ {TypeArgumentList? typeArguments});
/// Returns a newly created integer literal.
- IntegerLiteral integerLiteral(Token literal, int value);
+ IntegerLiteral integerLiteral(Token literal, int? value);
/// Returns a newly created interpolation expression.
InterpolationExpression interpolationExpression(
- Token leftBracket, Expression expression, Token rightBracket);
+ Token leftBracket, Expression expression, Token? rightBracket);
/// Returns a newly created string of characters that are part of a string
/// interpolation.
@@ -597,7 +598,7 @@
/// Returns a newly created is expression. The [notOperator] can be `null`
/// if the sense of the test is not negated.
IsExpression isExpression(Expression expression, Token isOperator,
- Token notOperator, TypeAnnotation type);
+ Token? notOperator, TypeAnnotation type);
/// Returns a newly created label.
Label label(SimpleIdentifier label, Token colon);
@@ -608,8 +609,12 @@
/// Returns a newly created library directive. Either or both of the
/// [comment] and [metadata] can be `null` if the directive does not have the
/// corresponding attribute.
- LibraryDirective libraryDirective(Comment comment, List<Annotation> metadata,
- Token libraryKeyword, LibraryIdentifier name, Token semicolon);
+ LibraryDirective libraryDirective(
+ Comment? comment,
+ List<Annotation>? metadata,
+ Token libraryKeyword,
+ LibraryIdentifier name,
+ Token semicolon);
/// Returns a newly created prefixed identifier.
LibraryIdentifier libraryIdentifier(List<SimpleIdentifier> components);
@@ -618,7 +623,7 @@
/// if the literal is not a constant. The [typeArguments] can be `null` if no
/// type arguments were declared. The list of [elements] can be `null` if the
/// list is empty.
- ListLiteral listLiteral(Token constKeyword, TypeArgumentList typeArguments,
+ ListLiteral listLiteral(Token? constKeyword, TypeArgumentList? typeArguments,
Token leftBracket, List<CollectionElement> elements, Token rightBracket);
/// Returns a newly created map literal entry.
@@ -635,36 +640,36 @@
/// `null` if the method does not implement an operator. The [parameters] must
/// be `null` if this method declares a getter.
MethodDeclaration methodDeclaration(
- Comment comment,
- List<Annotation> metadata,
- Token externalKeyword,
- Token modifierKeyword,
- TypeAnnotation returnType,
- Token propertyKeyword,
- Token operatorKeyword,
+ Comment? comment,
+ List<Annotation>? metadata,
+ Token? externalKeyword,
+ Token? modifierKeyword,
+ TypeAnnotation? returnType,
+ Token? propertyKeyword,
+ Token? operatorKeyword,
SimpleIdentifier name,
- TypeParameterList typeParameters,
- FormalParameterList parameters,
+ TypeParameterList? typeParameters,
+ FormalParameterList? parameters,
FunctionBody body);
/// Returns a newly created method invocation. The [target] and [operator]
/// can be `null` if there is no target.
MethodInvocation methodInvocation(
- Expression target,
- Token operator,
+ Expression? target,
+ Token? operator,
SimpleIdentifier methodName,
- TypeArgumentList typeArguments,
+ TypeArgumentList? typeArguments,
ArgumentList argumentList);
/// Return a newly created mixin declaration.
MixinDeclaration mixinDeclaration(
- Comment comment,
- List<Annotation> metadata,
+ Comment? comment,
+ List<Annotation>? metadata,
Token mixinKeyword,
SimpleIdentifier name,
- TypeParameterList typeParameters,
- OnClause onClause,
- ImplementsClause implementsClause,
+ TypeParameterList? typeParameters,
+ OnClause? onClause,
+ ImplementsClause? implementsClause,
Token leftBracket,
List<ClassMember> members,
Token rightBracket);
@@ -673,17 +678,17 @@
NamedExpression namedExpression(Label name, Expression expression);
/// Returns a newly created native clause.
- NativeClause nativeClause(Token nativeKeyword, StringLiteral name);
+ NativeClause nativeClause(Token nativeKeyword, StringLiteral? name);
/// Returns a newly created function body consisting of the 'native' token,
/// a string literal, and a semicolon.
NativeFunctionBody nativeFunctionBody(
- Token nativeKeyword, StringLiteral stringLiteral, Token semicolon);
+ Token nativeKeyword, StringLiteral? stringLiteral, Token semicolon);
/// Returns a newly created list of nodes such that all of the nodes that
/// are added to the list will have their parent set to the given [owner]. The
/// list will initially be populated with the given [elements].
- NodeList<E> nodeList<E extends AstNode>(AstNode owner, [List<E> elements]);
+ NodeList<E> nodeList<E extends AstNode>(AstNode owner, [List<E>? elements]);
/// Returns a newly created null literal.
NullLiteral nullLiteral(Token literal);
@@ -698,19 +703,19 @@
/// Returns a newly created part directive. Either or both of the [comment]
/// and [metadata] can be `null` if the directive does not have the
/// corresponding attribute.
- PartDirective partDirective(Comment comment, List<Annotation> metadata,
+ PartDirective partDirective(Comment? comment, List<Annotation>? metadata,
Token partKeyword, StringLiteral partUri, Token semicolon);
/// Returns a newly created part-of directive. Either or both of the
/// [comment] and [metadata] can be `null` if the directive does not have the
/// corresponding attribute.
PartOfDirective partOfDirective(
- Comment comment,
- List<Annotation> metadata,
+ Comment? comment,
+ List<Annotation>? metadata,
Token partKeyword,
Token ofKeyword,
- StringLiteral uri,
- LibraryIdentifier libraryName,
+ StringLiteral? uri,
+ LibraryIdentifier? libraryName,
Token semicolon);
/// Returns a newly created postfix expression.
@@ -725,15 +730,15 @@
/// Returns a newly created property access expression.
PropertyAccess propertyAccess(
- Expression target, Token operator, SimpleIdentifier propertyName);
+ Expression? target, Token operator, SimpleIdentifier propertyName);
/// Returns a newly created redirecting invocation to invoke the constructor
/// with the given name with the given arguments. The [constructorName] can be
/// `null` if the constructor being invoked is the unnamed constructor.
RedirectingConstructorInvocation redirectingConstructorInvocation(
Token thisKeyword,
- Token period,
- SimpleIdentifier constructorName,
+ Token? period,
+ SimpleIdentifier? constructorName,
ArgumentList argumentList);
/// Returns a newly created rethrow expression.
@@ -742,7 +747,7 @@
/// Returns a newly created return statement. The [expression] can be `null`
/// if no explicit value was provided.
ReturnStatement returnStatement(
- Token returnKeyword, Expression expression, Token semicolon);
+ Token returnKeyword, Expression? expression, Token semicolon);
/// Returns a newly created script tag.
ScriptTag scriptTag(Token scriptTag);
@@ -752,11 +757,11 @@
/// if no type arguments were declared. The list of [elements] can be `null`
/// if the set or map is empty.
SetOrMapLiteral setOrMapLiteral(
- {Token constKeyword,
- TypeArgumentList typeArguments,
- Token leftBracket,
- List<CollectionElement> elements,
- Token rightBracket});
+ {Token? constKeyword,
+ TypeArgumentList? typeArguments,
+ required Token leftBracket,
+ required List<CollectionElement> elements,
+ required Token rightBracket});
/// Returns a newly created import show combinator.
ShowCombinator showCombinator(
@@ -767,13 +772,13 @@
/// corresponding attribute. The [keyword] can be `null` if a type was
/// specified. The [type] must be `null` if the keyword is 'var'.
SimpleFormalParameter simpleFormalParameter2(
- {Comment comment,
- List<Annotation> metadata,
- Token covariantKeyword,
- Token requiredKeyword,
- Token keyword,
- TypeAnnotation type,
- @required SimpleIdentifier identifier});
+ {Comment? comment,
+ List<Annotation>? metadata,
+ Token? covariantKeyword,
+ Token? requiredKeyword,
+ Token? keyword,
+ TypeAnnotation? type,
+ required SimpleIdentifier? identifier});
/// Returns a newly created identifier.
SimpleIdentifier simpleIdentifier(Token token, {bool isDeclaration = false});
@@ -782,7 +787,8 @@
SimpleStringLiteral simpleStringLiteral(Token literal, String value);
/// Returns a newly created spread element.
- SpreadElement spreadElement({Token spreadOperator, Expression expression});
+ SpreadElement spreadElement(
+ {required Token spreadOperator, required Expression expression});
/// Returns a newly created string interpolation expression.
StringInterpolation stringInterpolation(List<InterpolationElement> elements);
@@ -793,8 +799,8 @@
/// unnamed constructor.
SuperConstructorInvocation superConstructorInvocation(
Token superKeyword,
- Token period,
- SimpleIdentifier constructorName,
+ Token? period,
+ SimpleIdentifier? constructorName,
ArgumentList argumentList);
/// Returns a newly created super expression.
@@ -834,17 +840,21 @@
/// of the [comment] and [metadata] can be `null` if the variable does not
/// have the corresponding attribute.
TopLevelVariableDeclaration topLevelVariableDeclaration(
- Comment comment,
- List<Annotation> metadata,
+ Comment? comment,
+ List<Annotation>? metadata,
VariableDeclarationList variableList,
Token semicolon,
- {Token externalKeyword});
+ {Token? externalKeyword});
/// Returns a newly created try statement. The list of [catchClauses] can be
/// `null` if there are no catch clauses. The [finallyKeyword] and
/// [finallyBlock] can be `null` if there is no finally clause.
- TryStatement tryStatement(Token tryKeyword, Block body,
- List<CatchClause> catchClauses, Token finallyKeyword, Block finallyBlock);
+ TryStatement tryStatement(
+ Token tryKeyword,
+ Block body,
+ List<CatchClause> catchClauses,
+ Token? finallyKeyword,
+ Block? finallyBlock);
/// Returns a newly created list of type arguments.
TypeArgumentList typeArgumentList(
@@ -853,15 +863,15 @@
/// Returns a newly created type name. The [typeArguments] can be `null` if
/// there are no type arguments. The [question] can be `null` if there is no
/// question mark.
- TypeName typeName(Identifier name, TypeArgumentList typeArguments,
- {Token question});
+ TypeName typeName(Identifier name, TypeArgumentList? typeArguments,
+ {Token? question});
/// Returns a newly created type parameter. Either or both of the [comment]
/// and [metadata] can be `null` if the parameter does not have the
/// corresponding attribute. The [extendsKeyword] and [bound] can be `null` if
/// the parameter does not have an upper bound.
- TypeParameter typeParameter(Comment comment, List<Annotation> metadata,
- SimpleIdentifier name, Token extendsKeyword, TypeAnnotation bound);
+ TypeParameter typeParameter(Comment? comment, List<Annotation>? metadata,
+ SimpleIdentifier name, Token? extendsKeyword, TypeAnnotation? bound);
/// Returns a newly created list of type parameters.
TypeParameterList typeParameterList(Token leftBracket,
@@ -870,7 +880,7 @@
/// Returns a newly created variable declaration. The [equals] and
/// [initializer] can be `null` if there is no initializer.
VariableDeclaration variableDeclaration(
- SimpleIdentifier name, Token equals, Expression initializer);
+ SimpleIdentifier name, Token? equals, Expression? initializer);
/// Returns a newly created variable declaration list. Either or both of the
/// [comment] and [metadata] can be `null` if the variable list does not have
@@ -879,10 +889,10 @@
///
/// Use [variableDeclarationList2] instead.
VariableDeclarationList variableDeclarationList(
- Comment comment,
- List<Annotation> metadata,
- Token keyword,
- TypeAnnotation type,
+ Comment? comment,
+ List<Annotation>? metadata,
+ Token? keyword,
+ TypeAnnotation? type,
List<VariableDeclaration> variables);
/// Returns a newly created variable declaration list. Either or both of the
@@ -890,12 +900,12 @@
/// the corresponding attribute. The [keyword] can be `null` if a type was
/// specified. The [type] must be `null` if the keyword is 'var'.
VariableDeclarationList variableDeclarationList2(
- {Comment comment,
- List<Annotation> metadata,
- Token lateKeyword,
- Token keyword,
- TypeAnnotation type,
- List<VariableDeclaration> variables});
+ {Comment? comment,
+ List<Annotation>? metadata,
+ Token? lateKeyword,
+ Token? keyword,
+ TypeAnnotation? type,
+ required List<VariableDeclaration> variables});
/// Returns a newly created variable declaration statement.
VariableDeclarationStatement variableDeclarationStatement(
@@ -911,5 +921,5 @@
/// Returns a newly created yield expression. The [star] can be `null` if no
/// star was provided.
YieldStatement yieldStatement(
- Token yieldKeyword, Token star, Expression expression, Token semicolon);
+ Token yieldKeyword, Token? star, Expression expression, Token semicolon);
}
diff --git a/pkg/analyzer/lib/dart/ast/visitor.dart b/pkg/analyzer/lib/dart/ast/visitor.dart
index bf78d64..1bbc19e 100644
--- a/pkg/analyzer/lib/dart/ast/visitor.dart
+++ b/pkg/analyzer/lib/dart/ast/visitor.dart
@@ -53,7 +53,7 @@
/// A visitor, used to visit the children of the current node, that will add
/// the nodes it visits to the [_queue].
- _BreadthFirstChildVisitor _childVisitor;
+ late final _BreadthFirstChildVisitor _childVisitor;
/// Initialize a newly created visitor.
BreadthFirstVisitor() {
@@ -71,7 +71,7 @@
}
@override
- R visitNode(AstNode node) {
+ R? visitNode(AstNode node) {
node.visitChildren(_childVisitor);
return null;
}
@@ -101,7 +101,7 @@
const DelegatingAstVisitor(this.delegates);
@override
- T visitNode(AstNode node) {
+ T? visitNode(AstNode node) {
delegates.forEach((delegate) {
node.accept(delegate);
});
@@ -132,470 +132,474 @@
const GeneralizingAstVisitor();
@override
- R visitAdjacentStrings(AdjacentStrings node) => visitStringLiteral(node);
+ R? visitAdjacentStrings(AdjacentStrings node) => visitStringLiteral(node);
- R visitAnnotatedNode(AnnotatedNode node) => visitNode(node);
+ R? visitAnnotatedNode(AnnotatedNode node) => visitNode(node);
@override
- R visitAnnotation(Annotation node) => visitNode(node);
+ R? visitAnnotation(Annotation node) => visitNode(node);
@override
- R visitArgumentList(ArgumentList node) => visitNode(node);
+ R? visitArgumentList(ArgumentList node) => visitNode(node);
@override
- R visitAsExpression(AsExpression node) => visitExpression(node);
+ R? visitAsExpression(AsExpression node) => visitExpression(node);
@override
- R visitAssertInitializer(AssertInitializer node) => visitNode(node);
+ R? visitAssertInitializer(AssertInitializer node) => visitNode(node);
@override
- R visitAssertStatement(AssertStatement node) => visitStatement(node);
+ R? visitAssertStatement(AssertStatement node) => visitStatement(node);
@override
- R visitAssignmentExpression(AssignmentExpression node) =>
+ R? visitAssignmentExpression(AssignmentExpression node) =>
visitExpression(node);
@override
- R visitAwaitExpression(AwaitExpression node) => visitExpression(node);
+ R? visitAwaitExpression(AwaitExpression node) => visitExpression(node);
@override
- R visitBinaryExpression(BinaryExpression node) => visitExpression(node);
+ R? visitBinaryExpression(BinaryExpression node) => visitExpression(node);
@override
- R visitBlock(Block node) => visitStatement(node);
+ R? visitBlock(Block node) => visitStatement(node);
@override
- R visitBlockFunctionBody(BlockFunctionBody node) => visitFunctionBody(node);
+ R? visitBlockFunctionBody(BlockFunctionBody node) => visitFunctionBody(node);
@override
- R visitBooleanLiteral(BooleanLiteral node) => visitLiteral(node);
+ R? visitBooleanLiteral(BooleanLiteral node) => visitLiteral(node);
@override
- R visitBreakStatement(BreakStatement node) => visitStatement(node);
+ R? visitBreakStatement(BreakStatement node) => visitStatement(node);
@override
- R visitCascadeExpression(CascadeExpression node) => visitExpression(node);
+ R? visitCascadeExpression(CascadeExpression node) => visitExpression(node);
@override
- R visitCatchClause(CatchClause node) => visitNode(node);
+ R? visitCatchClause(CatchClause node) => visitNode(node);
@override
- R visitClassDeclaration(ClassDeclaration node) =>
+ R? visitClassDeclaration(ClassDeclaration node) =>
visitNamedCompilationUnitMember(node);
- R visitClassMember(ClassMember node) => visitDeclaration(node);
+ R? visitClassMember(ClassMember node) => visitDeclaration(node);
@override
- R visitClassTypeAlias(ClassTypeAlias node) => visitTypeAlias(node);
+ R? visitClassTypeAlias(ClassTypeAlias node) => visitTypeAlias(node);
- R visitCollectionElement(CollectionElement node) => visitNode(node);
+ R? visitCollectionElement(CollectionElement node) => visitNode(node);
- R visitCombinator(Combinator node) => visitNode(node);
+ R? visitCombinator(Combinator node) => visitNode(node);
@override
- R visitComment(Comment node) => visitNode(node);
+ R? visitComment(Comment node) => visitNode(node);
@override
- R visitCommentReference(CommentReference node) => visitNode(node);
+ R? visitCommentReference(CommentReference node) => visitNode(node);
@override
- R visitCompilationUnit(CompilationUnit node) => visitNode(node);
+ R? visitCompilationUnit(CompilationUnit node) => visitNode(node);
- R visitCompilationUnitMember(CompilationUnitMember node) =>
+ R? visitCompilationUnitMember(CompilationUnitMember node) =>
visitDeclaration(node);
@override
- R visitConditionalExpression(ConditionalExpression node) =>
+ R? visitConditionalExpression(ConditionalExpression node) =>
visitExpression(node);
@override
- R visitConfiguration(Configuration node) => visitNode(node);
+ R? visitConfiguration(Configuration node) => visitNode(node);
@override
- R visitConstructorDeclaration(ConstructorDeclaration node) =>
+ R? visitConstructorDeclaration(ConstructorDeclaration node) =>
visitClassMember(node);
@override
- R visitConstructorFieldInitializer(ConstructorFieldInitializer node) =>
+ R? visitConstructorFieldInitializer(ConstructorFieldInitializer node) =>
visitConstructorInitializer(node);
- R visitConstructorInitializer(ConstructorInitializer node) => visitNode(node);
+ R? visitConstructorInitializer(ConstructorInitializer node) =>
+ visitNode(node);
@override
- R visitConstructorName(ConstructorName node) => visitNode(node);
+ R? visitConstructorName(ConstructorName node) => visitNode(node);
@override
- R visitContinueStatement(ContinueStatement node) => visitStatement(node);
+ R? visitContinueStatement(ContinueStatement node) => visitStatement(node);
- R visitDeclaration(Declaration node) => visitAnnotatedNode(node);
+ R? visitDeclaration(Declaration node) => visitAnnotatedNode(node);
@override
- R visitDeclaredIdentifier(DeclaredIdentifier node) => visitDeclaration(node);
+ R? visitDeclaredIdentifier(DeclaredIdentifier node) => visitDeclaration(node);
@override
- R visitDefaultFormalParameter(DefaultFormalParameter node) =>
+ R? visitDefaultFormalParameter(DefaultFormalParameter node) =>
visitFormalParameter(node);
- R visitDirective(Directive node) => visitAnnotatedNode(node);
+ R? visitDirective(Directive node) => visitAnnotatedNode(node);
@override
- R visitDoStatement(DoStatement node) => visitStatement(node);
+ R? visitDoStatement(DoStatement node) => visitStatement(node);
@override
- R visitDottedName(DottedName node) => visitNode(node);
+ R? visitDottedName(DottedName node) => visitNode(node);
@override
- R visitDoubleLiteral(DoubleLiteral node) => visitLiteral(node);
+ R? visitDoubleLiteral(DoubleLiteral node) => visitLiteral(node);
@override
- R visitEmptyFunctionBody(EmptyFunctionBody node) => visitFunctionBody(node);
+ R? visitEmptyFunctionBody(EmptyFunctionBody node) => visitFunctionBody(node);
@override
- R visitEmptyStatement(EmptyStatement node) => visitStatement(node);
+ R? visitEmptyStatement(EmptyStatement node) => visitStatement(node);
@override
- R visitEnumConstantDeclaration(EnumConstantDeclaration node) =>
+ R? visitEnumConstantDeclaration(EnumConstantDeclaration node) =>
visitDeclaration(node);
@override
- R visitEnumDeclaration(EnumDeclaration node) =>
+ R? visitEnumDeclaration(EnumDeclaration node) =>
visitNamedCompilationUnitMember(node);
@override
- R visitExportDirective(ExportDirective node) => visitNamespaceDirective(node);
+ R? visitExportDirective(ExportDirective node) =>
+ visitNamespaceDirective(node);
- R visitExpression(Expression node) => visitCollectionElement(node);
+ R? visitExpression(Expression node) => visitCollectionElement(node);
@override
- R visitExpressionFunctionBody(ExpressionFunctionBody node) =>
+ R? visitExpressionFunctionBody(ExpressionFunctionBody node) =>
visitFunctionBody(node);
@override
- R visitExpressionStatement(ExpressionStatement node) => visitStatement(node);
+ R? visitExpressionStatement(ExpressionStatement node) => visitStatement(node);
@override
- R visitExtendsClause(ExtendsClause node) => visitNode(node);
+ R? visitExtendsClause(ExtendsClause node) => visitNode(node);
@override
- R visitExtensionDeclaration(ExtensionDeclaration node) =>
+ R? visitExtensionDeclaration(ExtensionDeclaration node) =>
visitCompilationUnitMember(node);
@override
- R visitExtensionOverride(ExtensionOverride node) => visitExpression(node);
+ R? visitExtensionOverride(ExtensionOverride node) => visitExpression(node);
@override
- R visitFieldDeclaration(FieldDeclaration node) => visitClassMember(node);
+ R? visitFieldDeclaration(FieldDeclaration node) => visitClassMember(node);
@override
- R visitFieldFormalParameter(FieldFormalParameter node) =>
+ R? visitFieldFormalParameter(FieldFormalParameter node) =>
visitNormalFormalParameter(node);
- R visitForEachParts(ForEachParts node) => visitNode(node);
+ R? visitForEachParts(ForEachParts node) => visitNode(node);
@override
- R visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node) =>
+ R? visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node) =>
visitForEachParts(node);
@override
- R visitForEachPartsWithIdentifier(ForEachPartsWithIdentifier node) =>
+ R? visitForEachPartsWithIdentifier(ForEachPartsWithIdentifier node) =>
visitForEachParts(node);
@override
- R visitForElement(ForElement node) => visitCollectionElement(node);
+ R? visitForElement(ForElement node) => visitCollectionElement(node);
- R visitFormalParameter(FormalParameter node) => visitNode(node);
+ R? visitFormalParameter(FormalParameter node) => visitNode(node);
@override
- R visitFormalParameterList(FormalParameterList node) => visitNode(node);
+ R? visitFormalParameterList(FormalParameterList node) => visitNode(node);
- R visitForParts(ForParts node) => visitNode(node);
+ R? visitForParts(ForParts node) => visitNode(node);
@override
- R visitForPartsWithDeclarations(ForPartsWithDeclarations node) =>
+ R? visitForPartsWithDeclarations(ForPartsWithDeclarations node) =>
visitForParts(node);
@override
- R visitForPartsWithExpression(ForPartsWithExpression node) =>
+ R? visitForPartsWithExpression(ForPartsWithExpression node) =>
visitForParts(node);
@override
- R visitForStatement(ForStatement node) => visitStatement(node);
+ R? visitForStatement(ForStatement node) => visitStatement(node);
- R visitFunctionBody(FunctionBody node) => visitNode(node);
+ R? visitFunctionBody(FunctionBody node) => visitNode(node);
@override
- R visitFunctionDeclaration(FunctionDeclaration node) =>
+ R? visitFunctionDeclaration(FunctionDeclaration node) =>
visitNamedCompilationUnitMember(node);
@override
- R visitFunctionDeclarationStatement(FunctionDeclarationStatement node) =>
+ R? visitFunctionDeclarationStatement(FunctionDeclarationStatement node) =>
visitStatement(node);
@override
- R visitFunctionExpression(FunctionExpression node) => visitExpression(node);
+ R? visitFunctionExpression(FunctionExpression node) => visitExpression(node);
@override
- R visitFunctionExpressionInvocation(FunctionExpressionInvocation node) =>
+ R? visitFunctionExpressionInvocation(FunctionExpressionInvocation node) =>
visitInvocationExpression(node);
@override
- R visitFunctionTypeAlias(FunctionTypeAlias node) => visitTypeAlias(node);
+ R? visitFunctionTypeAlias(FunctionTypeAlias node) => visitTypeAlias(node);
@override
- R visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) =>
+ R? visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) =>
visitNormalFormalParameter(node);
@override
- R visitGenericFunctionType(GenericFunctionType node) =>
+ R? visitGenericFunctionType(GenericFunctionType node) =>
visitTypeAnnotation(node);
@override
- R visitGenericTypeAlias(GenericTypeAlias node) => visitTypeAlias(node);
+ R? visitGenericTypeAlias(GenericTypeAlias node) => visitTypeAlias(node);
@override
- R visitHideCombinator(HideCombinator node) => visitCombinator(node);
+ R? visitHideCombinator(HideCombinator node) => visitCombinator(node);
- R visitIdentifier(Identifier node) => visitExpression(node);
+ R? visitIdentifier(Identifier node) => visitExpression(node);
@override
- R visitIfElement(IfElement node) => visitCollectionElement(node);
+ R? visitIfElement(IfElement node) => visitCollectionElement(node);
@override
- R visitIfStatement(IfStatement node) => visitStatement(node);
+ R? visitIfStatement(IfStatement node) => visitStatement(node);
@override
- R visitImplementsClause(ImplementsClause node) => visitNode(node);
+ R? visitImplementsClause(ImplementsClause node) => visitNode(node);
@override
- R visitImportDirective(ImportDirective node) => visitNamespaceDirective(node);
+ R? visitImportDirective(ImportDirective node) =>
+ visitNamespaceDirective(node);
@override
- R visitIndexExpression(IndexExpression node) => visitExpression(node);
+ R? visitIndexExpression(IndexExpression node) => visitExpression(node);
@override
- R visitInstanceCreationExpression(InstanceCreationExpression node) =>
+ R? visitInstanceCreationExpression(InstanceCreationExpression node) =>
visitExpression(node);
@override
- R visitIntegerLiteral(IntegerLiteral node) => visitLiteral(node);
+ R? visitIntegerLiteral(IntegerLiteral node) => visitLiteral(node);
- R visitInterpolationElement(InterpolationElement node) => visitNode(node);
+ R? visitInterpolationElement(InterpolationElement node) => visitNode(node);
@override
- R visitInterpolationExpression(InterpolationExpression node) =>
+ R? visitInterpolationExpression(InterpolationExpression node) =>
visitInterpolationElement(node);
@override
- R visitInterpolationString(InterpolationString node) =>
+ R? visitInterpolationString(InterpolationString node) =>
visitInterpolationElement(node);
- R visitInvocationExpression(InvocationExpression node) =>
+ R? visitInvocationExpression(InvocationExpression node) =>
visitExpression(node);
@override
- R visitIsExpression(IsExpression node) => visitExpression(node);
+ R? visitIsExpression(IsExpression node) => visitExpression(node);
@override
- R visitLabel(Label node) => visitNode(node);
+ R? visitLabel(Label node) => visitNode(node);
@override
- R visitLabeledStatement(LabeledStatement node) => visitStatement(node);
+ R? visitLabeledStatement(LabeledStatement node) => visitStatement(node);
@override
- R visitLibraryDirective(LibraryDirective node) => visitDirective(node);
+ R? visitLibraryDirective(LibraryDirective node) => visitDirective(node);
@override
- R visitLibraryIdentifier(LibraryIdentifier node) => visitIdentifier(node);
+ R? visitLibraryIdentifier(LibraryIdentifier node) => visitIdentifier(node);
@override
- R visitListLiteral(ListLiteral node) => visitTypedLiteral(node);
+ R? visitListLiteral(ListLiteral node) => visitTypedLiteral(node);
- R visitLiteral(Literal node) => visitExpression(node);
+ R? visitLiteral(Literal node) => visitExpression(node);
@override
- R visitMapLiteralEntry(MapLiteralEntry node) => visitCollectionElement(node);
+ R? visitMapLiteralEntry(MapLiteralEntry node) => visitCollectionElement(node);
@override
- R visitMethodDeclaration(MethodDeclaration node) => visitClassMember(node);
+ R? visitMethodDeclaration(MethodDeclaration node) => visitClassMember(node);
@override
- R visitMethodInvocation(MethodInvocation node) =>
+ R? visitMethodInvocation(MethodInvocation node) =>
visitInvocationExpression(node);
@override
- R visitMixinDeclaration(MixinDeclaration node) =>
+ R? visitMixinDeclaration(MixinDeclaration node) =>
visitNamedCompilationUnitMember(node);
- R visitNamedCompilationUnitMember(NamedCompilationUnitMember node) =>
+ R? visitNamedCompilationUnitMember(NamedCompilationUnitMember node) =>
visitCompilationUnitMember(node);
@override
- R visitNamedExpression(NamedExpression node) => visitExpression(node);
+ R? visitNamedExpression(NamedExpression node) => visitExpression(node);
- R visitNamespaceDirective(NamespaceDirective node) =>
+ R? visitNamespaceDirective(NamespaceDirective node) =>
visitUriBasedDirective(node);
@override
- R visitNativeClause(NativeClause node) => visitNode(node);
+ R? visitNativeClause(NativeClause node) => visitNode(node);
@override
- R visitNativeFunctionBody(NativeFunctionBody node) => visitFunctionBody(node);
+ R? visitNativeFunctionBody(NativeFunctionBody node) =>
+ visitFunctionBody(node);
- R visitNode(AstNode node) {
+ R? visitNode(AstNode node) {
node.visitChildren(this);
return null;
}
- R visitNormalFormalParameter(NormalFormalParameter node) =>
+ R? visitNormalFormalParameter(NormalFormalParameter node) =>
visitFormalParameter(node);
@override
- R visitNullLiteral(NullLiteral node) => visitLiteral(node);
+ R? visitNullLiteral(NullLiteral node) => visitLiteral(node);
@override
- R visitOnClause(OnClause node) => visitNode(node);
+ R? visitOnClause(OnClause node) => visitNode(node);
@override
- R visitParenthesizedExpression(ParenthesizedExpression node) =>
+ R? visitParenthesizedExpression(ParenthesizedExpression node) =>
visitExpression(node);
@override
- R visitPartDirective(PartDirective node) => visitUriBasedDirective(node);
+ R? visitPartDirective(PartDirective node) => visitUriBasedDirective(node);
@override
- R visitPartOfDirective(PartOfDirective node) => visitDirective(node);
+ R? visitPartOfDirective(PartOfDirective node) => visitDirective(node);
@override
- R visitPostfixExpression(PostfixExpression node) => visitExpression(node);
+ R? visitPostfixExpression(PostfixExpression node) => visitExpression(node);
@override
- R visitPrefixedIdentifier(PrefixedIdentifier node) => visitIdentifier(node);
+ R? visitPrefixedIdentifier(PrefixedIdentifier node) => visitIdentifier(node);
@override
- R visitPrefixExpression(PrefixExpression node) => visitExpression(node);
+ R? visitPrefixExpression(PrefixExpression node) => visitExpression(node);
@override
- R visitPropertyAccess(PropertyAccess node) => visitExpression(node);
+ R? visitPropertyAccess(PropertyAccess node) => visitExpression(node);
@override
- R visitRedirectingConstructorInvocation(
+ R? visitRedirectingConstructorInvocation(
RedirectingConstructorInvocation node) =>
visitConstructorInitializer(node);
@override
- R visitRethrowExpression(RethrowExpression node) => visitExpression(node);
+ R? visitRethrowExpression(RethrowExpression node) => visitExpression(node);
@override
- R visitReturnStatement(ReturnStatement node) => visitStatement(node);
+ R? visitReturnStatement(ReturnStatement node) => visitStatement(node);
@override
- R visitScriptTag(ScriptTag scriptTag) => visitNode(scriptTag);
+ R? visitScriptTag(ScriptTag scriptTag) => visitNode(scriptTag);
@override
- R visitSetOrMapLiteral(SetOrMapLiteral node) => visitTypedLiteral(node);
+ R? visitSetOrMapLiteral(SetOrMapLiteral node) => visitTypedLiteral(node);
@override
- R visitShowCombinator(ShowCombinator node) => visitCombinator(node);
+ R? visitShowCombinator(ShowCombinator node) => visitCombinator(node);
@override
- R visitSimpleFormalParameter(SimpleFormalParameter node) =>
+ R? visitSimpleFormalParameter(SimpleFormalParameter node) =>
visitNormalFormalParameter(node);
@override
- R visitSimpleIdentifier(SimpleIdentifier node) => visitIdentifier(node);
+ R? visitSimpleIdentifier(SimpleIdentifier node) => visitIdentifier(node);
@override
- R visitSimpleStringLiteral(SimpleStringLiteral node) =>
+ R? visitSimpleStringLiteral(SimpleStringLiteral node) =>
visitSingleStringLiteral(node);
- R visitSingleStringLiteral(SingleStringLiteral node) =>
+ R? visitSingleStringLiteral(SingleStringLiteral node) =>
visitStringLiteral(node);
@override
- R visitSpreadElement(SpreadElement node) => visitCollectionElement(node);
+ R? visitSpreadElement(SpreadElement node) => visitCollectionElement(node);
- R visitStatement(Statement node) => visitNode(node);
+ R? visitStatement(Statement node) => visitNode(node);
@override
- R visitStringInterpolation(StringInterpolation node) =>
+ R? visitStringInterpolation(StringInterpolation node) =>
visitSingleStringLiteral(node);
- R visitStringLiteral(StringLiteral node) => visitLiteral(node);
+ R? visitStringLiteral(StringLiteral node) => visitLiteral(node);
@override
- R visitSuperConstructorInvocation(SuperConstructorInvocation node) =>
+ R? visitSuperConstructorInvocation(SuperConstructorInvocation node) =>
visitConstructorInitializer(node);
@override
- R visitSuperExpression(SuperExpression node) => visitExpression(node);
+ R? visitSuperExpression(SuperExpression node) => visitExpression(node);
@override
- R visitSwitchCase(SwitchCase node) => visitSwitchMember(node);
+ R? visitSwitchCase(SwitchCase node) => visitSwitchMember(node);
@override
- R visitSwitchDefault(SwitchDefault node) => visitSwitchMember(node);
+ R? visitSwitchDefault(SwitchDefault node) => visitSwitchMember(node);
- R visitSwitchMember(SwitchMember node) => visitNode(node);
+ R? visitSwitchMember(SwitchMember node) => visitNode(node);
@override
- R visitSwitchStatement(SwitchStatement node) => visitStatement(node);
+ R? visitSwitchStatement(SwitchStatement node) => visitStatement(node);
@override
- R visitSymbolLiteral(SymbolLiteral node) => visitLiteral(node);
+ R? visitSymbolLiteral(SymbolLiteral node) => visitLiteral(node);
@override
- R visitThisExpression(ThisExpression node) => visitExpression(node);
+ R? visitThisExpression(ThisExpression node) => visitExpression(node);
@override
- R visitThrowExpression(ThrowExpression node) => visitExpression(node);
+ R? visitThrowExpression(ThrowExpression node) => visitExpression(node);
@override
- R visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) =>
+ R? visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) =>
visitCompilationUnitMember(node);
@override
- R visitTryStatement(TryStatement node) => visitStatement(node);
+ R? visitTryStatement(TryStatement node) => visitStatement(node);
- R visitTypeAlias(TypeAlias node) => visitNamedCompilationUnitMember(node);
+ R? visitTypeAlias(TypeAlias node) => visitNamedCompilationUnitMember(node);
- R visitTypeAnnotation(TypeAnnotation node) => visitNode(node);
+ R? visitTypeAnnotation(TypeAnnotation node) => visitNode(node);
@override
- R visitTypeArgumentList(TypeArgumentList node) => visitNode(node);
+ R? visitTypeArgumentList(TypeArgumentList node) => visitNode(node);
- R visitTypedLiteral(TypedLiteral node) => visitLiteral(node);
+ R? visitTypedLiteral(TypedLiteral node) => visitLiteral(node);
@override
- R visitTypeName(TypeName node) => visitNode(node);
+ R? visitTypeName(TypeName node) => visitNode(node);
@override
- R visitTypeParameter(TypeParameter node) => visitNode(node);
+ R? visitTypeParameter(TypeParameter node) => visitNode(node);
@override
- R visitTypeParameterList(TypeParameterList node) => visitNode(node);
+ R? visitTypeParameterList(TypeParameterList node) => visitNode(node);
- R visitUriBasedDirective(UriBasedDirective node) => visitDirective(node);
+ R? visitUriBasedDirective(UriBasedDirective node) => visitDirective(node);
@override
- R visitVariableDeclaration(VariableDeclaration node) =>
+ R? visitVariableDeclaration(VariableDeclaration node) =>
visitDeclaration(node);
@override
- R visitVariableDeclarationList(VariableDeclarationList node) =>
+ R? visitVariableDeclarationList(VariableDeclarationList node) =>
visitNode(node);
@override
- R visitVariableDeclarationStatement(VariableDeclarationStatement node) =>
+ R? visitVariableDeclarationStatement(VariableDeclarationStatement node) =>
visitStatement(node);
@override
- R visitWhileStatement(WhileStatement node) => visitStatement(node);
+ R? visitWhileStatement(WhileStatement node) => visitStatement(node);
@override
- R visitWithClause(WithClause node) => visitNode(node);
+ R? visitWithClause(WithClause node) => visitNode(node);
@override
- R visitYieldStatement(YieldStatement node) => visitStatement(node);
+ R? visitYieldStatement(YieldStatement node) => visitStatement(node);
}
/// An AST visitor that will recursively visit all of the nodes in an AST
@@ -613,728 +617,728 @@
const RecursiveAstVisitor();
@override
- R visitAdjacentStrings(AdjacentStrings node) {
+ R? visitAdjacentStrings(AdjacentStrings node) {
node.visitChildren(this);
return null;
}
@override
- R visitAnnotation(Annotation node) {
+ R? visitAnnotation(Annotation node) {
node.visitChildren(this);
return null;
}
@override
- R visitArgumentList(ArgumentList node) {
+ R? visitArgumentList(ArgumentList node) {
node.visitChildren(this);
return null;
}
@override
- R visitAsExpression(AsExpression node) {
+ R? visitAsExpression(AsExpression node) {
node.visitChildren(this);
return null;
}
@override
- R visitAssertInitializer(AssertInitializer node) {
+ R? visitAssertInitializer(AssertInitializer node) {
node.visitChildren(this);
return null;
}
@override
- R visitAssertStatement(AssertStatement node) {
+ R? visitAssertStatement(AssertStatement node) {
node.visitChildren(this);
return null;
}
@override
- R visitAssignmentExpression(AssignmentExpression node) {
+ R? visitAssignmentExpression(AssignmentExpression node) {
node.visitChildren(this);
return null;
}
@override
- R visitAwaitExpression(AwaitExpression node) {
+ R? visitAwaitExpression(AwaitExpression node) {
node.visitChildren(this);
return null;
}
@override
- R visitBinaryExpression(BinaryExpression node) {
+ R? visitBinaryExpression(BinaryExpression node) {
node.visitChildren(this);
return null;
}
@override
- R visitBlock(Block node) {
+ R? visitBlock(Block node) {
node.visitChildren(this);
return null;
}
@override
- R visitBlockFunctionBody(BlockFunctionBody node) {
+ R? visitBlockFunctionBody(BlockFunctionBody node) {
node.visitChildren(this);
return null;
}
@override
- R visitBooleanLiteral(BooleanLiteral node) {
+ R? visitBooleanLiteral(BooleanLiteral node) {
node.visitChildren(this);
return null;
}
@override
- R visitBreakStatement(BreakStatement node) {
+ R? visitBreakStatement(BreakStatement node) {
node.visitChildren(this);
return null;
}
@override
- R visitCascadeExpression(CascadeExpression node) {
+ R? visitCascadeExpression(CascadeExpression node) {
node.visitChildren(this);
return null;
}
@override
- R visitCatchClause(CatchClause node) {
+ R? visitCatchClause(CatchClause node) {
node.visitChildren(this);
return null;
}
@override
- R visitClassDeclaration(ClassDeclaration node) {
+ R? visitClassDeclaration(ClassDeclaration node) {
node.visitChildren(this);
return null;
}
@override
- R visitClassTypeAlias(ClassTypeAlias node) {
+ R? visitClassTypeAlias(ClassTypeAlias node) {
node.visitChildren(this);
return null;
}
@override
- R visitComment(Comment node) {
+ R? visitComment(Comment node) {
node.visitChildren(this);
return null;
}
@override
- R visitCommentReference(CommentReference node) {
+ R? visitCommentReference(CommentReference node) {
node.visitChildren(this);
return null;
}
@override
- R visitCompilationUnit(CompilationUnit node) {
+ R? visitCompilationUnit(CompilationUnit node) {
node.visitChildren(this);
return null;
}
@override
- R visitConditionalExpression(ConditionalExpression node) {
+ R? visitConditionalExpression(ConditionalExpression node) {
node.visitChildren(this);
return null;
}
@override
- R visitConfiguration(Configuration node) {
+ R? visitConfiguration(Configuration node) {
node.visitChildren(this);
return null;
}
@override
- R visitConstructorDeclaration(ConstructorDeclaration node) {
+ R? visitConstructorDeclaration(ConstructorDeclaration node) {
node.visitChildren(this);
return null;
}
@override
- R visitConstructorFieldInitializer(ConstructorFieldInitializer node) {
+ R? visitConstructorFieldInitializer(ConstructorFieldInitializer node) {
node.visitChildren(this);
return null;
}
@override
- R visitConstructorName(ConstructorName node) {
+ R? visitConstructorName(ConstructorName node) {
node.visitChildren(this);
return null;
}
@override
- R visitContinueStatement(ContinueStatement node) {
+ R? visitContinueStatement(ContinueStatement node) {
node.visitChildren(this);
return null;
}
@override
- R visitDeclaredIdentifier(DeclaredIdentifier node) {
+ R? visitDeclaredIdentifier(DeclaredIdentifier node) {
node.visitChildren(this);
return null;
}
@override
- R visitDefaultFormalParameter(DefaultFormalParameter node) {
+ R? visitDefaultFormalParameter(DefaultFormalParameter node) {
node.visitChildren(this);
return null;
}
@override
- R visitDoStatement(DoStatement node) {
+ R? visitDoStatement(DoStatement node) {
node.visitChildren(this);
return null;
}
@override
- R visitDottedName(DottedName node) {
+ R? visitDottedName(DottedName node) {
node.visitChildren(this);
return null;
}
@override
- R visitDoubleLiteral(DoubleLiteral node) {
+ R? visitDoubleLiteral(DoubleLiteral node) {
node.visitChildren(this);
return null;
}
@override
- R visitEmptyFunctionBody(EmptyFunctionBody node) {
+ R? visitEmptyFunctionBody(EmptyFunctionBody node) {
node.visitChildren(this);
return null;
}
@override
- R visitEmptyStatement(EmptyStatement node) {
+ R? visitEmptyStatement(EmptyStatement node) {
node.visitChildren(this);
return null;
}
@override
- R visitEnumConstantDeclaration(EnumConstantDeclaration node) {
+ R? visitEnumConstantDeclaration(EnumConstantDeclaration node) {
node.visitChildren(this);
return null;
}
@override
- R visitEnumDeclaration(EnumDeclaration node) {
+ R? visitEnumDeclaration(EnumDeclaration node) {
node.visitChildren(this);
return null;
}
@override
- R visitExportDirective(ExportDirective node) {
+ R? visitExportDirective(ExportDirective node) {
node.visitChildren(this);
return null;
}
@override
- R visitExpressionFunctionBody(ExpressionFunctionBody node) {
+ R? visitExpressionFunctionBody(ExpressionFunctionBody node) {
node.visitChildren(this);
return null;
}
@override
- R visitExpressionStatement(ExpressionStatement node) {
+ R? visitExpressionStatement(ExpressionStatement node) {
node.visitChildren(this);
return null;
}
@override
- R visitExtendsClause(ExtendsClause node) {
+ R? visitExtendsClause(ExtendsClause node) {
node.visitChildren(this);
return null;
}
@override
- R visitExtensionDeclaration(ExtensionDeclaration node) {
+ R? visitExtensionDeclaration(ExtensionDeclaration node) {
node.visitChildren(this);
return null;
}
@override
- R visitExtensionOverride(ExtensionOverride node) {
+ R? visitExtensionOverride(ExtensionOverride node) {
node.visitChildren(this);
return null;
}
@override
- R visitFieldDeclaration(FieldDeclaration node) {
+ R? visitFieldDeclaration(FieldDeclaration node) {
node.visitChildren(this);
return null;
}
@override
- R visitFieldFormalParameter(FieldFormalParameter node) {
+ R? visitFieldFormalParameter(FieldFormalParameter node) {
node.visitChildren(this);
return null;
}
@override
- R visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node) {
+ R? visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node) {
node.visitChildren(this);
return null;
}
@override
- R visitForEachPartsWithIdentifier(ForEachPartsWithIdentifier node) {
+ R? visitForEachPartsWithIdentifier(ForEachPartsWithIdentifier node) {
node.visitChildren(this);
return null;
}
@override
- R visitForElement(ForElement node) {
+ R? visitForElement(ForElement node) {
node.visitChildren(this);
return null;
}
@override
- R visitFormalParameterList(FormalParameterList node) {
+ R? visitFormalParameterList(FormalParameterList node) {
node.visitChildren(this);
return null;
}
@override
- R visitForPartsWithDeclarations(ForPartsWithDeclarations node) {
+ R? visitForPartsWithDeclarations(ForPartsWithDeclarations node) {
node.visitChildren(this);
return null;
}
@override
- R visitForPartsWithExpression(ForPartsWithExpression node) {
+ R? visitForPartsWithExpression(ForPartsWithExpression node) {
node.visitChildren(this);
return null;
}
@override
- R visitForStatement(ForStatement node) {
+ R? visitForStatement(ForStatement node) {
node.visitChildren(this);
return null;
}
@override
- R visitFunctionDeclaration(FunctionDeclaration node) {
+ R? visitFunctionDeclaration(FunctionDeclaration node) {
node.visitChildren(this);
return null;
}
@override
- R visitFunctionDeclarationStatement(FunctionDeclarationStatement node) {
+ R? visitFunctionDeclarationStatement(FunctionDeclarationStatement node) {
node.visitChildren(this);
return null;
}
@override
- R visitFunctionExpression(FunctionExpression node) {
+ R? visitFunctionExpression(FunctionExpression node) {
node.visitChildren(this);
return null;
}
@override
- R visitFunctionExpressionInvocation(FunctionExpressionInvocation node) {
+ R? visitFunctionExpressionInvocation(FunctionExpressionInvocation node) {
node.visitChildren(this);
return null;
}
@override
- R visitFunctionTypeAlias(FunctionTypeAlias node) {
+ R? visitFunctionTypeAlias(FunctionTypeAlias node) {
node.visitChildren(this);
return null;
}
@override
- R visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) {
+ R? visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) {
node.visitChildren(this);
return null;
}
@override
- R visitGenericFunctionType(GenericFunctionType node) {
+ R? visitGenericFunctionType(GenericFunctionType node) {
node.visitChildren(this);
return null;
}
@override
- R visitGenericTypeAlias(GenericTypeAlias node) {
+ R? visitGenericTypeAlias(GenericTypeAlias node) {
node.visitChildren(this);
return null;
}
@override
- R visitHideCombinator(HideCombinator node) {
+ R? visitHideCombinator(HideCombinator node) {
node.visitChildren(this);
return null;
}
@override
- R visitIfElement(IfElement node) {
+ R? visitIfElement(IfElement node) {
node.visitChildren(this);
return null;
}
@override
- R visitIfStatement(IfStatement node) {
+ R? visitIfStatement(IfStatement node) {
node.visitChildren(this);
return null;
}
@override
- R visitImplementsClause(ImplementsClause node) {
+ R? visitImplementsClause(ImplementsClause node) {
node.visitChildren(this);
return null;
}
@override
- R visitImportDirective(ImportDirective node) {
+ R? visitImportDirective(ImportDirective node) {
node.visitChildren(this);
return null;
}
@override
- R visitIndexExpression(IndexExpression node) {
+ R? visitIndexExpression(IndexExpression node) {
node.visitChildren(this);
return null;
}
@override
- R visitInstanceCreationExpression(InstanceCreationExpression node) {
+ R? visitInstanceCreationExpression(InstanceCreationExpression node) {
node.visitChildren(this);
return null;
}
@override
- R visitIntegerLiteral(IntegerLiteral node) {
+ R? visitIntegerLiteral(IntegerLiteral node) {
node.visitChildren(this);
return null;
}
@override
- R visitInterpolationExpression(InterpolationExpression node) {
+ R? visitInterpolationExpression(InterpolationExpression node) {
node.visitChildren(this);
return null;
}
@override
- R visitInterpolationString(InterpolationString node) {
+ R? visitInterpolationString(InterpolationString node) {
node.visitChildren(this);
return null;
}
@override
- R visitIsExpression(IsExpression node) {
+ R? visitIsExpression(IsExpression node) {
node.visitChildren(this);
return null;
}
@override
- R visitLabel(Label node) {
+ R? visitLabel(Label node) {
node.visitChildren(this);
return null;
}
@override
- R visitLabeledStatement(LabeledStatement node) {
+ R? visitLabeledStatement(LabeledStatement node) {
node.visitChildren(this);
return null;
}
@override
- R visitLibraryDirective(LibraryDirective node) {
+ R? visitLibraryDirective(LibraryDirective node) {
node.visitChildren(this);
return null;
}
@override
- R visitLibraryIdentifier(LibraryIdentifier node) {
+ R? visitLibraryIdentifier(LibraryIdentifier node) {
node.visitChildren(this);
return null;
}
@override
- R visitListLiteral(ListLiteral node) {
+ R? visitListLiteral(ListLiteral node) {
node.visitChildren(this);
return null;
}
@override
- R visitMapLiteralEntry(MapLiteralEntry node) {
+ R? visitMapLiteralEntry(MapLiteralEntry node) {
node.visitChildren(this);
return null;
}
@override
- R visitMethodDeclaration(MethodDeclaration node) {
+ R? visitMethodDeclaration(MethodDeclaration node) {
node.visitChildren(this);
return null;
}
@override
- R visitMethodInvocation(MethodInvocation node) {
+ R? visitMethodInvocation(MethodInvocation node) {
node.visitChildren(this);
return null;
}
@override
- R visitMixinDeclaration(MixinDeclaration node) {
+ R? visitMixinDeclaration(MixinDeclaration node) {
node.visitChildren(this);
return null;
}
@override
- R visitNamedExpression(NamedExpression node) {
+ R? visitNamedExpression(NamedExpression node) {
node.visitChildren(this);
return null;
}
@override
- R visitNativeClause(NativeClause node) {
+ R? visitNativeClause(NativeClause node) {
node.visitChildren(this);
return null;
}
@override
- R visitNativeFunctionBody(NativeFunctionBody node) {
+ R? visitNativeFunctionBody(NativeFunctionBody node) {
node.visitChildren(this);
return null;
}
@override
- R visitNullLiteral(NullLiteral node) {
+ R? visitNullLiteral(NullLiteral node) {
node.visitChildren(this);
return null;
}
@override
- R visitOnClause(OnClause node) {
+ R? visitOnClause(OnClause node) {
node.visitChildren(this);
return null;
}
@override
- R visitParenthesizedExpression(ParenthesizedExpression node) {
+ R? visitParenthesizedExpression(ParenthesizedExpression node) {
node.visitChildren(this);
return null;
}
@override
- R visitPartDirective(PartDirective node) {
+ R? visitPartDirective(PartDirective node) {
node.visitChildren(this);
return null;
}
@override
- R visitPartOfDirective(PartOfDirective node) {
+ R? visitPartOfDirective(PartOfDirective node) {
node.visitChildren(this);
return null;
}
@override
- R visitPostfixExpression(PostfixExpression node) {
+ R? visitPostfixExpression(PostfixExpression node) {
node.visitChildren(this);
return null;
}
@override
- R visitPrefixedIdentifier(PrefixedIdentifier node) {
+ R? visitPrefixedIdentifier(PrefixedIdentifier node) {
node.visitChildren(this);
return null;
}
@override
- R visitPrefixExpression(PrefixExpression node) {
+ R? visitPrefixExpression(PrefixExpression node) {
node.visitChildren(this);
return null;
}
@override
- R visitPropertyAccess(PropertyAccess node) {
+ R? visitPropertyAccess(PropertyAccess node) {
node.visitChildren(this);
return null;
}
@override
- R visitRedirectingConstructorInvocation(
+ R? visitRedirectingConstructorInvocation(
RedirectingConstructorInvocation node) {
node.visitChildren(this);
return null;
}
@override
- R visitRethrowExpression(RethrowExpression node) {
+ R? visitRethrowExpression(RethrowExpression node) {
node.visitChildren(this);
return null;
}
@override
- R visitReturnStatement(ReturnStatement node) {
+ R? visitReturnStatement(ReturnStatement node) {
node.visitChildren(this);
return null;
}
@override
- R visitScriptTag(ScriptTag node) {
+ R? visitScriptTag(ScriptTag node) {
node.visitChildren(this);
return null;
}
@override
- R visitSetOrMapLiteral(SetOrMapLiteral node) {
+ R? visitSetOrMapLiteral(SetOrMapLiteral node) {
node.visitChildren(this);
return null;
}
@override
- R visitShowCombinator(ShowCombinator node) {
+ R? visitShowCombinator(ShowCombinator node) {
node.visitChildren(this);
return null;
}
@override
- R visitSimpleFormalParameter(SimpleFormalParameter node) {
+ R? visitSimpleFormalParameter(SimpleFormalParameter node) {
node.visitChildren(this);
return null;
}
@override
- R visitSimpleIdentifier(SimpleIdentifier node) {
+ R? visitSimpleIdentifier(SimpleIdentifier node) {
node.visitChildren(this);
return null;
}
@override
- R visitSimpleStringLiteral(SimpleStringLiteral node) {
+ R? visitSimpleStringLiteral(SimpleStringLiteral node) {
node.visitChildren(this);
return null;
}
@override
- R visitSpreadElement(SpreadElement node) {
+ R? visitSpreadElement(SpreadElement node) {
node.visitChildren(this);
return null;
}
@override
- R visitStringInterpolation(StringInterpolation node) {
+ R? visitStringInterpolation(StringInterpolation node) {
node.visitChildren(this);
return null;
}
@override
- R visitSuperConstructorInvocation(SuperConstructorInvocation node) {
+ R? visitSuperConstructorInvocation(SuperConstructorInvocation node) {
node.visitChildren(this);
return null;
}
@override
- R visitSuperExpression(SuperExpression node) {
+ R? visitSuperExpression(SuperExpression node) {
node.visitChildren(this);
return null;
}
@override
- R visitSwitchCase(SwitchCase node) {
+ R? visitSwitchCase(SwitchCase node) {
node.visitChildren(this);
return null;
}
@override
- R visitSwitchDefault(SwitchDefault node) {
+ R? visitSwitchDefault(SwitchDefault node) {
node.visitChildren(this);
return null;
}
@override
- R visitSwitchStatement(SwitchStatement node) {
+ R? visitSwitchStatement(SwitchStatement node) {
node.visitChildren(this);
return null;
}
@override
- R visitSymbolLiteral(SymbolLiteral node) {
+ R? visitSymbolLiteral(SymbolLiteral node) {
node.visitChildren(this);
return null;
}
@override
- R visitThisExpression(ThisExpression node) {
+ R? visitThisExpression(ThisExpression node) {
node.visitChildren(this);
return null;
}
@override
- R visitThrowExpression(ThrowExpression node) {
+ R? visitThrowExpression(ThrowExpression node) {
node.visitChildren(this);
return null;
}
@override
- R visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) {
+ R? visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) {
node.visitChildren(this);
return null;
}
@override
- R visitTryStatement(TryStatement node) {
+ R? visitTryStatement(TryStatement node) {
node.visitChildren(this);
return null;
}
@override
- R visitTypeArgumentList(TypeArgumentList node) {
+ R? visitTypeArgumentList(TypeArgumentList node) {
node.visitChildren(this);
return null;
}
@override
- R visitTypeName(TypeName node) {
+ R? visitTypeName(TypeName node) {
node.visitChildren(this);
return null;
}
@override
- R visitTypeParameter(TypeParameter node) {
+ R? visitTypeParameter(TypeParameter node) {
node.visitChildren(this);
return null;
}
@override
- R visitTypeParameterList(TypeParameterList node) {
+ R? visitTypeParameterList(TypeParameterList node) {
node.visitChildren(this);
return null;
}
@override
- R visitVariableDeclaration(VariableDeclaration node) {
+ R? visitVariableDeclaration(VariableDeclaration node) {
node.visitChildren(this);
return null;
}
@override
- R visitVariableDeclarationList(VariableDeclarationList node) {
+ R? visitVariableDeclarationList(VariableDeclarationList node) {
node.visitChildren(this);
return null;
}
@override
- R visitVariableDeclarationStatement(VariableDeclarationStatement node) {
+ R? visitVariableDeclarationStatement(VariableDeclarationStatement node) {
node.visitChildren(this);
return null;
}
@override
- R visitWhileStatement(WhileStatement node) {
+ R? visitWhileStatement(WhileStatement node) {
node.visitChildren(this);
return null;
}
@override
- R visitWithClause(WithClause node) {
+ R? visitWithClause(WithClause node) {
node.visitChildren(this);
return null;
}
@override
- R visitYieldStatement(YieldStatement node) {
+ R? visitYieldStatement(YieldStatement node) {
node.visitChildren(this);
return null;
}
@@ -1351,373 +1355,373 @@
const SimpleAstVisitor();
@override
- R visitAdjacentStrings(AdjacentStrings node) => null;
+ R? visitAdjacentStrings(AdjacentStrings node) => null;
@override
- R visitAnnotation(Annotation node) => null;
+ R? visitAnnotation(Annotation node) => null;
@override
- R visitArgumentList(ArgumentList node) => null;
+ R? visitArgumentList(ArgumentList node) => null;
@override
- R visitAsExpression(AsExpression node) => null;
+ R? visitAsExpression(AsExpression node) => null;
@override
- R visitAssertInitializer(AssertInitializer node) => null;
+ R? visitAssertInitializer(AssertInitializer node) => null;
@override
- R visitAssertStatement(AssertStatement node) => null;
+ R? visitAssertStatement(AssertStatement node) => null;
@override
- R visitAssignmentExpression(AssignmentExpression node) => null;
+ R? visitAssignmentExpression(AssignmentExpression node) => null;
@override
- R visitAwaitExpression(AwaitExpression node) => null;
+ R? visitAwaitExpression(AwaitExpression node) => null;
@override
- R visitBinaryExpression(BinaryExpression node) => null;
+ R? visitBinaryExpression(BinaryExpression node) => null;
@override
- R visitBlock(Block node) => null;
+ R? visitBlock(Block node) => null;
@override
- R visitBlockFunctionBody(BlockFunctionBody node) => null;
+ R? visitBlockFunctionBody(BlockFunctionBody node) => null;
@override
- R visitBooleanLiteral(BooleanLiteral node) => null;
+ R? visitBooleanLiteral(BooleanLiteral node) => null;
@override
- R visitBreakStatement(BreakStatement node) => null;
+ R? visitBreakStatement(BreakStatement node) => null;
@override
- R visitCascadeExpression(CascadeExpression node) => null;
+ R? visitCascadeExpression(CascadeExpression node) => null;
@override
- R visitCatchClause(CatchClause node) => null;
+ R? visitCatchClause(CatchClause node) => null;
@override
- R visitClassDeclaration(ClassDeclaration node) => null;
+ R? visitClassDeclaration(ClassDeclaration node) => null;
@override
- R visitClassTypeAlias(ClassTypeAlias node) => null;
+ R? visitClassTypeAlias(ClassTypeAlias node) => null;
@override
- R visitComment(Comment node) => null;
+ R? visitComment(Comment node) => null;
@override
- R visitCommentReference(CommentReference node) => null;
+ R? visitCommentReference(CommentReference node) => null;
@override
- R visitCompilationUnit(CompilationUnit node) => null;
+ R? visitCompilationUnit(CompilationUnit node) => null;
@override
- R visitConditionalExpression(ConditionalExpression node) => null;
+ R? visitConditionalExpression(ConditionalExpression node) => null;
@override
- R visitConfiguration(Configuration node) => null;
+ R? visitConfiguration(Configuration node) => null;
@override
- R visitConstructorDeclaration(ConstructorDeclaration node) => null;
+ R? visitConstructorDeclaration(ConstructorDeclaration node) => null;
@override
- R visitConstructorFieldInitializer(ConstructorFieldInitializer node) => null;
+ R? visitConstructorFieldInitializer(ConstructorFieldInitializer node) => null;
@override
- R visitConstructorName(ConstructorName node) => null;
+ R? visitConstructorName(ConstructorName node) => null;
@override
- R visitContinueStatement(ContinueStatement node) => null;
+ R? visitContinueStatement(ContinueStatement node) => null;
@override
- R visitDeclaredIdentifier(DeclaredIdentifier node) => null;
+ R? visitDeclaredIdentifier(DeclaredIdentifier node) => null;
@override
- R visitDefaultFormalParameter(DefaultFormalParameter node) => null;
+ R? visitDefaultFormalParameter(DefaultFormalParameter node) => null;
@override
- R visitDoStatement(DoStatement node) => null;
+ R? visitDoStatement(DoStatement node) => null;
@override
- R visitDottedName(DottedName node) => null;
+ R? visitDottedName(DottedName node) => null;
@override
- R visitDoubleLiteral(DoubleLiteral node) => null;
+ R? visitDoubleLiteral(DoubleLiteral node) => null;
@override
- R visitEmptyFunctionBody(EmptyFunctionBody node) => null;
+ R? visitEmptyFunctionBody(EmptyFunctionBody node) => null;
@override
- R visitEmptyStatement(EmptyStatement node) => null;
+ R? visitEmptyStatement(EmptyStatement node) => null;
@override
- R visitEnumConstantDeclaration(EnumConstantDeclaration node) => null;
+ R? visitEnumConstantDeclaration(EnumConstantDeclaration node) => null;
@override
- R visitEnumDeclaration(EnumDeclaration node) => null;
+ R? visitEnumDeclaration(EnumDeclaration node) => null;
@override
- R visitExportDirective(ExportDirective node) => null;
+ R? visitExportDirective(ExportDirective node) => null;
@override
- R visitExpressionFunctionBody(ExpressionFunctionBody node) => null;
+ R? visitExpressionFunctionBody(ExpressionFunctionBody node) => null;
@override
- R visitExpressionStatement(ExpressionStatement node) => null;
+ R? visitExpressionStatement(ExpressionStatement node) => null;
@override
- R visitExtendsClause(ExtendsClause node) => null;
+ R? visitExtendsClause(ExtendsClause node) => null;
@override
- R visitExtensionDeclaration(ExtensionDeclaration node) => null;
+ R? visitExtensionDeclaration(ExtensionDeclaration node) => null;
@override
- R visitExtensionOverride(ExtensionOverride node) => null;
+ R? visitExtensionOverride(ExtensionOverride node) => null;
@override
- R visitFieldDeclaration(FieldDeclaration node) => null;
+ R? visitFieldDeclaration(FieldDeclaration node) => null;
@override
- R visitFieldFormalParameter(FieldFormalParameter node) => null;
+ R? visitFieldFormalParameter(FieldFormalParameter node) => null;
@override
- R visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node) => null;
+ R? visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node) => null;
@override
- R visitForEachPartsWithIdentifier(ForEachPartsWithIdentifier node) => null;
+ R? visitForEachPartsWithIdentifier(ForEachPartsWithIdentifier node) => null;
@override
- R visitForElement(ForElement node) => null;
+ R? visitForElement(ForElement node) => null;
@override
- R visitFormalParameterList(FormalParameterList node) => null;
+ R? visitFormalParameterList(FormalParameterList node) => null;
@override
- R visitForPartsWithDeclarations(ForPartsWithDeclarations node) => null;
+ R? visitForPartsWithDeclarations(ForPartsWithDeclarations node) => null;
@override
- R visitForPartsWithExpression(ForPartsWithExpression node) => null;
+ R? visitForPartsWithExpression(ForPartsWithExpression node) => null;
@override
- R visitForStatement(ForStatement node) => null;
+ R? visitForStatement(ForStatement node) => null;
@override
- R visitFunctionDeclaration(FunctionDeclaration node) => null;
+ R? visitFunctionDeclaration(FunctionDeclaration node) => null;
@override
- R visitFunctionDeclarationStatement(FunctionDeclarationStatement node) =>
+ R? visitFunctionDeclarationStatement(FunctionDeclarationStatement node) =>
null;
@override
- R visitFunctionExpression(FunctionExpression node) => null;
+ R? visitFunctionExpression(FunctionExpression node) => null;
@override
- R visitFunctionExpressionInvocation(FunctionExpressionInvocation node) =>
+ R? visitFunctionExpressionInvocation(FunctionExpressionInvocation node) =>
null;
@override
- R visitFunctionTypeAlias(FunctionTypeAlias node) => null;
+ R? visitFunctionTypeAlias(FunctionTypeAlias node) => null;
@override
- R visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) =>
+ R? visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) =>
null;
@override
- R visitGenericFunctionType(GenericFunctionType node) => null;
+ R? visitGenericFunctionType(GenericFunctionType node) => null;
@override
- R visitGenericTypeAlias(GenericTypeAlias node) => null;
+ R? visitGenericTypeAlias(GenericTypeAlias node) => null;
@override
- R visitHideCombinator(HideCombinator node) => null;
+ R? visitHideCombinator(HideCombinator node) => null;
@override
- R visitIfElement(IfElement node) => null;
+ R? visitIfElement(IfElement node) => null;
@override
- R visitIfStatement(IfStatement node) => null;
+ R? visitIfStatement(IfStatement node) => null;
@override
- R visitImplementsClause(ImplementsClause node) => null;
+ R? visitImplementsClause(ImplementsClause node) => null;
@override
- R visitImportDirective(ImportDirective node) => null;
+ R? visitImportDirective(ImportDirective node) => null;
@override
- R visitIndexExpression(IndexExpression node) => null;
+ R? visitIndexExpression(IndexExpression node) => null;
@override
- R visitInstanceCreationExpression(InstanceCreationExpression node) => null;
+ R? visitInstanceCreationExpression(InstanceCreationExpression node) => null;
@override
- R visitIntegerLiteral(IntegerLiteral node) => null;
+ R? visitIntegerLiteral(IntegerLiteral node) => null;
@override
- R visitInterpolationExpression(InterpolationExpression node) => null;
+ R? visitInterpolationExpression(InterpolationExpression node) => null;
@override
- R visitInterpolationString(InterpolationString node) => null;
+ R? visitInterpolationString(InterpolationString node) => null;
@override
- R visitIsExpression(IsExpression node) => null;
+ R? visitIsExpression(IsExpression node) => null;
@override
- R visitLabel(Label node) => null;
+ R? visitLabel(Label node) => null;
@override
- R visitLabeledStatement(LabeledStatement node) => null;
+ R? visitLabeledStatement(LabeledStatement node) => null;
@override
- R visitLibraryDirective(LibraryDirective node) => null;
+ R? visitLibraryDirective(LibraryDirective node) => null;
@override
- R visitLibraryIdentifier(LibraryIdentifier node) => null;
+ R? visitLibraryIdentifier(LibraryIdentifier node) => null;
@override
- R visitListLiteral(ListLiteral node) => null;
+ R? visitListLiteral(ListLiteral node) => null;
@override
- R visitMapLiteralEntry(MapLiteralEntry node) => null;
+ R? visitMapLiteralEntry(MapLiteralEntry node) => null;
@override
- R visitMethodDeclaration(MethodDeclaration node) => null;
+ R? visitMethodDeclaration(MethodDeclaration node) => null;
@override
- R visitMethodInvocation(MethodInvocation node) => null;
+ R? visitMethodInvocation(MethodInvocation node) => null;
@override
- R visitMixinDeclaration(MixinDeclaration node) => null;
+ R? visitMixinDeclaration(MixinDeclaration node) => null;
@override
- R visitNamedExpression(NamedExpression node) => null;
+ R? visitNamedExpression(NamedExpression node) => null;
@override
- R visitNativeClause(NativeClause node) => null;
+ R? visitNativeClause(NativeClause node) => null;
@override
- R visitNativeFunctionBody(NativeFunctionBody node) => null;
+ R? visitNativeFunctionBody(NativeFunctionBody node) => null;
@override
- R visitNullLiteral(NullLiteral node) => null;
+ R? visitNullLiteral(NullLiteral node) => null;
@override
- R visitOnClause(OnClause node) => null;
+ R? visitOnClause(OnClause node) => null;
@override
- R visitParenthesizedExpression(ParenthesizedExpression node) => null;
+ R? visitParenthesizedExpression(ParenthesizedExpression node) => null;
@override
- R visitPartDirective(PartDirective node) => null;
+ R? visitPartDirective(PartDirective node) => null;
@override
- R visitPartOfDirective(PartOfDirective node) => null;
+ R? visitPartOfDirective(PartOfDirective node) => null;
@override
- R visitPostfixExpression(PostfixExpression node) => null;
+ R? visitPostfixExpression(PostfixExpression node) => null;
@override
- R visitPrefixedIdentifier(PrefixedIdentifier node) => null;
+ R? visitPrefixedIdentifier(PrefixedIdentifier node) => null;
@override
- R visitPrefixExpression(PrefixExpression node) => null;
+ R? visitPrefixExpression(PrefixExpression node) => null;
@override
- R visitPropertyAccess(PropertyAccess node) => null;
+ R? visitPropertyAccess(PropertyAccess node) => null;
@override
- R visitRedirectingConstructorInvocation(
+ R? visitRedirectingConstructorInvocation(
RedirectingConstructorInvocation node) =>
null;
@override
- R visitRethrowExpression(RethrowExpression node) => null;
+ R? visitRethrowExpression(RethrowExpression node) => null;
@override
- R visitReturnStatement(ReturnStatement node) => null;
+ R? visitReturnStatement(ReturnStatement node) => null;
@override
- R visitScriptTag(ScriptTag node) => null;
+ R? visitScriptTag(ScriptTag node) => null;
@override
- R visitSetOrMapLiteral(SetOrMapLiteral node) => null;
+ R? visitSetOrMapLiteral(SetOrMapLiteral node) => null;
@override
- R visitShowCombinator(ShowCombinator node) => null;
+ R? visitShowCombinator(ShowCombinator node) => null;
@override
- R visitSimpleFormalParameter(SimpleFormalParameter node) => null;
+ R? visitSimpleFormalParameter(SimpleFormalParameter node) => null;
@override
- R visitSimpleIdentifier(SimpleIdentifier node) => null;
+ R? visitSimpleIdentifier(SimpleIdentifier node) => null;
@override
- R visitSimpleStringLiteral(SimpleStringLiteral node) => null;
+ R? visitSimpleStringLiteral(SimpleStringLiteral node) => null;
@override
- R visitSpreadElement(SpreadElement node) => null;
+ R? visitSpreadElement(SpreadElement node) => null;
@override
- R visitStringInterpolation(StringInterpolation node) => null;
+ R? visitStringInterpolation(StringInterpolation node) => null;
@override
- R visitSuperConstructorInvocation(SuperConstructorInvocation node) => null;
+ R? visitSuperConstructorInvocation(SuperConstructorInvocation node) => null;
@override
- R visitSuperExpression(SuperExpression node) => null;
+ R? visitSuperExpression(SuperExpression node) => null;
@override
- R visitSwitchCase(SwitchCase node) => null;
+ R? visitSwitchCase(SwitchCase node) => null;
@override
- R visitSwitchDefault(SwitchDefault node) => null;
+ R? visitSwitchDefault(SwitchDefault node) => null;
@override
- R visitSwitchStatement(SwitchStatement node) => null;
+ R? visitSwitchStatement(SwitchStatement node) => null;
@override
- R visitSymbolLiteral(SymbolLiteral node) => null;
+ R? visitSymbolLiteral(SymbolLiteral node) => null;
@override
- R visitThisExpression(ThisExpression node) => null;
+ R? visitThisExpression(ThisExpression node) => null;
@override
- R visitThrowExpression(ThrowExpression node) => null;
+ R? visitThrowExpression(ThrowExpression node) => null;
@override
- R visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) => null;
+ R? visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) => null;
@override
- R visitTryStatement(TryStatement node) => null;
+ R? visitTryStatement(TryStatement node) => null;
@override
- R visitTypeArgumentList(TypeArgumentList node) => null;
+ R? visitTypeArgumentList(TypeArgumentList node) => null;
@override
- R visitTypeName(TypeName node) => null;
+ R? visitTypeName(TypeName node) => null;
@override
- R visitTypeParameter(TypeParameter node) => null;
+ R? visitTypeParameter(TypeParameter node) => null;
@override
- R visitTypeParameterList(TypeParameterList node) => null;
+ R? visitTypeParameterList(TypeParameterList node) => null;
@override
- R visitVariableDeclaration(VariableDeclaration node) => null;
+ R? visitVariableDeclaration(VariableDeclaration node) => null;
@override
- R visitVariableDeclarationList(VariableDeclarationList node) => null;
+ R? visitVariableDeclarationList(VariableDeclarationList node) => null;
@override
- R visitVariableDeclarationStatement(VariableDeclarationStatement node) =>
+ R? visitVariableDeclarationStatement(VariableDeclarationStatement node) =>
null;
@override
- R visitWhileStatement(WhileStatement node) => null;
+ R? visitWhileStatement(WhileStatement node) => null;
@override
- R visitWithClause(WithClause node) => null;
+ R? visitWithClause(WithClause node) => null;
@override
- R visitYieldStatement(YieldStatement node) => null;
+ R? visitYieldStatement(YieldStatement node) => null;
}
/// An AST visitor that will throw an exception if any of the visit methods that
@@ -1732,380 +1736,380 @@
const ThrowingAstVisitor();
@override
- R visitAdjacentStrings(AdjacentStrings node) => _throw(node);
+ R? visitAdjacentStrings(AdjacentStrings node) => _throw(node);
@override
- R visitAnnotation(Annotation node) => _throw(node);
+ R? visitAnnotation(Annotation node) => _throw(node);
@override
- R visitArgumentList(ArgumentList node) => _throw(node);
+ R? visitArgumentList(ArgumentList node) => _throw(node);
@override
- R visitAsExpression(AsExpression node) => _throw(node);
+ R? visitAsExpression(AsExpression node) => _throw(node);
@override
- R visitAssertInitializer(AssertInitializer node) => _throw(node);
+ R? visitAssertInitializer(AssertInitializer node) => _throw(node);
@override
- R visitAssertStatement(AssertStatement node) => _throw(node);
+ R? visitAssertStatement(AssertStatement node) => _throw(node);
@override
- R visitAssignmentExpression(AssignmentExpression node) => _throw(node);
+ R? visitAssignmentExpression(AssignmentExpression node) => _throw(node);
@override
- R visitAwaitExpression(AwaitExpression node) => _throw(node);
+ R? visitAwaitExpression(AwaitExpression node) => _throw(node);
@override
- R visitBinaryExpression(BinaryExpression node) => _throw(node);
+ R? visitBinaryExpression(BinaryExpression node) => _throw(node);
@override
- R visitBlock(Block node) => _throw(node);
+ R? visitBlock(Block node) => _throw(node);
@override
- R visitBlockFunctionBody(BlockFunctionBody node) => _throw(node);
+ R? visitBlockFunctionBody(BlockFunctionBody node) => _throw(node);
@override
- R visitBooleanLiteral(BooleanLiteral node) => _throw(node);
+ R? visitBooleanLiteral(BooleanLiteral node) => _throw(node);
@override
- R visitBreakStatement(BreakStatement node) => _throw(node);
+ R? visitBreakStatement(BreakStatement node) => _throw(node);
@override
- R visitCascadeExpression(CascadeExpression node) => _throw(node);
+ R? visitCascadeExpression(CascadeExpression node) => _throw(node);
@override
- R visitCatchClause(CatchClause node) => _throw(node);
+ R? visitCatchClause(CatchClause node) => _throw(node);
@override
- R visitClassDeclaration(ClassDeclaration node) => _throw(node);
+ R? visitClassDeclaration(ClassDeclaration node) => _throw(node);
@override
- R visitClassTypeAlias(ClassTypeAlias node) => _throw(node);
+ R? visitClassTypeAlias(ClassTypeAlias node) => _throw(node);
@override
- R visitComment(Comment node) => _throw(node);
+ R? visitComment(Comment node) => _throw(node);
@override
- R visitCommentReference(CommentReference node) => _throw(node);
+ R? visitCommentReference(CommentReference node) => _throw(node);
@override
- R visitCompilationUnit(CompilationUnit node) => _throw(node);
+ R? visitCompilationUnit(CompilationUnit node) => _throw(node);
@override
- R visitConditionalExpression(ConditionalExpression node) => _throw(node);
+ R? visitConditionalExpression(ConditionalExpression node) => _throw(node);
@override
- R visitConfiguration(Configuration node) => _throw(node);
+ R? visitConfiguration(Configuration node) => _throw(node);
@override
- R visitConstructorDeclaration(ConstructorDeclaration node) => _throw(node);
+ R? visitConstructorDeclaration(ConstructorDeclaration node) => _throw(node);
@override
- R visitConstructorFieldInitializer(ConstructorFieldInitializer node) =>
+ R? visitConstructorFieldInitializer(ConstructorFieldInitializer node) =>
_throw(node);
@override
- R visitConstructorName(ConstructorName node) => _throw(node);
+ R? visitConstructorName(ConstructorName node) => _throw(node);
@override
- R visitContinueStatement(ContinueStatement node) => _throw(node);
+ R? visitContinueStatement(ContinueStatement node) => _throw(node);
@override
- R visitDeclaredIdentifier(DeclaredIdentifier node) => _throw(node);
+ R? visitDeclaredIdentifier(DeclaredIdentifier node) => _throw(node);
@override
- R visitDefaultFormalParameter(DefaultFormalParameter node) => _throw(node);
+ R? visitDefaultFormalParameter(DefaultFormalParameter node) => _throw(node);
@override
- R visitDoStatement(DoStatement node) => _throw(node);
+ R? visitDoStatement(DoStatement node) => _throw(node);
@override
- R visitDottedName(DottedName node) => _throw(node);
+ R? visitDottedName(DottedName node) => _throw(node);
@override
- R visitDoubleLiteral(DoubleLiteral node) => _throw(node);
+ R? visitDoubleLiteral(DoubleLiteral node) => _throw(node);
@override
- R visitEmptyFunctionBody(EmptyFunctionBody node) => _throw(node);
+ R? visitEmptyFunctionBody(EmptyFunctionBody node) => _throw(node);
@override
- R visitEmptyStatement(EmptyStatement node) => _throw(node);
+ R? visitEmptyStatement(EmptyStatement node) => _throw(node);
@override
- R visitEnumConstantDeclaration(EnumConstantDeclaration node) => _throw(node);
+ R? visitEnumConstantDeclaration(EnumConstantDeclaration node) => _throw(node);
@override
- R visitEnumDeclaration(EnumDeclaration node) => _throw(node);
+ R? visitEnumDeclaration(EnumDeclaration node) => _throw(node);
@override
- R visitExportDirective(ExportDirective node) => _throw(node);
+ R? visitExportDirective(ExportDirective node) => _throw(node);
@override
- R visitExpressionFunctionBody(ExpressionFunctionBody node) => _throw(node);
+ R? visitExpressionFunctionBody(ExpressionFunctionBody node) => _throw(node);
@override
- R visitExpressionStatement(ExpressionStatement node) => _throw(node);
+ R? visitExpressionStatement(ExpressionStatement node) => _throw(node);
@override
- R visitExtendsClause(ExtendsClause node) => _throw(node);
+ R? visitExtendsClause(ExtendsClause node) => _throw(node);
@override
- R visitExtensionDeclaration(ExtensionDeclaration node) => _throw(node);
+ R? visitExtensionDeclaration(ExtensionDeclaration node) => _throw(node);
@override
- R visitExtensionOverride(ExtensionOverride node) => _throw(node);
+ R? visitExtensionOverride(ExtensionOverride node) => _throw(node);
@override
- R visitFieldDeclaration(FieldDeclaration node) => _throw(node);
+ R? visitFieldDeclaration(FieldDeclaration node) => _throw(node);
@override
- R visitFieldFormalParameter(FieldFormalParameter node) => _throw(node);
+ R? visitFieldFormalParameter(FieldFormalParameter node) => _throw(node);
@override
- R visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node) =>
+ R? visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node) =>
_throw(node);
@override
- R visitForEachPartsWithIdentifier(ForEachPartsWithIdentifier node) =>
+ R? visitForEachPartsWithIdentifier(ForEachPartsWithIdentifier node) =>
_throw(node);
@override
- R visitForElement(ForElement node) => _throw(node);
+ R? visitForElement(ForElement node) => _throw(node);
@override
- R visitFormalParameterList(FormalParameterList node) => _throw(node);
+ R? visitFormalParameterList(FormalParameterList node) => _throw(node);
@override
- R visitForPartsWithDeclarations(ForPartsWithDeclarations node) =>
+ R? visitForPartsWithDeclarations(ForPartsWithDeclarations node) =>
_throw(node);
@override
- R visitForPartsWithExpression(ForPartsWithExpression node) => _throw(node);
+ R? visitForPartsWithExpression(ForPartsWithExpression node) => _throw(node);
@override
- R visitForStatement(ForStatement node) => _throw(node);
+ R? visitForStatement(ForStatement node) => _throw(node);
@override
- R visitFunctionDeclaration(FunctionDeclaration node) => _throw(node);
+ R? visitFunctionDeclaration(FunctionDeclaration node) => _throw(node);
@override
- R visitFunctionDeclarationStatement(FunctionDeclarationStatement node) =>
+ R? visitFunctionDeclarationStatement(FunctionDeclarationStatement node) =>
_throw(node);
@override
- R visitFunctionExpression(FunctionExpression node) => _throw(node);
+ R? visitFunctionExpression(FunctionExpression node) => _throw(node);
@override
- R visitFunctionExpressionInvocation(FunctionExpressionInvocation node) =>
+ R? visitFunctionExpressionInvocation(FunctionExpressionInvocation node) =>
_throw(node);
@override
- R visitFunctionTypeAlias(FunctionTypeAlias node) => _throw(node);
+ R? visitFunctionTypeAlias(FunctionTypeAlias node) => _throw(node);
@override
- R visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) =>
+ R? visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) =>
_throw(node);
@override
- R visitGenericFunctionType(GenericFunctionType node) => _throw(node);
+ R? visitGenericFunctionType(GenericFunctionType node) => _throw(node);
@override
- R visitGenericTypeAlias(GenericTypeAlias node) => _throw(node);
+ R? visitGenericTypeAlias(GenericTypeAlias node) => _throw(node);
@override
- R visitHideCombinator(HideCombinator node) => _throw(node);
+ R? visitHideCombinator(HideCombinator node) => _throw(node);
@override
- R visitIfElement(IfElement node) => _throw(node);
+ R? visitIfElement(IfElement node) => _throw(node);
@override
- R visitIfStatement(IfStatement node) => _throw(node);
+ R? visitIfStatement(IfStatement node) => _throw(node);
@override
- R visitImplementsClause(ImplementsClause node) => _throw(node);
+ R? visitImplementsClause(ImplementsClause node) => _throw(node);
@override
- R visitImportDirective(ImportDirective node) => _throw(node);
+ R? visitImportDirective(ImportDirective node) => _throw(node);
@override
- R visitIndexExpression(IndexExpression node) => _throw(node);
+ R? visitIndexExpression(IndexExpression node) => _throw(node);
@override
- R visitInstanceCreationExpression(InstanceCreationExpression node) =>
+ R? visitInstanceCreationExpression(InstanceCreationExpression node) =>
_throw(node);
@override
- R visitIntegerLiteral(IntegerLiteral node) => _throw(node);
+ R? visitIntegerLiteral(IntegerLiteral node) => _throw(node);
@override
- R visitInterpolationExpression(InterpolationExpression node) => _throw(node);
+ R? visitInterpolationExpression(InterpolationExpression node) => _throw(node);
@override
- R visitInterpolationString(InterpolationString node) => _throw(node);
+ R? visitInterpolationString(InterpolationString node) => _throw(node);
@override
- R visitIsExpression(IsExpression node) => _throw(node);
+ R? visitIsExpression(IsExpression node) => _throw(node);
@override
- R visitLabel(Label node) => _throw(node);
+ R? visitLabel(Label node) => _throw(node);
@override
- R visitLabeledStatement(LabeledStatement node) => _throw(node);
+ R? visitLabeledStatement(LabeledStatement node) => _throw(node);
@override
- R visitLibraryDirective(LibraryDirective node) => _throw(node);
+ R? visitLibraryDirective(LibraryDirective node) => _throw(node);
@override
- R visitLibraryIdentifier(LibraryIdentifier node) => _throw(node);
+ R? visitLibraryIdentifier(LibraryIdentifier node) => _throw(node);
@override
- R visitListLiteral(ListLiteral node) => _throw(node);
+ R? visitListLiteral(ListLiteral node) => _throw(node);
@override
- R visitMapLiteralEntry(MapLiteralEntry node) => _throw(node);
+ R? visitMapLiteralEntry(MapLiteralEntry node) => _throw(node);
@override
- R visitMethodDeclaration(MethodDeclaration node) => _throw(node);
+ R? visitMethodDeclaration(MethodDeclaration node) => _throw(node);
@override
- R visitMethodInvocation(MethodInvocation node) => _throw(node);
+ R? visitMethodInvocation(MethodInvocation node) => _throw(node);
@override
- R visitMixinDeclaration(MixinDeclaration node) => _throw(node);
+ R? visitMixinDeclaration(MixinDeclaration node) => _throw(node);
@override
- R visitNamedExpression(NamedExpression node) => _throw(node);
+ R? visitNamedExpression(NamedExpression node) => _throw(node);
@override
- R visitNativeClause(NativeClause node) => _throw(node);
+ R? visitNativeClause(NativeClause node) => _throw(node);
@override
- R visitNativeFunctionBody(NativeFunctionBody node) => _throw(node);
+ R? visitNativeFunctionBody(NativeFunctionBody node) => _throw(node);
@override
- R visitNullLiteral(NullLiteral node) => _throw(node);
+ R? visitNullLiteral(NullLiteral node) => _throw(node);
@override
- R visitOnClause(OnClause node) => _throw(node);
+ R? visitOnClause(OnClause node) => _throw(node);
@override
- R visitParenthesizedExpression(ParenthesizedExpression node) => _throw(node);
+ R? visitParenthesizedExpression(ParenthesizedExpression node) => _throw(node);
@override
- R visitPartDirective(PartDirective node) => _throw(node);
+ R? visitPartDirective(PartDirective node) => _throw(node);
@override
- R visitPartOfDirective(PartOfDirective node) => _throw(node);
+ R? visitPartOfDirective(PartOfDirective node) => _throw(node);
@override
- R visitPostfixExpression(PostfixExpression node) => _throw(node);
+ R? visitPostfixExpression(PostfixExpression node) => _throw(node);
@override
- R visitPrefixedIdentifier(PrefixedIdentifier node) => _throw(node);
+ R? visitPrefixedIdentifier(PrefixedIdentifier node) => _throw(node);
@override
- R visitPrefixExpression(PrefixExpression node) => _throw(node);
+ R? visitPrefixExpression(PrefixExpression node) => _throw(node);
@override
- R visitPropertyAccess(PropertyAccess node) => _throw(node);
+ R? visitPropertyAccess(PropertyAccess node) => _throw(node);
@override
- R visitRedirectingConstructorInvocation(
+ R? visitRedirectingConstructorInvocation(
RedirectingConstructorInvocation node) =>
_throw(node);
@override
- R visitRethrowExpression(RethrowExpression node) => _throw(node);
+ R? visitRethrowExpression(RethrowExpression node) => _throw(node);
@override
- R visitReturnStatement(ReturnStatement node) => _throw(node);
+ R? visitReturnStatement(ReturnStatement node) => _throw(node);
@override
- R visitScriptTag(ScriptTag node) => _throw(node);
+ R? visitScriptTag(ScriptTag node) => _throw(node);
@override
- R visitSetOrMapLiteral(SetOrMapLiteral node) => _throw(node);
+ R? visitSetOrMapLiteral(SetOrMapLiteral node) => _throw(node);
@override
- R visitShowCombinator(ShowCombinator node) => _throw(node);
+ R? visitShowCombinator(ShowCombinator node) => _throw(node);
@override
- R visitSimpleFormalParameter(SimpleFormalParameter node) => _throw(node);
+ R? visitSimpleFormalParameter(SimpleFormalParameter node) => _throw(node);
@override
- R visitSimpleIdentifier(SimpleIdentifier node) => _throw(node);
+ R? visitSimpleIdentifier(SimpleIdentifier node) => _throw(node);
@override
- R visitSimpleStringLiteral(SimpleStringLiteral node) => _throw(node);
+ R? visitSimpleStringLiteral(SimpleStringLiteral node) => _throw(node);
@override
- R visitSpreadElement(SpreadElement node) => _throw(node);
+ R? visitSpreadElement(SpreadElement node) => _throw(node);
@override
- R visitStringInterpolation(StringInterpolation node) => _throw(node);
+ R? visitStringInterpolation(StringInterpolation node) => _throw(node);
@override
- R visitSuperConstructorInvocation(SuperConstructorInvocation node) =>
+ R? visitSuperConstructorInvocation(SuperConstructorInvocation node) =>
_throw(node);
@override
- R visitSuperExpression(SuperExpression node) => _throw(node);
+ R? visitSuperExpression(SuperExpression node) => _throw(node);
@override
- R visitSwitchCase(SwitchCase node) => _throw(node);
+ R? visitSwitchCase(SwitchCase node) => _throw(node);
@override
- R visitSwitchDefault(SwitchDefault node) => _throw(node);
+ R? visitSwitchDefault(SwitchDefault node) => _throw(node);
@override
- R visitSwitchStatement(SwitchStatement node) => _throw(node);
+ R? visitSwitchStatement(SwitchStatement node) => _throw(node);
@override
- R visitSymbolLiteral(SymbolLiteral node) => _throw(node);
+ R? visitSymbolLiteral(SymbolLiteral node) => _throw(node);
@override
- R visitThisExpression(ThisExpression node) => _throw(node);
+ R? visitThisExpression(ThisExpression node) => _throw(node);
@override
- R visitThrowExpression(ThrowExpression node) => _throw(node);
+ R? visitThrowExpression(ThrowExpression node) => _throw(node);
@override
- R visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) =>
+ R? visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) =>
_throw(node);
@override
- R visitTryStatement(TryStatement node) => _throw(node);
+ R? visitTryStatement(TryStatement node) => _throw(node);
@override
- R visitTypeArgumentList(TypeArgumentList node) => _throw(node);
+ R? visitTypeArgumentList(TypeArgumentList node) => _throw(node);
@override
- R visitTypeName(TypeName node) => _throw(node);
+ R? visitTypeName(TypeName node) => _throw(node);
@override
- R visitTypeParameter(TypeParameter node) => _throw(node);
+ R? visitTypeParameter(TypeParameter node) => _throw(node);
@override
- R visitTypeParameterList(TypeParameterList node) => _throw(node);
+ R? visitTypeParameterList(TypeParameterList node) => _throw(node);
@override
- R visitVariableDeclaration(VariableDeclaration node) => _throw(node);
+ R? visitVariableDeclaration(VariableDeclaration node) => _throw(node);
@override
- R visitVariableDeclarationList(VariableDeclarationList node) => _throw(node);
+ R? visitVariableDeclarationList(VariableDeclarationList node) => _throw(node);
@override
- R visitVariableDeclarationStatement(VariableDeclarationStatement node) =>
+ R? visitVariableDeclarationStatement(VariableDeclarationStatement node) =>
_throw(node);
@override
- R visitWhileStatement(WhileStatement node) => _throw(node);
+ R? visitWhileStatement(WhileStatement node) => _throw(node);
@override
- R visitWithClause(WithClause node) => _throw(node);
+ R? visitWithClause(WithClause node) => _throw(node);
@override
- R visitYieldStatement(YieldStatement node) => _throw(node);
+ R? visitYieldStatement(YieldStatement node) => _throw(node);
R _throw(AstNode node) {
throw Exception('Missing implementation of visit${node.runtimeType}');
@@ -2124,974 +2128,974 @@
/// Initialize a newly created visitor to time calls to the given base
/// visitor's visits.
- TimedAstVisitor(this._baseVisitor, [Stopwatch watch])
+ TimedAstVisitor(this._baseVisitor, [Stopwatch? watch])
: stopwatch = watch ?? Stopwatch();
@override
- T visitAdjacentStrings(AdjacentStrings node) {
+ T? visitAdjacentStrings(AdjacentStrings node) {
stopwatch.start();
- T result = _baseVisitor.visitAdjacentStrings(node);
+ T? result = _baseVisitor.visitAdjacentStrings(node);
stopwatch.stop();
return result;
}
@override
- T visitAnnotation(Annotation node) {
+ T? visitAnnotation(Annotation node) {
stopwatch.start();
- T result = _baseVisitor.visitAnnotation(node);
+ T? result = _baseVisitor.visitAnnotation(node);
stopwatch.stop();
return result;
}
@override
- T visitArgumentList(ArgumentList node) {
+ T? visitArgumentList(ArgumentList node) {
stopwatch.start();
- T result = _baseVisitor.visitArgumentList(node);
+ T? result = _baseVisitor.visitArgumentList(node);
stopwatch.stop();
return result;
}
@override
- T visitAsExpression(AsExpression node) {
+ T? visitAsExpression(AsExpression node) {
stopwatch.start();
- T result = _baseVisitor.visitAsExpression(node);
+ T? result = _baseVisitor.visitAsExpression(node);
stopwatch.stop();
return result;
}
@override
- T visitAssertInitializer(AssertInitializer node) {
+ T? visitAssertInitializer(AssertInitializer node) {
stopwatch.start();
- T result = _baseVisitor.visitAssertInitializer(node);
+ T? result = _baseVisitor.visitAssertInitializer(node);
stopwatch.stop();
return result;
}
@override
- T visitAssertStatement(AssertStatement node) {
+ T? visitAssertStatement(AssertStatement node) {
stopwatch.start();
- T result = _baseVisitor.visitAssertStatement(node);
+ T? result = _baseVisitor.visitAssertStatement(node);
stopwatch.stop();
return result;
}
@override
- T visitAssignmentExpression(AssignmentExpression node) {
+ T? visitAssignmentExpression(AssignmentExpression node) {
stopwatch.start();
- T result = _baseVisitor.visitAssignmentExpression(node);
+ T? result = _baseVisitor.visitAssignmentExpression(node);
stopwatch.stop();
return result;
}
@override
- T visitAwaitExpression(AwaitExpression node) {
+ T? visitAwaitExpression(AwaitExpression node) {
stopwatch.start();
- T result = _baseVisitor.visitAwaitExpression(node);
+ T? result = _baseVisitor.visitAwaitExpression(node);
stopwatch.stop();
return result;
}
@override
- T visitBinaryExpression(BinaryExpression node) {
+ T? visitBinaryExpression(BinaryExpression node) {
stopwatch.start();
- T result = _baseVisitor.visitBinaryExpression(node);
+ T? result = _baseVisitor.visitBinaryExpression(node);
stopwatch.stop();
return result;
}
@override
- T visitBlock(Block node) {
+ T? visitBlock(Block node) {
stopwatch.start();
- T result = _baseVisitor.visitBlock(node);
+ T? result = _baseVisitor.visitBlock(node);
stopwatch.stop();
return result;
}
@override
- T visitBlockFunctionBody(BlockFunctionBody node) {
+ T? visitBlockFunctionBody(BlockFunctionBody node) {
stopwatch.start();
- T result = _baseVisitor.visitBlockFunctionBody(node);
+ T? result = _baseVisitor.visitBlockFunctionBody(node);
stopwatch.stop();
return result;
}
@override
- T visitBooleanLiteral(BooleanLiteral node) {
+ T? visitBooleanLiteral(BooleanLiteral node) {
stopwatch.start();
- T result = _baseVisitor.visitBooleanLiteral(node);
+ T? result = _baseVisitor.visitBooleanLiteral(node);
stopwatch.stop();
return result;
}
@override
- T visitBreakStatement(BreakStatement node) {
+ T? visitBreakStatement(BreakStatement node) {
stopwatch.start();
- T result = _baseVisitor.visitBreakStatement(node);
+ T? result = _baseVisitor.visitBreakStatement(node);
stopwatch.stop();
return result;
}
@override
- T visitCascadeExpression(CascadeExpression node) {
+ T? visitCascadeExpression(CascadeExpression node) {
stopwatch.start();
- T result = _baseVisitor.visitCascadeExpression(node);
+ T? result = _baseVisitor.visitCascadeExpression(node);
stopwatch.stop();
return result;
}
@override
- T visitCatchClause(CatchClause node) {
+ T? visitCatchClause(CatchClause node) {
stopwatch.start();
- T result = _baseVisitor.visitCatchClause(node);
+ T? result = _baseVisitor.visitCatchClause(node);
stopwatch.stop();
return result;
}
@override
- T visitClassDeclaration(ClassDeclaration node) {
+ T? visitClassDeclaration(ClassDeclaration node) {
stopwatch.start();
- T result = _baseVisitor.visitClassDeclaration(node);
+ T? result = _baseVisitor.visitClassDeclaration(node);
stopwatch.stop();
return result;
}
@override
- T visitClassTypeAlias(ClassTypeAlias node) {
+ T? visitClassTypeAlias(ClassTypeAlias node) {
stopwatch.start();
- T result = _baseVisitor.visitClassTypeAlias(node);
+ T? result = _baseVisitor.visitClassTypeAlias(node);
stopwatch.stop();
return result;
}
@override
- T visitComment(Comment node) {
+ T? visitComment(Comment node) {
stopwatch.start();
- T result = _baseVisitor.visitComment(node);
+ T? result = _baseVisitor.visitComment(node);
stopwatch.stop();
return result;
}
@override
- T visitCommentReference(CommentReference node) {
+ T? visitCommentReference(CommentReference node) {
stopwatch.start();
- T result = _baseVisitor.visitCommentReference(node);
+ T? result = _baseVisitor.visitCommentReference(node);
stopwatch.stop();
return result;
}
@override
- T visitCompilationUnit(CompilationUnit node) {
+ T? visitCompilationUnit(CompilationUnit node) {
stopwatch.start();
- T result = _baseVisitor.visitCompilationUnit(node);
+ T? result = _baseVisitor.visitCompilationUnit(node);
stopwatch.stop();
return result;
}
@override
- T visitConditionalExpression(ConditionalExpression node) {
+ T? visitConditionalExpression(ConditionalExpression node) {
stopwatch.start();
- T result = _baseVisitor.visitConditionalExpression(node);
+ T? result = _baseVisitor.visitConditionalExpression(node);
stopwatch.stop();
return result;
}
@override
- T visitConfiguration(Configuration node) {
+ T? visitConfiguration(Configuration node) {
stopwatch.start();
- T result = _baseVisitor.visitConfiguration(node);
+ T? result = _baseVisitor.visitConfiguration(node);
stopwatch.stop();
return result;
}
@override
- T visitConstructorDeclaration(ConstructorDeclaration node) {
+ T? visitConstructorDeclaration(ConstructorDeclaration node) {
stopwatch.start();
- T result = _baseVisitor.visitConstructorDeclaration(node);
+ T? result = _baseVisitor.visitConstructorDeclaration(node);
stopwatch.stop();
return result;
}
@override
- T visitConstructorFieldInitializer(ConstructorFieldInitializer node) {
+ T? visitConstructorFieldInitializer(ConstructorFieldInitializer node) {
stopwatch.start();
- T result = _baseVisitor.visitConstructorFieldInitializer(node);
+ T? result = _baseVisitor.visitConstructorFieldInitializer(node);
stopwatch.stop();
return result;
}
@override
- T visitConstructorName(ConstructorName node) {
+ T? visitConstructorName(ConstructorName node) {
stopwatch.start();
- T result = _baseVisitor.visitConstructorName(node);
+ T? result = _baseVisitor.visitConstructorName(node);
stopwatch.stop();
return result;
}
@override
- T visitContinueStatement(ContinueStatement node) {
+ T? visitContinueStatement(ContinueStatement node) {
stopwatch.start();
- T result = _baseVisitor.visitContinueStatement(node);
+ T? result = _baseVisitor.visitContinueStatement(node);
stopwatch.stop();
return result;
}
@override
- T visitDeclaredIdentifier(DeclaredIdentifier node) {
+ T? visitDeclaredIdentifier(DeclaredIdentifier node) {
stopwatch.start();
- T result = _baseVisitor.visitDeclaredIdentifier(node);
+ T? result = _baseVisitor.visitDeclaredIdentifier(node);
stopwatch.stop();
return result;
}
@override
- T visitDefaultFormalParameter(DefaultFormalParameter node) {
+ T? visitDefaultFormalParameter(DefaultFormalParameter node) {
stopwatch.start();
- T result = _baseVisitor.visitDefaultFormalParameter(node);
+ T? result = _baseVisitor.visitDefaultFormalParameter(node);
stopwatch.stop();
return result;
}
@override
- T visitDoStatement(DoStatement node) {
+ T? visitDoStatement(DoStatement node) {
stopwatch.start();
- T result = _baseVisitor.visitDoStatement(node);
+ T? result = _baseVisitor.visitDoStatement(node);
stopwatch.stop();
return result;
}
@override
- T visitDottedName(DottedName node) {
+ T? visitDottedName(DottedName node) {
stopwatch.start();
- T result = _baseVisitor.visitDottedName(node);
+ T? result = _baseVisitor.visitDottedName(node);
stopwatch.stop();
return result;
}
@override
- T visitDoubleLiteral(DoubleLiteral node) {
+ T? visitDoubleLiteral(DoubleLiteral node) {
stopwatch.start();
- T result = _baseVisitor.visitDoubleLiteral(node);
+ T? result = _baseVisitor.visitDoubleLiteral(node);
stopwatch.stop();
return result;
}
@override
- T visitEmptyFunctionBody(EmptyFunctionBody node) {
+ T? visitEmptyFunctionBody(EmptyFunctionBody node) {
stopwatch.start();
- T result = _baseVisitor.visitEmptyFunctionBody(node);
+ T? result = _baseVisitor.visitEmptyFunctionBody(node);
stopwatch.stop();
return result;
}
@override
- T visitEmptyStatement(EmptyStatement node) {
+ T? visitEmptyStatement(EmptyStatement node) {
stopwatch.start();
- T result = _baseVisitor.visitEmptyStatement(node);
+ T? result = _baseVisitor.visitEmptyStatement(node);
stopwatch.stop();
return result;
}
@override
- T visitEnumConstantDeclaration(EnumConstantDeclaration node) {
+ T? visitEnumConstantDeclaration(EnumConstantDeclaration node) {
stopwatch.start();
- T result = _baseVisitor.visitEnumConstantDeclaration(node);
+ T? result = _baseVisitor.visitEnumConstantDeclaration(node);
stopwatch.stop();
return result;
}
@override
- T visitEnumDeclaration(EnumDeclaration node) {
+ T? visitEnumDeclaration(EnumDeclaration node) {
stopwatch.start();
- T result = _baseVisitor.visitEnumDeclaration(node);
+ T? result = _baseVisitor.visitEnumDeclaration(node);
stopwatch.stop();
return result;
}
@override
- T visitExportDirective(ExportDirective node) {
+ T? visitExportDirective(ExportDirective node) {
stopwatch.start();
- T result = _baseVisitor.visitExportDirective(node);
+ T? result = _baseVisitor.visitExportDirective(node);
stopwatch.stop();
return result;
}
@override
- T visitExpressionFunctionBody(ExpressionFunctionBody node) {
+ T? visitExpressionFunctionBody(ExpressionFunctionBody node) {
stopwatch.start();
- T result = _baseVisitor.visitExpressionFunctionBody(node);
+ T? result = _baseVisitor.visitExpressionFunctionBody(node);
stopwatch.stop();
return result;
}
@override
- T visitExpressionStatement(ExpressionStatement node) {
+ T? visitExpressionStatement(ExpressionStatement node) {
stopwatch.start();
- T result = _baseVisitor.visitExpressionStatement(node);
+ T? result = _baseVisitor.visitExpressionStatement(node);
stopwatch.stop();
return result;
}
@override
- T visitExtendsClause(ExtendsClause node) {
+ T? visitExtendsClause(ExtendsClause node) {
stopwatch.start();
- T result = _baseVisitor.visitExtendsClause(node);
+ T? result = _baseVisitor.visitExtendsClause(node);
stopwatch.stop();
return result;
}
@override
- T visitExtensionDeclaration(ExtensionDeclaration node) {
+ T? visitExtensionDeclaration(ExtensionDeclaration node) {
stopwatch.start();
- T result = _baseVisitor.visitExtensionDeclaration(node);
+ T? result = _baseVisitor.visitExtensionDeclaration(node);
stopwatch.stop();
return result;
}
@override
- T visitExtensionOverride(ExtensionOverride node) {
+ T? visitExtensionOverride(ExtensionOverride node) {
stopwatch.start();
- T result = _baseVisitor.visitExtensionOverride(node);
+ T? result = _baseVisitor.visitExtensionOverride(node);
stopwatch.stop();
return result;
}
@override
- T visitFieldDeclaration(FieldDeclaration node) {
+ T? visitFieldDeclaration(FieldDeclaration node) {
stopwatch.start();
- T result = _baseVisitor.visitFieldDeclaration(node);
+ T? result = _baseVisitor.visitFieldDeclaration(node);
stopwatch.stop();
return result;
}
@override
- T visitFieldFormalParameter(FieldFormalParameter node) {
+ T? visitFieldFormalParameter(FieldFormalParameter node) {
stopwatch.start();
- T result = _baseVisitor.visitFieldFormalParameter(node);
+ T? result = _baseVisitor.visitFieldFormalParameter(node);
stopwatch.stop();
return result;
}
@override
- T visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node) {
+ T? visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node) {
stopwatch.start();
- T result = _baseVisitor.visitForEachPartsWithDeclaration(node);
+ T? result = _baseVisitor.visitForEachPartsWithDeclaration(node);
stopwatch.stop();
return result;
}
@override
- T visitForEachPartsWithIdentifier(ForEachPartsWithIdentifier node) {
+ T? visitForEachPartsWithIdentifier(ForEachPartsWithIdentifier node) {
stopwatch.start();
- T result = _baseVisitor.visitForEachPartsWithIdentifier(node);
+ T? result = _baseVisitor.visitForEachPartsWithIdentifier(node);
stopwatch.stop();
return result;
}
@override
- T visitForElement(ForElement node) {
+ T? visitForElement(ForElement node) {
stopwatch.start();
- T result = _baseVisitor.visitForElement(node);
+ T? result = _baseVisitor.visitForElement(node);
stopwatch.stop();
return result;
}
@override
- T visitFormalParameterList(FormalParameterList node) {
+ T? visitFormalParameterList(FormalParameterList node) {
stopwatch.start();
- T result = _baseVisitor.visitFormalParameterList(node);
+ T? result = _baseVisitor.visitFormalParameterList(node);
stopwatch.stop();
return result;
}
@override
- T visitForPartsWithDeclarations(ForPartsWithDeclarations node) {
+ T? visitForPartsWithDeclarations(ForPartsWithDeclarations node) {
stopwatch.start();
- T result = _baseVisitor.visitForPartsWithDeclarations(node);
+ T? result = _baseVisitor.visitForPartsWithDeclarations(node);
stopwatch.stop();
return result;
}
@override
- T visitForPartsWithExpression(ForPartsWithExpression node) {
+ T? visitForPartsWithExpression(ForPartsWithExpression node) {
stopwatch.start();
- T result = _baseVisitor.visitForPartsWithExpression(node);
+ T? result = _baseVisitor.visitForPartsWithExpression(node);
stopwatch.stop();
return result;
}
@override
- T visitForStatement(ForStatement node) {
+ T? visitForStatement(ForStatement node) {
stopwatch.start();
- T result = _baseVisitor.visitForStatement(node);
+ T? result = _baseVisitor.visitForStatement(node);
stopwatch.stop();
return result;
}
@override
- T visitFunctionDeclaration(FunctionDeclaration node) {
+ T? visitFunctionDeclaration(FunctionDeclaration node) {
stopwatch.start();
- T result = _baseVisitor.visitFunctionDeclaration(node);
+ T? result = _baseVisitor.visitFunctionDeclaration(node);
stopwatch.stop();
return result;
}
@override
- T visitFunctionDeclarationStatement(FunctionDeclarationStatement node) {
+ T? visitFunctionDeclarationStatement(FunctionDeclarationStatement node) {
stopwatch.start();
- T result = _baseVisitor.visitFunctionDeclarationStatement(node);
+ T? result = _baseVisitor.visitFunctionDeclarationStatement(node);
stopwatch.stop();
return result;
}
@override
- T visitFunctionExpression(FunctionExpression node) {
+ T? visitFunctionExpression(FunctionExpression node) {
stopwatch.start();
- T result = _baseVisitor.visitFunctionExpression(node);
+ T? result = _baseVisitor.visitFunctionExpression(node);
stopwatch.stop();
return result;
}
@override
- T visitFunctionExpressionInvocation(FunctionExpressionInvocation node) {
+ T? visitFunctionExpressionInvocation(FunctionExpressionInvocation node) {
stopwatch.start();
- T result = _baseVisitor.visitFunctionExpressionInvocation(node);
+ T? result = _baseVisitor.visitFunctionExpressionInvocation(node);
stopwatch.stop();
return result;
}
@override
- T visitFunctionTypeAlias(FunctionTypeAlias node) {
+ T? visitFunctionTypeAlias(FunctionTypeAlias node) {
stopwatch.start();
- T result = _baseVisitor.visitFunctionTypeAlias(node);
+ T? result = _baseVisitor.visitFunctionTypeAlias(node);
stopwatch.stop();
return result;
}
@override
- T visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) {
+ T? visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) {
stopwatch.start();
- T result = _baseVisitor.visitFunctionTypedFormalParameter(node);
+ T? result = _baseVisitor.visitFunctionTypedFormalParameter(node);
stopwatch.stop();
return result;
}
@override
- T visitGenericFunctionType(GenericFunctionType node) {
+ T? visitGenericFunctionType(GenericFunctionType node) {
stopwatch.start();
- T result = _baseVisitor.visitGenericFunctionType(node);
+ T? result = _baseVisitor.visitGenericFunctionType(node);
stopwatch.stop();
return result;
}
@override
- T visitGenericTypeAlias(GenericTypeAlias node) {
+ T? visitGenericTypeAlias(GenericTypeAlias node) {
stopwatch.start();
- T result = _baseVisitor.visitGenericTypeAlias(node);
+ T? result = _baseVisitor.visitGenericTypeAlias(node);
stopwatch.stop();
return result;
}
@override
- T visitHideCombinator(HideCombinator node) {
+ T? visitHideCombinator(HideCombinator node) {
stopwatch.start();
- T result = _baseVisitor.visitHideCombinator(node);
+ T? result = _baseVisitor.visitHideCombinator(node);
stopwatch.stop();
return result;
}
@override
- T visitIfElement(IfElement node) {
+ T? visitIfElement(IfElement node) {
stopwatch.start();
- T result = _baseVisitor.visitIfElement(node);
+ T? result = _baseVisitor.visitIfElement(node);
stopwatch.stop();
return result;
}
@override
- T visitIfStatement(IfStatement node) {
+ T? visitIfStatement(IfStatement node) {
stopwatch.start();
- T result = _baseVisitor.visitIfStatement(node);
+ T? result = _baseVisitor.visitIfStatement(node);
stopwatch.stop();
return result;
}
@override
- T visitImplementsClause(ImplementsClause node) {
+ T? visitImplementsClause(ImplementsClause node) {
stopwatch.start();
- T result = _baseVisitor.visitImplementsClause(node);
+ T? result = _baseVisitor.visitImplementsClause(node);
stopwatch.stop();
return result;
}
@override
- T visitImportDirective(ImportDirective node) {
+ T? visitImportDirective(ImportDirective node) {
stopwatch.start();
- T result = _baseVisitor.visitImportDirective(node);
+ T? result = _baseVisitor.visitImportDirective(node);
stopwatch.stop();
return result;
}
@override
- T visitIndexExpression(IndexExpression node) {
+ T? visitIndexExpression(IndexExpression node) {
stopwatch.start();
- T result = _baseVisitor.visitIndexExpression(node);
+ T? result = _baseVisitor.visitIndexExpression(node);
stopwatch.stop();
return result;
}
@override
- T visitInstanceCreationExpression(InstanceCreationExpression node) {
+ T? visitInstanceCreationExpression(InstanceCreationExpression node) {
stopwatch.start();
- T result = _baseVisitor.visitInstanceCreationExpression(node);
+ T? result = _baseVisitor.visitInstanceCreationExpression(node);
stopwatch.stop();
return result;
}
@override
- T visitIntegerLiteral(IntegerLiteral node) {
+ T? visitIntegerLiteral(IntegerLiteral node) {
stopwatch.start();
- T result = _baseVisitor.visitIntegerLiteral(node);
+ T? result = _baseVisitor.visitIntegerLiteral(node);
stopwatch.stop();
return result;
}
@override
- T visitInterpolationExpression(InterpolationExpression node) {
+ T? visitInterpolationExpression(InterpolationExpression node) {
stopwatch.start();
- T result = _baseVisitor.visitInterpolationExpression(node);
+ T? result = _baseVisitor.visitInterpolationExpression(node);
stopwatch.stop();
return result;
}
@override
- T visitInterpolationString(InterpolationString node) {
+ T? visitInterpolationString(InterpolationString node) {
stopwatch.start();
- T result = _baseVisitor.visitInterpolationString(node);
+ T? result = _baseVisitor.visitInterpolationString(node);
stopwatch.stop();
return result;
}
@override
- T visitIsExpression(IsExpression node) {
+ T? visitIsExpression(IsExpression node) {
stopwatch.start();
- T result = _baseVisitor.visitIsExpression(node);
+ T? result = _baseVisitor.visitIsExpression(node);
stopwatch.stop();
return result;
}
@override
- T visitLabel(Label node) {
+ T? visitLabel(Label node) {
stopwatch.start();
- T result = _baseVisitor.visitLabel(node);
+ T? result = _baseVisitor.visitLabel(node);
stopwatch.stop();
return result;
}
@override
- T visitLabeledStatement(LabeledStatement node) {
+ T? visitLabeledStatement(LabeledStatement node) {
stopwatch.start();
- T result = _baseVisitor.visitLabeledStatement(node);
+ T? result = _baseVisitor.visitLabeledStatement(node);
stopwatch.stop();
return result;
}
@override
- T visitLibraryDirective(LibraryDirective node) {
+ T? visitLibraryDirective(LibraryDirective node) {
stopwatch.start();
- T result = _baseVisitor.visitLibraryDirective(node);
+ T? result = _baseVisitor.visitLibraryDirective(node);
stopwatch.stop();
return result;
}
@override
- T visitLibraryIdentifier(LibraryIdentifier node) {
+ T? visitLibraryIdentifier(LibraryIdentifier node) {
stopwatch.start();
- T result = _baseVisitor.visitLibraryIdentifier(node);
+ T? result = _baseVisitor.visitLibraryIdentifier(node);
stopwatch.stop();
return result;
}
@override
- T visitListLiteral(ListLiteral node) {
+ T? visitListLiteral(ListLiteral node) {
stopwatch.start();
- T result = _baseVisitor.visitListLiteral(node);
+ T? result = _baseVisitor.visitListLiteral(node);
stopwatch.stop();
return result;
}
@override
- T visitMapLiteralEntry(MapLiteralEntry node) {
+ T? visitMapLiteralEntry(MapLiteralEntry node) {
stopwatch.start();
- T result = _baseVisitor.visitMapLiteralEntry(node);
+ T? result = _baseVisitor.visitMapLiteralEntry(node);
stopwatch.stop();
return result;
}
@override
- T visitMethodDeclaration(MethodDeclaration node) {
+ T? visitMethodDeclaration(MethodDeclaration node) {
stopwatch.start();
- T result = _baseVisitor.visitMethodDeclaration(node);
+ T? result = _baseVisitor.visitMethodDeclaration(node);
stopwatch.stop();
return result;
}
@override
- T visitMethodInvocation(MethodInvocation node) {
+ T? visitMethodInvocation(MethodInvocation node) {
stopwatch.start();
- T result = _baseVisitor.visitMethodInvocation(node);
+ T? result = _baseVisitor.visitMethodInvocation(node);
stopwatch.stop();
return result;
}
@override
- T visitMixinDeclaration(MixinDeclaration node) {
+ T? visitMixinDeclaration(MixinDeclaration node) {
stopwatch.start();
- T result = _baseVisitor.visitMixinDeclaration(node);
+ T? result = _baseVisitor.visitMixinDeclaration(node);
stopwatch.stop();
return result;
}
@override
- T visitNamedExpression(NamedExpression node) {
+ T? visitNamedExpression(NamedExpression node) {
stopwatch.start();
- T result = _baseVisitor.visitNamedExpression(node);
+ T? result = _baseVisitor.visitNamedExpression(node);
stopwatch.stop();
return result;
}
@override
- T visitNativeClause(NativeClause node) {
+ T? visitNativeClause(NativeClause node) {
stopwatch.start();
- T result = _baseVisitor.visitNativeClause(node);
+ T? result = _baseVisitor.visitNativeClause(node);
stopwatch.stop();
return result;
}
@override
- T visitNativeFunctionBody(NativeFunctionBody node) {
+ T? visitNativeFunctionBody(NativeFunctionBody node) {
stopwatch.start();
- T result = _baseVisitor.visitNativeFunctionBody(node);
+ T? result = _baseVisitor.visitNativeFunctionBody(node);
stopwatch.stop();
return result;
}
@override
- T visitNullLiteral(NullLiteral node) {
+ T? visitNullLiteral(NullLiteral node) {
stopwatch.start();
- T result = _baseVisitor.visitNullLiteral(node);
+ T? result = _baseVisitor.visitNullLiteral(node);
stopwatch.stop();
return result;
}
@override
- T visitOnClause(OnClause node) {
+ T? visitOnClause(OnClause node) {
stopwatch.start();
- T result = _baseVisitor.visitOnClause(node);
+ T? result = _baseVisitor.visitOnClause(node);
stopwatch.stop();
return result;
}
@override
- T visitParenthesizedExpression(ParenthesizedExpression node) {
+ T? visitParenthesizedExpression(ParenthesizedExpression node) {
stopwatch.start();
- T result = _baseVisitor.visitParenthesizedExpression(node);
+ T? result = _baseVisitor.visitParenthesizedExpression(node);
stopwatch.stop();
return result;
}
@override
- T visitPartDirective(PartDirective node) {
+ T? visitPartDirective(PartDirective node) {
stopwatch.start();
- T result = _baseVisitor.visitPartDirective(node);
+ T? result = _baseVisitor.visitPartDirective(node);
stopwatch.stop();
return result;
}
@override
- T visitPartOfDirective(PartOfDirective node) {
+ T? visitPartOfDirective(PartOfDirective node) {
stopwatch.start();
- T result = _baseVisitor.visitPartOfDirective(node);
+ T? result = _baseVisitor.visitPartOfDirective(node);
stopwatch.stop();
return result;
}
@override
- T visitPostfixExpression(PostfixExpression node) {
+ T? visitPostfixExpression(PostfixExpression node) {
stopwatch.start();
- T result = _baseVisitor.visitPostfixExpression(node);
+ T? result = _baseVisitor.visitPostfixExpression(node);
stopwatch.stop();
return result;
}
@override
- T visitPrefixedIdentifier(PrefixedIdentifier node) {
+ T? visitPrefixedIdentifier(PrefixedIdentifier node) {
stopwatch.start();
- T result = _baseVisitor.visitPrefixedIdentifier(node);
+ T? result = _baseVisitor.visitPrefixedIdentifier(node);
stopwatch.stop();
return result;
}
@override
- T visitPrefixExpression(PrefixExpression node) {
+ T? visitPrefixExpression(PrefixExpression node) {
stopwatch.start();
- T result = _baseVisitor.visitPrefixExpression(node);
+ T? result = _baseVisitor.visitPrefixExpression(node);
stopwatch.stop();
return result;
}
@override
- T visitPropertyAccess(PropertyAccess node) {
+ T? visitPropertyAccess(PropertyAccess node) {
stopwatch.start();
- T result = _baseVisitor.visitPropertyAccess(node);
+ T? result = _baseVisitor.visitPropertyAccess(node);
stopwatch.stop();
return result;
}
@override
- T visitRedirectingConstructorInvocation(
+ T? visitRedirectingConstructorInvocation(
RedirectingConstructorInvocation node) {
stopwatch.start();
- T result = _baseVisitor.visitRedirectingConstructorInvocation(node);
+ T? result = _baseVisitor.visitRedirectingConstructorInvocation(node);
stopwatch.stop();
return result;
}
@override
- T visitRethrowExpression(RethrowExpression node) {
+ T? visitRethrowExpression(RethrowExpression node) {
stopwatch.start();
- T result = _baseVisitor.visitRethrowExpression(node);
+ T? result = _baseVisitor.visitRethrowExpression(node);
stopwatch.stop();
return result;
}
@override
- T visitReturnStatement(ReturnStatement node) {
+ T? visitReturnStatement(ReturnStatement node) {
stopwatch.start();
- T result = _baseVisitor.visitReturnStatement(node);
+ T? result = _baseVisitor.visitReturnStatement(node);
stopwatch.stop();
return result;
}
@override
- T visitScriptTag(ScriptTag node) {
+ T? visitScriptTag(ScriptTag node) {
stopwatch.start();
- T result = _baseVisitor.visitScriptTag(node);
+ T? result = _baseVisitor.visitScriptTag(node);
stopwatch.stop();
return result;
}
@override
- T visitSetOrMapLiteral(SetOrMapLiteral node) {
+ T? visitSetOrMapLiteral(SetOrMapLiteral node) {
stopwatch.start();
- T result = _baseVisitor.visitSetOrMapLiteral(node);
+ T? result = _baseVisitor.visitSetOrMapLiteral(node);
stopwatch.stop();
return result;
}
@override
- T visitShowCombinator(ShowCombinator node) {
+ T? visitShowCombinator(ShowCombinator node) {
stopwatch.start();
- T result = _baseVisitor.visitShowCombinator(node);
+ T? result = _baseVisitor.visitShowCombinator(node);
stopwatch.stop();
return result;
}
@override
- T visitSimpleFormalParameter(SimpleFormalParameter node) {
+ T? visitSimpleFormalParameter(SimpleFormalParameter node) {
stopwatch.start();
- T result = _baseVisitor.visitSimpleFormalParameter(node);
+ T? result = _baseVisitor.visitSimpleFormalParameter(node);
stopwatch.stop();
return result;
}
@override
- T visitSimpleIdentifier(SimpleIdentifier node) {
+ T? visitSimpleIdentifier(SimpleIdentifier node) {
stopwatch.start();
- T result = _baseVisitor.visitSimpleIdentifier(node);
+ T? result = _baseVisitor.visitSimpleIdentifier(node);
stopwatch.stop();
return result;
}
@override
- T visitSimpleStringLiteral(SimpleStringLiteral node) {
+ T? visitSimpleStringLiteral(SimpleStringLiteral node) {
stopwatch.start();
- T result = _baseVisitor.visitSimpleStringLiteral(node);
+ T? result = _baseVisitor.visitSimpleStringLiteral(node);
stopwatch.stop();
return result;
}
@override
- T visitSpreadElement(SpreadElement node) {
+ T? visitSpreadElement(SpreadElement node) {
stopwatch.start();
- T result = _baseVisitor.visitSpreadElement(node);
+ T? result = _baseVisitor.visitSpreadElement(node);
stopwatch.stop();
return result;
}
@override
- T visitStringInterpolation(StringInterpolation node) {
+ T? visitStringInterpolation(StringInterpolation node) {
stopwatch.start();
- T result = _baseVisitor.visitStringInterpolation(node);
+ T? result = _baseVisitor.visitStringInterpolation(node);
stopwatch.stop();
return result;
}
@override
- T visitSuperConstructorInvocation(SuperConstructorInvocation node) {
+ T? visitSuperConstructorInvocation(SuperConstructorInvocation node) {
stopwatch.start();
- T result = _baseVisitor.visitSuperConstructorInvocation(node);
+ T? result = _baseVisitor.visitSuperConstructorInvocation(node);
stopwatch.stop();
return result;
}
@override
- T visitSuperExpression(SuperExpression node) {
+ T? visitSuperExpression(SuperExpression node) {
stopwatch.start();
- T result = _baseVisitor.visitSuperExpression(node);
+ T? result = _baseVisitor.visitSuperExpression(node);
stopwatch.stop();
return result;
}
@override
- T visitSwitchCase(SwitchCase node) {
+ T? visitSwitchCase(SwitchCase node) {
stopwatch.start();
- T result = _baseVisitor.visitSwitchCase(node);
+ T? result = _baseVisitor.visitSwitchCase(node);
stopwatch.stop();
return result;
}
@override
- T visitSwitchDefault(SwitchDefault node) {
+ T? visitSwitchDefault(SwitchDefault node) {
stopwatch.start();
- T result = _baseVisitor.visitSwitchDefault(node);
+ T? result = _baseVisitor.visitSwitchDefault(node);
stopwatch.stop();
return result;
}
@override
- T visitSwitchStatement(SwitchStatement node) {
+ T? visitSwitchStatement(SwitchStatement node) {
stopwatch.start();
- T result = _baseVisitor.visitSwitchStatement(node);
+ T? result = _baseVisitor.visitSwitchStatement(node);
stopwatch.stop();
return result;
}
@override
- T visitSymbolLiteral(SymbolLiteral node) {
+ T? visitSymbolLiteral(SymbolLiteral node) {
stopwatch.start();
- T result = _baseVisitor.visitSymbolLiteral(node);
+ T? result = _baseVisitor.visitSymbolLiteral(node);
stopwatch.stop();
return result;
}
@override
- T visitThisExpression(ThisExpression node) {
+ T? visitThisExpression(ThisExpression node) {
stopwatch.start();
- T result = _baseVisitor.visitThisExpression(node);
+ T? result = _baseVisitor.visitThisExpression(node);
stopwatch.stop();
return result;
}
@override
- T visitThrowExpression(ThrowExpression node) {
+ T? visitThrowExpression(ThrowExpression node) {
stopwatch.start();
- T result = _baseVisitor.visitThrowExpression(node);
+ T? result = _baseVisitor.visitThrowExpression(node);
stopwatch.stop();
return result;
}
@override
- T visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) {
+ T? visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) {
stopwatch.start();
- T result = _baseVisitor.visitTopLevelVariableDeclaration(node);
+ T? result = _baseVisitor.visitTopLevelVariableDeclaration(node);
stopwatch.stop();
return result;
}
@override
- T visitTryStatement(TryStatement node) {
+ T? visitTryStatement(TryStatement node) {
stopwatch.start();
- T result = _baseVisitor.visitTryStatement(node);
+ T? result = _baseVisitor.visitTryStatement(node);
stopwatch.stop();
return result;
}
@override
- T visitTypeArgumentList(TypeArgumentList node) {
+ T? visitTypeArgumentList(TypeArgumentList node) {
stopwatch.start();
- T result = _baseVisitor.visitTypeArgumentList(node);
+ T? result = _baseVisitor.visitTypeArgumentList(node);
stopwatch.stop();
return result;
}
@override
- T visitTypeName(TypeName node) {
+ T? visitTypeName(TypeName node) {
stopwatch.start();
- T result = _baseVisitor.visitTypeName(node);
+ T? result = _baseVisitor.visitTypeName(node);
stopwatch.stop();
return result;
}
@override
- T visitTypeParameter(TypeParameter node) {
+ T? visitTypeParameter(TypeParameter node) {
stopwatch.start();
- T result = _baseVisitor.visitTypeParameter(node);
+ T? result = _baseVisitor.visitTypeParameter(node);
stopwatch.stop();
return result;
}
@override
- T visitTypeParameterList(TypeParameterList node) {
+ T? visitTypeParameterList(TypeParameterList node) {
stopwatch.start();
- T result = _baseVisitor.visitTypeParameterList(node);
+ T? result = _baseVisitor.visitTypeParameterList(node);
stopwatch.stop();
return result;
}
@override
- T visitVariableDeclaration(VariableDeclaration node) {
+ T? visitVariableDeclaration(VariableDeclaration node) {
stopwatch.start();
- T result = _baseVisitor.visitVariableDeclaration(node);
+ T? result = _baseVisitor.visitVariableDeclaration(node);
stopwatch.stop();
return result;
}
@override
- T visitVariableDeclarationList(VariableDeclarationList node) {
+ T? visitVariableDeclarationList(VariableDeclarationList node) {
stopwatch.start();
- T result = _baseVisitor.visitVariableDeclarationList(node);
+ T? result = _baseVisitor.visitVariableDeclarationList(node);
stopwatch.stop();
return result;
}
@override
- T visitVariableDeclarationStatement(VariableDeclarationStatement node) {
+ T? visitVariableDeclarationStatement(VariableDeclarationStatement node) {
stopwatch.start();
- T result = _baseVisitor.visitVariableDeclarationStatement(node);
+ T? result = _baseVisitor.visitVariableDeclarationStatement(node);
stopwatch.stop();
return result;
}
@override
- T visitWhileStatement(WhileStatement node) {
+ T? visitWhileStatement(WhileStatement node) {
stopwatch.start();
- T result = _baseVisitor.visitWhileStatement(node);
+ T? result = _baseVisitor.visitWhileStatement(node);
stopwatch.stop();
return result;
}
@override
- T visitWithClause(WithClause node) {
+ T? visitWithClause(WithClause node) {
stopwatch.start();
- T result = _baseVisitor.visitWithClause(node);
+ T? result = _baseVisitor.visitWithClause(node);
stopwatch.stop();
return result;
}
@override
- T visitYieldStatement(YieldStatement node) {
+ T? visitYieldStatement(YieldStatement node) {
stopwatch.start();
- T result = _baseVisitor.visitYieldStatement(node);
+ T? result = _baseVisitor.visitYieldStatement(node);
stopwatch.stop();
return result;
}
@@ -3113,389 +3117,393 @@
const UnifyingAstVisitor();
@override
- R visitAdjacentStrings(AdjacentStrings node) => visitNode(node);
+ R? visitAdjacentStrings(AdjacentStrings node) => visitNode(node);
@override
- R visitAnnotation(Annotation node) => visitNode(node);
+ R? visitAnnotation(Annotation node) => visitNode(node);
@override
- R visitArgumentList(ArgumentList node) => visitNode(node);
+ R? visitArgumentList(ArgumentList node) => visitNode(node);
@override
- R visitAsExpression(AsExpression node) => visitNode(node);
+ R? visitAsExpression(AsExpression node) => visitNode(node);
@override
- R visitAssertInitializer(AssertInitializer node) => visitNode(node);
+ R? visitAssertInitializer(AssertInitializer node) => visitNode(node);
@override
- R visitAssertStatement(AssertStatement node) => visitNode(node);
+ R? visitAssertStatement(AssertStatement node) => visitNode(node);
@override
- R visitAssignmentExpression(AssignmentExpression node) => visitNode(node);
+ R? visitAssignmentExpression(AssignmentExpression node) => visitNode(node);
@override
- R visitAwaitExpression(AwaitExpression node) => visitNode(node);
+ R? visitAwaitExpression(AwaitExpression node) => visitNode(node);
@override
- R visitBinaryExpression(BinaryExpression node) => visitNode(node);
+ R? visitBinaryExpression(BinaryExpression node) => visitNode(node);
@override
- R visitBlock(Block node) => visitNode(node);
+ R? visitBlock(Block node) => visitNode(node);
@override
- R visitBlockFunctionBody(BlockFunctionBody node) => visitNode(node);
+ R? visitBlockFunctionBody(BlockFunctionBody node) => visitNode(node);
@override
- R visitBooleanLiteral(BooleanLiteral node) => visitNode(node);
+ R? visitBooleanLiteral(BooleanLiteral node) => visitNode(node);
@override
- R visitBreakStatement(BreakStatement node) => visitNode(node);
+ R? visitBreakStatement(BreakStatement node) => visitNode(node);
@override
- R visitCascadeExpression(CascadeExpression node) => visitNode(node);
+ R? visitCascadeExpression(CascadeExpression node) => visitNode(node);
@override
- R visitCatchClause(CatchClause node) => visitNode(node);
+ R? visitCatchClause(CatchClause node) => visitNode(node);
@override
- R visitClassDeclaration(ClassDeclaration node) => visitNode(node);
+ R? visitClassDeclaration(ClassDeclaration node) => visitNode(node);
@override
- R visitClassTypeAlias(ClassTypeAlias node) => visitNode(node);
+ R? visitClassTypeAlias(ClassTypeAlias node) => visitNode(node);
@override
- R visitComment(Comment node) => visitNode(node);
+ R? visitComment(Comment node) => visitNode(node);
@override
- R visitCommentReference(CommentReference node) => visitNode(node);
+ R? visitCommentReference(CommentReference node) => visitNode(node);
@override
- R visitCompilationUnit(CompilationUnit node) => visitNode(node);
+ R? visitCompilationUnit(CompilationUnit node) => visitNode(node);
@override
- R visitConditionalExpression(ConditionalExpression node) => visitNode(node);
+ R? visitConditionalExpression(ConditionalExpression node) => visitNode(node);
@override
- R visitConfiguration(Configuration node) => visitNode(node);
+ R? visitConfiguration(Configuration node) => visitNode(node);
@override
- R visitConstructorDeclaration(ConstructorDeclaration node) => visitNode(node);
-
- @override
- R visitConstructorFieldInitializer(ConstructorFieldInitializer node) =>
+ R? visitConstructorDeclaration(ConstructorDeclaration node) =>
visitNode(node);
@override
- R visitConstructorName(ConstructorName node) => visitNode(node);
-
- @override
- R visitContinueStatement(ContinueStatement node) => visitNode(node);
-
- @override
- R visitDeclaredIdentifier(DeclaredIdentifier node) => visitNode(node);
-
- @override
- R visitDefaultFormalParameter(DefaultFormalParameter node) => visitNode(node);
-
- @override
- R visitDoStatement(DoStatement node) => visitNode(node);
-
- @override
- R visitDottedName(DottedName node) => visitNode(node);
-
- @override
- R visitDoubleLiteral(DoubleLiteral node) => visitNode(node);
-
- @override
- R visitEmptyFunctionBody(EmptyFunctionBody node) => visitNode(node);
-
- @override
- R visitEmptyStatement(EmptyStatement node) => visitNode(node);
-
- @override
- R visitEnumConstantDeclaration(EnumConstantDeclaration node) =>
+ R? visitConstructorFieldInitializer(ConstructorFieldInitializer node) =>
visitNode(node);
@override
- R visitEnumDeclaration(EnumDeclaration node) => visitNode(node);
+ R? visitConstructorName(ConstructorName node) => visitNode(node);
@override
- R visitExportDirective(ExportDirective node) => visitNode(node);
+ R? visitContinueStatement(ContinueStatement node) => visitNode(node);
@override
- R visitExpressionFunctionBody(ExpressionFunctionBody node) => visitNode(node);
+ R? visitDeclaredIdentifier(DeclaredIdentifier node) => visitNode(node);
@override
- R visitExpressionStatement(ExpressionStatement node) => visitNode(node);
-
- @override
- R visitExtendsClause(ExtendsClause node) => visitNode(node);
-
- @override
- R visitExtensionDeclaration(ExtensionDeclaration node) => visitNode(node);
-
- @override
- R visitExtensionOverride(ExtensionOverride node) => visitNode(node);
-
- @override
- R visitFieldDeclaration(FieldDeclaration node) => visitNode(node);
-
- @override
- R visitFieldFormalParameter(FieldFormalParameter node) => visitNode(node);
-
- @override
- R visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node) =>
+ R? visitDefaultFormalParameter(DefaultFormalParameter node) =>
visitNode(node);
@override
- R visitForEachPartsWithIdentifier(ForEachPartsWithIdentifier node) =>
+ R? visitDoStatement(DoStatement node) => visitNode(node);
+
+ @override
+ R? visitDottedName(DottedName node) => visitNode(node);
+
+ @override
+ R? visitDoubleLiteral(DoubleLiteral node) => visitNode(node);
+
+ @override
+ R? visitEmptyFunctionBody(EmptyFunctionBody node) => visitNode(node);
+
+ @override
+ R? visitEmptyStatement(EmptyStatement node) => visitNode(node);
+
+ @override
+ R? visitEnumConstantDeclaration(EnumConstantDeclaration node) =>
visitNode(node);
@override
- R visitForElement(ForElement node) => visitNode(node);
+ R? visitEnumDeclaration(EnumDeclaration node) => visitNode(node);
@override
- R visitFormalParameterList(FormalParameterList node) => visitNode(node);
+ R? visitExportDirective(ExportDirective node) => visitNode(node);
@override
- R visitForPartsWithDeclarations(ForPartsWithDeclarations node) =>
+ R? visitExpressionFunctionBody(ExpressionFunctionBody node) =>
visitNode(node);
@override
- R visitForPartsWithExpression(ForPartsWithExpression node) => visitNode(node);
+ R? visitExpressionStatement(ExpressionStatement node) => visitNode(node);
@override
- R visitForStatement(ForStatement node) => visitNode(node);
+ R? visitExtendsClause(ExtendsClause node) => visitNode(node);
@override
- R visitFunctionDeclaration(FunctionDeclaration node) => visitNode(node);
+ R? visitExtensionDeclaration(ExtensionDeclaration node) => visitNode(node);
@override
- R visitFunctionDeclarationStatement(FunctionDeclarationStatement node) =>
+ R? visitExtensionOverride(ExtensionOverride node) => visitNode(node);
+
+ @override
+ R? visitFieldDeclaration(FieldDeclaration node) => visitNode(node);
+
+ @override
+ R? visitFieldFormalParameter(FieldFormalParameter node) => visitNode(node);
+
+ @override
+ R? visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node) =>
visitNode(node);
@override
- R visitFunctionExpression(FunctionExpression node) => visitNode(node);
-
- @override
- R visitFunctionExpressionInvocation(FunctionExpressionInvocation node) =>
+ R? visitForEachPartsWithIdentifier(ForEachPartsWithIdentifier node) =>
visitNode(node);
@override
- R visitFunctionTypeAlias(FunctionTypeAlias node) => visitNode(node);
+ R? visitForElement(ForElement node) => visitNode(node);
@override
- R visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) =>
+ R? visitFormalParameterList(FormalParameterList node) => visitNode(node);
+
+ @override
+ R? visitForPartsWithDeclarations(ForPartsWithDeclarations node) =>
visitNode(node);
@override
- R visitGenericFunctionType(GenericFunctionType node) => visitNode(node);
-
- @override
- R visitGenericTypeAlias(GenericTypeAlias node) => visitNode(node);
-
- @override
- R visitHideCombinator(HideCombinator node) => visitNode(node);
-
- @override
- R visitIfElement(IfElement node) => visitNode(node);
-
- @override
- R visitIfStatement(IfStatement node) => visitNode(node);
-
- @override
- R visitImplementsClause(ImplementsClause node) => visitNode(node);
-
- @override
- R visitImportDirective(ImportDirective node) => visitNode(node);
-
- @override
- R visitIndexExpression(IndexExpression node) => visitNode(node);
-
- @override
- R visitInstanceCreationExpression(InstanceCreationExpression node) =>
+ R? visitForPartsWithExpression(ForPartsWithExpression node) =>
visitNode(node);
@override
- R visitIntegerLiteral(IntegerLiteral node) => visitNode(node);
+ R? visitForStatement(ForStatement node) => visitNode(node);
@override
- R visitInterpolationExpression(InterpolationExpression node) =>
+ R? visitFunctionDeclaration(FunctionDeclaration node) => visitNode(node);
+
+ @override
+ R? visitFunctionDeclarationStatement(FunctionDeclarationStatement node) =>
visitNode(node);
@override
- R visitInterpolationString(InterpolationString node) => visitNode(node);
+ R? visitFunctionExpression(FunctionExpression node) => visitNode(node);
@override
- R visitIsExpression(IsExpression node) => visitNode(node);
+ R? visitFunctionExpressionInvocation(FunctionExpressionInvocation node) =>
+ visitNode(node);
@override
- R visitLabel(Label node) => visitNode(node);
+ R? visitFunctionTypeAlias(FunctionTypeAlias node) => visitNode(node);
@override
- R visitLabeledStatement(LabeledStatement node) => visitNode(node);
+ R? visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) =>
+ visitNode(node);
@override
- R visitLibraryDirective(LibraryDirective node) => visitNode(node);
+ R? visitGenericFunctionType(GenericFunctionType node) => visitNode(node);
@override
- R visitLibraryIdentifier(LibraryIdentifier node) => visitNode(node);
+ R? visitGenericTypeAlias(GenericTypeAlias node) => visitNode(node);
@override
- R visitListLiteral(ListLiteral node) => visitNode(node);
+ R? visitHideCombinator(HideCombinator node) => visitNode(node);
@override
- R visitMapLiteralEntry(MapLiteralEntry node) => visitNode(node);
+ R? visitIfElement(IfElement node) => visitNode(node);
@override
- R visitMethodDeclaration(MethodDeclaration node) => visitNode(node);
+ R? visitIfStatement(IfStatement node) => visitNode(node);
@override
- R visitMethodInvocation(MethodInvocation node) => visitNode(node);
+ R? visitImplementsClause(ImplementsClause node) => visitNode(node);
@override
- R visitMixinDeclaration(MixinDeclaration node) => visitNode(node);
+ R? visitImportDirective(ImportDirective node) => visitNode(node);
@override
- R visitNamedExpression(NamedExpression node) => visitNode(node);
+ R? visitIndexExpression(IndexExpression node) => visitNode(node);
@override
- R visitNativeClause(NativeClause node) => visitNode(node);
+ R? visitInstanceCreationExpression(InstanceCreationExpression node) =>
+ visitNode(node);
@override
- R visitNativeFunctionBody(NativeFunctionBody node) => visitNode(node);
+ R? visitIntegerLiteral(IntegerLiteral node) => visitNode(node);
- R visitNode(AstNode node) {
+ @override
+ R? visitInterpolationExpression(InterpolationExpression node) =>
+ visitNode(node);
+
+ @override
+ R? visitInterpolationString(InterpolationString node) => visitNode(node);
+
+ @override
+ R? visitIsExpression(IsExpression node) => visitNode(node);
+
+ @override
+ R? visitLabel(Label node) => visitNode(node);
+
+ @override
+ R? visitLabeledStatement(LabeledStatement node) => visitNode(node);
+
+ @override
+ R? visitLibraryDirective(LibraryDirective node) => visitNode(node);
+
+ @override
+ R? visitLibraryIdentifier(LibraryIdentifier node) => visitNode(node);
+
+ @override
+ R? visitListLiteral(ListLiteral node) => visitNode(node);
+
+ @override
+ R? visitMapLiteralEntry(MapLiteralEntry node) => visitNode(node);
+
+ @override
+ R? visitMethodDeclaration(MethodDeclaration node) => visitNode(node);
+
+ @override
+ R? visitMethodInvocation(MethodInvocation node) => visitNode(node);
+
+ @override
+ R? visitMixinDeclaration(MixinDeclaration node) => visitNode(node);
+
+ @override
+ R? visitNamedExpression(NamedExpression node) => visitNode(node);
+
+ @override
+ R? visitNativeClause(NativeClause node) => visitNode(node);
+
+ @override
+ R? visitNativeFunctionBody(NativeFunctionBody node) => visitNode(node);
+
+ R? visitNode(AstNode node) {
node.visitChildren(this);
return null;
}
@override
- R visitNullLiteral(NullLiteral node) => visitNode(node);
+ R? visitNullLiteral(NullLiteral node) => visitNode(node);
@override
- R visitOnClause(OnClause node) => visitNode(node);
+ R? visitOnClause(OnClause node) => visitNode(node);
@override
- R visitParenthesizedExpression(ParenthesizedExpression node) =>
+ R? visitParenthesizedExpression(ParenthesizedExpression node) =>
visitNode(node);
@override
- R visitPartDirective(PartDirective node) => visitNode(node);
+ R? visitPartDirective(PartDirective node) => visitNode(node);
@override
- R visitPartOfDirective(PartOfDirective node) => visitNode(node);
+ R? visitPartOfDirective(PartOfDirective node) => visitNode(node);
@override
- R visitPostfixExpression(PostfixExpression node) => visitNode(node);
+ R? visitPostfixExpression(PostfixExpression node) => visitNode(node);
@override
- R visitPrefixedIdentifier(PrefixedIdentifier node) => visitNode(node);
+ R? visitPrefixedIdentifier(PrefixedIdentifier node) => visitNode(node);
@override
- R visitPrefixExpression(PrefixExpression node) => visitNode(node);
+ R? visitPrefixExpression(PrefixExpression node) => visitNode(node);
@override
- R visitPropertyAccess(PropertyAccess node) => visitNode(node);
+ R? visitPropertyAccess(PropertyAccess node) => visitNode(node);
@override
- R visitRedirectingConstructorInvocation(
+ R? visitRedirectingConstructorInvocation(
RedirectingConstructorInvocation node) =>
visitNode(node);
@override
- R visitRethrowExpression(RethrowExpression node) => visitNode(node);
+ R? visitRethrowExpression(RethrowExpression node) => visitNode(node);
@override
- R visitReturnStatement(ReturnStatement node) => visitNode(node);
+ R? visitReturnStatement(ReturnStatement node) => visitNode(node);
@override
- R visitScriptTag(ScriptTag scriptTag) => visitNode(scriptTag);
+ R? visitScriptTag(ScriptTag scriptTag) => visitNode(scriptTag);
@override
- R visitSetOrMapLiteral(SetOrMapLiteral node) => visitNode(node);
+ R? visitSetOrMapLiteral(SetOrMapLiteral node) => visitNode(node);
@override
- R visitShowCombinator(ShowCombinator node) => visitNode(node);
+ R? visitShowCombinator(ShowCombinator node) => visitNode(node);
@override
- R visitSimpleFormalParameter(SimpleFormalParameter node) => visitNode(node);
+ R? visitSimpleFormalParameter(SimpleFormalParameter node) => visitNode(node);
@override
- R visitSimpleIdentifier(SimpleIdentifier node) => visitNode(node);
+ R? visitSimpleIdentifier(SimpleIdentifier node) => visitNode(node);
@override
- R visitSimpleStringLiteral(SimpleStringLiteral node) => visitNode(node);
+ R? visitSimpleStringLiteral(SimpleStringLiteral node) => visitNode(node);
@override
- R visitSpreadElement(SpreadElement node) => visitNode(node);
+ R? visitSpreadElement(SpreadElement node) => visitNode(node);
@override
- R visitStringInterpolation(StringInterpolation node) => visitNode(node);
+ R? visitStringInterpolation(StringInterpolation node) => visitNode(node);
@override
- R visitSuperConstructorInvocation(SuperConstructorInvocation node) =>
+ R? visitSuperConstructorInvocation(SuperConstructorInvocation node) =>
visitNode(node);
@override
- R visitSuperExpression(SuperExpression node) => visitNode(node);
+ R? visitSuperExpression(SuperExpression node) => visitNode(node);
@override
- R visitSwitchCase(SwitchCase node) => visitNode(node);
+ R? visitSwitchCase(SwitchCase node) => visitNode(node);
@override
- R visitSwitchDefault(SwitchDefault node) => visitNode(node);
+ R? visitSwitchDefault(SwitchDefault node) => visitNode(node);
@override
- R visitSwitchStatement(SwitchStatement node) => visitNode(node);
+ R? visitSwitchStatement(SwitchStatement node) => visitNode(node);
@override
- R visitSymbolLiteral(SymbolLiteral node) => visitNode(node);
+ R? visitSymbolLiteral(SymbolLiteral node) => visitNode(node);
@override
- R visitThisExpression(ThisExpression node) => visitNode(node);
+ R? visitThisExpression(ThisExpression node) => visitNode(node);
@override
- R visitThrowExpression(ThrowExpression node) => visitNode(node);
+ R? visitThrowExpression(ThrowExpression node) => visitNode(node);
@override
- R visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) =>
+ R? visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) =>
visitNode(node);
@override
- R visitTryStatement(TryStatement node) => visitNode(node);
+ R? visitTryStatement(TryStatement node) => visitNode(node);
@override
- R visitTypeArgumentList(TypeArgumentList node) => visitNode(node);
+ R? visitTypeArgumentList(TypeArgumentList node) => visitNode(node);
@override
- R visitTypeName(TypeName node) => visitNode(node);
+ R? visitTypeName(TypeName node) => visitNode(node);
@override
- R visitTypeParameter(TypeParameter node) => visitNode(node);
+ R? visitTypeParameter(TypeParameter node) => visitNode(node);
@override
- R visitTypeParameterList(TypeParameterList node) => visitNode(node);
+ R? visitTypeParameterList(TypeParameterList node) => visitNode(node);
@override
- R visitVariableDeclaration(VariableDeclaration node) => visitNode(node);
+ R? visitVariableDeclaration(VariableDeclaration node) => visitNode(node);
@override
- R visitVariableDeclarationList(VariableDeclarationList node) =>
+ R? visitVariableDeclarationList(VariableDeclarationList node) =>
visitNode(node);
@override
- R visitVariableDeclarationStatement(VariableDeclarationStatement node) =>
+ R? visitVariableDeclarationStatement(VariableDeclarationStatement node) =>
visitNode(node);
@override
- R visitWhileStatement(WhileStatement node) => visitNode(node);
+ R? visitWhileStatement(WhileStatement node) => visitNode(node);
@override
- R visitWithClause(WithClause node) => visitNode(node);
+ R? visitWithClause(WithClause node) => visitNode(node);
@override
- R visitYieldStatement(YieldStatement node) => visitNode(node);
+ R? visitYieldStatement(YieldStatement node) => visitNode(node);
}
/// A helper class used to implement the correct order of visits for a
diff --git a/pkg/analyzer/lib/dart/constant/value.dart b/pkg/analyzer/lib/dart/constant/value.dart
index f8c15ec..def4a14 100644
--- a/pkg/analyzer/lib/dart/constant/value.dart
+++ b/pkg/analyzer/lib/dart/constant/value.dart
@@ -62,7 +62,7 @@
///
/// This method can return a representation of the type, even if this object
/// would return `false` from [hasKnownValue].
- ParameterizedType get type;
+ ParameterizedType? get type;
/// Return a representation of the value of the field with the given [name].
///
@@ -72,14 +72,14 @@
///
/// Note that, unlike the mirrors API, this method does *not* invoke a getter;
/// it simply returns a representation of the known state of a field.
- DartObject getField(String name);
+ DartObject? getField(String name);
/// Return a boolean corresponding to the value of the object being
/// represented, or `null` if
/// * this object is not of type 'bool',
/// * the value of the object being represented is not known, or
/// * the value of the object being represented is `null`.
- bool toBoolValue();
+ bool? toBoolValue();
/// Return a double corresponding to the value of the object being represented,
/// or `null`
@@ -87,7 +87,7 @@
/// * this object is not of type 'double',
/// * the value of the object being represented is not known, or
/// * the value of the object being represented is `null`.
- double toDoubleValue();
+ double? toDoubleValue();
/// Return an element corresponding to the value of the object being
/// represented, or `null`
@@ -95,50 +95,50 @@
/// * this object is not of a function type,
/// * the value of the object being represented is not known, or
/// * the value of the object being represented is `null`.
- ExecutableElement toFunctionValue();
+ ExecutableElement? toFunctionValue();
/// Return an integer corresponding to the value of the object being
/// represented, or `null` if
/// * this object is not of type 'int',
/// * the value of the object being represented is not known, or
/// * the value of the object being represented is `null`.
- int toIntValue();
+ int? toIntValue();
/// Return a list corresponding to the value of the object being represented,
/// or `null` if
/// * this object is not of type 'List', or
/// * the value of the object being represented is `null`.
- List<DartObject> toListValue();
+ List<DartObject>? toListValue();
/// Return a map corresponding to the value of the object being represented, or
/// `null` if
/// * this object is not of type 'Map', or
/// * the value of the object being represented is `null`.
- Map<DartObject, DartObject> toMapValue();
+ Map<DartObject?, DartObject?>? toMapValue();
/// Return a set corresponding to the value of the object being represented,
/// or `null` if
/// * this object is not of type 'Set', or
/// * the value of the object being represented is `null`.
- Set<DartObject> toSetValue();
+ Set<DartObject>? toSetValue();
/// Return a string corresponding to the value of the object being represented,
/// or `null` if
/// * this object is not of type 'String',
/// * the value of the object being represented is not known, or
/// * the value of the object being represented is `null`.
- String toStringValue();
+ String? toStringValue();
/// Return a string corresponding to the value of the object being represented,
/// or `null` if
/// * this object is not of type 'Symbol', or
/// * the value of the object being represented is `null`.
/// (We return the string
- String toSymbolValue();
+ String? toSymbolValue();
/// Return the representation of the type corresponding to the value of the
/// object being represented, or `null` if
/// * this object is not of type 'Type', or
/// * the value of the object being represented is `null`.
- DartType toTypeValue();
+ DartType? toTypeValue();
}
diff --git a/pkg/analyzer/lib/dart/element/element.dart b/pkg/analyzer/lib/dart/element/element.dart
index 5f38ebb..db530ff 100644
--- a/pkg/analyzer/lib/dart/element/element.dart
+++ b/pkg/analyzer/lib/dart/element/element.dart
@@ -74,6 +74,12 @@
/// class, as is the case when this element represents an enum or a mixin.
List<ConstructorElement> get constructors;
+ @override
+ String get displayName;
+
+ @override
+ CompilationUnitElement get enclosingElement;
+
/// Return a list containing all of the fields declared in this class.
List<FieldElement> get fields;
@@ -140,6 +146,9 @@
/// guard against infinite loops.
List<InterfaceType> get mixins;
+ @override
+ String get name;
+
/// Return a list containing all of the superclass constraints defined for
/// this class. The list will be empty if this class does not represent a
/// mixin declaration. If this class _does_ represent a mixin declaration but
@@ -164,7 +173,7 @@
/// safe to assume that the inheritance structure of a class does not contain
/// a cycle. Clients that traverse the inheritance structure must explicitly
/// guard against infinite loops.
- InterfaceType get supertype;
+ InterfaceType? get supertype;
/// Return the type of `this` expression for this class.
///
@@ -181,38 +190,38 @@
/// constructor will be synthetic if this class does not declare any
/// constructors, in which case it will represent the default constructor for
/// the class.
- ConstructorElement get unnamedConstructor;
+ ConstructorElement? get unnamedConstructor;
/// Return the field (synthetic or explicit) defined in this class that has
/// the given [name], or `null` if this class does not define a field with the
/// given name.
- FieldElement getField(String name);
+ FieldElement? getField(String name);
/// Return the element representing the getter with the given [name] that is
/// declared in this class, or `null` if this class does not declare a getter
/// with the given name.
- PropertyAccessorElement getGetter(String name);
+ PropertyAccessorElement? getGetter(String name);
/// Return the element representing the method with the given [name] that is
/// declared in this class, or `null` if this class does not declare a method
/// with the given name.
- MethodElement getMethod(String name);
+ MethodElement? getMethod(String name);
/// Return the named constructor declared in this class with the given [name],
/// or `null` if this class does not declare a named constructor with the
/// given name.
- ConstructorElement getNamedConstructor(String name);
+ ConstructorElement? getNamedConstructor(String name);
/// Return the element representing the setter with the given [name] that is
/// declared in this class, or `null` if this class does not declare a setter
/// with the given name.
- PropertyAccessorElement getSetter(String name);
+ PropertyAccessorElement? getSetter(String name);
/// Create the [InterfaceType] for this class with the given [typeArguments]
/// and [nullabilitySuffix].
InterfaceType instantiate({
- @required List<DartType> typeArguments,
- @required NullabilitySuffix nullabilitySuffix,
+ required List<DartType> typeArguments,
+ required NullabilitySuffix nullabilitySuffix,
});
/// Return the element representing the method that results from looking up
@@ -229,7 +238,8 @@
/// <i>S</i> with respect to <i>L</i>. Otherwise, we say that the lookup has
/// failed.
/// </blockquote>
- MethodElement lookUpConcreteMethod(String methodName, LibraryElement library);
+ MethodElement? lookUpConcreteMethod(
+ String methodName, LibraryElement library);
/// Return the element representing the getter that results from looking up
/// the given [getterName] in this class with respect to the given [library],
@@ -245,7 +255,7 @@
/// <i>m</i> in <i>S</i> with respect to <i>L</i>. Otherwise, we say that the
/// lookup has failed.
/// </blockquote>
- PropertyAccessorElement lookUpGetter(
+ PropertyAccessorElement? lookUpGetter(
String getterName, LibraryElement library);
/// Return the element representing the getter that results from looking up
@@ -263,7 +273,7 @@
/// <i>m</i> in <i>S</i> with respect to <i>L</i>. Otherwise, we say that the
/// lookup has failed.
/// </blockquote>
- PropertyAccessorElement lookUpInheritedConcreteGetter(
+ PropertyAccessorElement? lookUpInheritedConcreteGetter(
String getterName, LibraryElement library);
/// Return the element representing the method that results from looking up
@@ -280,7 +290,7 @@
/// <i>S</i> with respect to <i>L</i>. Otherwise, we say that the lookup has
/// failed.
/// </blockquote>
- MethodElement lookUpInheritedConcreteMethod(
+ MethodElement? lookUpInheritedConcreteMethod(
String methodName, LibraryElement library);
/// Return the element representing the setter that results from looking up
@@ -298,7 +308,7 @@
/// <i>m</i> in <i>S</i> with respect to <i>L</i>. Otherwise, we say that the
/// lookup has failed.
/// </blockquote>
- PropertyAccessorElement lookUpInheritedConcreteSetter(
+ PropertyAccessorElement? lookUpInheritedConcreteSetter(
String setterName, LibraryElement library);
/// Return the element representing the method that results from looking up
@@ -314,7 +324,7 @@
/// <i>S</i> with respect to <i>L</i>. Otherwise, we say that the lookup has
/// failed.
/// </blockquote>
- MethodElement lookUpInheritedMethod(
+ MethodElement? lookUpInheritedMethod(
String methodName, LibraryElement library);
/// Return the element representing the method that results from looking up
@@ -330,7 +340,7 @@
/// <i>S</i> with respect to <i>L</i>. Otherwise, we say that the lookup has
/// failed.
/// </blockquote>
- MethodElement lookUpMethod(String methodName, LibraryElement library);
+ MethodElement? lookUpMethod(String methodName, LibraryElement library);
/// Return the element representing the setter that results from looking up
/// the given [setterName] in this class with respect to the given [library],
@@ -346,7 +356,7 @@
/// <i>m</i> in <i>S</i> with respect to <i>L</i>. Otherwise, we say that the
/// lookup has failed.
/// </blockquote>
- PropertyAccessorElement lookUpSetter(
+ PropertyAccessorElement? lookUpSetter(
String setterName, LibraryElement library);
}
@@ -360,6 +370,9 @@
// TODO(brianwilkerson) Either remove this class or rename it to something
// more correct.
+ @override
+ Element get enclosingElement;
+
/// Return `true` if this element is a static element. A static element is an
/// element that is not associated with a particular instance, but rather with
/// an entire library or class.
@@ -399,7 +412,7 @@
bool get hasLoadLibraryFunction;
/// Return the [LineInfo] for the [source], or `null` if not computed yet.
- LineInfo get lineInfo;
+ LineInfo? get lineInfo;
/// Return a list containing all of the mixins contained in this compilation
/// unit.
@@ -420,12 +433,12 @@
/// Return the enum defined in this compilation unit that has the given
/// [name], or `null` if this compilation unit does not define an enum with
/// the given name.
- ClassElement getEnum(String name);
+ ClassElement? getEnum(String name);
/// Return the class defined in this compilation unit that has the given
/// [name], or `null` if this compilation unit does not define a class with
/// the given name.
- ClassElement getType(String name);
+ ClassElement? getType(String name);
}
/// An element representing a constructor or a factory method defined within a
@@ -438,6 +451,9 @@
ConstructorElement get declaration;
@override
+ String get displayName;
+
+ @override
ClassElement get enclosingElement;
/// Return `true` if this constructor is a const constructor.
@@ -450,18 +466,23 @@
/// Return `true` if this constructor represents a factory constructor.
bool get isFactory;
+ @override
+ String get name;
+
/// Return the offset of the character immediately following the last
/// character of this constructor's name, or `null` if not named.
- int get nameEnd;
+ ///
+ /// TODO(migration): encapsulate [nameEnd] and [periodOffset]?
+ int? get nameEnd;
/// Return the offset of the `.` before this constructor name, or `null` if
/// not named.
- int get periodOffset;
+ int? get periodOffset;
/// Return the constructor to which this constructor is redirecting, or `null`
/// if this constructor does not redirect to another constructor or if the
/// library containing this constructor has not yet been resolved.
- ConstructorElement get redirectedConstructor;
+ ConstructorElement? get redirectedConstructor;
@override
InterfaceType get returnType;
@@ -505,7 +526,7 @@
/// parameters, return the corresponding element from the class, without any
/// substitutions. If this element is already a declaration (or a synthetic
/// element, e.g. a synthetic property accessor), return itself.
- Element get declaration;
+ Element? get declaration;
/// Return the display name of this element, or `null` if this element does
/// not have a name.
@@ -518,12 +539,12 @@
/// Return the content of the documentation comment (including delimiters) for
/// this element, or `null` if this element does not or cannot have
/// documentation.
- String get documentationComment;
+ String? get documentationComment;
/// Return the element that either physically or logically encloses this
/// element. This will be `null` if this element is a library because
/// libraries are the top-level elements in the model.
- Element get enclosingElement;
+ Element? get enclosingElement;
/// Return `true` if this element has an annotation of the form
/// `@alwaysThrows`.
@@ -607,12 +628,12 @@
/// Return the library that contains this element. This will be the element
/// itself if it is a library element. This will be `null` if this element is
- /// an HTML file because HTML files are not contained in libraries.
- LibraryElement get library;
+ /// [MultiplyDefinedElement] that is not contained in a library.
+ LibraryElement? get library;
/// Return an object representing the location of this element in the element
/// model. The object can be used to locate this element at a later time.
- ElementLocation get location;
+ ElementLocation? get location;
/// Return a list containing all of the metadata associated with this element.
/// The array will be empty if the element does not have any metadata or if
@@ -621,7 +642,7 @@
/// Return the name of this element, or `null` if this element does not have a
/// name.
- String get name;
+ String? get name;
/// Return the length of the name of this element in the file that contains
/// the declaration of this element, or `0` if this element does not have a
@@ -637,11 +658,11 @@
AnalysisSession get session;
@override
- Source get source;
+ Source? get source;
/// Use the given [visitor] to visit this element. Return the value returned
/// by the visitor as a result of visiting this element.
- T accept<T>(ElementVisitor<T> visitor);
+ T? accept<T>(ElementVisitor<T> visitor);
/// Return the presentation of this element as it should appear when
/// presented to users.
@@ -655,14 +676,14 @@
///
/// Clients should not depend on the content of the returned value as it will
/// be changed if doing so would improve the UX.
- String getDisplayString({@required bool withNullability});
+ String getDisplayString({required bool withNullability});
/// Return a display name for the given element that includes the path to the
/// compilation unit in which the type is defined. If [shortName] is `null`
/// then [displayName] will be used as the name of this element. Otherwise
/// the provided name will be used.
// TODO(brianwilkerson) Make the parameter optional.
- String getExtendedDisplayName(String shortName);
+ String getExtendedDisplayName(String? shortName);
/// Return `true` if this element, assuming that it is within scope, is
/// accessible to code in the given [library]. This is defined by the Dart
@@ -671,16 +692,18 @@
/// A declaration <i>m</i> is accessible to library <i>L</i> if <i>m</i> is
/// declared in <i>L</i> or if <i>m</i> is public.
/// </blockquote>
- bool isAccessibleIn(LibraryElement library);
+ ///
+ /// TODO(migration): should not be nullable
+ bool isAccessibleIn(LibraryElement? library);
/// Return either this element or the most immediate ancestor of this element
/// for which the [predicate] returns `true`, or `null` if there is no such
/// element.
- E thisOrAncestorMatching<E extends Element>(Predicate<Element> predicate);
+ E? thisOrAncestorMatching<E extends Element>(Predicate<Element> predicate);
/// Return either this element or the most immediate ancestor of this element
/// that has the given type, or `null` if there is no such element.
- E thisOrAncestorOfType<E extends Element>();
+ E? thisOrAncestorOfType<E extends Element>();
/// Use the given [visitor] to visit all of the children of this element.
/// There is no guarantee of the order in which the children will be visited.
@@ -694,7 +717,7 @@
/// Return the errors that were produced while computing a value for this
/// annotation, or `null` if no value has been computed. If a value has been
/// produced but no errors were generated, then the list will be empty.
- List<AnalysisError> get constantEvaluationErrors;
+ List<AnalysisError>? get constantEvaluationErrors;
/// Return the element referenced by this annotation.
///
@@ -704,7 +727,7 @@
///
/// In invalid code this element can be `null`, or a reference to any
/// other element.
- Element get element;
+ Element? get element;
/// Return `true` if this annotation marks the associated function as always
/// throwing.
@@ -792,7 +815,7 @@
/// Return a representation of the value of this annotation, forcing the value
/// to be computed if it had not previously been computed, or `null` if the
/// value of this annotation could not be computed because of errors.
- DartObject computeConstantValue();
+ DartObject? computeConstantValue();
/// Return a textual description of this annotation in a form approximating
/// valid source. The returned string will not be valid source primarily in
@@ -921,7 +944,7 @@
/// Return the kind of the given [element], or [ERROR] if the element is
/// `null`. This is a utility method that can reduce the need for null checks
/// in other places.
- static ElementKind of(Element element) {
+ static ElementKind of(Element? element) {
if (element == null) {
return ERROR;
}
@@ -954,49 +977,49 @@
/// * ThrowingElementVisitor which implements every visit method by throwing an
/// exception.
abstract class ElementVisitor<R> {
- R visitClassElement(ClassElement element);
+ R? visitClassElement(ClassElement element);
- R visitCompilationUnitElement(CompilationUnitElement element);
+ R? visitCompilationUnitElement(CompilationUnitElement element);
- R visitConstructorElement(ConstructorElement element);
+ R? visitConstructorElement(ConstructorElement element);
- R visitExportElement(ExportElement element);
+ R? visitExportElement(ExportElement element);
- R visitExtensionElement(ExtensionElement element);
+ R? visitExtensionElement(ExtensionElement element);
- R visitFieldElement(FieldElement element);
+ R? visitFieldElement(FieldElement element);
- R visitFieldFormalParameterElement(FieldFormalParameterElement element);
+ R? visitFieldFormalParameterElement(FieldFormalParameterElement element);
- R visitFunctionElement(FunctionElement element);
+ R? visitFunctionElement(FunctionElement element);
- R visitFunctionTypeAliasElement(FunctionTypeAliasElement element);
+ R? visitFunctionTypeAliasElement(FunctionTypeAliasElement element);
- R visitGenericFunctionTypeElement(GenericFunctionTypeElement element);
+ R? visitGenericFunctionTypeElement(GenericFunctionTypeElement element);
- R visitImportElement(ImportElement element);
+ R? visitImportElement(ImportElement element);
- R visitLabelElement(LabelElement element);
+ R? visitLabelElement(LabelElement element);
- R visitLibraryElement(LibraryElement element);
+ R? visitLibraryElement(LibraryElement element);
- R visitLocalVariableElement(LocalVariableElement element);
+ R? visitLocalVariableElement(LocalVariableElement element);
- R visitMethodElement(MethodElement element);
+ R? visitMethodElement(MethodElement element);
- R visitMultiplyDefinedElement(MultiplyDefinedElement element);
+ R? visitMultiplyDefinedElement(MultiplyDefinedElement element);
- R visitParameterElement(ParameterElement element);
+ R? visitParameterElement(ParameterElement element);
- R visitPrefixElement(PrefixElement element);
+ R? visitPrefixElement(PrefixElement element);
- R visitPropertyAccessorElement(PropertyAccessorElement element);
+ R? visitPropertyAccessorElement(PropertyAccessorElement element);
- R visitTopLevelVariableElement(TopLevelVariableElement element);
+ R? visitTopLevelVariableElement(TopLevelVariableElement element);
- R visitTypeAliasElement(TypeAliasElement element);
+ R? visitTypeAliasElement(TypeAliasElement element);
- R visitTypeParameterElement(TypeParameterElement element);
+ R? visitTypeParameterElement(TypeParameterElement element);
}
/// An element representing an executable object, including functions, methods,
@@ -1007,6 +1030,12 @@
@override
ExecutableElement get declaration;
+ @override
+ String get displayName;
+
+ @override
+ Element get enclosingElement;
+
/// Return `true` if this executable element did not have an explicit return
/// type specified for it in the original source. Note that if there was no
/// explicit return type, and if the element model is fully populated, then
@@ -1043,6 +1072,9 @@
/// Return `true` if this executable element has a body marked as being
/// synchronous.
bool get isSynchronous;
+
+ @override
+ String get name;
}
/// An export directive within a library.
@@ -1055,7 +1087,7 @@
/// Return the library that is exported from this library by this export
/// directive, or `null` if the URI has invalid syntax or cannot be resolved.
- LibraryElement get exportedLibrary;
+ LibraryElement? get exportedLibrary;
}
/// An element that represents an extension.
@@ -1066,6 +1098,9 @@
/// declared in this extension.
List<PropertyAccessorElement> get accessors;
+ @override
+ CompilationUnitElement get enclosingElement;
+
/// Return the type that is extended by this extension.
DartType get extendedType;
@@ -1078,17 +1113,17 @@
/// Return the element representing the getter with the given [name] that is
/// declared in this extension, or `null` if this extension does not declare a
/// getter with the given name.
- PropertyAccessorElement /*?*/ getGetter(String name);
+ PropertyAccessorElement? getGetter(String name);
/// Return the element representing the method with the given [name] that is
/// declared in this extension, or `null` if this extension does not declare a
/// method with the given name.
- MethodElement /*?*/ getMethod(String name);
+ MethodElement? getMethod(String name);
/// Return the element representing the setter with the given [name] that is
/// declared in this extension, or `null` if this extension does not declare a
/// setter with the given name.
- PropertyAccessorElement /*?*/ getSetter(String name);
+ PropertyAccessorElement? getSetter(String name);
}
/// A field defined within a class.
@@ -1128,7 +1163,7 @@
abstract class FieldFormalParameterElement implements ParameterElement {
/// Return the field element associated with this field formal parameter, or
/// `null` if the parameter references a field that doesn't exist.
- FieldElement get field;
+ FieldElement? get field;
}
/// A (non-method) function. This can be either a top-level function, a local
@@ -1175,8 +1210,8 @@
@override
FunctionType instantiate({
- @required List<DartType> typeArguments,
- @required NullabilitySuffix nullabilitySuffix,
+ required List<DartType> typeArguments,
+ required NullabilitySuffix nullabilitySuffix,
});
}
@@ -1224,7 +1259,7 @@
/// Return the library that is imported into this library by this import
/// directive, or `null` if the URI has invalid syntax or cannot be resolved.
- LibraryElement get importedLibrary;
+ LibraryElement? get importedLibrary;
/// Return `true` if this import is for a deferred library.
bool get isDeferred;
@@ -1234,7 +1269,7 @@
/// Return the prefix that was specified as part of the import directive, or
/// `null` if there was no prefix specified.
- PrefixElement get prefix;
+ PrefixElement? get prefix;
/// Return the offset of the prefix of this import in the file that contains
/// this import directive, or `-1` if this import is synthetic, does not have
@@ -1248,26 +1283,28 @@
abstract class LabelElement implements Element {
@override
ExecutableElement get enclosingElement;
+
+ @override
+ String get name;
}
/// A library.
///
/// Clients may not extend, implement or mix-in this class.
-abstract class LibraryElement implements Element {
+abstract class LibraryElement implements _ExistingElement {
/// Return the compilation unit that defines this library.
CompilationUnitElement get definingCompilationUnit;
/// Return the entry point for this library, or `null` if this library does
/// not have an entry point. The entry point is defined to be a zero argument
/// top-level function whose name is `main`.
- FunctionElement get entryPoint;
+ FunctionElement? get entryPoint;
/// Return a list containing all of the libraries that are exported from this
/// library.
List<LibraryElement> get exportedLibraries;
- /// The export [Namespace] of this library, `null` if it has not been
- /// computed yet.
+ /// The export [Namespace] of this library.
Namespace get exportNamespace;
/// Return a list containing all of the exports defined in this library.
@@ -1294,8 +1331,7 @@
/// Return a list containing all of the libraries that are imported into this
/// library. This includes all of the libraries that are imported using a
- /// prefix (also available through the prefixes returned by [getPrefixes]) and
- /// those that are imported without a prefix.
+ /// prefix and those that are imported without a prefix.
List<LibraryElement> get importedLibraries;
/// Return a list containing all of the imports defined in this library.
@@ -1334,8 +1370,7 @@
/// than one `import` directive.
List<PrefixElement> get prefixes;
- /// The public [Namespace] of this library, `null` if it has not been
- /// computed yet.
+ /// The public [Namespace] of this library.
Namespace get publicNamespace;
/// Return the name lookup scope for this library. It consists of elements
@@ -1364,7 +1399,7 @@
/// Return the class defined in this library that has the given [name], or
/// `null` if this library does not define a class with the given name.
- ClassElement getType(String className);
+ ClassElement? getType(String className);
/// If a legacy library, return the legacy view on the [element].
/// Otherwise, return the original element.
@@ -1380,11 +1415,11 @@
final Version package;
/// The version specified using `@dart` override, `null` if absent or invalid.
- final Version override;
+ final Version? override;
LibraryLanguageVersion({
- @required this.package,
- @required this.override,
+ required this.package,
+ required this.override,
});
/// The effective language version for the library.
@@ -1405,6 +1440,9 @@
abstract class LocalVariableElement implements PromotableElement {
/// Return `true` if this variable has an initializer at declaration.
bool get hasInitializer;
+
+ @override
+ String get name;
}
/// An element that represents a method defined within a class.
@@ -1455,7 +1493,7 @@
ParameterElement get declaration;
/// Return the Dart code of the default value, or `null` if no default value.
- String get defaultValueCode;
+ String? get defaultValueCode;
/// Return `true` if this parameter has a default value.
bool get hasDefaultValue;
@@ -1514,6 +1552,9 @@
/// parameter.
bool get isRequiredPositional;
+ @override
+ String get name;
+
/// Return the kind of this parameter.
@Deprecated('Use the getters isOptionalNamed, isOptionalPositional, '
'isRequiredNamed, and isRequiredPositional')
@@ -1540,10 +1581,13 @@
/// A prefix used to import one or more libraries into another library.
///
/// Clients may not extend, implement or mix-in this class.
-abstract class PrefixElement implements Element {
+abstract class PrefixElement implements _ExistingElement {
@override
LibraryElement get enclosingElement;
+ @override
+ String get name;
+
/// Return the name lookup scope for this import prefix. It consists of
/// elements imported into the enclosing library with this prefix. The
/// namespace combinators of the import directives are taken into account.
@@ -1573,16 +1617,19 @@
/// Return the accessor representing the getter that corresponds to (has the
/// same name as) this setter, or `null` if this accessor is not a setter or
/// if there is no corresponding getter.
- PropertyAccessorElement get correspondingGetter;
+ PropertyAccessorElement? get correspondingGetter;
/// Return the accessor representing the setter that corresponds to (has the
/// same name as) this getter, or `null` if this accessor is not a getter or
/// if there is no corresponding setter.
- PropertyAccessorElement get correspondingSetter;
+ PropertyAccessorElement? get correspondingSetter;
@override
PropertyAccessorElement get declaration;
+ @override
+ Element get enclosingElement;
+
/// Return `true` if this accessor represents a getter.
bool get isGetter;
@@ -1613,14 +1660,23 @@
///
/// Clients may not extend, implement or mix-in this class.
abstract class PropertyInducingElement implements VariableElement {
+ @override
+ String get displayName;
+
/// Return the getter associated with this variable. If this variable was
/// explicitly defined (is not synthetic) then the getter associated with it
/// will be synthetic.
- PropertyAccessorElement get getter;
+ PropertyAccessorElement? get getter;
/// Return `true` if this variable has an initializer at declaration.
bool get hasInitializer;
+ @override
+ LibraryElement get library;
+
+ @override
+ String get name;
+
/// Return the setter associated with this variable, or `null` if the variable
/// is effectively `final` and therefore does not have a setter associated
/// with it. (This can happen either because the variable is explicitly
@@ -1628,7 +1684,7 @@
/// explicit getter that does not have a corresponding setter.) If this
/// variable was explicitly defined (is not synthetic) then the setter
/// associated with it will be synthetic.
- PropertyAccessorElement get setter;
+ PropertyAccessorElement? get setter;
}
/// A combinator that cause some of the names in a namespace to be visible (and
@@ -1668,7 +1724,7 @@
/// For example it could be [GenericFunctionTypeElement].
///
/// If there is no structure, return `null`.
- Element get aliasedElement;
+ Element? get aliasedElement;
/// Return the aliased type.
///
@@ -1680,6 +1736,9 @@
@override
CompilationUnitElement get enclosingElement;
+ @override
+ String get name;
+
/// Produces the type resulting from instantiating this typedef with the given
/// [typeArguments] and [nullabilitySuffix].
///
@@ -1689,8 +1748,8 @@
/// typedef F<T> = void Function<U>(T, U);
/// then `F<int>` will produce `void Function<U>(int, U)`.
DartType instantiate({
- @required List<DartType> typeArguments,
- @required NullabilitySuffix nullabilitySuffix,
+ required List<DartType> typeArguments,
+ required NullabilitySuffix nullabilitySuffix,
});
}
@@ -1707,15 +1766,21 @@
/// `null` if this parameter does not have an explicit bound. Being able to
/// distinguish between an implicit and explicit bound is needed by the
/// instantiate to bounds algorithm.
- DartType get bound;
+ DartType? get bound;
@override
TypeParameterElement get declaration;
+ @override
+ String get displayName;
+
+ @override
+ String get name;
+
/// Create the [TypeParameterType] with the given [nullabilitySuffix] for
/// this type parameter.
TypeParameterType instantiate({
- @required NullabilitySuffix nullabilitySuffix,
+ required NullabilitySuffix nullabilitySuffix,
});
}
@@ -1723,7 +1788,7 @@
/// includes functions and methods if support for generic methods is enabled.
///
/// Clients may not extend, implement or mix-in this class.
-abstract class TypeParameterizedElement implements Element {
+abstract class TypeParameterizedElement implements _ExistingElement {
/// If the element defines a type, indicates whether the type may safely
/// appear without explicit type parameters as the bounds of a type parameter
/// declaration.
@@ -1748,10 +1813,10 @@
/// An element included into a library using some URI.
///
/// Clients may not extend, implement or mix-in this class.
-abstract class UriReferencedElement implements Element {
+abstract class UriReferencedElement implements _ExistingElement {
/// Return the URI that is used to include this element into the enclosing
/// library, or `null` if this is the defining compilation unit of a library.
- String get uri;
+ String? get uri;
/// Return the offset of the character immediately following the last
/// character of this node's URI, or `-1` for synthetic import.
@@ -1809,5 +1874,21 @@
/// to be computed if it had not previously been computed, or `null` if either
/// this variable was not declared with the 'const' modifier or if the value
/// of this variable could not be computed because of errors.
- DartObject computeConstantValue();
+ DartObject? computeConstantValue();
+}
+
+/// This class exists to provide non-nullable overrides for existing elements,
+/// as opposite to artificial "multiply defined" element.
+abstract class _ExistingElement implements Element {
+ @override
+ Element get declaration;
+
+ @override
+ LibraryElement get library;
+
+ @override
+ Source get librarySource;
+
+ @override
+ Source get source;
}
diff --git a/pkg/analyzer/lib/dart/element/scope.dart b/pkg/analyzer/lib/dart/element/scope.dart
index 2129a4e..82b2c0d 100644
--- a/pkg/analyzer/lib/dart/element/scope.dart
+++ b/pkg/analyzer/lib/dart/element/scope.dart
@@ -23,8 +23,8 @@
}
class ScopeLookupResult {
- final Element getter;
- final Element setter;
+ final Element? getter;
+ final Element? setter;
ScopeLookupResult(this.getter, this.setter);
}
diff --git a/pkg/analyzer/lib/dart/element/type.dart b/pkg/analyzer/lib/dart/element/type.dart
index e7c04af..88d625a 100644
--- a/pkg/analyzer/lib/dart/element/type.dart
+++ b/pkg/analyzer/lib/dart/element/type.dart
@@ -23,7 +23,6 @@
import 'package:analyzer/dart/element/nullability_suffix.dart';
import 'package:analyzer/dart/element/type_visitor.dart';
import 'package:analyzer/src/dart/element/type.dart' show InterfaceTypeImpl;
-import 'package:meta/meta.dart';
/// The type associated with elements in the element model.
///
@@ -31,11 +30,11 @@
abstract class DartType {
/// If this type is an instantiation of a type alias, return the type
/// arguments used for the instantiation. Otherwise return `null`.
- List<DartType> get aliasArguments;
+ List<DartType>? get aliasArguments;
/// If this type is an instantiation of a type alias, return it.
/// Otherwise return `null`.
- TypeAliasElement get aliasElement;
+ TypeAliasElement? get aliasElement;
/// Return the name of this type as it should appear when presented to users
/// in contexts such as error messages.
@@ -49,7 +48,7 @@
/// the type has not, or cannot, be associated with an element. The former
/// case will occur if the element model is not yet complete; the latter case
/// will occur if this object represents an undefined type.
- Element get element;
+ Element? get element;
/// Return `true` if this type represents the bottom type.
bool get isBottom;
@@ -123,7 +122,7 @@
/// Return the name of this type, or `null` if the type does not have a name,
/// such as when the type represents the type of an unnamed function.
@Deprecated('Check element, or use getDisplayString()')
- String get name;
+ String? get name;
/// Return the nullability suffix of this type.
NullabilitySuffix get nullabilitySuffix;
@@ -152,7 +151,7 @@
///
/// For a [TypeParameterType] with a bound (declared or promoted), returns
/// the interface implemented by the bound.
- InterfaceType asInstanceOf(ClassElement element);
+ InterfaceType? asInstanceOf(ClassElement element);
/// Return the presentation of this type as it should appear when presented
/// to users in contexts such as error messages.
@@ -166,7 +165,7 @@
///
/// Clients should not depend on the content of the returned value as it will
/// be changed if doing so would improve the UX.
- String getDisplayString({@required bool withNullability});
+ String getDisplayString({required bool withNullability});
/// If this type is a [TypeParameterType], returns its bound if it has one, or
/// [objectType] otherwise.
@@ -286,7 +285,7 @@
/// general, equivalent to getting the superclass from this type's element
/// because the type returned by this method will have had it's type
/// parameters replaced.
- InterfaceType get superclass;
+ InterfaceType? get superclass;
/// Return a list containing all of the super-class constraints that this
/// mixin declaration declares. The list will be empty if this class does not
@@ -296,17 +295,17 @@
/// Return the element representing the getter with the given [name] that is
/// declared in this class, or `null` if this class does not declare a getter
/// with the given name.
- PropertyAccessorElement getGetter(String name);
+ PropertyAccessorElement? getGetter(String name);
/// Return the element representing the method with the given [name] that is
/// declared in this class, or `null` if this class does not declare a method
/// with the given name.
- MethodElement getMethod(String name);
+ MethodElement? getMethod(String name);
/// Return the element representing the setter with the given [name] that is
/// declared in this class, or `null` if this class does not declare a setter
/// with the given name.
- PropertyAccessorElement getSetter(String name);
+ PropertyAccessorElement? getSetter(String name);
/// Return the element representing the constructor that results from looking
/// up the constructor with the given [name] in this class with respect to the
@@ -318,7 +317,7 @@
/// <i>T<i>. Otherwise, if <i>q</i> is not defined or not accessible, a
/// NoSuchMethodException is thrown.
/// </blockquote>
- ConstructorElement lookUpConstructor(String name, LibraryElement library);
+ ConstructorElement? lookUpConstructor(String? name, LibraryElement library);
/// Return the element representing the getter that results from looking up
/// the getter with the given [name] in this class with respect to the given
@@ -335,7 +334,7 @@
/// respect to <i>L</i>. Otherwise, we say that the lookup has failed.
/// </blockquote>
@Deprecated('Use lookupGetter2 instead')
- PropertyAccessorElement lookUpGetter(String name, LibraryElement library);
+ PropertyAccessorElement? lookUpGetter(String name, LibraryElement library);
/// Return the getter with the given [name].
///
@@ -347,7 +346,7 @@
///
/// If [recoveryStatic] is `true`, then static getters of the class,
/// and its superclasses are considered. Clients should not use it.
- PropertyAccessorElement lookUpGetter2(
+ PropertyAccessorElement? lookUpGetter2(
String name,
LibraryElement library, {
bool concrete = false,
@@ -371,8 +370,8 @@
/// respect to <i>L</i>. Otherwise, we say that the lookup has failed.
/// </blockquote>
@Deprecated('Use lookupGetter2 instead')
- PropertyAccessorElement lookUpGetterInSuperclass(
- String name, LibraryElement library);
+ PropertyAccessorElement? lookUpGetterInSuperclass(
+ String name, LibraryElement? library);
/// Look up the member with the given [name] in this type and all extended
/// and mixed in classes, and by default including [thisType]. If the search
@@ -384,8 +383,8 @@
/// The [library] determines if a private member name is visible, and does not
/// need to be supplied for public names.
@Deprecated('Use lookupGetter2 instead')
- PropertyAccessorElement lookUpInheritedGetter(String name,
- {LibraryElement library, bool thisType = true});
+ PropertyAccessorElement? lookUpInheritedGetter(String name,
+ {LibraryElement? library, bool thisType = true});
/// Look up the member with the given [name] in this type and all extended
/// and mixed in classes, starting from this type. If the search fails,
@@ -397,8 +396,8 @@
/// The [library] determines if a private member name is visible, and does not
/// need to be supplied for public names.
@Deprecated('Use lookupGetter2 and/or lookupMethod2 instead')
- ExecutableElement lookUpInheritedGetterOrMethod(String name,
- {LibraryElement library});
+ ExecutableElement? lookUpInheritedGetterOrMethod(String name,
+ {LibraryElement? library});
/// Look up the member with the given [name] in this type and all extended
/// and mixed in classes, and by default including [thisType]. If the search
@@ -410,8 +409,8 @@
/// The [library] determines if a private member name is visible, and does not
/// need to be supplied for public names.
@Deprecated('Use lookupMethod2 instead')
- MethodElement lookUpInheritedMethod(String name,
- {LibraryElement library, bool thisType = true});
+ MethodElement? lookUpInheritedMethod(String name,
+ {LibraryElement? library, bool thisType = true});
/// Look up the member with the given [name] in this type and all extended
/// and mixed in classes, and by default including [thisType]. If the search
@@ -423,8 +422,8 @@
/// The [library] determines if a private member name is visible, and does not
/// need to be supplied for public names.
@Deprecated('Use lookupSetter2 instead')
- PropertyAccessorElement lookUpInheritedSetter(String name,
- {LibraryElement library, bool thisType = true});
+ PropertyAccessorElement? lookUpInheritedSetter(String name,
+ {LibraryElement? library, bool thisType = true});
/// Return the element representing the method that results from looking up
/// the method with the given [name] in this class with respect to the given
@@ -440,7 +439,7 @@
/// respect to <i>L</i> Otherwise, we say that the lookup has failed.
/// </blockquote>
@Deprecated('Use lookupMethod2 instead')
- MethodElement lookUpMethod(String name, LibraryElement library);
+ MethodElement? lookUpMethod(String name, LibraryElement library);
/// Return the method with the given [name].
///
@@ -452,7 +451,7 @@
///
/// If [recoveryStatic] is `true`, then static methods of the class,
/// and its superclasses are considered. Clients should not use it.
- MethodElement lookUpMethod2(
+ MethodElement? lookUpMethod2(
String name,
LibraryElement library, {
bool concrete = false,
@@ -476,7 +475,7 @@
/// * Otherwise, we say that the lookup has failed.
/// </blockquote>
@Deprecated('Use lookupMethod2 instead')
- MethodElement lookUpMethodInSuperclass(String name, LibraryElement library);
+ MethodElement? lookUpMethodInSuperclass(String name, LibraryElement library);
/// Return the element representing the setter that results from looking up
/// the setter with the given [name] in this class with respect to the given
@@ -493,7 +492,7 @@
/// respect to <i>L</i>. Otherwise, we say that the lookup has failed.
/// </blockquote>
@Deprecated('Use lookupSetter2 instead')
- PropertyAccessorElement lookUpSetter(String name, LibraryElement library);
+ PropertyAccessorElement? lookUpSetter(String name, LibraryElement library);
/// Return the setter with the given [name].
///
@@ -505,7 +504,7 @@
///
/// If [recoveryStatic] is `true`, then static setters of the class,
/// and its superclasses are considered. Clients should not use it.
- PropertyAccessorElement lookUpSetter2(
+ PropertyAccessorElement? lookUpSetter2(
String name,
LibraryElement library, {
bool concrete = false,
@@ -529,7 +528,7 @@
/// respect to <i>L</i>. Otherwise, we say that the lookup has failed.
/// </blockquote>
@Deprecated('Use lookupSetter2 instead')
- PropertyAccessorElement lookUpSetterInSuperclass(
+ PropertyAccessorElement? lookUpSetterInSuperclass(
String name, LibraryElement library);
/// Returns a "smart" version of the "least upper bound" of the given types.
diff --git a/pkg/analyzer/lib/dart/element/type_system.dart b/pkg/analyzer/lib/dart/element/type_system.dart
index 865e8d3..8e3d4db 100644
--- a/pkg/analyzer/lib/dart/element/type_system.dart
+++ b/pkg/analyzer/lib/dart/element/type_system.dart
@@ -41,11 +41,11 @@
/// One and only one of [classElement] or [typeAliasElement] must
/// be provided.
DartType instantiateToBounds2({
- ClassElement classElement,
+ ClassElement? classElement,
@Deprecated("Use 'typeAliasElement' instead")
- FunctionTypeAliasElement functionTypeAliasElement,
- TypeAliasElement typeAliasElement,
- @required NullabilitySuffix nullabilitySuffix,
+ FunctionTypeAliasElement? functionTypeAliasElement,
+ TypeAliasElement? typeAliasElement,
+ required NullabilitySuffix nullabilitySuffix,
});
/// Return `true` if the [leftType] is assignable to the [rightType].
diff --git a/pkg/analyzer/lib/dart/element/visitor.dart b/pkg/analyzer/lib/dart/element/visitor.dart
index f6256b8..27f3283 100644
--- a/pkg/analyzer/lib/dart/element/visitor.dart
+++ b/pkg/analyzer/lib/dart/element/visitor.dart
@@ -83,58 +83,59 @@
const GeneralizingElementVisitor();
@override
- R visitClassElement(ClassElement element) => visitElement(element);
+ R? visitClassElement(ClassElement element) => visitElement(element);
@override
- R visitCompilationUnitElement(CompilationUnitElement element) =>
+ R? visitCompilationUnitElement(CompilationUnitElement element) =>
visitElement(element);
@override
- R visitConstructorElement(ConstructorElement element) =>
+ R? visitConstructorElement(ConstructorElement element) =>
visitExecutableElement(element);
- R visitElement(Element element) {
+ R? visitElement(Element element) {
element.visitChildren(this);
return null;
}
- R visitExecutableElement(ExecutableElement element) => visitElement(element);
+ R? visitExecutableElement(ExecutableElement element) => visitElement(element);
@override
- R visitExportElement(ExportElement element) => visitElement(element);
+ R? visitExportElement(ExportElement element) => visitElement(element);
@override
- R visitExtensionElement(ExtensionElement element) => visitElement(element);
+ R? visitExtensionElement(ExtensionElement element) => visitElement(element);
@override
- R visitFieldElement(FieldElement element) =>
+ R? visitFieldElement(FieldElement element) =>
visitPropertyInducingElement(element);
@override
- R visitFieldFormalParameterElement(FieldFormalParameterElement element) =>
+ R? visitFieldFormalParameterElement(FieldFormalParameterElement element) =>
visitParameterElement(element);
@override
- R visitFunctionElement(FunctionElement element) => visitLocalElement(element);
+ R? visitFunctionElement(FunctionElement element) =>
+ visitLocalElement(element);
@override
- R visitFunctionTypeAliasElement(FunctionTypeAliasElement element) =>
+ R? visitFunctionTypeAliasElement(FunctionTypeAliasElement element) =>
visitElement(element);
@override
- R visitGenericFunctionTypeElement(GenericFunctionTypeElement element) =>
+ R? visitGenericFunctionTypeElement(GenericFunctionTypeElement element) =>
visitElement(element);
@override
- R visitImportElement(ImportElement element) => visitElement(element);
+ R? visitImportElement(ImportElement element) => visitElement(element);
@override
- R visitLabelElement(LabelElement element) => visitElement(element);
+ R? visitLabelElement(LabelElement element) => visitElement(element);
@override
- R visitLibraryElement(LibraryElement element) => visitElement(element);
+ R? visitLibraryElement(LibraryElement element) => visitElement(element);
- R visitLocalElement(LocalElement element) {
+ R? visitLocalElement(LocalElement element) {
if (element is LocalVariableElement) {
return visitVariableElement(element);
} else if (element is ParameterElement) {
@@ -146,43 +147,43 @@
}
@override
- R visitLocalVariableElement(LocalVariableElement element) =>
+ R? visitLocalVariableElement(LocalVariableElement element) =>
visitLocalElement(element);
@override
- R visitMethodElement(MethodElement element) =>
+ R? visitMethodElement(MethodElement element) =>
visitExecutableElement(element);
@override
- R visitMultiplyDefinedElement(MultiplyDefinedElement element) =>
+ R? visitMultiplyDefinedElement(MultiplyDefinedElement element) =>
visitElement(element);
@override
- R visitParameterElement(ParameterElement element) =>
+ R? visitParameterElement(ParameterElement element) =>
visitLocalElement(element);
@override
- R visitPrefixElement(PrefixElement element) => visitElement(element);
+ R? visitPrefixElement(PrefixElement element) => visitElement(element);
@override
- R visitPropertyAccessorElement(PropertyAccessorElement element) =>
+ R? visitPropertyAccessorElement(PropertyAccessorElement element) =>
visitExecutableElement(element);
- R visitPropertyInducingElement(PropertyInducingElement element) =>
+ R? visitPropertyInducingElement(PropertyInducingElement element) =>
visitVariableElement(element);
@override
- R visitTopLevelVariableElement(TopLevelVariableElement element) =>
+ R? visitTopLevelVariableElement(TopLevelVariableElement element) =>
visitPropertyInducingElement(element);
@override
- R visitTypeAliasElement(TypeAliasElement element) => visitElement(element);
+ R? visitTypeAliasElement(TypeAliasElement element) => visitElement(element);
@override
- R visitTypeParameterElement(TypeParameterElement element) =>
+ R? visitTypeParameterElement(TypeParameterElement element) =>
visitElement(element);
- R visitVariableElement(VariableElement element) => visitElement(element);
+ R? visitVariableElement(VariableElement element) => visitElement(element);
}
/// A visitor that will recursively visit all of the element in an element
@@ -201,133 +202,133 @@
const RecursiveElementVisitor();
@override
- R visitClassElement(ClassElement element) {
+ R? visitClassElement(ClassElement element) {
element.visitChildren(this);
return null;
}
@override
- R visitCompilationUnitElement(CompilationUnitElement element) {
+ R? visitCompilationUnitElement(CompilationUnitElement element) {
element.visitChildren(this);
return null;
}
@override
- R visitConstructorElement(ConstructorElement element) {
+ R? visitConstructorElement(ConstructorElement element) {
element.visitChildren(this);
return null;
}
@override
- R visitExportElement(ExportElement element) {
+ R? visitExportElement(ExportElement element) {
element.visitChildren(this);
return null;
}
@override
- R visitExtensionElement(ExtensionElement element) {
+ R? visitExtensionElement(ExtensionElement element) {
element.visitChildren(this);
return null;
}
@override
- R visitFieldElement(FieldElement element) {
+ R? visitFieldElement(FieldElement element) {
element.visitChildren(this);
return null;
}
@override
- R visitFieldFormalParameterElement(FieldFormalParameterElement element) {
+ R? visitFieldFormalParameterElement(FieldFormalParameterElement element) {
element.visitChildren(this);
return null;
}
@override
- R visitFunctionElement(FunctionElement element) {
+ R? visitFunctionElement(FunctionElement element) {
element.visitChildren(this);
return null;
}
@override
- R visitFunctionTypeAliasElement(FunctionTypeAliasElement element) {
+ R? visitFunctionTypeAliasElement(FunctionTypeAliasElement element) {
element.visitChildren(this);
return null;
}
@override
- R visitGenericFunctionTypeElement(GenericFunctionTypeElement element) {
+ R? visitGenericFunctionTypeElement(GenericFunctionTypeElement element) {
element.visitChildren(this);
return null;
}
@override
- R visitImportElement(ImportElement element) {
+ R? visitImportElement(ImportElement element) {
element.visitChildren(this);
return null;
}
@override
- R visitLabelElement(LabelElement element) {
+ R? visitLabelElement(LabelElement element) {
element.visitChildren(this);
return null;
}
@override
- R visitLibraryElement(LibraryElement element) {
+ R? visitLibraryElement(LibraryElement element) {
element.visitChildren(this);
return null;
}
@override
- R visitLocalVariableElement(LocalVariableElement element) {
+ R? visitLocalVariableElement(LocalVariableElement element) {
element.visitChildren(this);
return null;
}
@override
- R visitMethodElement(MethodElement element) {
+ R? visitMethodElement(MethodElement element) {
element.visitChildren(this);
return null;
}
@override
- R visitMultiplyDefinedElement(MultiplyDefinedElement element) {
+ R? visitMultiplyDefinedElement(MultiplyDefinedElement element) {
element.visitChildren(this);
return null;
}
@override
- R visitParameterElement(ParameterElement element) {
+ R? visitParameterElement(ParameterElement element) {
element.visitChildren(this);
return null;
}
@override
- R visitPrefixElement(PrefixElement element) {
+ R? visitPrefixElement(PrefixElement element) {
element.visitChildren(this);
return null;
}
@override
- R visitPropertyAccessorElement(PropertyAccessorElement element) {
+ R? visitPropertyAccessorElement(PropertyAccessorElement element) {
element.visitChildren(this);
return null;
}
@override
- R visitTopLevelVariableElement(TopLevelVariableElement element) {
+ R? visitTopLevelVariableElement(TopLevelVariableElement element) {
element.visitChildren(this);
return null;
}
@override
- R visitTypeAliasElement(TypeAliasElement element) {
+ R? visitTypeAliasElement(TypeAliasElement element) {
element.visitChildren(this);
return null;
}
@override
- R visitTypeParameterElement(TypeParameterElement element) {
+ R? visitTypeParameterElement(TypeParameterElement element) {
element.visitChildren(this);
return null;
}
@@ -344,71 +345,72 @@
const SimpleElementVisitor();
@override
- R visitClassElement(ClassElement element) => null;
+ R? visitClassElement(ClassElement element) => null;
@override
- R visitCompilationUnitElement(CompilationUnitElement element) => null;
+ R? visitCompilationUnitElement(CompilationUnitElement element) => null;
@override
- R visitConstructorElement(ConstructorElement element) => null;
+ R? visitConstructorElement(ConstructorElement element) => null;
@override
- R visitExportElement(ExportElement element) => null;
+ R? visitExportElement(ExportElement element) => null;
@override
- R visitExtensionElement(ExtensionElement element) => null;
+ R? visitExtensionElement(ExtensionElement element) => null;
@override
- R visitFieldElement(FieldElement element) => null;
+ R? visitFieldElement(FieldElement element) => null;
@override
- R visitFieldFormalParameterElement(FieldFormalParameterElement element) =>
+ R? visitFieldFormalParameterElement(FieldFormalParameterElement element) =>
null;
@override
- R visitFunctionElement(FunctionElement element) => null;
+ R? visitFunctionElement(FunctionElement element) => null;
@override
- R visitFunctionTypeAliasElement(FunctionTypeAliasElement element) => null;
+ R? visitFunctionTypeAliasElement(FunctionTypeAliasElement element) => null;
@override
- R visitGenericFunctionTypeElement(GenericFunctionTypeElement element) => null;
+ R? visitGenericFunctionTypeElement(GenericFunctionTypeElement element) =>
+ null;
@override
- R visitImportElement(ImportElement element) => null;
+ R? visitImportElement(ImportElement element) => null;
@override
- R visitLabelElement(LabelElement element) => null;
+ R? visitLabelElement(LabelElement element) => null;
@override
- R visitLibraryElement(LibraryElement element) => null;
+ R? visitLibraryElement(LibraryElement element) => null;
@override
- R visitLocalVariableElement(LocalVariableElement element) => null;
+ R? visitLocalVariableElement(LocalVariableElement element) => null;
@override
- R visitMethodElement(MethodElement element) => null;
+ R? visitMethodElement(MethodElement element) => null;
@override
- R visitMultiplyDefinedElement(MultiplyDefinedElement element) => null;
+ R? visitMultiplyDefinedElement(MultiplyDefinedElement element) => null;
@override
- R visitParameterElement(ParameterElement element) => null;
+ R? visitParameterElement(ParameterElement element) => null;
@override
- R visitPrefixElement(PrefixElement element) => null;
+ R? visitPrefixElement(PrefixElement element) => null;
@override
- R visitPropertyAccessorElement(PropertyAccessorElement element) => null;
+ R? visitPropertyAccessorElement(PropertyAccessorElement element) => null;
@override
- R visitTopLevelVariableElement(TopLevelVariableElement element) => null;
+ R? visitTopLevelVariableElement(TopLevelVariableElement element) => null;
@override
- R visitTypeAliasElement(TypeAliasElement element) => null;
+ R? visitTypeAliasElement(TypeAliasElement element) => null;
@override
- R visitTypeParameterElement(TypeParameterElement element) => null;
+ R? visitTypeParameterElement(TypeParameterElement element) => null;
}
/// An AST visitor that will throw an exception if any of the visit methods that
@@ -423,77 +425,77 @@
const ThrowingElementVisitor();
@override
- R visitClassElement(ClassElement element) => _throw(element);
+ R? visitClassElement(ClassElement element) => _throw(element);
@override
- R visitCompilationUnitElement(CompilationUnitElement element) =>
+ R? visitCompilationUnitElement(CompilationUnitElement element) =>
_throw(element);
@override
- R visitConstructorElement(ConstructorElement element) => _throw(element);
+ R? visitConstructorElement(ConstructorElement element) => _throw(element);
@override
- R visitExportElement(ExportElement element) => _throw(element);
+ R? visitExportElement(ExportElement element) => _throw(element);
@override
- R visitExtensionElement(ExtensionElement element) => _throw(element);
+ R? visitExtensionElement(ExtensionElement element) => _throw(element);
@override
- R visitFieldElement(FieldElement element) => _throw(element);
+ R? visitFieldElement(FieldElement element) => _throw(element);
@override
- R visitFieldFormalParameterElement(FieldFormalParameterElement element) =>
+ R? visitFieldFormalParameterElement(FieldFormalParameterElement element) =>
_throw(element);
@override
- R visitFunctionElement(FunctionElement element) => _throw(element);
+ R? visitFunctionElement(FunctionElement element) => _throw(element);
@override
- R visitFunctionTypeAliasElement(FunctionTypeAliasElement element) =>
+ R? visitFunctionTypeAliasElement(FunctionTypeAliasElement element) =>
_throw(element);
@override
- R visitGenericFunctionTypeElement(GenericFunctionTypeElement element) =>
+ R? visitGenericFunctionTypeElement(GenericFunctionTypeElement element) =>
_throw(element);
@override
- R visitImportElement(ImportElement element) => _throw(element);
+ R? visitImportElement(ImportElement element) => _throw(element);
@override
- R visitLabelElement(LabelElement element) => _throw(element);
+ R? visitLabelElement(LabelElement element) => _throw(element);
@override
- R visitLibraryElement(LibraryElement element) => _throw(element);
+ R? visitLibraryElement(LibraryElement element) => _throw(element);
@override
- R visitLocalVariableElement(LocalVariableElement element) => _throw(element);
+ R? visitLocalVariableElement(LocalVariableElement element) => _throw(element);
@override
- R visitMethodElement(MethodElement element) => _throw(element);
+ R? visitMethodElement(MethodElement element) => _throw(element);
@override
- R visitMultiplyDefinedElement(MultiplyDefinedElement element) =>
+ R? visitMultiplyDefinedElement(MultiplyDefinedElement element) =>
_throw(element);
@override
- R visitParameterElement(ParameterElement element) => _throw(element);
+ R? visitParameterElement(ParameterElement element) => _throw(element);
@override
- R visitPrefixElement(PrefixElement element) => _throw(element);
+ R? visitPrefixElement(PrefixElement element) => _throw(element);
@override
- R visitPropertyAccessorElement(PropertyAccessorElement element) =>
+ R? visitPropertyAccessorElement(PropertyAccessorElement element) =>
_throw(element);
@override
- R visitTopLevelVariableElement(TopLevelVariableElement element) =>
+ R? visitTopLevelVariableElement(TopLevelVariableElement element) =>
_throw(element);
@override
- R visitTypeAliasElement(TypeAliasElement element) => _throw(element);
+ R? visitTypeAliasElement(TypeAliasElement element) => _throw(element);
@override
- R visitTypeParameterElement(TypeParameterElement element) => _throw(element);
+ R? visitTypeParameterElement(TypeParameterElement element) => _throw(element);
R _throw(Element element) {
throw Exception('Missing implementation of visit${element.runtimeType}');
diff --git a/pkg/analyzer/lib/dart/sdk/build_sdk_summary.dart b/pkg/analyzer/lib/dart/sdk/build_sdk_summary.dart
index 1caa015..c3c27aa 100644
--- a/pkg/analyzer/lib/dart/sdk/build_sdk_summary.dart
+++ b/pkg/analyzer/lib/dart/sdk/build_sdk_summary.dart
@@ -12,6 +12,7 @@
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/file_system/file_system.dart';
import 'package:analyzer/src/context/context.dart';
+import 'package:analyzer/src/dart/analysis/driver.dart';
import 'package:analyzer/src/dart/analysis/session.dart';
import 'package:analyzer/src/dart/ast/ast.dart';
import 'package:analyzer/src/dart/sdk/sdk.dart';
@@ -21,7 +22,6 @@
import 'package:analyzer/src/summary2/linked_element_factory.dart';
import 'package:analyzer/src/summary2/package_bundle_format.dart';
import 'package:analyzer/src/summary2/reference.dart';
-import 'package:meta/meta.dart';
import 'package:pub_semver/pub_semver.dart';
import 'package:yaml/yaml.dart';
@@ -30,9 +30,9 @@
/// If [embedderYamlPath] is provided, then libraries from this file are
/// appended to the libraries of the specified SDK.
Uint8List buildSdkSummary({
- @required ResourceProvider resourceProvider,
- @required String sdkPath,
- String embedderYamlPath,
+ required ResourceProvider resourceProvider,
+ required String sdkPath,
+ String? embedderYamlPath,
}) {
var sdk = FolderBasedDartSdk(
resourceProvider,
@@ -46,7 +46,7 @@
var map = loadYaml(content) as YamlMap;
var embedderSdk = EmbedderSdk(
resourceProvider,
- {file.parent: map},
+ {file.parent!: map},
languageVersion: sdk.languageVersion,
);
for (var library in embedderSdk.sdkLibraries) {
@@ -58,7 +58,7 @@
}
var librarySources = sdk.sdkLibraries.map((e) {
- return sdk.mapDartUri(e.shortName);
+ return sdk.mapDartUri(e.shortName)!;
}).toList();
var analysisContext = AnalysisContextImpl(
@@ -82,7 +82,7 @@
final Set<String> libraryUris = <String>{};
final List<LinkInputLibrary> inputLibraries = [];
- AllowedExperiments allowedExperiments;
+ late final AllowedExperiments allowedExperiments;
Version languageVersion;
_Builder(
@@ -91,7 +91,7 @@
this.languageVersion,
this.librarySources,
) {
- allowedExperiments = _parseAllowedExperiments(allowedExperimentsJson);
+ allowedExperiments = parseAllowedExperiments(allowedExperimentsJson);
}
/// Build the linked bundle and return its bytes.
@@ -100,7 +100,9 @@
var elementFactory = LinkedElementFactory(
context,
- AnalysisSessionImpl(null),
+ AnalysisSessionImpl(
+ _FakeAnalysisDriver(),
+ ),
Reference.root(),
);
@@ -139,12 +141,12 @@
for (Directive directive in definingUnit.directives) {
if (directive is NamespaceDirective) {
- String libUri = directive.uri.stringValue;
- Source libSource = context.sourceFactory.resolveUri(source, libUri);
+ String libUri = directive.uri.stringValue!;
+ Source libSource = context.sourceFactory.resolveUri(source, libUri)!;
_addLibrary(libSource);
} else if (directive is PartDirective) {
- String partUri = directive.uri.stringValue;
- Source partSource = context.sourceFactory.resolveUri(source, partUri);
+ String partUri = directive.uri.stringValue!;
+ Source partSource = context.sourceFactory.resolveUri(source, partUri)!;
CompilationUnit partUnit = _parse(partSource);
inputUnits.add(
LinkInputUnit(partUri, partSource, false, partUnit),
@@ -203,6 +205,7 @@
content: _getContent(source),
featureSet: _featureSet(source.uri),
throwIfDiagnostics: false,
+ path: source.fullName,
);
if (result.errors.isNotEmpty) {
@@ -223,16 +226,9 @@
return result.unit;
}
+}
- static AllowedExperiments _parseAllowedExperiments(String content) {
- if (content == null) {
- return AllowedExperiments(
- sdkDefaultExperiments: [],
- sdkLibraryExperiments: {},
- packageExperiments: {},
- );
- }
-
- return parseAllowedExperiments(content);
- }
+class _FakeAnalysisDriver implements AnalysisDriver {
+ @override
+ noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
}
diff --git a/pkg/analyzer/lib/diagnostic/diagnostic.dart b/pkg/analyzer/lib/diagnostic/diagnostic.dart
index 43b099a..424135c 100644
--- a/pkg/analyzer/lib/diagnostic/diagnostic.dart
+++ b/pkg/analyzer/lib/diagnostic/diagnostic.dart
@@ -17,7 +17,7 @@
/// A description of how to fix the problem, or `null` if there is no such
/// description.
- String get correctionMessage;
+ String? get correctionMessage;
/// A message describing what is wrong and why.
DiagnosticMessage get problemMessage;
diff --git a/pkg/analyzer/lib/error/error.dart b/pkg/analyzer/lib/error/error.dart
index 5f442af..a1b53cc 100644
--- a/pkg/analyzer/lib/error/error.dart
+++ b/pkg/analyzer/lib/error/error.dart
@@ -843,27 +843,32 @@
/// The lazy initialized map from [ErrorCode.uniqueName] to the [ErrorCode]
/// instance.
-/*late final*/ HashMap<String, ErrorCode> _uniqueNameToCodeMap;
+late final HashMap<String, ErrorCode> _uniqueNameToCodeMap =
+ _computeUniqueNameToCodeMap();
/// Return the [ErrorCode] with the given [uniqueName], or `null` if not
/// found.
-ErrorCode errorCodeByUniqueName(String uniqueName) {
- if (_uniqueNameToCodeMap == null) {
- _uniqueNameToCodeMap = HashMap<String, ErrorCode>();
- for (ErrorCode errorCode in errorCodeValues) {
- var uniqueName = errorCode.uniqueName;
- assert(() {
- if (_uniqueNameToCodeMap.containsKey(uniqueName)) {
- throw StateError('Not unique: $uniqueName');
- }
- return true;
- }());
- _uniqueNameToCodeMap[uniqueName] = errorCode;
- }
- }
+ErrorCode? errorCodeByUniqueName(String uniqueName) {
return _uniqueNameToCodeMap[uniqueName];
}
+/// Return the map from [ErrorCode.uniqueName] to the [ErrorCode] instance
+/// for all [errorCodeValues].
+HashMap<String, ErrorCode> _computeUniqueNameToCodeMap() {
+ var result = HashMap<String, ErrorCode>();
+ for (ErrorCode errorCode in errorCodeValues) {
+ var uniqueName = errorCode.uniqueName;
+ assert(() {
+ if (result.containsKey(uniqueName)) {
+ throw StateError('Not unique: $uniqueName');
+ }
+ return true;
+ }());
+ result[uniqueName] = errorCode;
+ }
+ return result;
+}
+
/// An error discovered during the analysis of some Dart code.
///
/// See [AnalysisErrorListener].
@@ -898,15 +903,15 @@
final ErrorCode errorCode;
/// The message describing the problem.
- DiagnosticMessage _problemMessage;
+ late final DiagnosticMessage _problemMessage;
/// The context messages associated with the problem. This list will be empty
/// if there are no context messages.
- List<DiagnosticMessage> _contextMessages;
+ final List<DiagnosticMessage> _contextMessages;
/// The correction to be displayed for this error, or `null` if there is no
/// correction information for this error.
- String _correction;
+ String? _correction;
/// The source in which the error occurred, or `null` if unknown.
final Source source;
@@ -917,31 +922,31 @@
/// [arguments] will be used to complete the message and correction. If any
/// [contextMessages] are provided, they will be recorded with the error.
AnalysisError(this.source, int offset, int length, this.errorCode,
- [List<Object> arguments,
- List<DiagnosticMessage> contextMessages = const []]) {
+ [List<Object?>? arguments,
+ List<DiagnosticMessage> contextMessages = const []])
+ : _contextMessages = contextMessages {
String message = formatList(errorCode.message, arguments);
- String correctionTemplate = errorCode.correction;
+ String? correctionTemplate = errorCode.correction;
if (correctionTemplate != null) {
_correction = formatList(correctionTemplate, arguments);
}
_problemMessage = DiagnosticMessageImpl(
- filePath: source?.fullName,
+ filePath: source.fullName,
length: length,
message: message,
offset: offset);
- _contextMessages = contextMessages;
}
/// Initialize a newly created analysis error with given values.
AnalysisError.forValues(this.source, int offset, int length, this.errorCode,
String message, this._correction,
- {List<DiagnosticMessage> contextMessages = const []}) {
+ {List<DiagnosticMessage> contextMessages = const []})
+ : _contextMessages = contextMessages {
_problemMessage = DiagnosticMessageImpl(
- filePath: source?.fullName,
+ filePath: source.fullName,
length: length,
message: message,
offset: offset);
- _contextMessages = contextMessages;
}
/// Initialize a newly created analysis error. The error is associated with
@@ -951,18 +956,19 @@
/// [contextMessages] are provided, they will be recorded with the error.
AnalysisError.withNamedArguments(this.source, int offset, int length,
this.errorCode, Map<String, dynamic> arguments,
- {List<DiagnosticMessage> contextMessages = const []}) {
- String messageText = applyArgumentsToTemplate(errorCode.message, arguments);
- String correctionTemplate = errorCode.correction;
+ {List<DiagnosticMessage> contextMessages = const []})
+ : _contextMessages = contextMessages {
+ var messageText = applyArgumentsToTemplate(errorCode.message, arguments);
+ var correctionTemplate = errorCode.correction;
if (correctionTemplate != null) {
_correction = applyArgumentsToTemplate(correctionTemplate, arguments);
}
_problemMessage = DiagnosticMessageImpl(
- filePath: source?.fullName,
- length: length,
- message: messageText,
- offset: offset);
- _contextMessages = contextMessages;
+ filePath: source.fullName,
+ length: length,
+ message: messageText,
+ offset: offset,
+ );
}
@override
@@ -971,16 +977,16 @@
/// Return the template used to create the correction to be displayed for this
/// error, or `null` if there is no correction information for this error. The
/// correction should indicate how the user can fix the error.
- String get correction => _correction;
+ String? get correction => _correction;
@override
- String get correctionMessage => _correction;
+ String? get correctionMessage => _correction;
@override
int get hashCode {
int hashCode = offset;
- hashCode ^= (message != null) ? message.hashCode : 0;
- hashCode ^= (source != null) ? source.hashCode : 0;
+ hashCode ^= message.hashCode;
+ hashCode ^= source.hashCode;
return hashCode;
}
@@ -1043,7 +1049,7 @@
@override
String toString() {
StringBuffer buffer = StringBuffer();
- buffer.write((source != null) ? source.fullName : "<unknown source>");
+ buffer.write(source.fullName);
buffer.write("(");
buffer.write(offset);
buffer.write("..");
diff --git a/pkg/analyzer/lib/error/listener.dart b/pkg/analyzer/lib/error/listener.dart
index e1ab6be..7de0ed7 100644
--- a/pkg/analyzer/lib/error/listener.dart
+++ b/pkg/analyzer/lib/error/listener.dart
@@ -48,37 +48,20 @@
/// The error listener to which errors will be reported.
final AnalysisErrorListener _errorListener;
- /// The default source to be used when reporting errors.
- final Source _defaultSource;
-
/// Is `true` if the library being analyzed is non-nullable by default.
final bool isNonNullableByDefault;
/// The source to be used when reporting errors.
- Source _source;
+ final Source _source;
/// Initialize a newly created error reporter that will report errors to the
/// given [_errorListener]. Errors will be reported against the
/// [_defaultSource] unless another source is provided later.
- ErrorReporter(this._errorListener, this._defaultSource,
- {this.isNonNullableByDefault = false}) {
- if (_errorListener == null) {
- throw ArgumentError("An error listener must be provided");
- } else if (_defaultSource == null) {
- throw ArgumentError("A default source must be provided");
- }
- _source = _defaultSource;
- }
+ ErrorReporter(this._errorListener, this._source,
+ {this.isNonNullableByDefault = false});
Source get source => _source;
- /// Set the source to be used when reporting errors to the given [source].
- /// Setting the source to `null` will cause the default source to be used.
- @Deprecated('Create separate reporters for separate files')
- set source(Source source) {
- _source = source ?? _defaultSource;
- }
-
/// Report the given [error].
void reportError(AnalysisError error) {
_errorListener.onError(error);
@@ -87,7 +70,7 @@
/// Report an error with the given [errorCode] and [arguments]. The [element]
/// is used to compute the location of the error.
void reportErrorForElement(ErrorCode errorCode, Element element,
- [List<Object> arguments]) {
+ [List<Object>? arguments]) {
reportErrorForOffset(
errorCode, element.nameOffset, element.nameLength, arguments);
}
@@ -95,14 +78,14 @@
/// Report a diagnostic with the given [code] and [arguments]. The
/// location of the diagnostic will be the name of the [constructor].
void reportErrorForName(ErrorCode code, ConstructorDeclaration constructor,
- {List<Object> arguments}) {
+ {List<Object>? arguments}) {
// TODO(brianwilkerson) Consider extending this method to take any
// declaration and compute the correct range for the name of that
// declaration. This might make it easier to be consistent.
if (constructor.name != null) {
var offset = constructor.returnType.offset;
reportErrorForOffset(
- code, offset, constructor.name.end - offset, arguments);
+ code, offset, constructor.name!.end - offset, arguments);
} else {
reportErrorForNode(code, constructor.returnType, arguments);
}
@@ -111,14 +94,14 @@
/// Report an error with the given [errorCode] and [arguments].
/// The [node] is used to compute the location of the error.
void reportErrorForNode(ErrorCode errorCode, AstNode node,
- [List<Object> arguments]) {
+ [List<Object?>? arguments]) {
reportErrorForOffset(errorCode, node.offset, node.length, arguments);
}
/// Report an error with the given [errorCode] and [arguments]. The location
/// of the error is specified by the given [offset] and [length].
void reportErrorForOffset(ErrorCode errorCode, int offset, int length,
- [List<Object> arguments]) {
+ [List<Object?>? arguments]) {
_convertElements(arguments);
var messages = _convertTypeNames(arguments);
_errorListener.onError(
@@ -128,14 +111,14 @@
/// Report an error with the given [errorCode] and [arguments]. The location
/// of the error is specified by the given [span].
void reportErrorForSpan(ErrorCode errorCode, SourceSpan span,
- [List<Object> arguments]) {
+ [List<Object?>? arguments]) {
reportErrorForOffset(errorCode, span.start.offset, span.length, arguments);
}
/// Report an error with the given [errorCode] and [arguments]. The [token] is
/// used to compute the location of the error.
void reportErrorForToken(ErrorCode errorCode, Token token,
- [List<Object> arguments]) {
+ [List<Object?>? arguments]) {
reportErrorForOffset(errorCode, token.offset, token.length, arguments);
}
@@ -163,7 +146,7 @@
}
/// Convert all [Element]s in the [arguments] into their display strings.
- void _convertElements(List<Object> arguments) {
+ void _convertElements(List<Object?>? arguments) {
if (arguments == null) {
return;
}
@@ -183,7 +166,7 @@
/// types, unless there are two or more types with the same names, in which
/// case the extended display names of the types will be used in order to
/// clarify the message.
- List<DiagnosticMessage> _convertTypeNames(List<Object> arguments) {
+ List<DiagnosticMessage> _convertTypeNames(List<Object?>? arguments) {
var messages = <DiagnosticMessage>[];
if (arguments == null) {
return messages;
@@ -191,7 +174,7 @@
Map<String, List<_TypeToConvert>> typeGroups = {};
for (int i = 0; i < arguments.length; i++) {
- Object argument = arguments[i];
+ var argument = arguments[i];
if (argument is DartType) {
String displayName = argument.getDisplayString(
withNullability: isNonNullableByDefault,
@@ -212,29 +195,29 @@
for (_TypeToConvert typeToConvert in typeGroup) {
for (Element element in typeToConvert.allElements()) {
Set<Element> elements =
- nameToElementMap.putIfAbsent(element.name, () => <Element>{});
+ nameToElementMap.putIfAbsent(element.name!, () => <Element>{});
elements.add(element);
}
}
for (_TypeToConvert typeToConvert in typeGroup) {
// TODO(brianwilkerson) When clients do a better job of displaying
// context messages, remove the extra text added to the buffer.
- StringBuffer buffer;
+ StringBuffer? buffer;
for (Element element in typeToConvert.allElements()) {
- String name = element.name;
- if (nameToElementMap[name].length > 1) {
+ String name = element.name!;
+ if (nameToElementMap[name]!.length > 1) {
if (buffer == null) {
buffer = StringBuffer();
buffer.write('where ');
} else {
buffer.write(', ');
}
- buffer.write('$name is defined in ${element.source.fullName}');
+ buffer.write('$name is defined in ${element.source!.fullName}');
}
messages.add(DiagnosticMessageImpl(
- filePath: element.source.fullName,
+ filePath: element.source!.fullName,
length: element.nameLength,
- message: '$name is defined in ${element.source.fullName}',
+ message: '$name is defined in ${element.source!.fullName}',
offset: element.nameOffset));
}
@@ -254,14 +237,14 @@
/// An error listener that will record the errors that are reported to it in a
/// way that is appropriate for caching those errors within an analysis context.
class RecordingErrorListener implements AnalysisErrorListener {
- Set<AnalysisError> _errors;
+ Set<AnalysisError>? _errors;
/// Return the errors collected by the listener.
List<AnalysisError> get errors {
if (_errors == null) {
return const <AnalysisError>[];
}
- return _errors.toList();
+ return _errors!.toList();
}
/// Return the errors collected by the listener for the given [source].
@@ -269,13 +252,12 @@
if (_errors == null) {
return const <AnalysisError>[];
}
- return _errors.where((error) => error.source == source).toList();
+ return _errors!.where((error) => error.source == source).toList();
}
@override
void onError(AnalysisError error) {
- _errors ??= HashSet<AnalysisError>();
- _errors.add(error);
+ (_errors ??= HashSet<AnalysisError>()).add(error);
}
}
@@ -294,7 +276,7 @@
final DartType type;
final String displayName;
- List<Element> _allElements;
+ List<Element>? _allElements;
_TypeToConvert(this.index, this.type, this.displayName);
@@ -318,10 +300,11 @@
}
addElementsFrom(type);
- _allElements = elements
- .where((element) => element.name != null && element.name.isNotEmpty)
- .toList();
+ _allElements = elements.where((element) {
+ var name = element.name;
+ return name != null && name.isNotEmpty;
+ }).toList();
}
- return _allElements;
+ return _allElements!;
}
}
diff --git a/pkg/analyzer/lib/exception/exception.dart b/pkg/analyzer/lib/exception/exception.dart
index c666fbae..d23c830 100644
--- a/pkg/analyzer/lib/exception/exception.dart
+++ b/pkg/analyzer/lib/exception/exception.dart
@@ -9,7 +9,7 @@
/// The exception that caused this exception, or `null` if this exception was
/// not caused by another exception.
- final CaughtException cause;
+ final CaughtException? cause;
/// Initialize a newly created exception to have the given [message] and
/// [cause].
@@ -22,7 +22,7 @@
buffer.writeln(message);
if (cause != null) {
buffer.write('Caused by ');
- cause._writeOn(buffer);
+ cause!._writeOn(buffer);
}
return buffer.toString();
}
@@ -34,7 +34,7 @@
final Object exception;
/// The message describing where/how/why this was caught.
- final String message;
+ final String? message;
/// The stack trace associated with the exception.
StackTrace stackTrace;
@@ -46,9 +46,7 @@
/// Initialize a newly created caught exception to have the given [exception],
/// [stackTrace], and [message].
- CaughtException.withMessage(
- this.message, this.exception, StackTrace stackTrace)
- : stackTrace = stackTrace ?? StackTrace.current;
+ CaughtException.withMessage(this.message, this.exception, this.stackTrace);
/// Recursively unwrap this [CaughtException] if it itself contains a
/// [CaughtException].
@@ -74,22 +72,18 @@
if (message != null) {
buffer.writeln(message);
}
+ var exception = this.exception;
if (exception is AnalysisException) {
- AnalysisException analysisException = exception;
- buffer.writeln(analysisException.message);
- if (stackTrace != null) {
- buffer.writeln(stackTrace.toString());
- }
- CaughtException cause = analysisException.cause;
+ buffer.writeln(exception.message);
+ buffer.writeln(stackTrace.toString());
+ CaughtException? cause = exception.cause;
if (cause != null) {
buffer.write('Caused by ');
cause._writeOn(buffer);
}
} else {
buffer.writeln(exception.toString());
- if (stackTrace != null) {
- buffer.writeln(stackTrace.toString());
- }
+ buffer.writeln(stackTrace.toString());
}
}
}
@@ -105,5 +99,5 @@
/// Create a [SilentException] to wrap a [CaughtException], adding a
/// [message].
SilentException.wrapInMessage(String message, CaughtException exception)
- : this(message, exception, null);
+ : this(message, exception, StackTrace.current);
}
diff --git a/pkg/analyzer/lib/file_system/file_system.dart b/pkg/analyzer/lib/file_system/file_system.dart
index 7f6e20e..f68ca16 100644
--- a/pkg/analyzer/lib/file_system/file_system.dart
+++ b/pkg/analyzer/lib/file_system/file_system.dart
@@ -25,7 +25,7 @@
File copyTo(Folder parentFolder);
/// Create a new [Source] instance that serves this file.
- Source createSource([Uri uri]);
+ Source createSource([Uri? uri]);
/// Synchronously read the entire file contents as a list of bytes.
/// Throws a [FileSystemException] if the operation fails.
@@ -43,7 +43,7 @@
/// If [newPath] identifies an existing file, that file is replaced.
/// If [newPath] identifies an existing resource the operation might fail and
/// an exception is thrown.
- File renameSync(String /*!*/ newPath);
+ File renameSync(String newPath);
/// Synchronously write the given [bytes] to the file. The new content will
/// replace any existing content.
@@ -81,12 +81,12 @@
///
/// However, regardless of whether [path] is relative or absolute, normalize
/// it by removing path components of the form '.' or '..'.
- String canonicalizePath(String /*!*/ path);
+ String canonicalizePath(String path);
/// Return `true` if the [path] references a resource in this folder.
///
/// The [path] must be absolute and normalized.
- bool contains(String /*!*/ path);
+ bool contains(String path);
@override
Folder copyTo(Folder parentFolder);
@@ -96,19 +96,19 @@
/// Return an existing child [Resource] with the given [relPath].
/// Return a not existing [File] if no such child exist.
- Resource getChild(String /*!*/ relPath);
+ Resource getChild(String relPath);
/// Return a [File] representing a child [Resource] with the given
/// [relPath]. This call does not check whether a file with the given name
/// exists on the filesystem - client must call the [File]'s `exists` getter
/// to determine whether the folder actually exists.
- File getChildAssumingFile(String /*!*/ relPath);
+ File getChildAssumingFile(String relPath);
/// Return a [Folder] representing a child [Resource] with the given
/// [relPath]. This call does not check whether a folder with the given name
/// exists on the filesystem--client must call the [Folder]'s `exists` getter
/// to determine whether the folder actually exists.
- Folder getChildAssumingFolder(String /*!*/ relPath);
+ Folder getChildAssumingFolder(String relPath);
/// Return a list of existing direct children [Resource]s (folders and files)
/// in this folder, in no particular order.
@@ -124,7 +124,7 @@
/// Return the [Folder] that contains this resource, or `null` if this
/// resource is a root folder.
- Folder get parent;
+ Folder? get parent;
/// Return the full path to this resource.
String get path;
@@ -145,7 +145,7 @@
/// Existing files and folders will be overwritten.
///
/// Return the resource corresponding to this resource in the parent folder.
- Resource copyTo(Folder /*!*/ parentFolder);
+ Resource copyTo(Folder parentFolder);
/// Synchronously deletes this resource and its children.
///
@@ -156,7 +156,7 @@
/// this folder.
///
/// The [path] must be absolute and normalized.
- bool isOrContains(String /*!*/ path);
+ bool isOrContains(String path);
/// Return a resource that refers to the same resource as this resource, but
/// whose path does not contain any symbolic links.
@@ -177,25 +177,25 @@
/// The [path] must be absolute and normalized.
///
/// A file may or may not exist at this location.
- File getFile(String /*!*/ path);
+ File getFile(String path);
/// Return a [Folder] that corresponds to the given [path].
///
/// The [path] must be absolute and normalized.
///
/// A folder may or may not exist at this location.
- Folder getFolder(String /*!*/ path);
+ Folder getFolder(String path);
/// Complete with a list of modification times for the given [sources].
///
/// If the file of a source is not managed by this provider, return `null`.
/// If the file a source does not exist, return `-1`.
- Future<List<int>> getModificationTimes(List<Source> sources);
+ Future<List<int?>> getModificationTimes(List<Source> sources);
/// Return the [Resource] that corresponds to the given [path].
///
/// The [path] must be absolute and normalized.
- Resource getResource(String /*!*/ path);
+ Resource getResource(String path);
/// Return the folder in which the plugin with the given [pluginId] can store
/// state that will persist across sessions. The folder returned for a given
@@ -203,5 +203,5 @@
/// need to be concerned with file name collisions with other plugins,
/// assuming that the plugin ids are unique. The plugin ids must be valid
/// folder names.
- Folder getStateLocation(String pluginId);
+ Folder? getStateLocation(String pluginId);
}
diff --git a/pkg/analyzer/lib/file_system/memory_file_system.dart b/pkg/analyzer/lib/file_system/memory_file_system.dart
index caaeae1..38f3a43 100644
--- a/pkg/analyzer/lib/file_system/memory_file_system.dart
+++ b/pkg/analyzer/lib/file_system/memory_file_system.dart
@@ -28,7 +28,7 @@
final pathos.Context _pathContext;
MemoryResourceProvider(
- {pathos.Context context, @deprecated bool isWindows = false})
+ {pathos.Context? context, @deprecated bool isWindows = false})
: _pathContext = context ??= pathos.style == pathos.Style.windows
// On Windows, ensure that the current drive matches
// the drive inserted by MemoryResourceProvider.convertPath
@@ -44,7 +44,6 @@
/// This is a utility method for testing; paths passed in to other methods in
/// this class are never converted automatically.
String convertPath(String path) {
- assert(path != null);
if (pathContext.style == pathos.windows.style) {
if (path.startsWith(pathos.posix.separator)) {
path = r'C:' + path;
@@ -67,7 +66,7 @@
/// and recursively delete nested files and folders.
void deleteFolder(String path) {
_checkFolderAtPath(path);
- _MemoryFolder folder = _pathToResource[path];
+ var folder = _pathToResource[path] as _MemoryFolder;
for (Resource child in folder.getChildren()) {
if (child is File) {
deleteFile(child.path);
@@ -85,14 +84,12 @@
@override
File getFile(String path) {
- assert(path != null);
_ensureAbsoluteAndNormalized(path);
return _MemoryFile(this, path);
}
@override
Folder getFolder(String path) {
- assert(path != null);
_ensureAbsoluteAndNormalized(path);
return _MemoryFolder(this, path);
}
@@ -107,7 +104,6 @@
@override
Resource getResource(String path) {
- assert(path != null);
_ensureAbsoluteAndNormalized(path);
return _pathToResource[path] ?? _MemoryFile(this, path);
}
@@ -119,7 +115,6 @@
}
void modifyFile(String path, String content) {
- assert(content != null);
_checkFileAtPath(path);
_pathToBytes[path] = utf8.encode(content) as Uint8List;
_pathToTimestamp[path] = nextStamp++;
@@ -138,7 +133,7 @@
return link;
}
- File newFile(String path, String content, [int stamp]) {
+ File newFile(String path, String content, [int? stamp]) {
_ensureAbsoluteAndNormalized(path);
_MemoryFile file = _newFile(path);
_pathToBytes[path] = utf8.encode(content) as Uint8List;
@@ -147,7 +142,7 @@
return file;
}
- File newFileWithBytes(String path, List<int> bytes, [int stamp]) {
+ File newFileWithBytes(String path, List<int> bytes, [int? stamp]) {
_ensureAbsoluteAndNormalized(path);
_MemoryFile file = _newFile(path);
_pathToBytes[path] = Uint8List.fromList(bytes);
@@ -161,7 +156,7 @@
if (!pathContext.isAbsolute(path)) {
throw ArgumentError("Path must be absolute : $path");
}
- _MemoryResource resource = _pathToResource[path];
+ var resource = _pathToResource[path];
if (resource == null) {
String parentPath = pathContext.dirname(path);
if (parentPath != path) {
@@ -189,7 +184,7 @@
_pathToLinkedPath[path] = target;
}
- File updateFile(String path, String content, [int stamp]) {
+ File updateFile(String path, String content, [int? stamp]) {
_ensureAbsoluteAndNormalized(path);
newFolder(pathContext.dirname(path));
_MemoryFile file = _MemoryFile(this, path);
@@ -208,10 +203,9 @@
}
void _checkFileAtPath(String path) {
- assert(path != null);
// TODO(brianwilkerson) Consider throwing a FileSystemException rather than
// an ArgumentError.
- _MemoryResource resource = _pathToResource[path];
+ var resource = _pathToResource[path];
if (resource is! _MemoryFile) {
if (resource == null) {
throw ArgumentError('File expected at "$path" but does not exist');
@@ -222,10 +216,9 @@
}
void _checkFolderAtPath(String path) {
- assert(path != null);
// TODO(brianwilkerson) Consider throwing a FileSystemException rather than
// an ArgumentError.
- _MemoryResource resource = _pathToResource[path];
+ var resource = _pathToResource[path];
if (resource is! _MemoryFolder) {
throw ArgumentError(
'Folder expected at "$path" but ${resource.runtimeType} found');
@@ -235,7 +228,6 @@
/// The file system abstraction supports only absolute and normalized paths.
/// This method is used to validate any input paths to prevent errors later.
void _ensureAbsoluteAndNormalized(String path) {
- assert(path != null);
if (!pathContext.isAbsolute(path)) {
throw ArgumentError("Path must be absolute : $path");
}
@@ -246,9 +238,8 @@
/// Create a new [_MemoryFile] without any content.
_MemoryFile _newFile(String path) {
- assert(path != null);
String folderPath = pathContext.dirname(path);
- _MemoryResource folder = _pathToResource[folderPath];
+ var folder = _pathToResource[folderPath];
if (folder == null) {
newFolder(folderPath);
} else if (folder is! Folder) {
@@ -260,7 +251,6 @@
}
void _notifyWatchers(String path, ChangeType changeType) {
- assert(path != null);
_pathToWatchers.forEach((String watcherPath,
List<StreamController<WatchEvent>> streamControllers) {
if (watcherPath == path || pathContext.isWithin(watcherPath, path)) {
@@ -273,20 +263,29 @@
}
_MemoryFile _renameFileSync(_MemoryFile file, String newPath) {
- assert(newPath != null);
String path = file.path;
if (newPath == path) {
return file;
}
- _MemoryResource existingNewResource = _pathToResource[newPath];
+ var existingNewResource = _pathToResource[newPath];
if (existingNewResource is _MemoryFolder) {
throw FileSystemException(
path, 'Could not be renamed: $newPath is a folder.');
}
+
_MemoryFile newFile = _newFile(newPath);
_pathToResource.remove(path);
- _pathToBytes[newPath] = _pathToBytes.remove(path);
- _pathToTimestamp[newPath] = _pathToTimestamp.remove(path);
+
+ var oldBytes = _pathToBytes.remove(path);
+ if (oldBytes != null) {
+ _pathToBytes[newPath] = oldBytes;
+ }
+
+ var oldTimestamp = _pathToTimestamp.remove(path);
+ if (oldTimestamp != null) {
+ _pathToTimestamp[newPath] = oldTimestamp;
+ }
+
if (existingNewResource != null) {
_notifyWatchers(newPath, ChangeType.REMOVE);
}
@@ -296,7 +295,6 @@
}
String _resolveLinks(String path) {
- assert(path != null);
var linkTarget = _pathToLinkedPath[path];
if (linkTarget != null) {
return linkTarget;
@@ -350,7 +348,7 @@
@override
int get modificationStamp {
- int stamp = provider._pathToTimestamp[path];
+ var stamp = provider._pathToTimestamp[path];
if (stamp == null) {
throw FileSystemException(path, "File does not exist");
}
@@ -363,7 +361,7 @@
}
@override
- Source createSource([Uri uri]) {
+ Source createSource([Uri? uri]) {
throw FileSystemException(path, 'File could not be read');
}
@@ -427,7 +425,7 @@
@override
int get modificationStamp {
var canonicalPath = provider._resolveLinks(path);
- int stamp = provider._pathToTimestamp[canonicalPath];
+ var stamp = provider._pathToTimestamp[canonicalPath];
if (stamp == null) {
throw FileSystemException(path, 'File "$path" does not exist.');
}
@@ -436,7 +434,6 @@
@override
File copyTo(Folder parentFolder) {
- assert(parentFolder != null);
parentFolder.create();
File destination = parentFolder.getChildAssumingFile(shortName);
destination.writeAsBytesSync(readAsBytesSync());
@@ -444,7 +441,7 @@
}
@override
- Source createSource([Uri uri]) {
+ Source createSource([Uri? uri]) {
uri ??= provider.pathContext.toUri(path);
return FileSource(this, uri);
}
@@ -462,7 +459,7 @@
@override
Uint8List readAsBytesSync() {
var canonicalPath = provider._resolveLinks(path);
- Uint8List content = provider._pathToBytes[canonicalPath];
+ var content = provider._pathToBytes[canonicalPath];
if (content == null) {
throw FileSystemException(path, 'File "$path" does not exist.');
}
@@ -472,7 +469,7 @@
@override
String readAsStringSync() {
var canonicalPath = provider._resolveLinks(path);
- Uint8List content = provider._pathToBytes[canonicalPath];
+ var content = provider._pathToBytes[canonicalPath];
if (content == null) {
throw FileSystemException(path, 'File "$path" does not exist.');
}
@@ -517,7 +514,6 @@
@override
String canonicalizePath(String relPath) {
- assert(relPath != null);
relPath = provider.pathContext.normalize(relPath);
String childPath = provider.pathContext.join(path, relPath);
childPath = provider.pathContext.normalize(childPath);
@@ -526,7 +522,6 @@
@override
bool contains(String path) {
- assert(path != null);
return provider.pathContext.isWithin(this.path, path);
}
@@ -560,7 +555,7 @@
@override
_MemoryFile getChildAssumingFile(String relPath) {
String childPath = canonicalizePath(relPath);
- _MemoryResource resource = provider._pathToResource[childPath];
+ var resource = provider._pathToResource[childPath];
if (resource is _MemoryFile) {
return resource;
}
@@ -570,7 +565,7 @@
@override
_MemoryFolder getChildAssumingFolder(String relPath) {
String childPath = canonicalizePath(relPath);
- _MemoryResource resource = provider._pathToResource[childPath];
+ var resource = provider._pathToResource[childPath];
if (resource is _MemoryFolder) {
return resource;
}
@@ -625,10 +620,10 @@
if (!provider._pathToWatchers.containsKey(path)) {
provider._pathToWatchers[path] = <StreamController<WatchEvent>>[];
}
- provider._pathToWatchers[path].add(streamController);
+ provider._pathToWatchers[path]!.add(streamController);
streamController.done.then((_) {
- provider._pathToWatchers[path].remove(streamController);
- if (provider._pathToWatchers[path].isEmpty) {
+ provider._pathToWatchers[path]!.remove(streamController);
+ if (provider._pathToWatchers[path]!.isEmpty) {
provider._pathToWatchers.remove(path);
}
});
@@ -639,7 +634,7 @@
int get hashCode => path.hashCode;
@override
- Folder get parent {
+ Folder? get parent {
String parentPath = provider.pathContext.dirname(path);
if (parentPath == path) {
return null;
diff --git a/pkg/analyzer/lib/file_system/overlay_file_system.dart b/pkg/analyzer/lib/file_system/overlay_file_system.dart
index 35dde56..3e09dc3 100644
--- a/pkg/analyzer/lib/file_system/overlay_file_system.dart
+++ b/pkg/analyzer/lib/file_system/overlay_file_system.dart
@@ -9,7 +9,6 @@
import 'package:analyzer/file_system/file_system.dart';
import 'package:analyzer/src/generated/source_io.dart';
import 'package:analyzer/src/source/source_resource.dart';
-import 'package:meta/meta.dart';
import 'package:path/path.dart' as pathos;
import 'package:watcher/watcher.dart';
@@ -67,8 +66,10 @@
}
@override
- Folder getStateLocation(String pluginId) =>
- _OverlayFolder(this, baseProvider.getStateLocation(pluginId));
+ Folder? getStateLocation(String pluginId) {
+ var location = baseProvider.getStateLocation(pluginId);
+ return location != null ? _OverlayFolder(this, location) : null;
+ }
/// Return `true` if there is an overlay associated with the file at the given
/// [path].
@@ -87,15 +88,7 @@
/// to have the given [content] and [modificationStamp] even if the file is
/// modified in the base resource provider.
void setOverlay(String path,
- {@required String content, @required int modificationStamp}) {
- if (content == null) {
- throw ArgumentError(
- 'OverlayResourceProvider.setOverlay: content cannot be null');
- } else if (modificationStamp == null) {
- throw ArgumentError(
- 'OverlayResourceProvider.setOverlay: modificationStamp cannot be '
- 'null');
- }
+ {required String content, required int modificationStamp}) {
_overlayContent[path] = content;
_overlayModificationStamps[path] = modificationStamp;
}
@@ -104,20 +97,21 @@
/// file with the [newPath].
void _copyOverlay(String oldPath, String newPath) {
if (hasOverlay(oldPath)) {
- _overlayContent[newPath] = _overlayContent[oldPath];
- _overlayModificationStamps[newPath] = _overlayModificationStamps[oldPath];
+ _overlayContent[newPath] = _overlayContent[oldPath]!;
+ _overlayModificationStamps[newPath] =
+ _overlayModificationStamps[oldPath]!;
}
}
/// Return the content of the overlay of the file at the given [path], or
/// `null` if there is no overlay for the specified file.
- String _getOverlayContent(String path) {
+ String? _getOverlayContent(String path) {
return _overlayContent[path];
}
/// Return the modification stamp of the overlay of the file at the given
/// [path], or `null` if there is no overlay for the specified file.
- int _getOverlayModificationStamp(String path) {
+ int? _getOverlayModificationStamp(String path) {
return _overlayModificationStamps[path];
}
@@ -147,7 +141,7 @@
@override
int get lengthSync {
- String content = provider._getOverlayContent(path);
+ String? content = provider._getOverlayContent(path);
if (content != null) {
return content.length;
}
@@ -156,7 +150,7 @@
@override
int get modificationStamp {
- int stamp = provider._getOverlayModificationStamp(path);
+ int? stamp = provider._getOverlayModificationStamp(path);
if (stamp != null) {
return stamp;
}
@@ -182,7 +176,7 @@
}
@override
- Source createSource([Uri uri]) =>
+ Source createSource([Uri? uri]) =>
FileSource(this, uri ?? provider.pathContext.toUri(path));
@override
@@ -196,8 +190,8 @@
}
@override
- Uint8List readAsBytesSync() {
- String content = provider._getOverlayContent(path);
+ List<int> readAsBytesSync() {
+ String? content = provider._getOverlayContent(path);
if (content != null) {
return utf8.encode(content) as Uint8List;
}
@@ -206,7 +200,7 @@
@override
String readAsStringSync() {
- String content = provider._getOverlayContent(path);
+ String? content = provider._getOverlayContent(path);
if (content != null) {
return content;
}
@@ -217,9 +211,11 @@
File renameSync(String newPath) {
File newFile = _file.renameSync(newPath);
if (provider.hasOverlay(path)) {
- provider.setOverlay(newPath,
- content: provider._getOverlayContent(path),
- modificationStamp: provider._getOverlayModificationStamp(path));
+ provider.setOverlay(
+ newPath,
+ content: provider._getOverlayContent(path)!,
+ modificationStamp: provider._getOverlayModificationStamp(path)!,
+ );
provider.removeOverlay(path);
}
return _OverlayFile(provider, newFile);
@@ -353,8 +349,8 @@
int get hashCode => path.hashCode;
@override
- Folder get parent {
- Folder parent = _resource.parent;
+ Folder? get parent {
+ Folder? parent = _resource.parent;
if (parent == null) {
return null;
}
diff --git a/pkg/analyzer/lib/file_system/physical_file_system.dart b/pkg/analyzer/lib/file_system/physical_file_system.dart
index 9561ff6..4483f48c 100644
--- a/pkg/analyzer/lib/file_system/physical_file_system.dart
+++ b/pkg/analyzer/lib/file_system/physical_file_system.dart
@@ -20,10 +20,10 @@
/// Generally this is ~/.dartServer. It can be overridden via the
/// ANALYZER_STATE_LOCATION_OVERRIDE environment variable, in which case this
/// method will return the contents of that environment variable.
-String _getStandardStateLocation() {
+String? _getStandardStateLocation() {
final Map<String, String> env = io.Platform.environment;
if (env.containsKey('ANALYZER_STATE_LOCATION_OVERRIDE')) {
- return env['ANALYZER_STATE_LOCATION_OVERRIDE'];
+ return env['ANALYZER_STATE_LOCATION_OVERRIDE']!;
}
final home = io.Platform.isWindows ? env['LOCALAPPDATA'] : env['HOME'];
@@ -38,7 +38,7 @@
///
/// If any exception happens, the file is considered as a not existing and
/// `-1` is its modification time.
-List<int> _pathsToTimes(List<String> paths) {
+List<int?> _pathsToTimes(List<String?> paths) {
return paths.map((path) {
if (path != null) {
try {
@@ -58,9 +58,9 @@
static final PhysicalResourceProvider INSTANCE = PhysicalResourceProvider();
/// The path to the base folder where state is stored.
- final String _stateLocation;
+ final String? _stateLocation;
- PhysicalResourceProvider({String stateLocation})
+ PhysicalResourceProvider({String? stateLocation})
: _stateLocation = stateLocation ?? _getStandardStateLocation();
@override
@@ -79,7 +79,7 @@
}
@override
- Future<List<int>> getModificationTimes(List<Source> sources) async {
+ Future<List<int?>> getModificationTimes(List<Source> sources) async {
List<String> paths = sources.map((source) => source.fullName).toList();
return _pathsToTimes(paths);
}
@@ -95,9 +95,9 @@
}
@override
- Folder getStateLocation(String pluginId) {
+ Folder? getStateLocation(String pluginId) {
if (_stateLocation != null) {
- io.Directory directory = io.Directory(join(_stateLocation, pluginId));
+ io.Directory directory = io.Directory(join(_stateLocation!, pluginId));
directory.createSync(recursive: true);
return _PhysicalFolder(directory);
}
@@ -131,7 +131,7 @@
try {
return _file.lengthSync();
} on io.FileSystemException catch (exception) {
- throw FileSystemException(exception.path, exception.message);
+ throw _wrapException(exception);
}
}
@@ -140,7 +140,7 @@
try {
return _file.lastModifiedSync().millisecondsSinceEpoch;
} on io.FileSystemException catch (exception) {
- throw FileSystemException(exception.path, exception.message);
+ throw _wrapException(exception);
}
}
@@ -156,7 +156,7 @@
}
@override
- Source createSource([Uri uri]) {
+ Source createSource([Uri? uri]) {
return FileSource(this, uri ?? pathContext.toUri(path));
}
@@ -171,7 +171,7 @@
try {
return _file.readAsBytesSync();
} on io.FileSystemException catch (exception) {
- throw FileSystemException(exception.path, exception.message);
+ throw _wrapException(exception);
}
}
@@ -181,7 +181,7 @@
try {
return _file.readAsStringSync();
} on io.FileSystemException catch (exception) {
- throw FileSystemException(exception.path, exception.message);
+ throw _wrapException(exception);
}
}
@@ -190,7 +190,7 @@
try {
return _PhysicalFile(_file.renameSync(newPath));
} on io.FileSystemException catch (exception) {
- throw FileSystemException(exception.path, exception.message);
+ throw _wrapException(exception);
}
}
@@ -199,7 +199,7 @@
try {
return _PhysicalFile(io.File(_file.resolveSymbolicLinksSync()));
} on io.FileSystemException catch (exception) {
- throw FileSystemException(exception.path, exception.message);
+ throw _wrapException(exception);
}
}
@@ -211,7 +211,7 @@
try {
_file.writeAsBytesSync(bytes);
} on io.FileSystemException catch (exception) {
- throw FileSystemException(exception.path, exception.message);
+ throw _wrapException(exception);
}
}
@@ -220,7 +220,7 @@
try {
_file.writeAsStringSync(content);
} on io.FileSystemException catch (exception) {
- throw FileSystemException(exception.path, exception.message);
+ throw _wrapException(exception);
}
}
}
@@ -305,7 +305,7 @@
}
return children;
} on io.FileSystemException catch (exception) {
- throw FileSystemException(exception.path, exception.message);
+ throw _wrapException(exception);
}
}
@@ -323,7 +323,7 @@
return _PhysicalFolder(
io.Directory(_directory.resolveSymbolicLinksSync()));
} on io.FileSystemException catch (exception) {
- throw FileSystemException(exception.path, exception.message);
+ throw _wrapException(exception);
}
}
@@ -350,7 +350,7 @@
int get hashCode => path.hashCode;
@override
- Folder get parent {
+ Folder? get parent {
String parentPath = pathContext.dirname(path);
if (parentPath == path) {
return null;
@@ -383,7 +383,7 @@
try {
_entry.deleteSync(recursive: true);
} on io.FileSystemException catch (exception) {
- throw FileSystemException(exception.path, exception.message);
+ throw _wrapException(exception);
}
}
@@ -414,4 +414,8 @@
}
}
}
+
+ FileSystemException _wrapException(io.FileSystemException e) {
+ return FileSystemException(e.path ?? path, e.message);
+ }
}
diff --git a/pkg/analyzer/lib/instrumentation/file_instrumentation.dart b/pkg/analyzer/lib/instrumentation/file_instrumentation.dart
index 7985cd2..745d6c30 100644
--- a/pkg/analyzer/lib/instrumentation/file_instrumentation.dart
+++ b/pkg/analyzer/lib/instrumentation/file_instrumentation.dart
@@ -10,7 +10,7 @@
/// source or in-memory source etc.)
class FileInstrumentationLogger implements InstrumentationLogger {
final String filePath;
- IOSink _sink;
+ late final IOSink _sink;
FileInstrumentationLogger(this.filePath) {
File file = File(filePath);
@@ -25,6 +25,5 @@
@override
Future shutdown() async {
await _sink.close();
- _sink = null;
}
}
diff --git a/pkg/analyzer/lib/instrumentation/log_adapter.dart b/pkg/analyzer/lib/instrumentation/log_adapter.dart
index 48dea7d..c3f3ad6 100644
--- a/pkg/analyzer/lib/instrumentation/log_adapter.dart
+++ b/pkg/analyzer/lib/instrumentation/log_adapter.dart
@@ -25,7 +25,7 @@
static const String TAG_WATCH_EVENT = 'Watch';
/// A logger used to log instrumentation in string format.
- final InstrumentationLogger _instrumentationLogger;
+ final InstrumentationLogger? _instrumentationLogger;
/// Initialize a newly created instrumentation service to communicate with the
/// given [_instrumentationLogger].
@@ -38,13 +38,15 @@
void logError(String message) => _log(TAG_ERROR, message);
@override
- void logException(dynamic exception,
- [StackTrace stackTrace,
- List<InstrumentationServiceAttachment> attachments]) {
+ void logException(
+ dynamic exception, [
+ StackTrace? stackTrace,
+ List<InstrumentationServiceAttachment>? attachments,
+ ]) {
if (_instrumentationLogger != null) {
String message = _toString(exception);
String trace = _toString(stackTrace);
- _instrumentationLogger.log(_join([TAG_EXCEPTION, message, trace]));
+ _instrumentationLogger!.log(_join([TAG_EXCEPTION, message, trace]));
}
}
@@ -53,14 +55,14 @@
_log(TAG_INFO, message + (exception == null ? "" : exception.toString()));
@override
- void logLogEntry(String level, DateTime time, String message,
+ void logLogEntry(String level, DateTime? time, String message,
Object exception, StackTrace stackTrace) {
if (_instrumentationLogger != null) {
String timeStamp =
time == null ? 'null' : time.millisecondsSinceEpoch.toString();
String exceptionText = exception.toString();
String stackTraceText = stackTrace.toString();
- _instrumentationLogger.log(_join([
+ _instrumentationLogger!.log(_join([
TAG_LOG_ENTRY,
level,
timeStamp,
@@ -86,13 +88,13 @@
stackTrace
];
plugin.addToFields(fields);
- _instrumentationLogger.log(_join(fields));
+ _instrumentationLogger!.log(_join(fields));
}
}
@override
void logPluginException(
- PluginData plugin, dynamic exception, StackTrace stackTrace) {
+ PluginData plugin, dynamic exception, StackTrace? stackTrace) {
if (_instrumentationLogger != null) {
List<String> fields = <String>[
TAG_PLUGIN_EXCEPTION,
@@ -100,14 +102,14 @@
_toString(stackTrace)
];
plugin.addToFields(fields);
- _instrumentationLogger.log(_join(fields));
+ _instrumentationLogger!.log(_join(fields));
}
}
@override
void logPluginNotification(String pluginId, String notification) {
if (_instrumentationLogger != null) {
- _instrumentationLogger.log(
+ _instrumentationLogger!.log(
_join([TAG_PLUGIN_NOTIFICATION, notification, pluginId, '', '']));
}
}
@@ -115,7 +117,7 @@
@override
void logPluginRequest(String pluginId, String request) {
if (_instrumentationLogger != null) {
- _instrumentationLogger
+ _instrumentationLogger!
.log(_join([TAG_PLUGIN_REQUEST, request, pluginId, '', '']));
}
}
@@ -123,7 +125,7 @@
@override
void logPluginResponse(String pluginId, String response) {
if (_instrumentationLogger != null) {
- _instrumentationLogger
+ _instrumentationLogger!
.log(_join([TAG_PLUGIN_RESPONSE, response, pluginId, '', '']));
}
}
@@ -133,7 +135,7 @@
if (_instrumentationLogger != null) {
List<String> fields = <String>[TAG_PLUGIN_TIMEOUT, request];
plugin.addToFields(fields);
- _instrumentationLogger.log(_join(fields));
+ _instrumentationLogger!.log(_join(fields));
}
}
@@ -146,11 +148,11 @@
@override
void logVersion(String uuid, String clientId, String clientVersion,
String serverVersion, String sdkVersion) {
- String normalize(String value) =>
+ String normalize(String? value) =>
value != null && value.isNotEmpty ? value : 'unknown';
if (_instrumentationLogger != null) {
- _instrumentationLogger.log(_join([
+ _instrumentationLogger!.log(_join([
TAG_VERSION,
uuid,
normalize(clientId),
@@ -164,13 +166,15 @@
@override
void logWatchEvent(String folderPath, String filePath, String changeType) {
if (_instrumentationLogger != null) {
- _instrumentationLogger
+ _instrumentationLogger!
.log(_join([TAG_WATCH_EVENT, folderPath, filePath, changeType]));
}
}
@override
- Future<void> shutdown() => _instrumentationLogger.shutdown();
+ Future<void> shutdown() async {
+ await _instrumentationLogger?.shutdown();
+ }
/// Write an escaped version of the given [field] to the given [buffer].
void _escape(StringBuffer buffer, String field) {
@@ -197,7 +201,7 @@
int length = fields.length;
for (int i = 0; i < length; i++) {
buffer.write(':');
- _escape(buffer, fields[i] ?? 'null');
+ _escape(buffer, fields[i]);
}
return buffer.toString();
}
@@ -205,12 +209,12 @@
/// Log the given message with the given tag.
void _log(String tag, String message) {
if (_instrumentationLogger != null) {
- _instrumentationLogger.log(_join([tag, message]));
+ _instrumentationLogger!.log(_join([tag, message]));
}
}
/// Convert the given [object] to a string.
- String _toString(Object object) {
+ String _toString(Object? object) {
if (object == null) {
return 'null';
}
diff --git a/pkg/analyzer/lib/instrumentation/multicast_service.dart b/pkg/analyzer/lib/instrumentation/multicast_service.dart
index 995dbfe..9c7e0af 100644
--- a/pkg/analyzer/lib/instrumentation/multicast_service.dart
+++ b/pkg/analyzer/lib/instrumentation/multicast_service.dart
@@ -17,9 +17,11 @@
}
@override
- void logException(Object exception,
- [StackTrace stackTrace,
- List<InstrumentationServiceAttachment> attachments]) {
+ void logException(
+ Object exception, [
+ StackTrace? stackTrace,
+ List<InstrumentationServiceAttachment>? attachments,
+ ]) {
_services
.forEach((s) => s.logException(exception, stackTrace, attachments));
}
@@ -50,7 +52,7 @@
@override
void logPluginException(
- PluginData plugin, Object exception, StackTrace stackTrace) {
+ PluginData plugin, Object exception, StackTrace? stackTrace) {
_services
.forEach((s) => s.logPluginException(plugin, exception, stackTrace));
}
diff --git a/pkg/analyzer/lib/instrumentation/noop_service.dart b/pkg/analyzer/lib/instrumentation/noop_service.dart
index 47ca4ac..90be197 100644
--- a/pkg/analyzer/lib/instrumentation/noop_service.dart
+++ b/pkg/analyzer/lib/instrumentation/noop_service.dart
@@ -12,9 +12,11 @@
void logError(String message) {}
@override
- void logException(dynamic exception,
- [StackTrace stackTrace,
- List<InstrumentationServiceAttachment> attachments]) {}
+ void logException(
+ Object exception, [
+ StackTrace? stackTrace,
+ List<InstrumentationServiceAttachment>? attachments,
+ ]) {}
@override
void logInfo(String message, [dynamic exception]) {}
@@ -32,7 +34,7 @@
@override
void logPluginException(
- PluginData plugin, dynamic exception, StackTrace stackTrace) {}
+ PluginData plugin, dynamic exception, StackTrace? stackTrace) {}
@override
void logPluginNotification(String pluginId, String notification) {}
diff --git a/pkg/analyzer/lib/instrumentation/plugin_data.dart b/pkg/analyzer/lib/instrumentation/plugin_data.dart
index bc4c3e5..29c45bc 100644
--- a/pkg/analyzer/lib/instrumentation/plugin_data.dart
+++ b/pkg/analyzer/lib/instrumentation/plugin_data.dart
@@ -8,10 +8,10 @@
final String pluginId;
/// The name of the plugin.
- final String name;
+ final String? name;
/// The version of the plugin.
- final String version;
+ final String? version;
/// Initialize a newly created set of data about a plugin.
PluginData(this.pluginId, this.name, this.version);
diff --git a/pkg/analyzer/lib/instrumentation/service.dart b/pkg/analyzer/lib/instrumentation/service.dart
index 1fda166..617644f 100644
--- a/pkg/analyzer/lib/instrumentation/service.dart
+++ b/pkg/analyzer/lib/instrumentation/service.dart
@@ -4,7 +4,6 @@
import 'package:analyzer/instrumentation/noop_service.dart';
import 'package:analyzer/instrumentation/plugin_data.dart';
-import 'package:meta/meta.dart';
/// The interface used by client code to communicate with an instrumentation
/// service of some kind.
@@ -17,9 +16,11 @@
/// Log that the given non-priority [exception] was thrown, with the given
/// [stackTrace].
- void logException(dynamic exception,
- [StackTrace stackTrace,
- List<InstrumentationServiceAttachment> attachments]);
+ void logException(
+ Object exception, [
+ StackTrace? stackTrace,
+ List<InstrumentationServiceAttachment>? attachments,
+ ]);
/// Log unstructured text information for debugging purposes.
void logInfo(String message, [dynamic exception]);
@@ -41,7 +42,7 @@
/// Log that the given non-priority [exception] was thrown, with the given
/// [stackTrace] by the given [plugin].
void logPluginException(
- PluginData plugin, dynamic exception, StackTrace stackTrace);
+ PluginData plugin, Object exception, StackTrace? stackTrace);
/// Log a notification from the plugin with the given [pluginId].
void logPluginNotification(String pluginId, String notification);
@@ -86,8 +87,8 @@
/// Create a new attachment with the unique [id] and string [value].
InstrumentationServiceAttachment.string({
- @required String id,
- @required String value,
- }) : id = id,
+ required String id,
+ required String value,
+ }) : id = id,
stringValue = value;
}
diff --git a/pkg/analyzer/lib/source/error_processor.dart b/pkg/analyzer/lib/source/error_processor.dart
index 6d114c5..7278ee6 100644
--- a/pkg/analyzer/lib/source/error_processor.dart
+++ b/pkg/analyzer/lib/source/error_processor.dart
@@ -25,24 +25,24 @@
/// new ErrorConfig({'missing_return' : 'error'});
/// will create a processor config that turns `missing_return` hints into
/// errors.
- ErrorConfig(YamlNode codeMap) {
+ ErrorConfig(YamlNode? codeMap) {
_processMap(codeMap);
}
- void _process(String code, Object action) {
+ void _process(String? code, Object action) {
code = toUpperCase(code);
- action = toLowerCase(action);
- if (AnalyzerOptions.ignoreSynonyms.contains(action)) {
- processors.add(ErrorProcessor.ignore(code));
+ var actionStr = toLowerCase(action);
+ if (AnalyzerOptions.ignoreSynonyms.contains(actionStr)) {
+ processors.add(ErrorProcessor.ignore(code!));
} else {
- ErrorSeverity severity = _toSeverity(action);
+ var severity = _toSeverity(actionStr);
if (severity != null) {
- processors.add(ErrorProcessor(code, severity));
+ processors.add(ErrorProcessor(code!, severity));
}
}
}
- void _processMap(YamlNode codes) {
+ void _processMap(YamlNode? codes) {
if (codes is YamlMap) {
codes.nodes.forEach((k, v) {
if (k is YamlScalar && v is YamlScalar) {
@@ -52,7 +52,7 @@
}
}
- ErrorSeverity _toSeverity(String severity) => severityMap[severity];
+ ErrorSeverity? _toSeverity(String? severity) => severityMap[severity];
}
/// Process errors by filtering or changing associated [ErrorSeverity].
@@ -63,7 +63,7 @@
/// The desired severity of the processed error.
///
/// If `null`, this processor will "filter" the associated error code.
- final ErrorSeverity severity;
+ final ErrorSeverity? severity;
/// Create an error processor that assigns errors with this [code] the
/// given [severity].
@@ -87,8 +87,8 @@
/// Return an error processor associated in the [analysisOptions] for the
/// given [error], or `null` if none is found.
- static ErrorProcessor getProcessor(
- AnalysisOptions analysisOptions, AnalysisError error) {
+ static ErrorProcessor? getProcessor(
+ AnalysisOptions? analysisOptions, AnalysisError error) {
if (analysisOptions == null) {
return null;
}
@@ -98,7 +98,11 @@
// Add the strong mode processor.
processors = processors.toList();
- return processors.firstWhere((ErrorProcessor p) => p.appliesTo(error),
- orElse: () => null);
+ for (var processor in processors) {
+ if (processor.appliesTo(error)) {
+ return processor;
+ }
+ }
+ return null;
}
}
diff --git a/pkg/analyzer/lib/source/line_info.dart b/pkg/analyzer/lib/source/line_info.dart
index 96c9149..71d4d91 100644
--- a/pkg/analyzer/lib/source/line_info.dart
+++ b/pkg/analyzer/lib/source/line_info.dart
@@ -29,9 +29,7 @@
/// Initialize a newly created set of line information to represent the data
/// encoded in the given list of [lineStarts].
LineInfo(this.lineStarts) {
- if (lineStarts == null) {
- throw ArgumentError("lineStarts must be non-null");
- } else if (lineStarts.isEmpty) {
+ if (lineStarts.isEmpty) {
throw ArgumentError("lineStarts must be non-empty");
}
}
diff --git a/pkg/analyzer/lib/source/source_range.dart b/pkg/analyzer/lib/source/source_range.dart
index d934abd..c744010 100644
--- a/pkg/analyzer/lib/source/source_range.dart
+++ b/pkg/analyzer/lib/source/source_range.dart
@@ -75,7 +75,7 @@
}
/// Return `true` if this source range intersects the [otherRange].
- bool intersects(SourceRange otherRange) {
+ bool intersects(SourceRange? otherRange) {
if (otherRange == null) {
return false;
}
diff --git a/pkg/analyzer/lib/src/analysis_options/analysis_options_provider.dart b/pkg/analyzer/lib/src/analysis_options/analysis_options_provider.dart
index 1a8488c..a32a3dd 100644
--- a/pkg/analyzer/lib/src/analysis_options/analysis_options_provider.dart
+++ b/pkg/analyzer/lib/src/analysis_options/analysis_options_provider.dart
@@ -17,7 +17,7 @@
class AnalysisOptionsProvider {
/// The source factory used to resolve include declarations
/// in analysis options files or `null` if include is not supported.
- SourceFactory sourceFactory;
+ SourceFactory? sourceFactory;
AnalysisOptionsProvider([this.sourceFactory]);
@@ -27,7 +27,7 @@
/// and remove the include directive from the resulting options map.
/// Return an empty options map if the file does not exist.
YamlMap getOptions(Folder root, {bool crawlUp = false}) {
- File optionsFile = getOptionsFile(root, crawlUp: crawlUp);
+ File? optionsFile = getOptionsFile(root, crawlUp: crawlUp);
if (optionsFile == null) {
return YamlMap();
}
@@ -39,9 +39,9 @@
///
/// The given [root] directory will be searched first. If no file is found and
/// if [crawlUp] is `true`, then enclosing directories will be searched.
- File getOptionsFile(Folder root, {bool crawlUp = false}) {
- Resource resource;
- for (Folder folder = root; folder != null; folder = folder.parent) {
+ File? getOptionsFile(Folder root, {bool crawlUp = false}) {
+ Resource? resource;
+ for (Folder? folder = root; folder != null; folder = folder.parent) {
resource = folder.getChild(AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE);
if (resource.exists || !crawlUp) {
break;
@@ -67,12 +67,14 @@
/// Return an empty options map if the file does not exist.
YamlMap getOptionsFromSource(Source source) {
YamlMap options = getOptionsFromString(_readAnalysisOptions(source));
- YamlNode node = getValue(options, AnalyzerOptions.include);
+ var node = getValue(options, AnalyzerOptions.include);
if (sourceFactory != null && node is YamlScalar) {
var path = node.value;
if (path is String) {
- Source parent = sourceFactory.resolveUri(source, path);
- options = merge(getOptionsFromSource(parent), options);
+ var parent = sourceFactory!.resolveUri(source, path);
+ if (parent != null) {
+ options = merge(getOptionsFromSource(parent), options);
+ }
}
}
return options;
@@ -82,7 +84,7 @@
/// An include directive, if present, will be left as-is,
/// and the referenced options will NOT be merged into the result.
/// Return an empty options map if the source is null.
- YamlMap getOptionsFromString(String optionsSource) {
+ YamlMap getOptionsFromString(String? optionsSource) {
if (optionsSource == null) {
return YamlMap();
}
@@ -116,7 +118,7 @@
/// Read the contents of [source] as a string.
/// Returns null if source is null or does not exist.
- String _readAnalysisOptions(Source source) {
+ String? _readAnalysisOptions(Source source) {
try {
return source.contents.data;
} catch (e) {
@@ -129,10 +131,10 @@
/// Thrown on options format exceptions.
class OptionsFormatException implements Exception {
final String message;
- final SourceSpan span;
+ final SourceSpan? span;
OptionsFormatException(this.message, [this.span]);
@override
String toString() =>
- 'OptionsFormatException: ${message?.toString()}, ${span?.toString()}';
+ 'OptionsFormatException: ${message.toString()}, ${span?.toString()}';
}
diff --git a/pkg/analyzer/lib/src/analysis_options/error/option_codes.dart b/pkg/analyzer/lib/src/analysis_options/error/option_codes.dart
index b67961f..78c31f7 100644
--- a/pkg/analyzer/lib/src/analysis_options/error/option_codes.dart
+++ b/pkg/analyzer/lib/src/analysis_options/error/option_codes.dart
@@ -30,7 +30,7 @@
/// Initialize a newly created error code to have the given [name].
const AnalysisOptionsErrorCode(String name, String message,
- {String correction})
+ {String? correction})
: super(
correction: correction,
message: message,
@@ -82,7 +82,7 @@
/// Initialize a newly created hint code to have the given [name].
const AnalysisOptionsHintCode(String name, String message,
- {String correction})
+ {String? correction})
: super(
correction: correction,
message: message,
@@ -209,7 +209,7 @@
/// Initialize a newly created warning code to have the given [name].
const AnalysisOptionsWarningCode(String name, String message,
- {String correction})
+ {String? correction})
: super(
correction: correction,
message: message,
diff --git a/pkg/analyzer/lib/src/command_line/arguments.dart b/pkg/analyzer/lib/src/command_line/arguments.dart
index 1bf44e0..4b72704 100644
--- a/pkg/analyzer/lib/src/command_line/arguments.dart
+++ b/pkg/analyzer/lib/src/command_line/arguments.dart
@@ -27,7 +27,7 @@
/// Update [options] with the value of each analysis option command line flag.
void applyAnalysisOptionFlags(AnalysisOptionsImpl options, ArgResults args,
- {void Function(String text) verbosePrint}) {
+ {void Function(String text)? verbosePrint}) {
void verbose(String text) {
if (verbosePrint != null) {
verbosePrint('Analysis options: $text');
@@ -57,7 +57,7 @@
ResourceProvider resourceProvider,
ArgResults args,
) {
- String absoluteNormalizedPath(String path) {
+ String? absoluteNormalizedPath(String? path) {
if (path == null) {
return null;
}
@@ -222,11 +222,11 @@
Set<String> knownAbbreviations = HashSet<String>();
parser.options.forEach((String name, Option option) {
knownOptions.add(name);
- String abbreviation = option.abbr;
+ String? abbreviation = option.abbr;
if (abbreviation != null) {
knownAbbreviations.add(abbreviation);
}
- if (option.negatable) {
+ if (option.negatable ?? false) {
knownOptions.add('no-$name');
}
});
diff --git a/pkg/analyzer/lib/src/context/builder.dart b/pkg/analyzer/lib/src/context/builder.dart
index c91e372..9280477 100644
--- a/pkg/analyzer/lib/src/context/builder.dart
+++ b/pkg/analyzer/lib/src/context/builder.dart
@@ -60,38 +60,38 @@
/// arguments as the dart analysis driver constructor so that plugins may
/// create their own drivers with the same tools, in theory. Here as a stopgap
/// until the official plugin API is complete
- static Function onCreateAnalysisDriver;
+ static Function? onCreateAnalysisDriver;
/// The [ResourceProvider] by which paths are converted into [Resource]s.
final ResourceProvider resourceProvider;
/// The manager used to manage the DartSdk's that have been created so that
/// they can be shared across contexts.
- final DartSdkManager sdkManager;
+ final DartSdkManager? sdkManager;
/// The cache containing the contents of overlaid files. If this builder will
/// be used to build analysis drivers, set the [fileContentOverlay] instead.
- final ContentCache contentCache;
+ final ContentCache? contentCache;
/// The options used by the context builder.
final ContextBuilderOptions builderOptions;
/// The scheduler used by any analysis drivers created through this interface.
- AnalysisDriverScheduler analysisDriverScheduler;
+ late final AnalysisDriverScheduler analysisDriverScheduler;
/// The performance log used by any analysis drivers created through this
/// interface.
- PerformanceLog performanceLog;
+ late final PerformanceLog performanceLog;
/// If `true`, additional analysis data useful for testing is stored.
bool retainDataForTesting = false;
/// The byte store used by any analysis drivers created through this interface.
- ByteStore byteStore;
+ late final ByteStore byteStore;
/// The file content overlay used by analysis drivers. If this builder will be
/// used to build analysis contexts, set the [contentCache] instead.
- FileContentOverlay fileContentOverlay;
+ FileContentOverlay? fileContentOverlay;
/// Whether any analysis driver created through this interface should support
/// indexing and search.
@@ -100,19 +100,18 @@
/// Initialize a newly created builder to be ready to build a context rooted in
/// the directory with the given [rootDirectoryPath].
ContextBuilder(this.resourceProvider, this.sdkManager, this.contentCache,
- {ContextBuilderOptions options})
+ {ContextBuilderOptions? options})
: builderOptions = options ?? ContextBuilderOptions();
/// Return an analysis driver that is configured correctly to analyze code in
/// the directory with the given [path].
AnalysisDriver buildDriver(ContextRoot contextRoot) {
String path = contextRoot.root;
- AnalysisOptions options =
- getAnalysisOptions(path, contextRoot: contextRoot);
+ var options = getAnalysisOptions(path, contextRoot: contextRoot);
//_processAnalysisOptions(context, optionMap);
- SummaryDataStore summaryData;
+ SummaryDataStore? summaryData;
if (builderOptions.librarySummaryPaths != null) {
- summaryData = SummaryDataStore(builderOptions.librarySummaryPaths);
+ summaryData = SummaryDataStore(builderOptions.librarySummaryPaths!);
}
Workspace workspace =
ContextBuilder.createWorkspace(resourceProvider, path, this);
@@ -152,7 +151,7 @@
// temporary plugin support:
if (onCreateAnalysisDriver != null) {
- onCreateAnalysisDriver(driver, analysisDriverScheduler, performanceLog,
+ onCreateAnalysisDriver!(driver, analysisDriverScheduler, performanceLog,
resourceProvider, byteStore, fileContentOverlay, path, sf, options);
}
declareVariablesInDriver(driver);
@@ -160,8 +159,8 @@
}
/// Return an analysis options object containing the default option values.
- AnalysisOptions createDefaultOptions() {
- AnalysisOptions defaultOptions = builderOptions.defaultOptions;
+ AnalysisOptionsImpl createDefaultOptions() {
+ AnalysisOptions? defaultOptions = builderOptions.defaultOptions;
if (defaultOptions == null) {
return AnalysisOptionsImpl();
}
@@ -203,7 +202,7 @@
}
SourceFactory createSourceFactory(String rootPath,
- {SummaryDataStore summaryData}) {
+ {SummaryDataStore? summaryData}) {
Workspace workspace =
ContextBuilder.createWorkspace(resourceProvider, rootPath, this);
DartSdk sdk = findSdk(workspace);
@@ -214,7 +213,7 @@
}
SourceFactory createSourceFactoryFromWorkspace(Workspace workspace,
- {SummaryDataStore summaryData}) {
+ {SummaryDataStore? summaryData}) {
DartSdk sdk = findSdk(workspace);
if (summaryData != null && sdk is SummaryBasedDartSdk) {
summaryData.addBundle(null, sdk.bundle);
@@ -225,8 +224,8 @@
/// Add any [declaredVariables] to the list of declared variables used by the
/// given analysis [driver].
void declareVariablesInDriver(AnalysisDriver driver) {
- Map<String, String> variables = builderOptions.declaredVariables;
- if (variables != null && variables.isNotEmpty) {
+ var variables = builderOptions.declaredVariables;
+ if (variables.isNotEmpty) {
driver.declaredVariables = DeclaredVariables.fromMap(variables);
driver.configure();
}
@@ -234,8 +233,8 @@
/// Return the SDK that should be used to analyze code. Use the given
/// [workspace] to locate the SDK.
- DartSdk findSdk(Workspace workspace) {
- String summaryPath = builderOptions.dartSdkSummaryPath;
+ DartSdk findSdk(Workspace? workspace) {
+ String? summaryPath = builderOptions.dartSdkSummaryPath;
if (summaryPath != null) {
return SummaryBasedDartSdk(summaryPath, true,
resourceProvider: resourceProvider);
@@ -243,9 +242,9 @@
DartSdk folderSdk;
{
- String sdkPath = sdkManager.defaultSdkDirectory;
+ String sdkPath = sdkManager!.defaultSdkDirectory;
SdkDescription description = SdkDescription(sdkPath);
- folderSdk = sdkManager.getSdk(description, () {
+ folderSdk = sdkManager!.getSdk(description, () {
return FolderBasedDartSdk(
resourceProvider,
resourceProvider.getFolder(sdkPath),
@@ -260,7 +259,7 @@
);
if (embedderYamlSource != null) {
var embedderYamlPath = embedderYamlSource.fullName;
- var libFolder = resourceProvider.getFile(embedderYamlPath).parent;
+ var libFolder = resourceProvider.getFile(embedderYamlPath).parent!;
EmbedderYamlLocator locator =
EmbedderYamlLocator.forLibFolder(libFolder);
Map<Folder, YamlMap> embedderMap = locator.embedderYamls;
@@ -281,8 +280,8 @@
/// Return the analysis options that should be used to analyze code in the
/// directory with the given [path]. Use [verbosePrint] to echo verbose
/// information about the analysis options selection process.
- AnalysisOptions getAnalysisOptions(String path,
- {void Function(String text) verbosePrint, ContextRoot contextRoot}) {
+ AnalysisOptionsImpl getAnalysisOptions(String path,
+ {void Function(String text)? verbosePrint, ContextRoot? contextRoot}) {
void verbose(String text) {
if (verbosePrint != null) {
verbosePrint(text);
@@ -298,8 +297,8 @@
AnalysisOptionsProvider(sourceFactory);
AnalysisOptionsImpl options = createDefaultOptions();
- File optionsFile = getOptionsFile(path);
- YamlMap optionMap;
+ File? optionsFile = getOptionsFile(path);
+ YamlMap? optionMap;
if (optionsFile != null) {
try {
@@ -314,7 +313,7 @@
}
} else {
// Search for the default analysis options.
- Source source;
+ Source? source;
if (workspace is WorkspaceWithDefaultAnalysisOptions) {
source = sourceFactory.forUri(WorkspaceWithDefaultAnalysisOptions.uri);
} else {
@@ -338,7 +337,7 @@
if (optionMap != null) {
applyToAnalysisOptions(options, optionMap);
if (builderOptions.argResults != null) {
- applyAnalysisOptionFlags(options, builderOptions.argResults,
+ applyAnalysisOptionFlags(options, builderOptions.argResults!,
verbosePrint: verbosePrint);
}
} else {
@@ -363,15 +362,15 @@
/// If [forceSearch] is true, then don't return the default analysis options
/// path. This allows cli to locate what *would* have been the analysis options
/// file path, and super-impose the defaults over it in-place.
- File getOptionsFile(String path, {bool forceSearch = false}) {
+ File? getOptionsFile(String path, {bool forceSearch = false}) {
if (!forceSearch) {
- String filePath = builderOptions.defaultAnalysisOptionsFilePath;
+ String? filePath = builderOptions.defaultAnalysisOptionsFilePath;
if (filePath != null) {
return resourceProvider.getFile(filePath);
}
}
Folder root = resourceProvider.getFolder(path);
- for (Folder folder = root; folder != null; folder = folder.parent) {
+ for (Folder? folder = root; folder != null; folder = folder.parent) {
File file = folder
.getChildAssumingFile(AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE);
if (file.exists) {
@@ -383,8 +382,8 @@
/// Return the `pubspec.yaml` file that should be used when analyzing code in
/// the directory with the given [path], possibly `null`.
- File _findPubspecFile(String path) {
- var resource = resourceProvider.getResource(path);
+ File? _findPubspecFile(String path) {
+ Resource? resource = resourceProvider.getResource(path);
while (resource != null) {
if (resource is Folder) {
File pubspecFile = resource.getChildAssumingFile('pubspec.yaml');
@@ -414,7 +413,7 @@
PubWorkspace.find(resourceProvider, packageMap, rootPath) ??
BasicWorkspace.find(resourceProvider, packageMap, rootPath);
}
- Workspace workspace = BazelWorkspace.find(resourceProvider, rootPath);
+ Workspace? workspace = BazelWorkspace.find(resourceProvider, rootPath);
workspace ??= GnWorkspace.find(resourceProvider, rootPath);
workspace ??=
PackageBuildWorkspace.find(resourceProvider, packageMap, rootPath);
@@ -427,7 +426,7 @@
/// directory contains a `.packages` file.
static bool _hasPackageFileInPath(
ResourceProvider resourceProvider, String rootPath) {
- Folder folder = resourceProvider.getFolder(rootPath);
+ Folder? folder = resourceProvider.getFolder(rootPath);
while (folder != null) {
File file = folder.getChildAssumingFile('.packages');
if (file.exists) {
@@ -443,35 +442,34 @@
class ContextBuilderOptions {
/// The results of parsing the command line arguments as defined by
/// [defineAnalysisArguments] or `null` if none.
- ArgResults argResults;
+ ArgResults? argResults;
/// The file path of the file containing the summary of the SDK that should be
/// used to "analyze" the SDK. This option should only be specified by
/// command-line tools such as 'dartanalyzer' or 'ddc'.
- String dartSdkSummaryPath;
+ String? dartSdkSummaryPath;
/// The file path of the analysis options file that should be used in place of
/// any file in the root directory or a parent of the root directory, or `null`
/// if the normal lookup mechanism should be used.
- String defaultAnalysisOptionsFilePath;
+ String? defaultAnalysisOptionsFilePath;
- /// A table mapping variable names to values for the declared variables, or
- /// `null` if no additional variables should be declared.
- Map<String, String> declaredVariables;
+ /// A table mapping variable names to values for the declared variables.
+ Map<String, String> declaredVariables = {};
/// The default analysis options that should be used unless some or all of them
/// are overridden in the analysis options file, or `null` if the default
/// defaults should be used.
- AnalysisOptions defaultOptions;
+ AnalysisOptions? defaultOptions;
/// The file path of the .packages file that should be used in place of any
/// file found using the normal (Package Specification DEP) lookup mechanism,
/// or `null` if the normal lookup mechanism should be used.
- String defaultPackageFilePath;
+ String? defaultPackageFilePath;
/// A list of the paths of summary files that are to be used, or `null` if no
/// summary information is available.
- List<String> librarySummaryPaths;
+ List<String>? librarySummaryPaths;
/// Initialize a newly created set of options
ContextBuilderOptions();
@@ -489,7 +487,7 @@
/// Initialize a newly created locator by processing the packages in the given
/// [packageMap].
- EmbedderYamlLocator(Map<String, List<Folder>> packageMap) {
+ EmbedderYamlLocator(Map<String, List<Folder>>? packageMap) {
if (packageMap != null) {
_processPackageMap(packageMap);
}
@@ -507,7 +505,7 @@
/// Refresh the map of located files to those found by processing the given
/// [packageMap].
- void refresh(Map<String, List<Folder>> packageMap) {
+ void refresh(Map<String, List<Folder>>? packageMap) {
// Clear existing.
embedderYamls.clear();
if (packageMap != null) {
@@ -532,7 +530,7 @@
/// `_embedder.yaml` files that are found in any of the folders.
void _processPackage(List<Folder> libDirs) {
for (Folder libDir in libDirs) {
- String embedderYaml = _readEmbedderYaml(libDir);
+ String? embedderYaml = _readEmbedderYaml(libDir);
if (embedderYaml != null) {
_processEmbedderYaml(libDir, embedderYaml);
}
@@ -544,10 +542,10 @@
packageMap.values.forEach(_processPackage);
}
- /// Read and return the contents of [libDir]/[EMBEDDER_FILE_NAME], or `null` if
- /// the file doesn't exist.
- String _readEmbedderYaml(Folder libDir) {
- File file = libDir.getChild(EMBEDDER_FILE_NAME);
+ /// Read and return the contents of [libDir]/[EMBEDDER_FILE_NAME], or `null`
+ /// if the file doesn't exist.
+ String? _readEmbedderYaml(Folder libDir) {
+ var file = libDir.getChildAssumingFile(EMBEDDER_FILE_NAME);
try {
return file.readAsStringSync();
} on FileSystemException {
diff --git a/pkg/analyzer/lib/src/context/context.dart b/pkg/analyzer/lib/src/context/context.dart
index 28cdb0c..e6b7d64 100644
--- a/pkg/analyzer/lib/src/context/context.dart
+++ b/pkg/analyzer/lib/src/context/context.dart
@@ -2,14 +2,12 @@
// 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.
-import 'package:analyzer/dart/element/type_provider.dart';
import 'package:analyzer/src/dart/analysis/session.dart';
import 'package:analyzer/src/dart/element/type_provider.dart';
import 'package:analyzer/src/dart/element/type_system.dart';
import 'package:analyzer/src/generated/constant.dart';
import 'package:analyzer/src/generated/engine.dart';
import 'package:analyzer/src/generated/source.dart';
-import 'package:meta/meta.dart';
/// An [AnalysisContext] in which analysis can be performed.
class AnalysisContextImpl implements AnalysisContext {
@@ -35,6 +33,8 @@
return _synchronousSession.declaredVariables;
}
+ bool get hasTypeProvider => _synchronousSession.hasTypeProvider;
+
@override
set sourceFactory(SourceFactory factory) {
throw StateError('Cannot be changed.');
@@ -61,8 +61,8 @@
}
void setTypeProviders({
- @required TypeProvider legacy,
- @required TypeProvider nonNullableByDefault,
+ required TypeProviderImpl legacy,
+ required TypeProviderImpl nonNullableByDefault,
}) {
_synchronousSession.setTypeProviders(
legacy: legacy,
diff --git a/pkg/analyzer/lib/src/context/context_root.dart b/pkg/analyzer/lib/src/context/context_root.dart
index 393c3d5..d79e72c 100644
--- a/pkg/analyzer/lib/src/context/context_root.dart
+++ b/pkg/analyzer/lib/src/context/context_root.dart
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/src/generated/utilities_general.dart';
-import 'package:meta/meta.dart';
import 'package:path/path.dart' as path;
/// Information about the root directory associated with an analysis context.
@@ -24,11 +23,10 @@
/// An informative value for the file path that the analysis options were read
/// from. This value can be `null` if there is no analysis options file or if
/// the location of the file has not yet been discovered.
- String optionsFilePath;
+ String? optionsFilePath;
/// Initialize a newly created context root.
- ContextRoot(this.root, this.exclude, {@required path.Context pathContext})
- : pathContext = pathContext ?? path.context;
+ ContextRoot(this.root, this.exclude, {required this.pathContext});
@override
int get hashCode {
@@ -66,7 +64,7 @@
/// Compare the lists [listA] and [listB], using [itemEqual] to compare list
/// elements.
bool _listEqual<T>(
- List<T> listA, List<T> listB, bool Function(T a, T b) itemEqual) {
+ List<T>? listA, List<T>? listB, bool Function(T a, T b) itemEqual) {
if (listA == null) {
return listB == null;
}
diff --git a/pkg/analyzer/lib/src/context/package_config_json.dart b/pkg/analyzer/lib/src/context/package_config_json.dart
index afc2047..cfda8b6 100644
--- a/pkg/analyzer/lib/src/context/package_config_json.dart
+++ b/pkg/analyzer/lib/src/context/package_config_json.dart
@@ -4,7 +4,6 @@
import 'dart:convert';
-import 'package:meta/meta.dart';
import 'package:pub_semver/pub_semver.dart';
/// Parse the content of a `package_config.json` file located at the [uri].
@@ -46,27 +45,27 @@
/// The timestamp for when the file was generated.
///
/// Might be `null`.
- final DateTime generated;
+ final DateTime? generated;
/// The generator which created the file, typically "pub".
///
/// Might be `null`.
- final String generator;
+ final String? generator;
/// The version of the generator, if the generator wants to remember that
/// information. The version must be a Semantic Version. Pub can use the
/// SDK version.
///
/// Might be `null`.
- final Version generatorVersion;
+ final Version? generatorVersion;
PackageConfigJson({
- @required this.uri,
- @required this.configVersion,
- @required this.packages,
- @required this.generated,
- @required this.generator,
- @required this.generatorVersion,
+ required this.uri,
+ required this.configVersion,
+ required this.packages,
+ required this.generated,
+ required this.generator,
+ required this.generatorVersion,
});
}
@@ -85,13 +84,13 @@
final Uri packageUri;
/// The language version for the package, or `null` if not specified.
- final LanguageVersion languageVersion;
+ final LanguageVersion? languageVersion;
PackageConfigJsonPackage({
- this.name,
- this.rootUri,
- this.packageUri,
- this.languageVersion,
+ required this.name,
+ required this.rootUri,
+ required this.packageUri,
+ required this.languageVersion,
});
}
@@ -101,11 +100,11 @@
final Uri uri;
final String content;
- int version;
+ late int version;
List<PackageConfigJsonPackage> packages = [];
- DateTime generated;
- String generator;
- Version generatorVersion;
+ DateTime? generated;
+ String? generator;
+ Version? generatorVersion;
_PackageConfigJsonParser(this.uri, this.content);
@@ -128,9 +127,9 @@
}
}
- T _getOptionalField<T>(Map<String, Object> map, String name) {
+ T? _getOptionalField<T>(Map<String, dynamic> map, String name) {
var object = map[name];
- if (object is T || object == null) {
+ if (object is T?) {
return object;
} else {
var actualType = object.runtimeType;
@@ -141,7 +140,7 @@
}
}
- T _getRequiredField<T>(Map<String, Object> map, String name) {
+ T _getRequiredField<T>(Map<String, dynamic> map, String name) {
var object = map[name];
if (object is T) {
return object;
@@ -156,7 +155,7 @@
}
}
- void _parseGenerated(Map<String, Object> map) {
+ void _parseGenerated(Map<String, dynamic> map) {
var generatedStr = _getOptionalField<String>(map, 'generated');
if (generatedStr != null) {
generated = DateTime.parse(generatedStr);
@@ -173,7 +172,7 @@
}
}
- void _parsePackage(Map<String, Object> map) {
+ void _parsePackage(Map<String, Object?> map) {
var name = _getRequiredField<String>(map, 'name');
var rootUriStr = _getRequiredField<String>(map, 'rootUri');
@@ -217,7 +216,7 @@
);
}
- LanguageVersion _parsePackageLanguageVersion(Map<String, Object> map) {
+ LanguageVersion? _parsePackageLanguageVersion(Map<String, Object?> map) {
var versionStr = _getOptionalField<String>(map, 'languageVersion');
if (versionStr == null) {
return null;
@@ -225,8 +224,8 @@
var match = _languageVersionRegExp.matchAsPrefix(versionStr);
if (match != null && match.end == versionStr.length) {
- var major = int.parse(match.group(1));
- var minor = int.parse(match.group(2));
+ var major = int.parse(match.group(1)!);
+ var minor = int.parse(match.group(2)!);
return LanguageVersion(major, minor);
} else {
throw FormatException(
@@ -236,16 +235,16 @@
}
}
- void _parsePackages(Map<String, Object> map) {
- var packagesObject = _getRequiredField<List<Object>>(map, 'packages');
+ void _parsePackages(Map<String, Object?> map) {
+ var packagesObject = _getRequiredField<List<Object?>>(map, 'packages');
for (var packageObject in packagesObject) {
- if (packageObject is Map<String, Object>) {
+ if (packageObject is Map<String, dynamic>) {
_parsePackage(packageObject);
}
}
}
- void _parseVersion(Map<String, Object> map) {
+ void _parseVersion(Map<String, Object?> map) {
version = _getRequiredField(map, 'configVersion');
if (version != 2) {
throw FormatException("Unsupported config version: $version");
diff --git a/pkg/analyzer/lib/src/context/packages.dart b/pkg/analyzer/lib/src/context/packages.dart
index 087680f..57cdcd2 100644
--- a/pkg/analyzer/lib/src/context/packages.dart
+++ b/pkg/analyzer/lib/src/context/packages.dart
@@ -5,7 +5,7 @@
import 'package:analyzer/file_system/file_system.dart';
import 'package:analyzer/src/context/package_config_json.dart';
import 'package:analyzer/src/util/uri.dart';
-import 'package:meta/meta.dart';
+// ignore: import_of_legacy_library_into_null_safe
import 'package:package_config/src/packages_file.dart'
as package_config_packages_file;
import 'package:pub_semver/pub_semver.dart';
@@ -15,7 +15,7 @@
/// Looks for `.dart_tool/package_config.json` or `.packages` in the given
/// and parent directories.
Packages findPackagesFrom(ResourceProvider provider, Resource start) {
- for (var current = start; current != null; current = current.parent) {
+ for (Resource? current = start; current != null; current = current.parent) {
if (current is Folder) {
try {
var jsonFile = current
@@ -92,11 +92,11 @@
jsonPackage.packageUri,
);
- Version languageVersion;
+ Version? languageVersion;
if (jsonPackage.languageVersion != null) {
languageVersion = Version(
- jsonPackage.languageVersion.major,
- jsonPackage.languageVersion.minor,
+ jsonPackage.languageVersion!.major,
+ jsonPackage.languageVersion!.minor,
0,
);
// New features were added in `2.2.2` over `2.2.0`.
@@ -128,7 +128,7 @@
if (isJson) {
return parsePackageConfigJsonFile(provider, file);
} else {
- var relativePackageConfigFile = file.parent
+ var relativePackageConfigFile = file.parent!
.getChildAssumingFolder('.dart_tool')
.getChildAssumingFile('package_config.json');
if (relativePackageConfigFile.exists) {
@@ -147,13 +147,13 @@
final Folder libFolder;
/// The language version for this package, `null` not specified explicitly.
- final Version languageVersion;
+ final Version? languageVersion;
Package({
- @required this.name,
- @required this.rootFolder,
- @required this.libFolder,
- @required this.languageVersion,
+ required this.name,
+ required this.rootFolder,
+ required this.libFolder,
+ required this.languageVersion,
});
}
@@ -167,12 +167,12 @@
Iterable<Package> get packages => _map.values;
/// Return the [Package] with the given [name], or `null`.
- Package operator [](String name) => _map[name];
+ Package? operator [](String name) => _map[name];
/// Return the inner-most [Package] that contains the [path], `null` if none.
- Package packageForPath(String path) {
- Package result;
- int resultPathLength;
+ Package? packageForPath(String path) {
+ Package? result;
+ int resultPathLength = 1 << 20;
for (var package in packages) {
if (package.rootFolder.contains(path)) {
var packagePathLength = package.rootFolder.path.length;
diff --git a/pkg/analyzer/lib/src/context/source.dart b/pkg/analyzer/lib/src/context/source.dart
index 377fe5e..714c9c6 100644
--- a/pkg/analyzer/lib/src/context/source.dart
+++ b/pkg/analyzer/lib/src/context/source.dart
@@ -15,7 +15,7 @@
/// Return `true` if the given [source] refers to a file that is assumed to be
/// generated.
-bool isGeneratedSource(Source source) {
+bool isGeneratedSource(Source? source) {
if (source == null) {
return false;
}
@@ -51,7 +51,7 @@
SourceFactoryImpl(this.resolvers);
@override
- DartSdk get dartSdk {
+ DartSdk? get dartSdk {
List<UriResolver> resolvers = this.resolvers;
int length = resolvers.length;
for (int i = 0; i < length; i++) {
@@ -65,7 +65,7 @@
}
@override
- Map<String, List<Folder>> get packageMap {
+ Map<String, List<Folder>>? get packageMap {
for (var resolver in resolvers) {
if (resolver is PackageMapUriResolver) {
return resolver.packageMap;
@@ -86,7 +86,7 @@
}
@override
- Source forUri(String absoluteUri) {
+ Source? forUri(String absoluteUri) {
try {
Uri uri;
try {
@@ -109,7 +109,7 @@
}
@override
- Source forUri2(Uri absoluteUri) {
+ Source? forUri2(Uri absoluteUri) {
if (absoluteUri.isAbsolute) {
try {
return _internalResolveUri(null, absoluteUri);
@@ -124,7 +124,7 @@
}
@override
- Source resolveUri(Source containingSource, String containedUri) {
+ Source? resolveUri(Source? containingSource, String? containedUri) {
if (containedUri == null) {
return null;
}
@@ -151,10 +151,10 @@
}
@override
- Uri restoreUri(Source source) {
+ Uri? restoreUri(Source source) {
for (UriResolver resolver in resolvers) {
// First see if a resolver can restore the URI.
- Uri uri = resolver.restoreAbsolute(source);
+ Uri? uri = resolver.restoreAbsolute(source);
if (uri != null) {
return uri;
@@ -175,7 +175,7 @@
/// @return the source representing the contained URI
/// @throws AnalysisException if either the contained URI is invalid or if it
/// cannot be resolved against the source object's URI
- Source _internalResolveUri(Source containingSource, Uri containedUri) {
+ Source? _internalResolveUri(Source? containingSource, Uri containedUri) {
if (!containedUri.isAbsolute) {
if (containingSource == null) {
throw AnalysisException(
@@ -188,14 +188,16 @@
Uri actualUri = containedUri;
- return _absoluteUriToSourceCache.putIfAbsent(actualUri, () {
+ var result = _absoluteUriToSourceCache[actualUri];
+ if (result == null) {
for (UriResolver resolver in resolvers) {
- Source result = resolver.resolveAbsolute(containedUri, actualUri);
+ result = resolver.resolveAbsolute(containedUri, actualUri);
if (result != null) {
- return result;
+ _absoluteUriToSourceCache[actualUri] = result;
+ break;
}
}
- return null;
- });
+ }
+ return result;
}
}
diff --git a/pkg/analyzer/lib/src/dart/analysis/analysis_context_collection.dart b/pkg/analyzer/lib/src/dart/analysis/analysis_context_collection.dart
index 2b9961a..cdd784b 100644
--- a/pkg/analyzer/lib/src/dart/analysis/analysis_context_collection.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/analysis_context_collection.dart
@@ -11,7 +11,6 @@
import 'package:analyzer/src/dart/analysis/byte_store.dart';
import 'package:analyzer/src/dart/analysis/context_builder.dart';
import 'package:cli_util/cli_util.dart';
-import 'package:meta/meta.dart';
/// An implementation of [AnalysisContextCollection].
class AnalysisContextCollectionImpl implements AnalysisContextCollection {
@@ -24,22 +23,20 @@
/// Initialize a newly created analysis context manager.
AnalysisContextCollectionImpl({
- ByteStore byteStore,
- Map<String, String> declaredVariables,
+ ByteStore? byteStore,
+ Map<String, String>? declaredVariables,
bool enableIndex = false,
- @required List<String> includedPaths,
- List<String> excludedPaths,
- ResourceProvider resourceProvider,
+ required List<String> includedPaths,
+ List<String>? excludedPaths,
+ ResourceProvider? resourceProvider,
bool retainDataForTesting = false,
- String sdkPath,
+ String? sdkPath,
}) : resourceProvider =
resourceProvider ?? PhysicalResourceProvider.INSTANCE {
sdkPath ??= getSdkPath();
_throwIfAnyNotAbsoluteNormalizedPath(includedPaths);
- if (sdkPath != null) {
- _throwIfNotAbsoluteNormalizedPath(sdkPath);
- }
+ _throwIfNotAbsoluteNormalizedPath(sdkPath);
var contextLocator = ContextLocator(
resourceProvider: this.resourceProvider,
diff --git a/pkg/analyzer/lib/src/dart/analysis/byte_store.dart b/pkg/analyzer/lib/src/dart/analysis/byte_store.dart
index fbb5afb..85ac05d 100644
--- a/pkg/analyzer/lib/src/dart/analysis/byte_store.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/byte_store.dart
@@ -17,7 +17,7 @@
abstract class ByteStore {
/// Return the bytes associated with the given [key].
/// Return `null` if the association does not exist.
- List<int> get(String key);
+ List<int>? get(String key);
/// Associate the given [bytes] with the [key].
void put(String key, List<int> bytes);
@@ -28,7 +28,7 @@
final Map<String, List<int>> _map = {};
@override
- List<int> get(String key) {
+ List<int>? get(String key) {
return _map[key];
}
@@ -47,7 +47,7 @@
: _cache = Cache<String, List<int>>(maxSizeBytes, (v) => v.length);
@override
- List<int> get(String key) {
+ List<int>? get(String key) {
return _cache.get(key, () => _store.get(key));
}
@@ -61,7 +61,7 @@
/// [ByteStore] which does not store any data.
class NullByteStore implements ByteStore {
@override
- List<int> get(String key) => null;
+ List<int>? get(String key) => null;
@override
void put(String key, List<int> bytes) {}
diff --git a/pkg/analyzer/lib/src/dart/analysis/cache.dart b/pkg/analyzer/lib/src/dart/analysis/cache.dart
index d7fe753..5f50eb1 100644
--- a/pkg/analyzer/lib/src/dart/analysis/cache.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/cache.dart
@@ -12,8 +12,8 @@
Cache(this._maxSizeBytes, this._meter);
- V get(K key, V Function() getNotCached) {
- V value = _map.remove(key);
+ V? get(K key, V? Function() getNotCached) {
+ V? value = _map.remove(key);
if (value == null) {
value = getNotCached();
if (value != null) {
@@ -28,7 +28,7 @@
}
void put(K key, V value) {
- V oldValue = _map[key];
+ V? oldValue = _map[key];
if (oldValue != null) {
_currentSizeBytes -= _meter(oldValue);
}
@@ -47,7 +47,7 @@
break;
}
K key = _map.keys.first;
- V value = _map.remove(key);
+ V value = _map.remove(key)!;
_currentSizeBytes -= _meter(value);
}
}
diff --git a/pkg/analyzer/lib/src/dart/analysis/context_builder.dart b/pkg/analyzer/lib/src/dart/analysis/context_builder.dart
index c10d5a4..cf3c196 100644
--- a/pkg/analyzer/lib/src/dart/analysis/context_builder.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/context_builder.dart
@@ -23,7 +23,6 @@
import 'package:analyzer/src/generated/sdk.dart' show DartSdkManager;
import 'package:analyzer/src/generated/source.dart' show ContentCache;
import 'package:cli_util/cli_util.dart';
-import 'package:meta/meta.dart';
/// An implementation of a context builder.
class ContextBuilderImpl implements ContextBuilder {
@@ -33,22 +32,22 @@
/// Initialize a newly created context builder. If a [resourceProvider] is
/// given, then it will be used to access the file system, otherwise the
/// default resource provider will be used.
- ContextBuilderImpl({ResourceProvider resourceProvider})
+ ContextBuilderImpl({ResourceProvider? resourceProvider})
: resourceProvider =
resourceProvider ?? PhysicalResourceProvider.INSTANCE;
@override
AnalysisContext createContext(
- {ByteStore byteStore,
- @required ContextRoot contextRoot,
- DeclaredVariables declaredVariables,
+ {ByteStore? byteStore,
+ required ContextRoot contextRoot,
+ DeclaredVariables? declaredVariables,
bool enableIndex = false,
- List<String> librarySummaryPaths,
- @deprecated PerformanceLog performanceLog,
- bool retainDataForTesting = false,
- @deprecated AnalysisDriverScheduler scheduler,
- String sdkPath,
- String sdkSummaryPath}) {
+ List<String>? librarySummaryPaths,
+ @deprecated PerformanceLog? performanceLog,
+ bool retainDataForTesting = false,
+ @deprecated AnalysisDriverScheduler? scheduler,
+ String? sdkPath,
+ String? sdkSummaryPath}) {
// TODO(scheglov) Remove this, and make `sdkPath` required.
sdkPath ??= getSdkPath();
ArgumentError.checkNotNull(sdkPath, 'sdkPath');
@@ -108,7 +107,7 @@
Map<String, String> _toMap(DeclaredVariables declaredVariables) {
Map<String, String> map = <String, String>{};
for (String name in declaredVariables.variableNames) {
- map[name] = declaredVariables.get(name);
+ map[name] = declaredVariables.get(name)!;
}
return map;
}
diff --git a/pkg/analyzer/lib/src/dart/analysis/context_locator.dart b/pkg/analyzer/lib/src/dart/analysis/context_locator.dart
index 65fdea6..24bd476 100644
--- a/pkg/analyzer/lib/src/dart/analysis/context_locator.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/context_locator.dart
@@ -13,7 +13,6 @@
import 'package:analyzer/src/task/options.dart';
import 'package:analyzer/src/util/yaml.dart';
import 'package:glob/glob.dart';
-import 'package:meta/meta.dart';
import 'package:path/path.dart';
import 'package:yaml/yaml.dart';
@@ -37,23 +36,22 @@
/// Initialize a newly created context locator. If a [resourceProvider] is
/// supplied, it will be used to access the file system. Otherwise the default
/// resource provider will be used.
- ContextLocatorImpl({ResourceProvider resourceProvider})
+ ContextLocatorImpl({ResourceProvider? resourceProvider})
: resourceProvider =
resourceProvider ?? PhysicalResourceProvider.INSTANCE;
@override
List<ContextRoot> locateRoots(
- {@required List<String> includedPaths,
- List<String> excludedPaths,
- String optionsFile,
- String packagesFile}) {
+ {required List<String> includedPaths,
+ List<String>? excludedPaths,
+ String? optionsFile,
+ String? packagesFile}) {
//
// Compute the list of folders and files that are to be included.
//
List<Folder> includedFolders = <Folder>[];
List<File> includedFiles = <File>[];
- _resourcesFromPaths(
- includedPaths ?? const <String>[], includedFolders, includedFiles);
+ _resourcesFromPaths(includedPaths, includedFolders, includedFiles);
//
// Compute the list of folders and files that are to be excluded.
//
@@ -81,14 +79,14 @@
// analyzed. For each, walk the directory structure and figure out where to
// create context roots.
//
- File defaultOptionsFile;
+ File? defaultOptionsFile;
if (optionsFile != null) {
defaultOptionsFile = resourceProvider.getFile(optionsFile);
if (!defaultOptionsFile.exists) {
defaultOptionsFile = null;
}
}
- File defaultPackagesFile;
+ File? defaultPackagesFile;
if (packagesFile != null) {
defaultPackagesFile = resourceProvider.getFile(packagesFile);
if (!defaultPackagesFile.exists) {
@@ -108,7 +106,7 @@
}
Map<Folder, ContextRoot> rootMap = <Folder, ContextRoot>{};
for (File file in includedFiles) {
- Folder parent = file.parent;
+ Folder parent = file.parent!;
ContextRoot root = rootMap.putIfAbsent(parent, () {
ContextRootImpl root = ContextRootImpl(resourceProvider, parent);
root.packagesFile = defaultPackagesFile ?? _findPackagesFile(parent);
@@ -144,17 +142,17 @@
List<Folder> excludedFolders,
ContextRoot containingRoot,
List<Glob> excludedGlobs,
- File optionsFile,
- File packagesFile) {
+ File? optionsFile,
+ File? packagesFile) {
//
// If the options and packages files are allowed to be locally specified,
// then look to see whether they are.
//
- File localOptionsFile;
+ File? localOptionsFile;
if (optionsFile == null) {
localOptionsFile = _getOptionsFile(folder);
}
- File localPackagesFile;
+ File? localPackagesFile;
if (packagesFile == null) {
localPackagesFile = _getPackagesFile(folder);
}
@@ -195,8 +193,8 @@
List<Folder> excludedFolders,
ContextRoot containingRoot,
List<Glob> excludedGlobs,
- File optionsFile,
- File packagesFile) {
+ File? optionsFile,
+ File? packagesFile) {
bool isExcluded(Folder folder) {
if (excludedFolders.contains(folder) ||
folder.shortName.startsWith('.')) {
@@ -234,13 +232,13 @@
/// Return the analysis options file to be used to analyze files in the given
/// [folder], or `null` if there is no analysis options file in the given
/// folder or any parent folder.
- File _findOptionsFile(Folder folder) {
- while (folder != null) {
- File optionsFile = _getOptionsFile(folder);
+ File? _findOptionsFile(Folder? folder) {
+ for (Folder? current = folder; current != null;) {
+ File? optionsFile = _getOptionsFile(current);
if (optionsFile != null) {
return optionsFile;
}
- folder = folder.parent;
+ current = current.parent;
}
return null;
}
@@ -248,13 +246,13 @@
/// Return the packages file to be used to analyze files in the given
/// [folder], or `null` if there is no packages file in the given folder or
/// any parent folder.
- File _findPackagesFile(Folder folder) {
- while (folder != null) {
- File packagesFile = _getPackagesFile(folder);
+ File? _findPackagesFile(Folder folder) {
+ for (Folder? current = folder; current != null;) {
+ File? packagesFile = _getPackagesFile(current);
if (packagesFile != null) {
return packagesFile;
}
- folder = folder.parent;
+ current = current.parent;
}
return null;
}
@@ -266,24 +264,24 @@
/// associated with the context root.
List<Glob> _getExcludedGlobs(ContextRootImpl root) {
List<Glob> patterns = [];
- File optionsFile = root.optionsFile;
+ File? optionsFile = root.optionsFile;
if (optionsFile != null) {
try {
String content = optionsFile.readAsStringSync();
YamlNode doc = loadYamlNode(content);
if (doc is YamlMap) {
- YamlNode analyzerOptions = getValue(doc, AnalyzerOptions.analyzer);
+ var analyzerOptions = getValue(doc, AnalyzerOptions.analyzer);
if (analyzerOptions is YamlMap) {
- YamlNode excludeOptions =
+ var excludeOptions =
getValue(analyzerOptions, AnalyzerOptions.exclude);
if (excludeOptions is YamlList) {
- List<String> excludeList = toStringList(excludeOptions);
+ List<String>? excludeList = toStringList(excludeOptions);
if (excludeList != null) {
for (String excludedPath in excludeList) {
Context context = resourceProvider.pathContext;
if (context.isRelative(excludedPath)) {
excludedPath = posix.joinAll([
- ...context.split(optionsFile.parent.path),
+ ...context.split(optionsFile.parent!.path),
...posix.split(excludedPath),
]);
}
@@ -303,7 +301,7 @@
/// If the given [directory] contains a file with the given [name], then
/// return the file. Otherwise, return `null`.
- File _getFile(Folder directory, String name) {
+ File? _getFile(Folder directory, String name) {
Resource resource = directory.getChild(name);
if (resource is File && resource.exists) {
return resource;
@@ -313,12 +311,12 @@
/// Return the analysis options file in the given [folder], or `null` if the
/// folder does not contain an analysis options file.
- File _getOptionsFile(Folder folder) =>
+ File? _getOptionsFile(Folder folder) =>
_getFile(folder, ANALYSIS_OPTIONS_NAME);
/// Return the packages file in the given [folder], or `null` if the folder
/// does not contain a packages file.
- File _getPackagesFile(Folder folder) {
+ File? _getPackagesFile(Folder folder) {
var file = folder
.getChildAssumingFolder(DOT_DART_TOOL_NAME)
.getChildAssumingFile(PACKAGE_CONFIG_JSON_NAME);
diff --git a/pkg/analyzer/lib/src/dart/analysis/context_root.dart b/pkg/analyzer/lib/src/dart/analysis/context_root.dart
index 5888139..6045b3b 100644
--- a/pkg/analyzer/lib/src/dart/analysis/context_root.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/context_root.dart
@@ -26,10 +26,10 @@
List<Glob> excludedGlobs = [];
@override
- File optionsFile;
+ File? optionsFile;
@override
- File packagesFile;
+ File? packagesFile;
/// Initialize a newly created context root.
ContextRootImpl(this.resourceProvider, this.root);
diff --git a/pkg/analyzer/lib/src/dart/analysis/defined_names.dart b/pkg/analyzer/lib/src/dart/analysis/defined_names.dart
index ed3cfb7..c308535 100644
--- a/pkg/analyzer/lib/src/dart/analysis/defined_names.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/defined_names.dart
@@ -8,8 +8,8 @@
DefinedNames computeDefinedNames(CompilationUnit unit) {
DefinedNames names = DefinedNames();
- void appendName(Set<String> names, SimpleIdentifier node) {
- String name = node?.name;
+ void appendName(Set<String> names, SimpleIdentifier? node) {
+ var name = node?.name;
if (name != null && name.isNotEmpty) {
names.add(name);
}
diff --git a/pkg/analyzer/lib/src/dart/analysis/dependency/library_builder.dart b/pkg/analyzer/lib/src/dart/analysis/dependency/library_builder.dart
index 9b9a320..836177c 100644
--- a/pkg/analyzer/lib/src/dart/analysis/dependency/library_builder.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/dependency/library_builder.dart
@@ -58,7 +58,7 @@
final Uri uri;
/// The import prefix, or `null` if not specified.
- final String prefix;
+ final String? prefix;
/// The list of namespace combinators to apply, not `null`.
final List<Combinator> combinators;
@@ -83,7 +83,7 @@
final List<Export> exports;
/// The list of libraries that correspond to the [imports].
- List<Library> importedLibraries;
+ List<Library>? importedLibraries;
/// The list of top-level nodes defined in the library.
///
@@ -98,13 +98,13 @@
/// directives, or declared in this library.
///
/// This list is sorted.
- List<Node> exportedNodes;
+ List<Node>? exportedNodes;
/// The map of nodes that are visible in the library, either imported,
/// or declared in this library.
///
/// TODO(scheglov) support for imports with prefixes
- Map<String, Node> libraryScope;
+ Map<String, Node>? libraryScope;
Library(this.uri, this.imports, this.exports, this.declaredNodes) {
for (var node in declaredNodes) {
@@ -140,13 +140,13 @@
/// It is mixed into every API token signature, because for example even
/// though types of two functions might be the same, their locations
/// are different.
- List<int> uriSignature;
+ late List<int> uriSignature;
/// The name of the enclosing class name, or `null` if outside a class.
- String enclosingClassName;
+ String? enclosingClassName;
/// The super class of the enclosing class, or `null` if outside a class.
- TypeName enclosingSuperClass;
+ TypeName? enclosingSuperClass;
/// The precomputed signature of the enclosing class name, or `null` if
/// outside a class.
@@ -154,10 +154,10 @@
/// It is mixed into every API token signature of every class member, because
/// for example even though types of two methods might be the same, their
/// locations are different.
- List<int> enclosingClassNameSignature;
+ List<int>? enclosingClassNameSignature;
/// The node of the enclosing class.
- Node enclosingClass;
+ Node? enclosingClass;
_LibraryBuilder(this.uri, this.units);
@@ -182,7 +182,7 @@
}
enclosingClassNameSignature =
- (ApiSignature()..addString(enclosingClassName)).toByteList();
+ (ApiSignature()..addString(enclosingClassName!)).toByteList();
var apiTokenSignature = _computeTokenSignature(
node.beginToken,
@@ -212,7 +212,7 @@
}
enclosingClass = Node(
- LibraryQualifiedName(uri, enclosingClassName),
+ LibraryQualifiedName(uri, enclosingClassName!),
node is MixinDeclaration ? NodeKind.MIXIN : NodeKind.CLASS,
api,
Dependencies.none,
@@ -226,7 +226,7 @@
List<Node> classTypeParameters;
if (node.typeParameters != null) {
classTypeParameters = <Node>[];
- for (var typeParameter in node.typeParameters.typeParameters) {
+ for (var typeParameter in node.typeParameters!.typeParameters) {
var api = referenceCollector.collect(
_computeNodeTokenSignature(typeParameter),
enclosingClassName: enclosingClassName,
@@ -238,11 +238,11 @@
NodeKind.TYPE_PARAMETER,
api,
Dependencies.none,
- enclosingClass: enclosingClass,
+ enclosingClass: enclosingClass!,
));
}
classTypeParameters.sort(Node.compare);
- enclosingClass.setTypeParameters(classTypeParameters);
+ enclosingClass!.setTypeParameters(classTypeParameters);
}
var classMembers = <Node>[];
@@ -271,14 +271,14 @@
NodeKind.CONSTRUCTOR,
Dependencies.none,
Dependencies.none,
- enclosingClass: enclosingClass,
+ enclosingClass: enclosingClass!,
));
}
classMembers.sort(Node.compare);
- enclosingClass.setClassMembers(classMembers);
+ enclosingClass!.setClassMembers(classMembers);
- declaredNodes.add(enclosingClass);
+ declaredNodes.add(enclosingClass!);
enclosingClassName = null;
enclosingClassNameSignature = null;
enclosingSuperClass = null;
@@ -331,7 +331,7 @@
NodeKind.CONSTRUCTOR,
api,
impl,
- enclosingClass: enclosingClass,
+ enclosingClass: enclosingClass!,
));
}
@@ -392,7 +392,7 @@
for (var directive in units.first.directives) {
if (directive is ExportDirective) {
var refUri = directive.uri.stringValue;
- var importUri = uri.resolve(refUri);
+ var importUri = uri.resolve(refUri!);
var combinators = _getCombinators(directive);
exports.add(Export(importUri, combinators));
}
@@ -466,22 +466,23 @@
}
void _addGenericTypeAlias(GenericTypeAlias node) {
+ // TODO(scheglov) Support all types.
var functionType = node.functionType;
var builder = _newApiSignatureBuilder();
_appendMetadataTokens(builder, node.metadata);
_appendNodeTokens(builder, node.typeParameters);
- _appendNodeTokens(builder, functionType.returnType);
- _appendNodeTokens(builder, functionType.typeParameters);
- _appendFormalParametersTokens(builder, functionType.parameters);
+ _appendNodeTokens(builder, functionType?.returnType);
+ _appendNodeTokens(builder, functionType?.typeParameters);
+ _appendFormalParametersTokens(builder, functionType?.parameters);
var apiTokenSignature = builder.toByteList();
var api = referenceCollector.collect(
apiTokenSignature,
typeParameters: node.typeParameters,
- typeParameters2: functionType.typeParameters,
- formalParameters: functionType.parameters,
- returnType: functionType.returnType,
+ typeParameters2: functionType?.typeParameters,
+ formalParameters: functionType?.parameters,
+ returnType: functionType?.returnType,
);
declaredNodes.add(Node(
@@ -498,7 +499,7 @@
for (var directive in units.first.directives) {
if (directive is ImportDirective) {
var refUri = directive.uri.stringValue;
- var importUri = uri.resolve(refUri);
+ var importUri = uri.resolve(refUri!);
if (importUri.toString() == 'dart:core') {
hasDartCoreImport = true;
@@ -506,10 +507,11 @@
var combinators = _getCombinators(directive);
- imports.add(Import(importUri, directive.prefix?.name, combinators));
+ var prefix = directive.prefix;
+ imports.add(Import(importUri, prefix?.name, combinators));
- if (directive.prefix != null) {
- referenceCollector.addImportPrefix(directive.prefix.name);
+ if (prefix != null) {
+ referenceCollector.addImportPrefix(prefix.name);
}
}
}
@@ -557,7 +559,7 @@
var name = LibraryQualifiedName(uri, node.name.name);
classMembers.add(
- Node(name, kind, api, impl, enclosingClass: enclosingClass),
+ Node(name, kind, api, impl, enclosingClass: enclosingClass!),
);
}
@@ -648,7 +650,7 @@
}
/// Return the signature for all tokens of the [node].
- List<int> _computeNodeTokenSignature(AstNode node) {
+ List<int> _computeNodeTokenSignature(AstNode? node) {
if (node == null) {
return const <int>[];
}
@@ -667,14 +669,14 @@
var builder = ApiSignature();
builder.addBytes(uriSignature);
if (enclosingClassNameSignature != null) {
- builder.addBytes(enclosingClassNameSignature);
+ builder.addBytes(enclosingClassNameSignature!);
}
return builder;
}
/// Append tokens of the given [parameters] to the [signature].
static void _appendFormalParametersTokens(
- ApiSignature signature, FormalParameterList parameters) {
+ ApiSignature signature, FormalParameterList? parameters) {
if (parameters == null) return;
for (var parameter in parameters.parameters) {
@@ -694,7 +696,7 @@
_appendTokens(
signature,
parameter.beginToken,
- parameter.type.endToken,
+ parameter.type!.endToken,
);
continue;
}
@@ -706,15 +708,13 @@
static void _appendMetadataTokens(
ApiSignature signature, List<Annotation> metadata) {
- if (metadata != null) {
- for (var annotation in metadata) {
- _appendNodeTokens(signature, annotation);
- }
+ for (var annotation in metadata) {
+ _appendNodeTokens(signature, annotation);
}
}
/// Append tokens of the given [node] to the [signature].
- static void _appendNodeTokens(ApiSignature signature, AstNode node) {
+ static void _appendNodeTokens(ApiSignature signature, AstNode? node) {
if (node != null) {
_appendTokens(signature, node.beginToken, node.endToken);
}
@@ -723,10 +723,10 @@
/// Append tokens from [begin] to [end] (both including) to the [signature].
static void _appendTokens(ApiSignature signature, Token begin, Token end) {
if (begin is CommentToken) {
- begin = (begin as CommentToken).parent;
+ begin = begin.parent!;
}
- Token token = begin;
+ Token? token = begin;
while (token != null) {
signature.addString(token.lexeme);
diff --git a/pkg/analyzer/lib/src/dart/analysis/dependency/node.dart b/pkg/analyzer/lib/src/dart/analysis/dependency/node.dart
index c7713fb..e99f616 100644
--- a/pkg/analyzer/lib/src/dart/analysis/dependency/node.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/dependency/node.dart
@@ -83,12 +83,12 @@
/// All referenced nodes, computed from [unprefixedReferencedNames],
/// [importPrefixedReferencedNames], and [classMemberReferences].
- List<Node> referencedNodes;
+ List<Node>? referencedNodes;
/// The transitive signature of this portion of the node, computed using
/// the [tokenSignature] of this node, and API signatures of the
/// [referencedNodes].
- List<int> transitiveSignature;
+ List<int>? transitiveSignature;
Dependencies(
this.tokenSignature,
@@ -177,26 +177,26 @@
/// If the node is a class member, the node of the enclosing class.
/// Otherwise `null`.
- final Node enclosingClass;
+ final Node? enclosingClass;
/// If the node is a class, the nodes of its type parameters.
/// Otherwise `null`.
- List<Node> classTypeParameters;
+ List<Node>? classTypeParameters;
/// If the node is a class, the sorted list of members in this class.
/// Otherwise `null`.
- List<Node> classMembers;
+ List<Node>? classMembers;
Node(this.name, this.kind, this.api, this.impl,
{this.enclosingClass, this.classTypeParameters});
/// Return the node that can be referenced by the given [name] from the
/// library with the given [libraryUri].
- Node getClassMember(Uri libraryUri, String name) {
+ Node? getClassMember(Uri libraryUri, String name) {
// TODO(scheglov) The list is sorted, use this fact to search faster.
// TODO(scheglov) Collect superclass members here or outside.
- for (var i = 0; i < classMembers.length; ++i) {
- var member = classMembers[i];
+ for (var i = 0; i < classMembers!.length; ++i) {
+ var member = classMembers![i];
var memberName = member.name;
if (memberName.name == name && memberName.isAccessibleFor(libraryUri)) {
return member;
diff --git a/pkg/analyzer/lib/src/dart/analysis/dependency/reference_collector.dart b/pkg/analyzer/lib/src/dart/analysis/dependency/reference_collector.dart
index 1314ccf..6f7679b 100644
--- a/pkg/analyzer/lib/src/dart/analysis/dependency/reference_collector.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/dependency/reference_collector.dart
@@ -8,7 +8,6 @@
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/src/dart/analysis/dependency/node.dart';
import 'package:analyzer/src/dart/ast/token.dart';
-import 'package:meta/meta.dart';
/// Collector of information about external nodes referenced by a node.
///
@@ -55,24 +54,24 @@
/// Construct and return a new [Dependencies] with the given [tokenSignature]
/// and all recorded references to external nodes in the given AST nodes.
Dependencies collect(List<int> tokenSignature,
- {String enclosingClassName,
- String thisNodeName,
- List<ConstructorInitializer> constructorInitializers,
- TypeName enclosingSuperClass,
- Expression expression,
- ExtendsClause extendsClause,
- FormalParameterList formalParameters,
- FormalParameterList formalParametersForImpl,
- FunctionBody functionBody,
- ImplementsClause implementsClause,
- OnClause onClause,
- ConstructorName redirectedConstructor,
- TypeAnnotation returnType,
- TypeName superClass,
- TypeAnnotation type,
- TypeParameterList typeParameters,
- TypeParameterList typeParameters2,
- WithClause withClause}) {
+ {String? enclosingClassName,
+ String? thisNodeName,
+ List<ConstructorInitializer>? constructorInitializers,
+ TypeName? enclosingSuperClass,
+ Expression? expression,
+ ExtendsClause? extendsClause,
+ FormalParameterList? formalParameters,
+ FormalParameterList? formalParametersForImpl,
+ FunctionBody? functionBody,
+ ImplementsClause? implementsClause,
+ OnClause? onClause,
+ ConstructorName? redirectedConstructor,
+ TypeAnnotation? returnType,
+ TypeName? superClass,
+ TypeAnnotation? type,
+ TypeParameterList? typeParameters,
+ TypeParameterList? typeParameters2,
+ WithClause? withClause}) {
_localScopes.enter();
// The name of the node shadows any external names.
@@ -113,25 +112,14 @@
var unprefixedReferencedNames = _unprefixedReferences.toList();
_unprefixedReferences = _NameSet();
- var importPrefixCount = 0;
- for (var i = 0; i < _importPrefixedReferences.length; i++) {
- var import = _importPrefixedReferences[i];
- if (import.names.isNotEmpty) {
- importPrefixCount++;
- }
- }
-
- var importPrefixes = List<String>.filled(importPrefixCount, null);
- var importPrefixedReferencedNames =
- List<List<String>>.filled(importPrefixCount, null);
- var importIndex = 0;
+ var importPrefixes = <String>[];
+ var importPrefixedReferencedNames = <List<String>>[];
for (var i = 0; i < _importPrefixedReferences.length; i++) {
var import = _importPrefixedReferences[i];
if (import.names.isNotEmpty) {
- importPrefixes[importIndex] = import.prefix;
- importPrefixedReferencedNames[importIndex] = import.names.toList();
- importIndex++;
+ importPrefixes.add(import.prefix);
+ importPrefixedReferencedNames.add(import.names.toList());
}
import.clear();
@@ -162,11 +150,11 @@
return references;
}
}
- return null;
+ throw StateError('Expected prefix: $name');
}
void _recordClassMemberReference(
- {Expression target, DartType targetType, String name}) {
+ {Expression? target, DartType? targetType, required String name}) {
if (target is Identifier) {
var element = target.staticElement;
if (element is ClassElement) {
@@ -174,7 +162,7 @@
return;
}
}
- targetType ??= target.staticType;
+ targetType ??= target!.staticType;
if (targetType is InterfaceType) {
_memberReferences.add(targetType.element, name);
@@ -195,7 +183,9 @@
}
}
- void _visitArgumentList(ArgumentList node) {
+ void _visitArgumentList(ArgumentList? node) {
+ if (node == null) return;
+
var arguments = node.arguments;
for (var i = 0; i < arguments.length; i++) {
var argument = arguments[i];
@@ -235,7 +225,7 @@
_visitExpression(node.rightOperand);
}
- void _visitBlock(Block node) {
+ void _visitBlock(Block? node) {
if (node == null) return;
_visitStatements(node.statements);
@@ -250,7 +240,7 @@
}
}
- void _visitCollectionElement(CollectionElement node) {
+ void _visitCollectionElement(CollectionElement? node) {
if (node == null) {
return;
} else if (node is Expression) {
@@ -273,7 +263,7 @@
}
/// Record reference to the constructor of the [type] with the given [name].
- void _visitConstructor(TypeName type, SimpleIdentifier name) {
+ void _visitConstructor(TypeName type, SimpleIdentifier? name) {
_visitTypeAnnotation(type);
if (name != null) {
@@ -284,7 +274,7 @@
}
void _visitConstructorInitializers(
- TypeName superClass, List<ConstructorInitializer> initializers) {
+ TypeName? superClass, List<ConstructorInitializer>? initializers) {
if (initializers == null) return;
for (var i = 0; i < initializers.length; i++) {
@@ -295,7 +285,7 @@
} else if (initializer is ConstructorFieldInitializer) {
_visitExpression(initializer.expression);
} else if (initializer is SuperConstructorInvocation) {
- _visitConstructor(superClass, initializer.constructorName);
+ _visitConstructor(superClass!, initializer.constructorName);
_visitArgumentList(initializer.argumentList);
} else if (initializer is RedirectingConstructorInvocation) {
_visitArgumentList(initializer.argumentList);
@@ -309,13 +299,13 @@
}
}
- void _visitConstructorName(ConstructorName node) {
+ void _visitConstructorName(ConstructorName? node) {
if (node == null) return;
_visitConstructor(node.type, node.name);
}
- void _visitExpression(Expression node, {bool get = true, bool set = false}) {
+ void _visitExpression(Expression? node, {bool get = true, bool set = false}) {
if (node == null) return;
if (node is AdjacentStrings) {
@@ -405,7 +395,7 @@
}
}
- void _visitForLoopParts(ForLoopParts node) {
+ void _visitForLoopParts(ForLoopParts? node) {
if (node == null) {
return;
} else if (node is ForPartsWithDeclarations) {
@@ -429,7 +419,7 @@
}
}
- void _visitFormalParameterList(FormalParameterList node) {
+ void _visitFormalParameterList(FormalParameterList? node) {
if (node == null) return;
var parameters = node.parameters;
@@ -440,7 +430,7 @@
parameter = defaultParameter.parameter;
}
if (parameter.identifier != null) {
- _localScopes.add(parameter.identifier.name);
+ _localScopes.add(parameter.identifier!.name);
}
if (parameter is FieldFormalParameter) {
_visitTypeAnnotation(parameter.type);
@@ -459,7 +449,7 @@
}
}
- void _visitFormalParameterListImpl(FormalParameterList node) {
+ void _visitFormalParameterListImpl(FormalParameterList? node) {
if (node == null) return;
var parameters = node.parameters;
@@ -473,7 +463,7 @@
}
if (parameter.identifier != null) {
- _localScopes.add(parameter.identifier.name);
+ _localScopes.add(parameter.identifier!.name);
}
}
}
@@ -487,7 +477,7 @@
_localScopes.exit();
}
- void _visitFunctionBody(FunctionBody node) {
+ void _visitFunctionBody(FunctionBody? node) {
if (node == null) return;
if (node is BlockFunctionBody) {
@@ -517,7 +507,7 @@
}
void _visitIndexExpression(IndexExpression node,
- {@required bool get, @required bool set}) {
+ {required bool get, required bool set}) {
var target = node.target;
if (target == null) {
// no dependencies
@@ -616,7 +606,7 @@
}
void _visitPropertyAccess(PropertyAccess node,
- {@required bool get, @required bool set}) {
+ {required bool get, required bool set}) {
var realTarget = node.realTarget;
var name = node.propertyName.name;
@@ -648,7 +638,7 @@
}
void _visitSimpleIdentifier(SimpleIdentifier node,
- {@required bool get, @required bool set}) {
+ {required bool get, required bool set}) {
if (node.isSynthetic) return;
var name = node.name;
@@ -667,7 +657,7 @@
}
}
- void _visitStatement(Statement node) {
+ void _visitStatement(Statement? node) {
if (node == null) return;
if (node is AssertStatement) {
@@ -787,14 +777,14 @@
_visitBlock(node.finallyBlock);
}
- void _visitTypeAnnotation(TypeAnnotation node) {
+ void _visitTypeAnnotation(TypeAnnotation? node) {
if (node == null) return;
if (node is GenericFunctionType) {
_localScopes.enter();
if (node.typeParameters != null) {
- var typeParameters = node.typeParameters.typeParameters;
+ var typeParameters = node.typeParameters!.typeParameters;
for (var i = 0; i < typeParameters.length; i++) {
var typeParameter = typeParameters[i];
_localScopes.add(typeParameter.name.name);
@@ -818,7 +808,7 @@
}
}
- void _visitTypeAnnotations(List<TypeAnnotation> typeAnnotations) {
+ void _visitTypeAnnotations(List<TypeAnnotation>? typeAnnotations) {
if (typeAnnotations == null) return;
for (var i = 0; i < typeAnnotations.length; i++) {
@@ -827,13 +817,13 @@
}
}
- void _visitTypeArguments(TypeArgumentList node) {
+ void _visitTypeArguments(TypeArgumentList? node) {
if (node == null) return;
_visitTypeAnnotations(node.arguments);
}
- void _visitTypeParameterList(TypeParameterList node) {
+ void _visitTypeParameterList(TypeParameterList? node) {
if (node == null) return;
var typeParameters = node.typeParameters;
@@ -851,7 +841,7 @@
}
}
- void _visitVariableList(VariableDeclarationList node) {
+ void _visitVariableList(VariableDeclarationList? node) {
if (node == null) return;
_visitTypeAnnotation(node.type);
diff --git a/pkg/analyzer/lib/src/dart/analysis/driver.dart b/pkg/analyzer/lib/src/dart/analysis/driver.dart
index 9792278..7c67e46 100644
--- a/pkg/analyzer/lib/src/dart/analysis/driver.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/driver.dart
@@ -86,7 +86,7 @@
/// TODO(scheglov) Clean up the list of implicitly analyzed files.
class AnalysisDriver implements AnalysisDriverGeneric {
/// The version of data format, should be incremented on every format change.
- static const int DATA_VERSION = 122;
+ static const int DATA_VERSION = 125;
/// The length of the list returned by [_computeDeclaredVariablesSignature].
static const int _declaredVariablesSignatureLength = 4;
@@ -113,11 +113,11 @@
/// The optional store with externally provided unlinked and corresponding
/// linked summaries. These summaries are always added to the store for any
/// file analysis.
- final SummaryDataStore _externalSummaries;
+ final SummaryDataStore? _externalSummaries;
/// This [ContentCache] is consulted for a file content before reading
/// the content from the file.
- final FileContentOverlay _contentOverlay;
+ final FileContentOverlay? _contentOverlay;
/// The analysis options to analyze with.
AnalysisOptionsImpl _analysisOptions;
@@ -133,10 +133,10 @@
DeclaredVariables declaredVariables = DeclaredVariables();
/// Information about the context root being analyzed by this driver.
- final ContextRoot contextRoot;
+ final ContextRoot? contextRoot;
/// The analysis context that created this driver / session.
- api.AnalysisContext analysisContext;
+ api.AnalysisContext? analysisContext;
/// The salt to mix into all hashes used as keys for unlinked data.
final Uint32List _saltForUnlinked =
@@ -167,7 +167,7 @@
/// The task that discovers available files. If this field is not `null`,
/// and the task is not completed, it should be performed and completed
/// before any name searching task.
- _DiscoverAvailableFilesTask _discoverAvailableFilesTask;
+ _DiscoverAvailableFilesTask? _discoverAvailableFilesTask;
/// The list of tasks to compute files defining a class member name.
final _definingClassMemberNameTasks = <_FilesDefiningClassMemberNameTask>[];
@@ -220,7 +220,7 @@
final _resultController = StreamController<ResolvedUnitResult>();
/// The stream that will be written to when analysis results are produced.
- Stream<ResolvedUnitResult> _onResults;
+ late final Stream<ResolvedUnitResult> _onResults;
/// Resolution signatures of the most recently produced results for files.
final Map<String, String> _lastProducedSignatures = {};
@@ -233,36 +233,36 @@
StreamController<ExceptionResult>();
/// The instance of the [Search] helper.
- Search _search;
+ late final Search _search;
- AnalysisDriverTestView _testView;
+ late final AnalysisDriverTestView _testView;
- FeatureSetProvider featureSetProvider;
+ late FeatureSetProvider featureSetProvider;
- FileSystemState _fsState;
+ late FileSystemState _fsState;
/// The [FileTracker] used by this driver.
- FileTracker _fileTracker;
+ late FileTracker _fileTracker;
/// Whether resolved units should be indexed.
final bool enableIndex;
/// The current analysis session.
- AnalysisSessionImpl _currentSession;
+ late AnalysisSessionImpl _currentSession;
/// The current library context, consistent with the [_currentSession].
///
/// TODO(scheglov) We probably should tie it into the session.
- LibraryContext _libraryContext;
+ LibraryContext? _libraryContext;
/// This function is invoked when the current session is about to be discarded.
/// The argument represents the path of the resource causing the session
/// to be discarded or `null` if there are multiple or this is unknown.
- void Function(String) onCurrentSessionAboutToBeDiscarded;
+ void Function(String?)? onCurrentSessionAboutToBeDiscarded;
/// If testing data is being retained, a pointer to the object that is
/// retaining the testing data. Otherwise `null`.
- final TestingData testingData;
+ final TestingData? testingData;
/// Create a new instance of [AnalysisDriver].
///
@@ -277,9 +277,9 @@
this.contextRoot,
SourceFactory sourceFactory,
this._analysisOptions,
- {Packages packages,
+ {Packages? packages,
this.enableIndex = false,
- SummaryDataStore externalSummaries,
+ SummaryDataStore? externalSummaries,
bool retainDataForTesting = false})
: _logger = logger,
_packages = packages ?? Packages.empty,
@@ -301,7 +301,7 @@
AnalysisOptions get analysisOptions => _analysisOptions;
/// Return the current analysis session.
- AnalysisSession get currentSession => _currentSession;
+ AnalysisSessionImpl get currentSession => _currentSession;
/// Return the stream that produces [ExceptionResult]s.
Stream<ExceptionResult> get exceptions => _exceptionController.stream;
@@ -387,7 +387,7 @@
return AnalysisDriverPriority.interactive;
}
if (_discoverAvailableFilesTask != null &&
- !_discoverAvailableFilesTask.isCompleted) {
+ !_discoverAvailableFilesTask!.isCompleted) {
return AnalysisDriverPriority.interactive;
}
if (_definingClassMemberNameTasks.isNotEmpty ||
@@ -495,10 +495,10 @@
/// At least one of the optional parameters should be provided, but only those
/// that represent state that has actually changed need be provided.
void configure({
- api.AnalysisContext analysisContext,
- AnalysisOptions analysisOptions,
- Packages packages,
- SourceFactory sourceFactory,
+ api.AnalysisContext? analysisContext,
+ AnalysisOptionsImpl? analysisOptions,
+ Packages? packages,
+ SourceFactory? sourceFactory,
}) {
if (analysisContext != null) {
this.analysisContext = analysisContext;
@@ -521,12 +521,12 @@
/// potentially available is done, so that they are included in [knownFiles].
Future<void> discoverAvailableFiles() {
if (_discoverAvailableFilesTask != null &&
- _discoverAvailableFilesTask.isCompleted) {
+ _discoverAvailableFilesTask!.isCompleted) {
return Future.value();
}
_discoverAvailableFiles();
_scheduler.notify(this);
- return _discoverAvailableFilesTask.completer.future;
+ return _discoverAvailableFilesTask!.completer!.future;
}
@override
@@ -541,7 +541,7 @@
/// The [path] must be absolute and normalized.
///
/// The [path] can be any file - explicitly or implicitly analyzed, or neither.
- ResolvedUnitResult getCachedResult(String path) {
+ ResolvedUnitResult? getCachedResult(String path) {
_throwIfNotAbsolutePath(path);
return _priorityResults[path];
}
@@ -554,7 +554,7 @@
///
/// This method does not use analysis priorities, and must not be used in
/// interactive analysis, such as Analysis Server or its plugins.
- Future<ErrorsResult> getErrors(String path) async {
+ Future<ErrorsResult?> getErrors(String path) async {
_throwIfNotAbsolutePath(path);
if (!_fsState.hasUri(path)) {
return null;
@@ -601,7 +601,7 @@
/// Return a [Future] that completes with the [AnalysisDriverUnitIndex] for
/// the file with the given [path], or with `null` if the file cannot be
/// analyzed.
- Future<AnalysisDriverUnitIndex> getIndex(String path) {
+ Future<AnalysisDriverUnitIndex?> getIndex(String path) {
_throwIfNotAbsolutePath(path);
if (!enableIndex) {
throw ArgumentError('Indexing is not enabled.');
@@ -640,7 +640,7 @@
throw ArgumentError('$uri is not a library.');
}
- UnitElementResult unitResult = await getUnitElement(file.path);
+ UnitElementResult unitResult = (await getUnitElement(file.path!))!;
return unitResult.element.library;
}
@@ -678,7 +678,11 @@
/// Throw [ArgumentError] if the given [uri] is not the defining compilation
/// unit for a library (that is, is a part of a library).
ParsedLibraryResult getParsedLibraryByUri(Uri uri) {
- FileState file = _fsState.getFileForUri(uri);
+ var file = _fsState.getFileForUri(uri);
+
+ if (file == null) {
+ throw ArgumentError('URI cannot be resolved: $uri');
+ }
if (file.isExternalLibrary) {
return ParsedLibraryResultImpl.external(currentSession, file.uri);
@@ -689,7 +693,7 @@
}
// The file is a local file, we can get the result.
- return getParsedLibrary(file.path);
+ return getParsedLibrary(file.path!);
}
/// Return a [Future] that completes with a [ResolvedLibraryResult] for the
@@ -749,7 +753,11 @@
/// [changeFile]), prior to the next time the analysis state transitions
/// to "idle".
Future<ResolvedLibraryResult> getResolvedLibraryByUri(Uri uri) {
- FileState file = _fsState.getFileForUri(uri);
+ var file = _fsState.getFileForUri(uri);
+
+ if (file == null) {
+ throw ArgumentError('URI cannot be resolved: $uri');
+ }
if (file.isExternalLibrary) {
return Future.value(
@@ -762,7 +770,7 @@
}
// The file is a local file, we can get the result.
- return getResolvedLibrary(file.path);
+ return getResolvedLibrary(file.path!);
}
ApiSignature getResolvedUnitKeyByPath(String path) {
@@ -790,7 +798,7 @@
/// it, which is consistent with the current file state (including new states
/// of the files previously reported using [changeFile]), prior to the next
/// time the analysis state transitions to "idle".
- Future<ResolvedUnitResult> getResult(String path,
+ Future<ResolvedUnitResult?> getResult(String path,
{bool sendCachedToStream = false}) {
_throwIfNotAbsolutePath(path);
if (!_fsState.hasUri(path)) {
@@ -799,7 +807,7 @@
// Return the cached result.
{
- ResolvedUnitResult result = getCachedResult(path);
+ ResolvedUnitResult? result = getCachedResult(path);
if (result != null) {
if (sendCachedToStream) {
_resultController.add(result);
@@ -822,7 +830,7 @@
/// be analyzed, the [Future] completes with `null`.
///
/// The [path] must be absolute and normalized.
- Future<SourceKind> getSourceKind(String path) async {
+ Future<SourceKind?> getSourceKind(String path) async {
_throwIfNotAbsolutePath(path);
if (AnalysisEngine.isDartFileName(path)) {
FileState file = _fileTracker.getFile(path);
@@ -833,7 +841,7 @@
/// Return a [Future] that completes with the [UnitElementResult] for the
/// file with the given [path], or with `null` if the file cannot be analyzed.
- Future<UnitElementResult> getUnitElement(String path) {
+ Future<UnitElementResult?> getUnitElement(String path) {
_throwIfNotAbsolutePath(path);
if (!_fsState.hasUri(path)) {
return Future.value();
@@ -917,7 +925,7 @@
FileState file = _fileTracker.getFile(path);
RecordingErrorListener listener = RecordingErrorListener();
CompilationUnit unit = file.parse(listener);
- return ParsedUnitResultImpl(currentSession, file.path, file.uri,
+ return ParsedUnitResultImpl(currentSession, file.path!, file.uri,
file.content, file.lineInfo, file.isPart, unit, listener.errors);
}
@@ -931,16 +939,16 @@
if (_requestedFiles.isNotEmpty) {
String path = _requestedFiles.keys.first;
try {
- AnalysisResult result = _computeAnalysisResult(path, withUnit: true);
+ var result = _computeAnalysisResult(path, withUnit: true);
// If a part without a library, delay its analysis.
if (result == null) {
_requestedParts
.putIfAbsent(path, () => [])
- .addAll(_requestedFiles.remove(path));
+ .addAll(_requestedFiles.remove(path)!);
return;
}
// Notify the completers.
- _requestedFiles.remove(path).forEach((completer) {
+ _requestedFiles.remove(path)!.forEach((completer) {
completer.complete(result);
});
// Remove from to be analyzed and produce it now.
@@ -949,7 +957,7 @@
} catch (exception, stackTrace) {
_reportException(path, exception, stackTrace);
_fileTracker.fileWasAnalyzed(path);
- _requestedFiles.remove(path).forEach((completer) {
+ _requestedFiles.remove(path)!.forEach((completer) {
completer.completeError(exception, stackTrace);
});
_clearLibraryContextAfterException();
@@ -962,11 +970,11 @@
String path = _requestedLibraries.keys.first;
try {
var result = _computeResolvedLibrary(path);
- _requestedLibraries.remove(path).forEach((completer) {
+ _requestedLibraries.remove(path)!.forEach((completer) {
completer.complete(result);
});
} catch (exception, stackTrace) {
- _requestedLibraries.remove(path).forEach((completer) {
+ _requestedLibraries.remove(path)!.forEach((completer) {
completer.completeError(exception, stackTrace);
});
_clearLibraryContextAfterException();
@@ -977,7 +985,7 @@
// Process an error request.
if (_errorsRequestedFiles.isNotEmpty) {
var path = _errorsRequestedFiles.keys.first;
- var completers = _errorsRequestedFiles.remove(path);
+ var completers = _errorsRequestedFiles.remove(path)!;
var result = _computeErrors(path: path, asIsIfPartWithoutLibrary: false);
if (result != null) {
completers.forEach((completer) {
@@ -993,7 +1001,7 @@
if (_indexRequestedFiles.isNotEmpty) {
String path = _indexRequestedFiles.keys.first;
AnalysisDriverUnitIndex index = _computeIndex(path);
- _indexRequestedFiles.remove(path).forEach((completer) {
+ _indexRequestedFiles.remove(path)!.forEach((completer) {
completer.complete(index);
});
return;
@@ -1002,8 +1010,8 @@
// Process a unit element key request.
if (_unitElementSignatureFiles.isNotEmpty) {
String path = _unitElementSignatureFiles.keys.first;
- String signature = _computeUnitElementSignature(path);
- var completers = _unitElementSignatureFiles.remove(path);
+ String? signature = _computeUnitElementSignature(path);
+ var completers = _unitElementSignatureFiles.remove(path)!;
if (signature != null) {
completers.forEach((completer) {
completer.complete(signature);
@@ -1019,8 +1027,8 @@
// Process a unit element request.
if (_unitElementRequestedFiles.isNotEmpty) {
String path = _unitElementRequestedFiles.keys.first;
- UnitElementResult result = _computeUnitElement(path);
- var completers = _unitElementRequestedFiles.remove(path);
+ UnitElementResult? result = _computeUnitElement(path);
+ var completers = _unitElementRequestedFiles.remove(path)!;
if (result != null) {
completers.forEach((completer) {
completer.complete(result);
@@ -1035,8 +1043,8 @@
// Discover available files.
if (_discoverAvailableFilesTask != null &&
- !_discoverAvailableFilesTask.isCompleted) {
- _discoverAvailableFilesTask.perform();
+ !_discoverAvailableFilesTask!.isCompleted) {
+ _discoverAvailableFilesTask!.perform();
return;
}
@@ -1066,8 +1074,7 @@
for (String path in _priorityFiles) {
if (_fileTracker.isFilePending(path)) {
try {
- AnalysisResult result =
- _computeAnalysisResult(path, withUnit: true);
+ var result = _computeAnalysisResult(path, withUnit: true);
if (result == null) {
_partsToAnalyze.add(path);
} else {
@@ -1088,7 +1095,7 @@
if (_fileTracker.hasPendingFiles) {
String path = _fileTracker.anyPendingFile;
try {
- AnalysisResult result = _computeAnalysisResult(path,
+ var result = _computeAnalysisResult(path,
withUnit: false, skipIfSameSignature: true);
if (result == null) {
_partsToAnalyze.add(path);
@@ -1097,7 +1104,7 @@
// last time, so we don't need to produce it again now.
} else {
_resultController.add(result);
- _lastProducedSignatures[result.path] = result._signature;
+ _lastProducedSignatures[result.path!] = result._signature;
}
} catch (exception, stackTrace) {
_reportException(path, exception, stackTrace);
@@ -1112,10 +1119,10 @@
if (_requestedParts.isNotEmpty) {
String path = _requestedParts.keys.first;
try {
- AnalysisResult result = _computeAnalysisResult(path,
- withUnit: true, asIsIfPartWithoutLibrary: true);
+ var result = _computeAnalysisResult(path,
+ withUnit: true, asIsIfPartWithoutLibrary: true)!;
// Notify the completers.
- _requestedParts.remove(path).forEach((completer) {
+ _requestedParts.remove(path)!.forEach((completer) {
completer.complete(result);
});
// Remove from to be analyzed and produce it now.
@@ -1124,7 +1131,7 @@
} catch (exception, stackTrace) {
_reportException(path, exception, stackTrace);
_partsToAnalyze.remove(path);
- _requestedParts.remove(path).forEach((completer) {
+ _requestedParts.remove(path)!.forEach((completer) {
completer.completeError(exception, stackTrace);
});
_clearLibraryContextAfterException();
@@ -1137,9 +1144,9 @@
String path = _partsToAnalyze.first;
_partsToAnalyze.remove(path);
try {
- AnalysisResult result = _computeAnalysisResult(path,
+ var result = _computeAnalysisResult(path,
withUnit: _priorityFiles.contains(path),
- asIsIfPartWithoutLibrary: true);
+ asIsIfPartWithoutLibrary: true)!;
_resultController.add(result);
} catch (exception, stackTrace) {
_reportException(path, exception, stackTrace);
@@ -1152,8 +1159,8 @@
if (_unitElementSignatureParts.isNotEmpty) {
String path = _unitElementSignatureParts.keys.first;
String signature =
- _computeUnitElementSignature(path, asIsIfPartWithoutLibrary: true);
- _unitElementSignatureParts.remove(path).forEach((completer) {
+ _computeUnitElementSignature(path, asIsIfPartWithoutLibrary: true)!;
+ _unitElementSignatureParts.remove(path)!.forEach((completer) {
completer.complete(signature);
});
return;
@@ -1163,8 +1170,8 @@
if (_unitElementRequestedParts.isNotEmpty) {
String path = _unitElementRequestedParts.keys.first;
UnitElementResult result =
- _computeUnitElement(path, asIsIfPartWithoutLibrary: true);
- _unitElementRequestedParts.remove(path).forEach((completer) {
+ _computeUnitElement(path, asIsIfPartWithoutLibrary: true)!;
+ _unitElementRequestedParts.remove(path)!.forEach((completer) {
completer.complete(result);
});
return;
@@ -1173,7 +1180,7 @@
// Compute errors in a part.
if (_errorsRequestedParts.isNotEmpty) {
var path = _errorsRequestedParts.keys.first;
- var completers = _errorsRequestedParts.remove(path);
+ var completers = _errorsRequestedParts.remove(path)!;
var result = _computeErrors(path: path, asIsIfPartWithoutLibrary: true);
completers.forEach((completer) {
completer.complete(result);
@@ -1213,7 +1220,7 @@
/// Handles a notification from the [FileTracker] that there has been a change
/// of state.
- void _changeHook(String path) {
+ void _changeHook(String? path) {
_createNewSession(path);
clearLibraryContext();
_priorityResults.clear();
@@ -1241,7 +1248,7 @@
/// Return [AnalysisResult._UNCHANGED] if [skipIfSameSignature] is `true` and
/// the resolved signature of the file in its library is the same as the one
/// that was the most recently produced to the client.
- AnalysisResult _computeAnalysisResult(String path,
+ AnalysisResult? _computeAnalysisResult(String path,
{bool withUnit = false,
bool asIsIfPartWithoutLibrary = false,
bool skipIfSameSignature = false}) {
@@ -1256,14 +1263,14 @@
}
/// Unwrapped implementation of [_computeAnalysisResult].
- AnalysisResult _computeAnalysisResult2(String path,
+ AnalysisResult? _computeAnalysisResult2(String path,
{bool withUnit = false,
bool asIsIfPartWithoutLibrary = false,
bool skipIfSameSignature = false}) {
FileState file = _fsState.getFileForPath(path);
// Prepare the library - the file itself, or the known library.
- FileState library = file.isPart ? file.library : file;
+ FileState? library = file.isPart ? file.library : file;
if (library == null) {
if (asIsIfPartWithoutLibrary) {
library = file;
@@ -1286,7 +1293,7 @@
// If we don't need the fully resolved unit, check for the cached result.
if (!withUnit) {
- List<int> bytes = _byteStore.get(key);
+ List<int>? bytes = _byteStore.get(key);
if (bytes != null) {
return _getAnalysisResultFromBytes(file, signature, bytes);
}
@@ -1298,16 +1305,22 @@
try {
_testView.numOfAnalyzedLibraries++;
- if (!_fsState.getFileForUri(Uri.parse('dart:core')).exists) {
+ var dartCoreUri = Uri.parse('dart:core');
+ var dartCoreFile = _fsState.getFileForUri(dartCoreUri);
+ if (dartCoreFile == null || !dartCoreFile.exists) {
return _newMissingDartLibraryResult(file, 'dart:core');
}
- if (!_fsState.getFileForUri(Uri.parse('dart:async')).exists) {
+
+ var dartAsyncUri = Uri.parse('dart:async');
+ var dartAsyncFile = _fsState.getFileForUri(dartAsyncUri);
+ if (dartAsyncFile == null || !dartAsyncFile.exists) {
return _newMissingDartLibraryResult(file, 'dart:async');
}
- var libraryContext = _createLibraryContext(library);
+
+ var libraryContext = _createLibraryContext(library!);
LibraryAnalyzer analyzer = LibraryAnalyzer(
- analysisOptions,
+ analysisOptions as AnalysisOptionsImpl,
declaredVariables,
sourceFactory,
libraryContext.isLibraryUri,
@@ -1318,10 +1331,10 @@
testingData: testingData);
Map<FileState, UnitAnalysisResult> results = analyzer.analyze();
- List<int> bytes;
- CompilationUnit resolvedUnit;
+ late List<int> bytes;
+ late CompilationUnit resolvedUnit;
for (FileState unitFile in results.keys) {
- UnitAnalysisResult unitResult = results[unitFile];
+ UnitAnalysisResult unitResult = results[unitFile]!;
List<int> unitBytes =
_serializeResolvedUnit(unitResult.unit, unitResult.errors);
String unitSignature = _getResolvedUnitSignature(library, unitFile);
@@ -1335,8 +1348,7 @@
// Return the result, full or partial.
_logger.writeln('Computed new analysis result.');
- AnalysisResult result = _getAnalysisResultFromBytes(
- file, signature, bytes,
+ var result = _getAnalysisResultFromBytes(file, signature, bytes,
content: withUnit ? file.content : null,
resolvedUnit: withUnit ? resolvedUnit : null);
if (withUnit && _priorityFiles.contains(path)) {
@@ -1344,8 +1356,8 @@
}
return result;
} catch (exception, stackTrace) {
- String contextKey =
- _storeExceptionContext(path, library, exception, stackTrace);
+ String? contextKey =
+ _storeExceptionContext(path, library!, exception, stackTrace);
throw _ExceptionState(exception, stackTrace, contextKey);
}
});
@@ -1360,18 +1372,18 @@
for (var name in variableNames) {
var value = declaredVariables.get(name);
buffer.addString(name);
- buffer.addString(value);
+ buffer.addString(value!);
}
var bytes = buffer.toByteList();
return Uint8List.fromList(bytes).buffer.asUint32List();
}
- ErrorsResult _computeErrors({
- @required String path,
- @required bool asIsIfPartWithoutLibrary,
+ ErrorsResult? _computeErrors({
+ required String path,
+ required bool asIsIfPartWithoutLibrary,
}) {
- ResolvedUnitResult analysisResult = _computeAnalysisResult(path,
+ var analysisResult = _computeAnalysisResult(path,
withUnit: false, asIsIfPartWithoutLibrary: asIsIfPartWithoutLibrary);
if (analysisResult == null) {
@@ -1383,9 +1395,9 @@
}
AnalysisDriverUnitIndex _computeIndex(String path) {
- AnalysisResult analysisResult = _computeAnalysisResult(path,
+ var analysisResult = _computeAnalysisResult(path,
withUnit: false, asIsIfPartWithoutLibrary: true);
- return analysisResult._index;
+ return analysisResult!._index!;
}
/// Return the newly computed resolution result of the library with the
@@ -1404,7 +1416,7 @@
var libraryContext = _createLibraryContext(library);
LibraryAnalyzer analyzer = LibraryAnalyzer(
- analysisOptions,
+ analysisOptions as AnalysisOptionsImpl,
declaredVariables,
sourceFactory,
libraryContext.isLibraryUri,
@@ -1418,20 +1430,18 @@
for (var unitFile in unitResults.keys) {
if (unitFile.path != null) {
- var unitResult = unitResults[unitFile];
+ var unitResult = unitResults[unitFile]!;
resolvedUnits.add(
- AnalysisResult(
+ ResolvedUnitResultImpl(
currentSession,
- unitFile.path,
+ unitFile.path!,
unitFile.uri,
unitFile.exists,
unitFile.content,
unitFile.lineInfo,
unitFile.isPart,
- null,
unitResult.unit,
unitResult.errors,
- null,
),
);
}
@@ -1439,7 +1449,7 @@
return ResolvedLibraryResultImpl(
currentSession,
- library.path,
+ library.path!,
library.uri,
resolvedUnits.first.libraryElement,
resolvedUnits,
@@ -1447,12 +1457,12 @@
});
}
- UnitElementResult _computeUnitElement(String path,
+ UnitElementResult? _computeUnitElement(String path,
{bool asIsIfPartWithoutLibrary = false}) {
FileState file = _fsState.getFileForPath(path);
// Prepare the library - the file itself, or the known library.
- FileState library = file.isPart ? file.library : file;
+ FileState? library = file.isPart ? file.library : file;
if (library == null) {
if (asIsIfPartWithoutLibrary) {
library = file;
@@ -1463,7 +1473,7 @@
return _logger.run('Compute unit element for $path', () {
_logger.writeln('Work in $name');
- var libraryContext = _createLibraryContext(library);
+ var libraryContext = _createLibraryContext(library!);
var element = libraryContext.computeUnitElement(library, file);
return UnitElementResultImpl(
currentSession,
@@ -1475,12 +1485,12 @@
});
}
- String _computeUnitElementSignature(String path,
+ String? _computeUnitElementSignature(String path,
{bool asIsIfPartWithoutLibrary = false}) {
FileState file = _fsState.getFileForPath(path);
// Prepare the library - the file itself, or the known library.
- FileState library = file.isPart ? file.library : file;
+ FileState? library = file.isPart ? file.library : file;
if (library == null) {
if (asIsIfPartWithoutLibrary) {
library = file;
@@ -1530,7 +1540,7 @@
/// Return the context in which the [library] should be analyzed.
LibraryContext _createLibraryContext(FileState library) {
if (_libraryContext != null) {
- if (_libraryContext.pack()) {
+ if (_libraryContext!.pack()) {
clearLibraryContext();
}
}
@@ -1549,17 +1559,17 @@
targetLibrary: library,
);
} else {
- _libraryContext.load2(library);
+ _libraryContext!.load2(library);
}
});
- return _libraryContext;
+ return _libraryContext!;
}
/// Create a new analysis session, so invalidating the current one.
- void _createNewSession(String path) {
+ void _createNewSession(String? path) {
if (onCurrentSessionAboutToBeDiscarded != null) {
- onCurrentSessionAboutToBeDiscarded(path);
+ onCurrentSessionAboutToBeDiscarded!(path);
}
_currentSession = AnalysisSessionImpl(this);
}
@@ -1618,13 +1628,13 @@
/// optional [content] and [resolvedUnit].
AnalysisResult _getAnalysisResultFromBytes(
FileState file, String signature, List<int> bytes,
- {String content, CompilationUnit resolvedUnit}) {
+ {String? content, CompilationUnit? resolvedUnit}) {
var unit = AnalysisDriverResolvedUnit.fromBuffer(bytes);
List<AnalysisError> errors = _getErrorsFromSerialized(file, unit.errors);
_updateHasErrorOrWarningFlag(file, errors);
return AnalysisResult(
currentSession,
- file.path,
+ file.path!,
file.uri,
file.exists,
content,
@@ -1641,7 +1651,7 @@
FileState file, List<AnalysisDriverUnitError> serialized) {
List<AnalysisError> errors = <AnalysisError>[];
for (AnalysisDriverUnitError error in serialized) {
- var analysisError = ErrorEncoding.decode(file.source, error);
+ var analysisError = ErrorEncoding.decode(file.source!, error);
if (analysisError != null) {
errors.add(analysisError);
}
@@ -1671,26 +1681,26 @@
// TODO(scheglov) Find a better way to report this.
return AnalysisResult(
currentSession,
- file.path,
+ file.path!,
file.uri,
file.exists,
null,
file.lineInfo,
file.isPart,
- null,
+ 'missing',
null,
[
- AnalysisError(file.source, 0, 0,
+ AnalysisError(file.source!, 0, 0,
CompileTimeErrorCode.MISSING_DART_LIBRARY, [missingUri])
],
null);
}
void _reportException(String path, Object exception, StackTrace stackTrace) {
- String contextKey;
+ String? contextKey;
if (exception is _ExceptionState) {
- var state = exception as _ExceptionState;
- exception = state.exception;
+ var state = exception;
+ exception = exception.exception;
stackTrace = state.stackTrace;
contextKey = state.contextKey;
}
@@ -1700,7 +1710,10 @@
var fileContentMap = <String, String>{};
var libraryFile = _fsState.getFileForPath(path);
for (var file in libraryFile.libraryFiles) {
- fileContentMap[file.path] = file.content;
+ var path = file.path;
+ if (path != null) {
+ fileContentMap[path] = file.content;
+ }
}
_exceptionController.add(
@@ -1728,7 +1741,7 @@
.toBuffer();
}
- String _storeExceptionContext(String path, FileState libraryFile,
+ String? _storeExceptionContext(String path, FileState libraryFile,
Object exception, StackTrace stackTrace) {
if (allowedNumberOfContextsToWrite <= 0) {
return null;
@@ -1739,7 +1752,7 @@
List<AnalysisDriverExceptionFileBuilder> contextFiles = libraryFile
.transitiveFiles
.map((file) => AnalysisDriverExceptionFileBuilder(
- path: file.path, content: file.content))
+ path: file.path!, content: file.content))
.toList();
contextFiles.sort((a, b) => a.path.compareTo(b.path));
AnalysisDriverExceptionContextBuilder contextBuilder =
@@ -1873,7 +1886,7 @@
final PerformanceLog _logger;
/// The object used to watch as analysis drivers are created and deleted.
- final DriverWatcher driverWatcher;
+ final DriverWatcher? driverWatcher;
final List<AnalysisDriverGeneric> _drivers = [];
final Monitor _hasWork = Monitor();
@@ -1885,7 +1898,7 @@
/// than work priorities in drivers.
///
/// Don't use outside of Analyzer and Analysis Server.
- SchedulerWorker outOfBandWorker;
+ SchedulerWorker? outOfBandWorker;
AnalysisDriverScheduler(this._logger, {this.driverWatcher});
@@ -1964,7 +1977,7 @@
// Give other microtasks the time to run before doing the analysis cycle.
await null;
Stopwatch timer = Stopwatch()..start();
- PerformanceLogSection analysisSection;
+ PerformanceLogSection? analysisSection;
while (true) {
// Pump the event queue.
if (timer.elapsedMilliseconds > _MS_BEFORE_PUMPING_EVENT_QUEUE) {
@@ -1981,7 +1994,7 @@
}
// Find the driver with the highest priority.
- AnalysisDriverGeneric bestDriver;
+ late AnalysisDriverGeneric bestDriver;
AnalysisDriverPriority bestPriority = AnalysisDriverPriority.nothing;
for (AnalysisDriverGeneric driver in _drivers) {
AnalysisDriverPriority priority = driver.workPriority;
@@ -1992,10 +2005,10 @@
}
if (outOfBandWorker != null) {
- var workerPriority = outOfBandWorker.workPriority;
+ var workerPriority = outOfBandWorker!.workPriority;
if (workerPriority != AnalysisDriverPriority.nothing) {
if (workerPriority.index > bestPriority.index) {
- await outOfBandWorker.performWork();
+ await outOfBandWorker!.performWork();
_hasWork.notify();
continue;
}
@@ -2064,8 +2077,7 @@
/// Every result is independent, and is not guaranteed to be consistent with
/// any previously returned result, even inside of the same library.
class AnalysisResult extends ResolvedUnitResultImpl {
- static final _UNCHANGED = AnalysisResult(
- null, null, null, null, null, null, null, null, null, null, null);
+ static final _UNCHANGED = _UnchangedAnalysisResult();
/// The signature of the result based on the content of the file, and the
/// transitive closure of files imported and exported by the library of
@@ -2073,18 +2085,18 @@
final String _signature;
/// The index of the unit.
- final AnalysisDriverUnitIndex _index;
+ final AnalysisDriverUnitIndex? _index;
AnalysisResult(
AnalysisSession session,
String path,
Uri uri,
bool exists,
- String content,
+ String? content,
LineInfo lineInfo,
bool isPart,
this._signature,
- CompilationUnit unit,
+ CompilationUnit? unit,
List<AnalysisError> errors,
this._index)
: super(session, path, uri, exists, content, lineInfo, isPart, unit,
@@ -2097,19 +2109,19 @@
abstract class DriverWatcher {
/// The context manager has just added the given analysis [driver]. This method
/// must be called before the driver has been allowed to perform any analysis.
- void addedDriver(AnalysisDriver driver, ContextRoot contextRoot);
+ void addedDriver(AnalysisDriver driver, ContextRoot? contextRoot);
/// The context manager has just removed the given analysis [driver].
void removedDriver(AnalysisDriver driver);
}
class ErrorEncoding {
- static AnalysisError decode(
+ static AnalysisError? decode(
Source source,
AnalysisDriverUnitError error,
) {
String errorName = error.uniqueName;
- ErrorCode errorCode =
+ ErrorCode? errorCode =
errorCodeByUniqueName(errorName) ?? _lintCodeByUniqueName(errorName);
if (errorCode == null) {
// This could fail because the error code is no longer defined, or, in
@@ -2120,19 +2132,16 @@
return null;
}
- List<DiagnosticMessageImpl> contextMessages;
- if (error.contextMessages.isNotEmpty) {
- contextMessages = <DiagnosticMessageImpl>[];
- for (var message in error.contextMessages) {
- contextMessages.add(
- DiagnosticMessageImpl(
- filePath: message.filePath,
- length: message.length,
- message: message.message,
- offset: message.offset,
- ),
- );
- }
+ var contextMessages = <DiagnosticMessageImpl>[];
+ for (var message in error.contextMessages) {
+ contextMessages.add(
+ DiagnosticMessageImpl(
+ filePath: message.filePath,
+ length: message.length,
+ message: message.message,
+ offset: message.offset,
+ ),
+ );
}
return AnalysisError.forValues(
@@ -2142,24 +2151,21 @@
errorCode,
error.message,
error.correction.isEmpty ? null : error.correction,
- contextMessages: contextMessages ?? const [],
+ contextMessages: contextMessages,
);
}
static AnalysisDriverUnitErrorBuilder encode(AnalysisError error) {
- List<DiagnosticMessageBuilder> contextMessages;
- if (error.contextMessages != null) {
- contextMessages = <DiagnosticMessageBuilder>[];
- for (var message in error.contextMessages) {
- contextMessages.add(
- DiagnosticMessageBuilder(
- filePath: message.filePath,
- length: message.length,
- message: message.message,
- offset: message.offset,
- ),
- );
- }
+ var contextMessages = <DiagnosticMessageBuilder>[];
+ for (var message in error.contextMessages) {
+ contextMessages.add(
+ DiagnosticMessageBuilder(
+ filePath: message.filePath,
+ length: message.length,
+ message: message.message,
+ offset: message.offset,
+ ),
+ );
}
return AnalysisDriverUnitErrorBuilder(
@@ -2167,14 +2173,14 @@
length: error.length,
uniqueName: error.errorCode.uniqueName,
message: error.message,
- correction: error.correction,
+ correction: error.correction ?? '',
contextMessages: contextMessages,
);
}
/// Return the lint code with the given [errorName], or `null` if there is no
/// lint registered with that name.
- static ErrorCode _lintCodeByUniqueName(String errorName) {
+ static ErrorCode? _lintCodeByUniqueName(String errorName) {
return linter.Registry.ruleRegistry.codeForUniqueName(errorName);
}
}
@@ -2200,14 +2206,14 @@
/// the exception happened was stored, this field is the key of the context
/// in the byte store. May be `null` if the context is unknown, the maximum
/// number of context to store was reached, etc.
- final String contextKey;
+ final String? contextKey;
ExceptionResult({
- @required this.filePath,
- @required this.fileContentMap,
- @required this.fileContent,
- @required this.exception,
- @required this.contextKey,
+ required this.filePath,
+ required this.fileContentMap,
+ required this.fileContent,
+ required this.exception,
+ required this.contextKey,
});
}
@@ -2228,10 +2234,10 @@
final AnalysisDriver driver;
bool isCompleted = false;
- Completer<void> completer = Completer<void>();
+ Completer<void>? completer = Completer<void>();
- Iterator<Folder> folderIterator;
- List<String> files = [];
+ Iterator<Folder>? folderIterator;
+ List<String>? files = [];
int fileIndex = 0;
_DiscoverAvailableFilesTask(this.driver);
@@ -2241,14 +2247,14 @@
/// task should continue to be run.
void perform() {
if (folderIterator == null) {
- files.addAll(driver.addedFiles);
+ files!.addAll(driver.addedFiles);
// Discover SDK libraries.
var dartSdk = driver._sourceFactory.dartSdk;
if (dartSdk != null) {
for (var sdkLibrary in dartSdk.sdkLibraries) {
- var file = dartSdk.mapDartUri(sdkLibrary.shortName).fullName;
- files.add(file);
+ var file = dartSdk.mapDartUri(sdkLibrary.shortName)!.fullName;
+ files!.add(file);
}
}
@@ -2263,8 +2269,8 @@
// List each package/lib folder recursively.
Stopwatch timer = Stopwatch()..start();
- while (folderIterator.moveNext()) {
- var folder = folderIterator.current;
+ while (folderIterator!.moveNext()) {
+ var folder = folderIterator!.current;
_appendFilesRecursively(folder);
// Note: must check if we are exiting before calling moveNext()
@@ -2275,11 +2281,11 @@
}
// Get know files one by one.
- while (fileIndex < files.length) {
+ while (fileIndex < files!.length) {
if (timer.elapsedMilliseconds > _MS_WORK_INTERVAL) {
return;
}
- var file = files[fileIndex++];
+ var file = files![fileIndex++];
driver._fsState.getFileForPath(file);
}
@@ -2289,7 +2295,7 @@
// Complete and clean up.
isCompleted = true;
- completer.complete();
+ completer!.complete();
completer = null;
}
@@ -2299,7 +2305,7 @@
if (child is File) {
var path = child.path;
if (AnalysisEngine.isDartFileName(path)) {
- files.add(path);
+ files!.add(path);
}
} else if (child is Folder) {
_appendFilesRecursively(child);
@@ -2316,7 +2322,7 @@
/// The key under which the context of the exception was stored, or `null`
/// if unknown, the maximum number of context to store was reached, etc.
- final String contextKey;
+ final String? contextKey;
_ExceptionState(this.exception, this.stackTrace, this.contextKey);
@@ -2388,8 +2394,8 @@
final Completer<List<String>> completer = Completer<List<String>>();
int fileStamp = -1;
- List<FileState> filesToCheck;
- int filesToCheckIndex;
+ List<FileState>? filesToCheck;
+ int filesToCheckIndex = -1;
final List<String> referencingFiles = <String>[];
@@ -2417,14 +2423,14 @@
}
Stopwatch timer = Stopwatch()..start();
- while (filesToCheckIndex < filesToCheck.length) {
+ while (filesToCheckIndex < filesToCheck!.length) {
if (filesToCheckIndex % _WORK_FILES == 0 &&
timer.elapsedMilliseconds > _MS_WORK_INTERVAL) {
return false;
}
- FileState file = filesToCheck[filesToCheckIndex++];
+ FileState file = filesToCheck![filesToCheckIndex++];
if (file.referencedNames.contains(name)) {
- referencingFiles.add(file.path);
+ referencingFiles.add(file.path!);
}
}
@@ -2433,3 +2439,8 @@
return true;
}
}
+
+class _UnchangedAnalysisResult implements AnalysisResult {
+ @override
+ noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
+}
diff --git a/pkg/analyzer/lib/src/dart/analysis/driver_based_analysis_context.dart b/pkg/analyzer/lib/src/dart/analysis/driver_based_analysis_context.dart
index 13ebb84..7178759 100644
--- a/pkg/analyzer/lib/src/dart/analysis/driver_based_analysis_context.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/driver_based_analysis_context.dart
@@ -24,14 +24,14 @@
final AnalysisDriver driver;
/// The [Workspace] for this context, `null` if not yet created.
- Workspace _workspace;
+ Workspace? _workspace;
/// Initialize a newly created context that uses the given [resourceProvider]
/// to access the file system and that is based on the given analysis
/// [driver].
DriverBasedAnalysisContext(
this.resourceProvider, this.contextRoot, this.driver,
- {Workspace workspace})
+ {Workspace? workspace})
: _workspace = workspace {
driver.analysisContext = this;
}
@@ -43,7 +43,7 @@
AnalysisSession get currentSession => driver.currentSession;
@override
- Folder get sdkRoot {
+ Folder? get sdkRoot {
var sdk = driver.sourceFactory.dartSdk;
if (sdk is FolderBasedDartSdk) {
return sdk.directory;
diff --git a/pkg/analyzer/lib/src/dart/analysis/experiments.dart b/pkg/analyzer/lib/src/dart/analysis/experiments.dart
index 560bd68..af9d727 100644
--- a/pkg/analyzer/lib/src/dart/analysis/experiments.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/experiments.dart
@@ -71,11 +71,11 @@
@visibleForTesting
factory ExperimentStatus.forTesting(
// ignore:avoid_unused_constructor_parameters
- {String sdkVersion,
+ {String? sdkVersion,
List<Feature> additionalFeatures = const []}) {
var explicitFlags = decodeExplicitFlags([]);
- for (ExperimentalFeature feature in additionalFeatures) {
- explicitFlags.enabled[feature.index] = true;
+ for (var feature in additionalFeatures) {
+ explicitFlags.enabled[(feature as ExperimentalFeature).index] = true;
}
var sdkLanguageVersion = latestSdkLanguageVersion;
@@ -147,8 +147,8 @@
/// unrecognized flags are ignored, conflicting flags are resolved in favor of
/// the flag appearing last.
factory ExperimentStatus.fromStrings2({
- @required Version sdkLanguageVersion,
- @required List<String> flags,
+ required Version sdkLanguageVersion,
+ required List<String> flags,
// TODO(scheglov) use restrictEnableFlagsToVersion
}) {
var explicitFlags = decodeExplicitFlags(flags);
diff --git a/pkg/analyzer/lib/src/dart/analysis/experiments_impl.dart b/pkg/analyzer/lib/src/dart/analysis/experiments_impl.dart
index b6d0a12..07cad9d 100644
--- a/pkg/analyzer/lib/src/dart/analysis/experiments_impl.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/experiments_impl.dart
@@ -109,10 +109,10 @@
///
/// Features in [explicitDisabledFlags] are always disabled.
List<bool> restrictEnableFlagsToVersion({
- @required Version sdkLanguageVersion,
- @required List<bool> explicitEnabledFlags,
- @required List<bool> explicitDisabledFlags,
- @required Version version,
+ required Version sdkLanguageVersion,
+ required List<bool> explicitEnabledFlags,
+ required List<bool> explicitDisabledFlags,
+ required Version version,
}) {
var decodedFlags = List.filled(_knownFeatures.length, false);
for (var feature in _knownFeatures.values) {
@@ -193,7 +193,7 @@
var previousFlagValue = <int, bool>{};
for (int flagIndex = 0; flagIndex < flags.length; flagIndex++) {
var flag = flags[flagIndex];
- ExperimentalFeature feature;
+ ExperimentalFeature? feature;
bool requestedValue;
if (flag.startsWith('no-')) {
feature = _knownFeatures[flag.substring(3)];
@@ -210,8 +210,8 @@
: IllegalUseOfExpiredFlag(flagIndex, feature);
} else if (previousFlagIndex.containsKey(feature.index) &&
previousFlagValue[feature.index] != requestedValue) {
- yield ConflictingFlags(
- flagIndex, previousFlagIndex[feature.index], feature, requestedValue);
+ yield ConflictingFlags(flagIndex, previousFlagIndex[feature.index]!,
+ feature, requestedValue);
} else {
previousFlagIndex[feature.index] = flagIndex;
previousFlagValue[feature.index] = requestedValue;
@@ -230,7 +230,7 @@
var result = <int, bool>{};
for (int flagIndex = 0; flagIndex < flags.length; flagIndex++) {
var flag = flags[flagIndex];
- ExperimentalFeature feature;
+ ExperimentalFeature? feature;
bool requestedValue;
if (flag.startsWith('no-')) {
feature = _knownFeatures[flag.substring(3)];
@@ -326,30 +326,28 @@
/// The first language version in which this feature can be enabled using
/// the [enableString] experimental flag.
- final Version experimentalReleaseVersion;
+ final Version? experimentalReleaseVersion;
@override
- final Version releaseVersion;
+ final Version? releaseVersion;
ExperimentalFeature({
- @required this.index,
- @required this.enableString,
- @required this.isEnabledByDefault,
- @required this.isExpired,
- @required this.documentation,
- @required this.experimentalReleaseVersion,
- @required this.releaseVersion,
- }) : assert(index != null),
- assert(isEnabledByDefault
+ required this.index,
+ required this.enableString,
+ required this.isEnabledByDefault,
+ required this.isExpired,
+ required this.documentation,
+ required this.experimentalReleaseVersion,
+ required this.releaseVersion,
+ }) : assert(isEnabledByDefault
? releaseVersion != null
- : releaseVersion == null),
- assert(enableString != null);
+ : releaseVersion == null);
/// The string to disable the feature.
String get disableString => 'no-$enableString';
@override
- String get experimentalFlag => isExpired ? null : enableString;
+ String? get experimentalFlag => isExpired ? null : enableString;
@override
FeatureStatus get status {
diff --git a/pkg/analyzer/lib/src/dart/analysis/feature_set_provider.dart b/pkg/analyzer/lib/src/dart/analysis/feature_set_provider.dart
index 771dfe8..6d38db2 100644
--- a/pkg/analyzer/lib/src/dart/analysis/feature_set_provider.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/feature_set_provider.dart
@@ -9,7 +9,6 @@
import 'package:analyzer/src/generated/sdk.dart';
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/util/uri.dart';
-import 'package:meta/meta.dart';
import 'package:pub_semver/pub_semver.dart';
class FeatureSetProvider {
@@ -26,14 +25,14 @@
final FeatureSet _nonPackageDefaultFeatureSet;
FeatureSetProvider._({
- @required Version sdkLanguageVersion,
- @required AllowedExperiments allowedExperiments,
- @required ResourceProvider resourceProvider,
- @required Packages packages,
- @required FeatureSet packageDefaultFeatureSet,
- @required Version nonPackageDefaultLanguageVersion,
- @required FeatureSet nonPackageDefaultFeatureSet,
- }) : _sdkLanguageVersion = sdkLanguageVersion,
+ required Version sdkLanguageVersion,
+ required AllowedExperiments allowedExperiments,
+ required ResourceProvider resourceProvider,
+ required Packages packages,
+ required FeatureSet packageDefaultFeatureSet,
+ required Version nonPackageDefaultLanguageVersion,
+ required FeatureSet nonPackageDefaultFeatureSet,
+ }) : _sdkLanguageVersion = sdkLanguageVersion,
_allowedExperiments = allowedExperiments,
_resourceProvider = resourceProvider,
_packages = packages,
@@ -42,10 +41,6 @@
_nonPackageDefaultFeatureSet = nonPackageDefaultFeatureSet;
FeatureSet featureSetForExperiments(List<String> experiments) {
- if (experiments == null) {
- return null;
- }
-
return FeatureSet.fromEnableFlags2(
sdkLanguageVersion: _sdkLanguageVersion,
flags: experiments,
@@ -113,7 +108,7 @@
///
/// If unable to find a package through other mechanisms mechanisms, or it is
/// an unrecognized uri scheme, then the package is looked up by [path].
- Package _findPackage(Uri uri, String path) {
+ Package? _findPackage(Uri uri, String path) {
if (uri.isScheme('package') || uri.isScheme('asset')) {
var pathSegments = uri.pathSegments;
if (pathSegments.isNotEmpty) {
@@ -135,14 +130,14 @@
}
static FeatureSetProvider build({
- @required SourceFactory sourceFactory,
- @required ResourceProvider resourceProvider,
- @required Packages packages,
- @required FeatureSet packageDefaultFeatureSet,
- @required Version nonPackageDefaultLanguageVersion,
- @required FeatureSet nonPackageDefaultFeatureSet,
+ required SourceFactory sourceFactory,
+ required ResourceProvider resourceProvider,
+ required Packages packages,
+ required FeatureSet packageDefaultFeatureSet,
+ required Version nonPackageDefaultLanguageVersion,
+ required FeatureSet nonPackageDefaultFeatureSet,
}) {
- var sdk = sourceFactory.dartSdk;
+ var sdk = sourceFactory.dartSdk!;
var allowedExperiments = _experimentsForSdk(sdk);
return FeatureSetProvider._(
sdkLanguageVersion: sdk.languageVersion,
diff --git a/pkg/analyzer/lib/src/dart/analysis/file_byte_store.dart b/pkg/analyzer/lib/src/dart/analysis/file_byte_store.dart
index 506fb2a..f40d219 100644
--- a/pkg/analyzer/lib/src/dart/analysis/file_byte_store.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/file_byte_store.dart
@@ -27,7 +27,7 @@
/// [FileByteStore] instead and let the main process to perform eviction.
class EvictingFileByteStore implements ByteStore {
static bool _cleanUpSendPortShouldBePrepared = true;
- static SendPort _cleanUpSendPort;
+ static SendPort? _cleanUpSendPort;
final String _cachePath;
final int _maxSizeBytes;
@@ -42,7 +42,7 @@
}
@override
- List<int> get(String key) => _fileByteStore.get(key);
+ List<int>? get(String key) => _fileByteStore.get(key);
@override
void put(String key, List<int> bytes) {
@@ -71,7 +71,7 @@
_evictionIsolateIsRunning = true;
try {
ReceivePort response = ReceivePort();
- _cleanUpSendPort.send(
+ _cleanUpSendPort!.send(
CacheCleanUpRequest(_cachePath, _maxSizeBytes, response.sendPort));
await response.first;
} finally {
@@ -84,7 +84,7 @@
/// This function is started in a new isolate, receives cache folder clean up
/// requests and evicts older files from the folder.
static void _cacheCleanUpFunction(Object message) {
- SendPort initialReplyTo = message;
+ var initialReplyTo = message as SendPort;
ReceivePort port = ReceivePort();
initialReplyTo.send(port.sendPort);
port.listen((request) {
@@ -123,8 +123,8 @@
}
}
files.sort((a, b) {
- return fileStatMap[a].accessed.millisecondsSinceEpoch -
- fileStatMap[b].accessed.millisecondsSinceEpoch;
+ return fileStatMap[a]!.accessed.millisecondsSinceEpoch -
+ fileStatMap[b]!.accessed.millisecondsSinceEpoch;
});
// Delete files until the current size is less than the max.
@@ -135,7 +135,7 @@
try {
file.deleteSync();
} catch (_) {}
- currentSizeBytes -= fileStatMap[file].size;
+ currentSizeBytes -= fileStatMap[file]!.size;
}
}
}
@@ -157,10 +157,10 @@
'-temp-$pid${tempNameSuffix.isEmpty ? '' : '-$tempNameSuffix'}';
@override
- List<int> get(String key) {
+ List<int>? get(String key) {
if (!_canShard(key)) return null;
- List<int> bytes = _writeInProgress[key];
+ var bytes = _writeInProgress[key];
if (bytes != null) {
return bytes;
}
@@ -227,7 +227,7 @@
/// If the [rawBytes] have the valid version and checksum, extract and
/// return the data from it. Otherwise return `null`.
- List<int> getData(List<int> rawBytes) {
+ List<int>? getData(List<int> rawBytes) {
// There must be at least the version and the checksum in the raw bytes.
if (rawBytes.length < 4) {
return null;
diff --git a/pkg/analyzer/lib/src/dart/analysis/file_state.dart b/pkg/analyzer/lib/src/dart/analysis/file_state.dart
index 0e20865..ae5b920 100644
--- a/pkg/analyzer/lib/src/dart/analysis/file_state.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/file_state.dart
@@ -59,12 +59,12 @@
/// overlay does not override the content of the file.
///
/// The [path] must be absolute and normalized.
- String operator [](String path) => _map[path];
+ String? operator [](String path) => _map[path];
/// Return the new [content] of the file with the given [path].
///
/// The [path] must be absolute and normalized.
- void operator []=(String path, String content) {
+ void operator []=(String path, String? content) {
if (content == null) {
_map.remove(path);
} else {
@@ -84,18 +84,18 @@
final FileSystemState _fsState;
/// The absolute path of the file.
- final String path;
+ final String? path;
/// The absolute URI of the file.
final Uri uri;
/// The [Source] of the file with the [uri].
- final Source source;
+ final Source? source;
/// The [WorkspacePackage] that contains this file.
///
/// It might be `null` if the file is outside of the workspace.
- final WorkspacePackage workspacePackage;
+ final WorkspacePackage? workspacePackage;
/// Return `true` if this file is a stub created for a file in the provided
/// external summary store. The values of most properties are not the same
@@ -111,40 +111,40 @@
///
/// This feature set is then restricted, with the [_packageLanguageVersion],
/// or with a `@dart` language override token in the file header.
- final FeatureSet _contextFeatureSet;
+ final FeatureSet? _contextFeatureSet;
/// The language version for the package that contains this file.
- final Version packageLanguageVersion;
+ final Version? packageLanguageVersion;
int id = fileObjectId++;
- int refreshId;
+ int? refreshId;
- bool _exists;
- String _content;
- String _contentHash;
- LineInfo _lineInfo;
- Set<String> _definedClassMemberNames;
- Set<String> _definedTopLevelNames;
- Set<String> _referencedNames;
- List<int> _unlinkedSignature;
- String _unlinkedKey;
- String _astKey;
- AnalysisDriverUnlinkedUnit _driverUnlinkedUnit;
- List<int> _apiSignature;
+ bool? _exists;
+ String? _content;
+ String? _contentHash;
+ LineInfo? _lineInfo;
+ Set<String>? _definedClassMemberNames;
+ Set<String>? _definedTopLevelNames;
+ Set<String>? _referencedNames;
+ List<int>? _unlinkedSignature;
+ String? _unlinkedKey;
+ String? _astKey;
+ AnalysisDriverUnlinkedUnit? _driverUnlinkedUnit;
+ List<int>? _apiSignature;
- UnlinkedUnit2 _unlinked2;
+ UnlinkedUnit2? _unlinked2;
- List<FileState> _importedFiles;
- List<FileState> _exportedFiles;
- List<FileState> _partedFiles;
- List<FileState> _libraryFiles;
+ List<FileState?>? _importedFiles;
+ List<FileState?>? _exportedFiles;
+ List<FileState?>? _partedFiles;
+ List<FileState>? _libraryFiles;
- Set<FileState> _directReferencedFiles;
- Set<FileState> _directReferencedLibraries;
+ Set<FileState>? _directReferencedFiles;
+ Set<FileState>? _directReferencedLibraries;
- LibraryCycle _libraryCycle;
- String _transitiveSignature;
- String _transitiveSignatureLinked;
+ LibraryCycle? _libraryCycle;
+ String? _transitiveSignature;
+ String? _transitiveSignatureLinked;
/// The flag that shows whether the file has an error or warning that
/// might be fixed by a change to another file.
@@ -173,24 +173,24 @@
}
/// The unlinked API signature of the file.
- List<int> get apiSignature => _apiSignature;
+ List<int> get apiSignature => _apiSignature!;
/// The content of the file.
- String get content => _content;
+ String get content => _content!;
/// The MD5 hash of the [content].
- String get contentHash => _contentHash;
+ String get contentHash => _contentHash!;
/// The class member names defined by the file.
Set<String> get definedClassMemberNames {
return _definedClassMemberNames ??=
- _driverUnlinkedUnit.definedClassMemberNames.toSet();
+ _driverUnlinkedUnit!.definedClassMemberNames.toSet();
}
/// The top-level names defined by the file.
Set<String> get definedTopLevelNames {
return _definedTopLevelNames ??=
- _driverUnlinkedUnit.definedTopLevelNames.toSet();
+ _driverUnlinkedUnit!.definedTopLevelNames.toSet();
}
/// Return the set of all directly referenced files - imported, exported or
@@ -213,62 +213,62 @@
}
/// Return `true` if the file exists.
- bool get exists => _exists;
+ bool get exists => _exists!;
/// The list of files this file exports.
- List<FileState> get exportedFiles {
+ List<FileState?> get exportedFiles {
if (_exportedFiles == null) {
- _exportedFiles = <FileState>[];
- for (var directive in _unlinked2.exports) {
+ _exportedFiles = <FileState?>[];
+ for (var directive in _unlinked2!.exports) {
var uri = _selectRelativeUri(directive);
var file = _fileForRelativeUri(uri);
- _exportedFiles.add(file);
+ _exportedFiles!.add(file);
}
}
- return _exportedFiles;
+ return _exportedFiles!;
}
@override
int get hashCode => uri.hashCode;
/// The list of files this file imports.
- List<FileState> get importedFiles {
+ List<FileState?> get importedFiles {
if (_importedFiles == null) {
- _importedFiles = <FileState>[];
- for (var directive in _unlinked2.imports) {
+ _importedFiles = <FileState?>[];
+ for (var directive in _unlinked2!.imports) {
var uri = _selectRelativeUri(directive);
var file = _fileForRelativeUri(uri);
- _importedFiles.add(file);
+ _importedFiles!.add(file);
}
}
- return _importedFiles;
+ return _importedFiles!;
}
- LibraryCycle get internal_libraryCycle => _libraryCycle;
+ LibraryCycle? get internal_libraryCycle => _libraryCycle;
/// Return `true` if the file is a stub created for a library in the provided
/// external summary store.
bool get isExternalLibrary {
return _fsState.externalSummaries != null &&
- _fsState.externalSummaries.hasLinkedLibrary(uriStr);
+ _fsState.externalSummaries!.hasLinkedLibrary(uriStr);
}
/// Return `true` if the file does not have a `library` directive, and has a
/// `part of` directive, so is probably a part.
bool get isPart {
if (_fsState.externalSummaries != null &&
- _fsState.externalSummaries.hasUnlinkedUnit(uriStr)) {
- return _fsState.externalSummaries.isPartUnit(uriStr);
+ _fsState.externalSummaries!.hasUnlinkedUnit(uriStr)) {
+ return _fsState.externalSummaries!.isPartUnit(uriStr);
}
- return !_unlinked2.hasLibraryDirective && _unlinked2.hasPartOfDirective;
+ return !_unlinked2!.hasLibraryDirective && _unlinked2!.hasPartOfDirective;
}
/// If the file [isPart], return a currently know library the file is a part
/// of. Return `null` if a library is not known, for example because we have
/// not processed a library file yet.
- FileState get library {
+ FileState? get library {
_fsState.readPartsForLibraries();
- List<FileState> libraries = _fsState._partToLibraries[this];
+ List<FileState>? libraries = _fsState._partToLibraries[this];
if (libraries == null || libraries.isEmpty) {
return null;
} else {
@@ -290,7 +290,7 @@
computeLibraryCycle(_fsState._saltForElements, this);
}
- return _libraryCycle;
+ return _libraryCycle!;
}
/// The list of files files that this library consists of, i.e. this library
@@ -303,15 +303,15 @@
}
/// Return information about line in the file.
- LineInfo get lineInfo => _lineInfo;
+ LineInfo get lineInfo => _lineInfo!;
/// The list of files this library file references as parts.
- List<FileState> get partedFiles {
+ List<FileState?> get partedFiles {
if (_partedFiles == null) {
- _partedFiles = <FileState>[];
- for (var uri in _unlinked2.parts) {
+ _partedFiles = <FileState?>[];
+ for (var uri in _unlinked2!.parts) {
var file = _fileForRelativeUri(uri);
- _partedFiles.add(file);
+ _partedFiles!.add(file);
if (file != null) {
_fsState._partToLibraries
.putIfAbsent(file, () => <FileState>[])
@@ -319,12 +319,12 @@
}
}
}
- return _partedFiles;
+ return _partedFiles!;
}
/// The external names referenced by the file.
Set<String> get referencedNames {
- return _referencedNames ??= _driverUnlinkedUnit.referencedNames.toSet();
+ return _referencedNames ??= _driverUnlinkedUnit!.referencedNames.toSet();
}
@visibleForTesting
@@ -349,7 +349,8 @@
/// transitive closure of imported / exported files.
String get transitiveSignature {
libraryCycle; // sets _transitiveSignature
- return _transitiveSignature;
+ _transitiveSignature ??= _invalidTransitiveSignature;
+ return _transitiveSignature!;
}
/// The value `transitiveSignature.linked` is used often, so we cache it.
@@ -358,30 +359,37 @@
}
/// The [UnlinkedUnit2] of the file.
- UnlinkedUnit2 get unlinked2 => _unlinked2;
+ UnlinkedUnit2 get unlinked2 => _unlinked2!;
/// The MD5 signature based on the content, feature sets, language version.
- List<int> get unlinkedSignature => _unlinkedSignature;
+ List<int> get unlinkedSignature => _unlinkedSignature!;
/// Return the [uri] string.
String get uriStr => uri.toString();
+ String get _invalidTransitiveSignature {
+ return (ApiSignature()
+ ..addString(path!)
+ ..addBytes(unlinkedSignature))
+ .toHex();
+ }
+
@override
bool operator ==(Object other) {
return other is FileState && other.uri == uri;
}
- Uint8List getAstBytes({CompilationUnit unit}) {
- var bytes = _fsState._byteStore.get(_astKey);
+ Uint8List getAstBytes({CompilationUnit? unit}) {
+ var bytes = _fsState._byteStore.get(_astKey!) as Uint8List?;
if (bytes == null) {
unit ??= parse();
bytes = writeUnitToBytes(unit: unit);
- _fsState._byteStore.put(_astKey, bytes);
+ _fsState._byteStore.put(_astKey!, bytes);
}
return bytes;
}
- void internal_setLibraryCycle(LibraryCycle cycle, String signature) {
+ void internal_setLibraryCycle(LibraryCycle? cycle, String? signature) {
if (cycle == null) {
_libraryCycle = null;
_transitiveSignature = null;
@@ -395,7 +403,7 @@
/// Return a new parsed unresolved [CompilationUnit].
///
/// If an exception happens during parsing, an empty unit is returned.
- CompilationUnit parse([AnalysisErrorListener errorListener]) {
+ CompilationUnit parse([AnalysisErrorListener? errorListener]) {
errorListener ??= AnalysisErrorListener.NULL_LISTENER;
try {
return _parse(errorListener);
@@ -424,7 +432,7 @@
_invalidateCurrentUnresolvedData();
{
- var rawFileState = _fsState._fileContentCache.get(path, allowCached);
+ var rawFileState = _fsState._fileContentCache.get(path!, allowCached);
_content = rawFileState.content;
_exists = rawFileState.exists;
_contentHash = rawFileState.contentHash;
@@ -434,21 +442,22 @@
{
var signature = ApiSignature();
signature.addUint32List(_fsState._saltForUnlinked);
- signature.addFeatureSet(_contextFeatureSet);
- signature.addLanguageVersion(packageLanguageVersion);
- signature.addString(_contentHash);
- signature.addBool(_exists);
+ signature.addFeatureSet(_contextFeatureSet!);
+ signature.addLanguageVersion(packageLanguageVersion!);
+ signature.addString(_contentHash!);
+ signature.addBool(_exists!);
_unlinkedSignature = signature.toByteList();
- var signatureHex = hex.encode(_unlinkedSignature);
+ var signatureHex = hex.encode(_unlinkedSignature!);
_unlinkedKey = '$signatureHex.unlinked2';
// TODO(scheglov) Use the path as the key, and store the signature.
_astKey = '$signatureHex.ast';
}
// Prepare bytes of the unlinked bundle - existing or new.
- List<int> bytes;
+ // TODO(migration): should not be nullable
+ List<int>? bytes;
{
- bytes = _fsState._byteStore.get(_unlinkedKey);
+ bytes = _fsState._byteStore.get(_unlinkedKey!);
if (bytes == null || bytes.isEmpty) {
CompilationUnit unit = parse();
_fsState._logger.run('Create unlinked for $path', () {
@@ -463,20 +472,20 @@
referencedNames: referencedNames,
subtypedNames: subtypedNames,
).toBuffer();
- _fsState._byteStore.put(_unlinkedKey, bytes);
- counterUnlinkedBytes += bytes.length;
- counterUnlinkedLinkedBytes += bytes.length;
+ _fsState._byteStore.put(_unlinkedKey!, bytes!);
+ counterUnlinkedBytes += bytes!.length;
+ counterUnlinkedLinkedBytes += bytes!.length;
});
}
}
// Read the unlinked bundle.
- _driverUnlinkedUnit = AnalysisDriverUnlinkedUnit.fromBuffer(bytes);
- _unlinked2 = _driverUnlinkedUnit.unit2;
- _lineInfo = LineInfo(_unlinked2.lineStarts);
+ _driverUnlinkedUnit = AnalysisDriverUnlinkedUnit.fromBuffer(bytes!);
+ _unlinked2 = _driverUnlinkedUnit!.unit2;
+ _lineInfo = LineInfo(_unlinked2!.lineStarts);
// Prepare API signature.
- var newApiSignature = Uint8List.fromList(_unlinked2.apiSignature);
+ var newApiSignature = Uint8List.fromList(_unlinked2!.apiSignature);
bool apiSignatureChanged = _apiSignature != null &&
!_equalByteLists(_apiSignature, newApiSignature);
_apiSignature = newApiSignature;
@@ -491,14 +500,14 @@
var libraries = _fsState._partToLibraries[this];
if (libraries != null) {
for (var library in libraries) {
- library.libraryCycle?.invalidate();
+ library.libraryCycle.invalidate();
}
}
}
// This file is potentially not a library for its previous parts anymore.
if (_partedFiles != null) {
- for (FileState part in _partedFiles) {
+ for (var part in _partedFiles!) {
_fsState._partToLibraries[part]?.remove(this);
}
}
@@ -515,7 +524,7 @@
_libraryFiles = null;
// Update mapping from subtyped names to files.
- for (var name in _driverUnlinkedUnit.subtypedNames) {
+ for (var name in _driverUnlinkedUnit!.subtypedNames) {
var files = _fsState._subtypedNameToFiles[name];
if (files == null) {
files = <FileState>{};
@@ -546,13 +555,13 @@
var unit = astFactory.compilationUnit(
beginToken: token,
endToken: token,
- featureSet: _contextFeatureSet,
+ featureSet: _contextFeatureSet!,
) as CompilationUnitImpl;
unit.lineInfo = LineInfo(const <int>[0]);
unit.languageVersion = LibraryLanguageVersion(
- package: packageLanguageVersion,
+ package: packageLanguageVersion!,
override: null,
);
@@ -561,7 +570,7 @@
/// Return the [FileState] for the given [relativeUri], or `null` if the
/// URI cannot be parsed, cannot correspond any file, etc.
- FileState _fileForRelativeUri(String relativeUri) {
+ FileState? _fileForRelativeUri(String relativeUri) {
if (relativeUri.isEmpty) {
return null;
}
@@ -585,7 +594,7 @@
_referencedNames = null;
if (_driverUnlinkedUnit != null) {
- for (var name in _driverUnlinkedUnit.subtypedNames) {
+ for (var name in _driverUnlinkedUnit!.subtypedNames) {
var files = _fsState._subtypedNameToFiles[name];
files?.remove(this);
}
@@ -598,18 +607,18 @@
}
CharSequenceReader reader = CharSequenceReader(content);
- Scanner scanner = Scanner(source, reader, errorListener)
+ Scanner scanner = Scanner(source!, reader, errorListener)
..configureFeatures(
- featureSetForOverriding: _contextFeatureSet,
- featureSet: _contextFeatureSet.restrictToVersion(
- packageLanguageVersion,
+ featureSetForOverriding: _contextFeatureSet!,
+ featureSet: _contextFeatureSet!.restrictToVersion(
+ packageLanguageVersion!,
),
);
Token token = scanner.tokenize(reportScannerErrors: false);
LineInfo lineInfo = LineInfo(scanner.lineStarts);
Parser parser = Parser(
- source,
+ source!,
errorListener,
featureSet: scanner.featureSet,
);
@@ -631,7 +640,7 @@
var unitImpl = unit as CompilationUnitImpl;
unitImpl.languageVersion = LibraryLanguageVersion(
- package: packageLanguageVersion,
+ package: packageLanguageVersion!,
override: scanner.overrideVersion,
);
@@ -696,12 +705,12 @@
parts: parts,
hasLibraryDirective: hasLibraryDirective,
hasPartOfDirective: hasPartOfDirective,
- lineStarts: unit.lineInfo.lineStarts,
+ lineStarts: unit.lineInfo!.lineStarts,
);
}
/// Return `true` if the given byte lists are equal.
- static bool _equalByteLists(List<int> a, List<int> b) {
+ static bool _equalByteLists(List<int>? a, List<int>? b) {
if (a == null) {
return b == null;
} else if (b == null) {
@@ -741,7 +750,7 @@
FileStateTestView(this.file);
- String get unlinkedKey => file._unlinkedKey;
+ String get unlinkedKey => file._unlinkedKey!;
}
/// Information about known file system state.
@@ -750,9 +759,9 @@
final ResourceProvider _resourceProvider;
final String contextName;
final ByteStore _byteStore;
- final FileContentOverlay _contentOverlay;
+ final FileContentOverlay? _contentOverlay;
final SourceFactory _sourceFactory;
- final Workspace _workspace;
+ final Workspace? _workspace;
final DeclaredVariables _declaredVariables;
final Uint32List _saltForUnlinked;
final Uint32List _saltForElements;
@@ -766,7 +775,7 @@
/// While walking the file graph, when we reach a file that exists in the
/// external store, we add a stub [FileState], but don't attempt to read its
/// content, or its unlinked unit, or imported libraries, etc.
- final SummaryDataStore externalSummaries;
+ final SummaryDataStore? externalSummaries;
/// Mapping from a URI to the corresponding [FileState].
final Map<Uri, FileState> _uriToFile = {};
@@ -802,9 +811,9 @@
/// The cache of content of files, possibly shared with other file system
/// states with the same resource provider and the content overlay.
- _FileContentCache _fileContentCache;
+ late final _FileContentCache _fileContentCache;
- FileSystemStateTestView _testView;
+ late final FileSystemStateTestView _testView;
FileSystemState(
this._logger,
@@ -835,7 +844,7 @@
FeatureSet contextFeatureSet(
String path,
Uri uri,
- WorkspacePackage workspacePackage,
+ WorkspacePackage? workspacePackage,
) {
var workspacePackageExperiments = workspacePackage?.enabledExperiments;
if (workspacePackageExperiments != null) {
@@ -850,7 +859,7 @@
Version contextLanguageVersion(
String path,
Uri uri,
- WorkspacePackage workspacePackage,
+ WorkspacePackage? workspacePackage,
) {
var workspaceLanguageVersion = workspacePackage?.languageVersion;
if (workspaceLanguageVersion != null) {
@@ -866,11 +875,11 @@
/// Here "canonical" means that if the [path] is in a package `lib` then the
/// returned file will have the `package:` style URI.
FileState getFileForPath(String path) {
- FileState file = _pathToCanonicalFile[path];
+ FileState? file = _pathToCanonicalFile[path];
if (file == null) {
File resource = _resourceProvider.getFile(path);
Source fileSource = resource.createSource();
- Uri uri = _sourceFactory.restoreUri(fileSource);
+ Uri? uri = _sourceFactory.restoreUri(fileSource);
// Try to get the existing instance.
file = _uriToFile[uri];
// If we have a file, call it the canonical one and return it.
@@ -879,8 +888,8 @@
return file;
}
// Create a new file.
- FileSource uriSource = FileSource(resource, uri);
- WorkspacePackage workspacePackage = _workspace?.findPackageFor(path);
+ FileSource uriSource = FileSource(resource, uri!);
+ WorkspacePackage? workspacePackage = _workspace?.findPackageFor(path);
FeatureSet featureSet = contextFeatureSet(path, uri, workspacePackage);
Version packageLanguageVersion =
contextLanguageVersion(path, uri, workspacePackage);
@@ -898,21 +907,21 @@
/// "unresolved" file if the [uri] is invalid, e.g. a `package:` URI without
/// a package name. The returned file has the last known state since if was
/// last refreshed.
- FileState getFileForUri(Uri uri) {
- FileState file = _uriToFile[uri];
+ FileState? getFileForUri(Uri uri) {
+ FileState? file = _uriToFile[uri];
if (file == null) {
// If the external store has this URI, create a stub file for it.
// We are given all required unlinked and linked summaries for it.
if (externalSummaries != null) {
String uriStr = uri.toString();
- if (externalSummaries.hasLinkedLibrary(uriStr)) {
+ if (externalSummaries!.hasLinkedLibrary(uriStr)) {
file = FileState._external(this, uri);
_uriToFile[uri] = file;
return file;
}
}
- Source uriSource = _sourceFactory.resolveUri(null, uri.toString());
+ Source? uriSource = _sourceFactory.resolveUri(null, uri.toString());
// If the URI cannot be resolved, for example because the factory
// does not understand the scheme, return the unresolved file instance.
@@ -923,7 +932,7 @@
String path = uriSource.fullName;
File resource = _resourceProvider.getFile(path);
FileSource source = FileSource(resource, uri);
- WorkspacePackage workspacePackage = _workspace?.findPackageFor(path);
+ WorkspacePackage? workspacePackage = _workspace?.findPackageFor(path);
FeatureSet featureSet = contextFeatureSet(path, uri, workspacePackage);
Version packageLanguageVersion =
contextLanguageVersion(path, uri, workspacePackage);
@@ -940,7 +949,7 @@
/// list has at least one item, and the first item is the canonical file.
List<FileState> getFilesForPath(String path) {
FileState canonicalFile = getFileForPath(path);
- List<FileState> allFiles = _pathToFiles[path].toList();
+ List<FileState> allFiles = _pathToFiles[path]!.toList();
if (allFiles.length == 1) {
return allFiles;
}
@@ -951,7 +960,7 @@
/// Return files where the given [name] is subtyped, i.e. used in `extends`,
/// `with` or `implements` clauses.
- Set<FileState> getFilesSubtypingName(String name) {
+ Set<FileState>? getFilesSubtypingName(String name) {
return _subtypedNameToFiles[name];
}
@@ -961,12 +970,12 @@
/// resolved to another file, e.g. a generated one in Bazel, Gn, etc, we
/// cannot analyze the original file.
bool hasUri(String path) {
- bool flag = _hasUriForPath[path];
+ bool? flag = _hasUriForPath[path];
if (flag == null) {
File resource = _resourceProvider.getFile(path);
Source fileSource = resource.createSource();
- Uri uri = _sourceFactory.restoreUri(fileSource);
- Source uriSource = _sourceFactory.forUri2(uri);
+ Uri? uri = _sourceFactory.restoreUri(fileSource);
+ Source? uriSource = _sourceFactory.forUri2(uri!);
flag = uriSource?.fullName == path;
_hasUriForPath[path] = flag;
}
@@ -1068,7 +1077,7 @@
static final _instances2 = Expando<_FileContentCache>();
final ResourceProvider _resourceProvider;
- final FileContentOverlay _contentOverlay;
+ final FileContentOverlay? _contentOverlay;
final Map<String, _FileContent> _pathToFile = {};
_FileContentCache(this._resourceProvider, this._contentOverlay);
@@ -1085,11 +1094,11 @@
var file = allowCached ? _pathToFile[path] : null;
if (file == null) {
List<int> contentBytes;
- String content;
+ String? content;
bool exists;
try {
if (_contentOverlay != null) {
- content = _contentOverlay[path];
+ content = _contentOverlay![path];
}
if (content != null) {
contentBytes = utf8.encode(content);
@@ -1119,8 +1128,8 @@
}
static _FileContentCache getInstance(
- ResourceProvider resourceProvider, FileContentOverlay contentOverlay) {
- Expando<_FileContentCache> providerToInstance;
+ ResourceProvider resourceProvider, FileContentOverlay? contentOverlay) {
+ Expando<_FileContentCache>? providerToInstance;
if (contentOverlay != null) {
providerToInstance = _instances[contentOverlay];
if (providerToInstance == null) {
diff --git a/pkg/analyzer/lib/src/dart/analysis/file_tracker.dart b/pkg/analyzer/lib/src/dart/analysis/file_tracker.dart
index 29fe48e..d6caee6 100644
--- a/pkg/analyzer/lib/src/dart/analysis/file_tracker.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/file_tracker.dart
@@ -9,7 +9,7 @@
/// added, changed, or removed, and therefore more analysis may be necessary.
/// [path] is the path of the file that was added, changed, or removed, or
/// `null` if multiple files were added, changed, or removed.
-typedef FileTrackerChangeHook = void Function(String path);
+typedef FileTrackerChangeHook = void Function(String? path);
/// Maintains the file system state needed by the analysis driver, as well as
/// information about files that have changed and the impact of those changes.
diff --git a/pkg/analyzer/lib/src/dart/analysis/index.dart b/pkg/analyzer/lib/src/dart/analysis/index.dart
index 821fe60..55feba8 100644
--- a/pkg/analyzer/lib/src/dart/analysis/index.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/index.dart
@@ -12,11 +12,11 @@
import 'package:analyzer/src/summary/idl.dart';
import 'package:meta/meta.dart';
-Element declaredParameterElement(
+Element? declaredParameterElement(
SimpleIdentifier node,
- Element element,
+ Element? element,
) {
- if (element.enclosingElement != null) {
+ if (element == null || element.enclosingElement != null) {
return element;
}
@@ -24,7 +24,7 @@
/// synthetic [ParameterElement]s, disconnected from the rest of the
/// element model. But we want to index these parameter references
/// as references to declared parameters.
- ParameterElement namedParameterElement(ExecutableElement executable) {
+ ParameterElement? namedParameterElement(ExecutableElement? executable) {
if (executable == null) {
return null;
}
@@ -61,7 +61,7 @@
/// Return the [CompilationUnitElement] that should be used for [element].
/// Throw [StateError] if the [element] is not linked into a unit.
CompilationUnitElement getUnitElement(Element element) {
- for (Element e = element; e != null; e = e.enclosingElement) {
+ for (Element? e = element; e != null; e = e.enclosingElement) {
if (e is CompilationUnitElement) {
return e;
}
@@ -78,29 +78,29 @@
}
class ElementNameComponents {
- final String parameterName;
- final String classMemberName;
- final String unitMemberName;
+ final String? parameterName;
+ final String? classMemberName;
+ final String? unitMemberName;
factory ElementNameComponents(Element element) {
- String parameterName;
+ String? parameterName;
if (element is ParameterElement) {
parameterName = element.name;
- element = element.enclosingElement;
+ element = element.enclosingElement!;
}
- String classMemberName;
+ String? classMemberName;
if (element.enclosingElement is ClassElement ||
element.enclosingElement is ExtensionElement) {
- classMemberName = element.name;
- element = element.enclosingElement;
+ classMemberName = element.name!;
+ element = element.enclosingElement!;
}
- String unitMemberName;
+ String? unitMemberName;
if (element.enclosingElement is CompilationUnitElement) {
unitMemberName = element.name;
if (element is ExtensionElement && unitMemberName == null) {
- var enclosingUnit = element.enclosingElement as CompilationUnitElement;
+ var enclosingUnit = element.enclosingElement;
var indexOf = enclosingUnit.extensions.indexOf(element);
unitMemberName = 'extension-$indexOf';
}
@@ -137,18 +137,17 @@
} else if (element.isSynthetic) {
if (elementKind == ElementKind.CONSTRUCTOR) {
kind = IndexSyntheticElementKind.constructor;
- element = element.enclosingElement;
- } else if (elementKind == ElementKind.FUNCTION &&
- element.name == 'loadLibrary') {
+ element = element.enclosingElement!;
+ } else if (element is FunctionElement && element.name == 'loadLibrary') {
kind = IndexSyntheticElementKind.loadLibrary;
element = element.library;
} else if (elementKind == ElementKind.FIELD) {
- FieldElement field = element;
+ var field = element as FieldElement;
kind = IndexSyntheticElementKind.field;
- element = field.getter ?? field.setter;
+ element = (field.getter ?? field.setter)!;
} else if (elementKind == ElementKind.GETTER ||
elementKind == ElementKind.SETTER) {
- PropertyAccessorElement accessor = element;
+ var accessor = element as PropertyAccessorElement;
Element enclosing = element.enclosingElement;
bool isEnumGetter = enclosing is ClassElement && enclosing.isEnum;
if (isEnumGetter && accessor.name == 'index') {
@@ -163,17 +162,16 @@
: IndexSyntheticElementKind.setter;
element = accessor.variable;
}
- } else if (elementKind == ElementKind.METHOD) {
+ } else if (element is MethodElement) {
Element enclosing = element.enclosingElement;
bool isEnumMethod = enclosing is ClassElement && enclosing.isEnum;
if (isEnumMethod && element.name == 'toString') {
kind = IndexSyntheticElementKind.enumToString;
element = enclosing;
}
- } else if (elementKind == ElementKind.TOP_LEVEL_VARIABLE) {
- TopLevelVariableElement property = element;
+ } else if (element is TopLevelVariableElement) {
kind = IndexSyntheticElementKind.topLevelVariable;
- element = property.getter ?? property.setter;
+ element = (element.getter ?? element.setter)!;
} else {
throw ArgumentError(
'Unsupported synthetic element ${element.runtimeType}');
@@ -207,7 +205,7 @@
/// The unique id of the element. It is set after indexing of the whole
/// package is done and we are assembling the full package index.
- int id;
+ late int id;
_ElementInfo(this.unitId, this.nameIdUnitMember, this.nameIdClassMember,
this.nameIdParameter, this.kind);
@@ -270,7 +268,7 @@
final List<_SubtypeInfo> subtypes = [];
/// The [_StringInfo] to use for `null` strings.
- _StringInfo nullString;
+ late final _StringInfo nullString;
_IndexAssembler() {
nullString = _getStringInfo(NULL_STRING);
@@ -381,7 +379,7 @@
/// Return the unique [_ElementInfo] corresponding the [element]. The field
/// [_ElementInfo.id] is filled by [assemble] during final sorting.
_ElementInfo _getElementInfo(Element element) {
- element = element.declaration;
+ element = element.declaration!;
return elementMap.putIfAbsent(element, () {
CompilationUnitElement unitElement = getUnitElement(element);
int unitId = _getUnitId(unitElement);
@@ -391,7 +389,7 @@
/// Return the unique [_StringInfo] corresponding the given [string]. The
/// field [_StringInfo.id] is filled by [assemble] during final sorting.
- _StringInfo _getStringInfo(String string) {
+ _StringInfo _getStringInfo(String? string) {
if (string == null) {
return nullString;
}
@@ -444,20 +442,18 @@
_IndexContributor(this.assembler);
- void recordIsAncestorOf(Element descendant) {
+ void recordIsAncestorOf(ClassElement descendant) {
_recordIsAncestorOf(descendant, descendant, false, <ClassElement>[]);
}
/// Record that the name [node] has a relation of the given [kind].
void recordNameRelation(
SimpleIdentifier node, IndexRelationKind kind, bool isQualified) {
- if (node != null) {
- assembler.addNameRelation(node.name, kind, node.offset, isQualified);
- }
+ assembler.addNameRelation(node.name, kind, node.offset, isQualified);
}
/// Record reference to the given operator [Element].
- void recordOperatorReference(Token operator, Element element) {
+ void recordOperatorReference(Token operator, Element? element) {
recordRelationToken(element, IndexRelationKind.IS_INVOKED_BY, operator);
}
@@ -465,9 +461,9 @@
/// of the given [node]. The flag [isQualified] is `true` if [node] has an
/// explicit or implicit qualifier, so cannot be shadowed by a local
/// declaration.
- void recordRelation(
- Element element, IndexRelationKind kind, AstNode node, bool isQualified) {
- if (element != null && node != null) {
+ void recordRelation(Element? element, IndexRelationKind kind, AstNode node,
+ bool isQualified) {
+ if (element != null) {
recordRelationOffset(
element, kind, node.offset, node.length, isQualified);
}
@@ -477,12 +473,13 @@
/// [offset] and [length]. The flag [isQualified] is `true` if the relation
/// has an explicit or implicit qualifier, so [element] cannot be shadowed by
/// a local declaration.
- void recordRelationOffset(Element element, IndexRelationKind kind, int offset,
- int length, bool isQualified) {
+ void recordRelationOffset(Element? element, IndexRelationKind kind,
+ int offset, int length, bool isQualified) {
+ if (element == null) return;
+
// Ignore elements that can't be referenced outside of the unit.
- ElementKind elementKind = element?.kind;
- if (elementKind == null ||
- elementKind == ElementKind.DYNAMIC ||
+ ElementKind elementKind = element.kind;
+ if (elementKind == ElementKind.DYNAMIC ||
elementKind == ElementKind.ERROR ||
elementKind == ElementKind.LABEL ||
elementKind == ElementKind.LOCAL_VARIABLE ||
@@ -497,11 +494,11 @@
}
// Ignore named parameters of synthetic functions, e.g. created for LUB.
// These functions are not bound to a source, we cannot index them.
- if (elementKind == ElementKind.PARAMETER &&
- element is ParameterElement &&
- (element.enclosingElement == null ||
- element.enclosingElement.isSynthetic)) {
- return;
+ if (elementKind == ElementKind.PARAMETER && element is ParameterElement) {
+ var enclosingElement = element.enclosingElement;
+ if (enclosingElement == null || enclosingElement.isSynthetic) {
+ return;
+ }
}
// Elements for generic function types are enclosed by the compilation
// units, but don't have names. So, we cannot index references to their
@@ -518,34 +515,30 @@
/// Record that [element] has a relation of the given [kind] at the location
/// of the given [token].
void recordRelationToken(
- Element element, IndexRelationKind kind, Token token) {
- if (element != null && token != null) {
- recordRelationOffset(element, kind, token.offset, token.length, true);
- }
+ Element? element, IndexRelationKind kind, Token token) {
+ recordRelationOffset(element, kind, token.offset, token.length, true);
}
/// Record a relation between a super [typeName] and its [Element].
void recordSuperType(TypeName typeName, IndexRelationKind kind) {
- Identifier name = typeName?.name;
- if (name != null) {
- Element element = name.staticElement;
- bool isQualified;
- SimpleIdentifier relNode;
- if (name is PrefixedIdentifier) {
- isQualified = true;
- relNode = name.identifier;
- } else {
- isQualified = false;
- relNode = name;
- }
- recordRelation(element, kind, relNode, isQualified);
- recordRelation(
- element, IndexRelationKind.IS_REFERENCED_BY, relNode, isQualified);
- typeName.typeArguments?.accept(this);
+ Identifier name = typeName.name;
+ Element? element = name.staticElement;
+ bool isQualified;
+ SimpleIdentifier relNode;
+ if (name is PrefixedIdentifier) {
+ isQualified = true;
+ relNode = name.identifier;
+ } else {
+ isQualified = false;
+ relNode = name as SimpleIdentifier;
}
+ recordRelation(element, kind, relNode, isQualified);
+ recordRelation(
+ element, IndexRelationKind.IS_REFERENCED_BY, relNode, isQualified);
+ typeName.typeArguments?.accept(this);
}
- void recordUriReference(Element element, StringLiteral uri) {
+ void recordUriReference(Element? element, StringLiteral uri) {
recordRelation(element, IndexRelationKind.IS_REFERENCED_BY, uri, true);
}
@@ -564,19 +557,20 @@
@override
void visitClassDeclaration(ClassDeclaration node) {
_addSubtypeForClassDeclaration(node);
+ var declaredElement = node.declaredElement!;
if (node.extendsClause == null) {
- ClassElement objectElement = node.declaredElement.supertype?.element;
+ ClassElement? objectElement = declaredElement.supertype?.element;
recordRelationOffset(objectElement, IndexRelationKind.IS_EXTENDED_BY,
node.name.offset, 0, true);
}
- recordIsAncestorOf(node.declaredElement);
+ recordIsAncestorOf(declaredElement);
super.visitClassDeclaration(node);
}
@override
void visitClassTypeAlias(ClassTypeAlias node) {
_addSubtypeForClassTypeAlis(node);
- recordIsAncestorOf(node.declaredElement);
+ recordIsAncestorOf(node.declaredElement!);
super.visitClassTypeAlias(node);
}
@@ -604,22 +598,20 @@
@override
void visitConstructorFieldInitializer(ConstructorFieldInitializer node) {
- SimpleIdentifier fieldName = node.fieldName;
- if (fieldName != null) {
- Element element = fieldName.staticElement;
- recordRelation(element, IndexRelationKind.IS_WRITTEN_BY, fieldName, true);
- }
- node.expression?.accept(this);
+ var fieldName = node.fieldName;
+ var element = fieldName.staticElement;
+ recordRelation(element, IndexRelationKind.IS_WRITTEN_BY, fieldName, true);
+ node.expression.accept(this);
}
@override
void visitConstructorName(ConstructorName node) {
- ConstructorElement element = node.staticElement;
+ ConstructorElement? element = node.staticElement;
element = _getActualConstructorElement(element);
// record relation
if (node.name != null) {
- int offset = node.period.offset;
- int length = node.name.end - offset;
+ int offset = node.period!.offset;
+ int length = node.name!.end - offset;
recordRelationOffset(
element, IndexRelationKind.IS_REFERENCED_BY, offset, length, true);
} else {
@@ -632,14 +624,14 @@
@override
void visitExportDirective(ExportDirective node) {
- ExportElement element = node.element;
+ ExportElement? element = node.element;
recordUriReference(element?.exportedLibrary, node.uri);
super.visitExportDirective(node);
}
@override
void visitExpression(Expression node) {
- ParameterElement parameterElement = node.staticParameterElement;
+ ParameterElement? parameterElement = node.staticParameterElement;
if (parameterElement != null && parameterElement.isOptionalPositional) {
recordRelationOffset(parameterElement, IndexRelationKind.IS_REFERENCED_BY,
node.offset, 0, true);
@@ -661,14 +653,14 @@
@override
void visitImportDirective(ImportDirective node) {
- ImportElement element = node.element;
+ ImportElement? element = node.element;
recordUriReference(element?.importedLibrary, node.uri);
super.visitImportDirective(node);
}
@override
void visitIndexExpression(IndexExpression node) {
- MethodElement element = node.writeOrReadElement;
+ Element? element = node.writeOrReadElement;
if (element is MethodElement) {
Token operator = node.leftBracket;
recordRelationToken(element, IndexRelationKind.IS_INVOKED_BY, operator);
@@ -682,7 +674,7 @@
@override
void visitMethodInvocation(MethodInvocation node) {
SimpleIdentifier name = node.methodName;
- Element element = name.staticElement;
+ Element? element = name.staticElement;
// unresolved name invocation
bool isQualified = node.realTarget != null;
if (element == null) {
@@ -695,13 +687,13 @@
recordRelation(element, kind, name, isQualified);
node.target?.accept(this);
node.typeArguments?.accept(this);
- node.argumentList?.accept(this);
+ node.argumentList.accept(this);
}
@override
void visitMixinDeclaration(MixinDeclaration node) {
_addSubtypeForMixinDeclaration(node);
- recordIsAncestorOf(node.declaredElement);
+ recordIsAncestorOf(node.declaredElement!);
super.visitMixinDeclaration(node);
}
@@ -714,7 +706,7 @@
@override
void visitPartDirective(PartDirective node) {
- CompilationUnitElement element = node.element;
+ var element = node.element as CompilationUnitElement?;
if (element?.source != null) {
recordUriReference(element, node.uri);
}
@@ -736,10 +728,10 @@
@override
void visitRedirectingConstructorInvocation(
RedirectingConstructorInvocation node) {
- ConstructorElement element = node.staticElement;
+ var element = node.staticElement;
if (node.constructorName != null) {
- int offset = node.period.offset;
- int length = node.constructorName.end - offset;
+ int offset = node.period!.offset;
+ int length = node.constructorName!.end - offset;
recordRelationOffset(
element, IndexRelationKind.IS_REFERENCED_BY, offset, length, true);
} else {
@@ -757,7 +749,7 @@
return;
}
- Element element = node.writeOrReadElement;
+ Element? element = node.writeOrReadElement;
if (node is SimpleIdentifier && element is ParameterElement) {
element = declaredParameterElement(node, element);
}
@@ -779,7 +771,7 @@
}
// this.field parameter
if (element is FieldFormalParameterElement) {
- AstNode parent = node.parent;
+ AstNode parent = node.parent!;
IndexRelationKind kind =
parent is FieldFormalParameter && parent.identifier == node
? IndexRelationKind.IS_WRITTEN_BY
@@ -798,10 +790,10 @@
@override
void visitSuperConstructorInvocation(SuperConstructorInvocation node) {
- ConstructorElement element = node.staticElement;
+ var element = node.staticElement;
if (node.constructorName != null) {
- int offset = node.period.offset;
- int length = node.constructorName.end - offset;
+ int offset = node.period!.offset;
+ int length = node.constructorName!.end - offset;
recordRelationOffset(
element, IndexRelationKind.IS_REFERENCED_BY, offset, length, true);
} else {
@@ -809,12 +801,12 @@
recordRelationOffset(
element, IndexRelationKind.IS_REFERENCED_BY, offset, 0, true);
}
- node.argumentList?.accept(this);
+ node.argumentList.accept(this);
}
@override
void visitTypeName(TypeName node) {
- AstNode parent = node.parent;
+ AstNode parent = node.parent!;
if (parent is ClassTypeAlias && parent.superclass == node) {
recordSuperType(node, IndexRelationKind.IS_EXTENDED_BY);
} else {
@@ -831,11 +823,11 @@
/// Record the given class as a subclass of its direct superclasses.
void _addSubtype(String name,
- {TypeName superclass,
- WithClause withClause,
- OnClause onClause,
- ImplementsClause implementsClause,
- List<ClassMember> memberNodes}) {
+ {TypeName? superclass,
+ WithClause? withClause,
+ OnClause? onClause,
+ ImplementsClause? implementsClause,
+ required List<ClassMember> memberNodes}) {
List<String> supertypes = [];
List<String> members = [];
@@ -847,8 +839,8 @@
element.name;
}
- void addSupertype(TypeName type) {
- Element element = type?.name?.staticElement;
+ void addSupertype(TypeName? type) {
+ var element = type?.name.staticElement;
if (element is ClassElement) {
String id = getClassElementId(element);
supertypes.add(id);
@@ -856,16 +848,14 @@
}
addSupertype(superclass);
- withClause?.mixinTypes?.forEach(addSupertype);
- onClause?.superclassConstraints?.forEach(addSupertype);
- implementsClause?.interfaces?.forEach(addSupertype);
+ withClause?.mixinTypes.forEach(addSupertype);
+ onClause?.superclassConstraints.forEach(addSupertype);
+ implementsClause?.interfaces.forEach(addSupertype);
void addMemberName(SimpleIdentifier identifier) {
- if (identifier != null) {
- String name = identifier.name;
- if (name != null && name.isNotEmpty) {
- members.add(name);
- }
+ String name = identifier.name;
+ if (name.isNotEmpty) {
+ members.add(name);
}
}
@@ -914,9 +904,9 @@
/// If the given [constructor] is a synthetic constructor created for a
/// [ClassTypeAlias], return the actual constructor of a [ClassDeclaration]
/// which is invoked. Return `null` if a redirection cycle is detected.
- ConstructorElement _getActualConstructorElement(
- ConstructorElement constructor) {
- Set<ConstructorElement> seenConstructors = <ConstructorElement>{};
+ ConstructorElement? _getActualConstructorElement(
+ ConstructorElement? constructor) {
+ var seenConstructors = <ConstructorElement?>{};
while (constructor != null &&
constructor.isSynthetic &&
constructor.redirectedConstructor != null) {
@@ -935,15 +925,12 @@
if (node.isQualified) {
return true;
}
- AstNode parent = node.parent;
+ AstNode parent = node.parent!;
return parent is Combinator || parent is Label;
}
void _recordIsAncestorOf(Element descendant, ClassElement ancestor,
bool includeThis, List<ClassElement> visitedElements) {
- if (ancestor == null) {
- return;
- }
if (visitedElements.contains(ancestor)) {
return;
}
@@ -955,7 +942,7 @@
ancestor, IndexRelationKind.IS_ANCESTOR_OF, offset, length, false);
}
{
- InterfaceType superType = ancestor.supertype;
+ var superType = ancestor.supertype;
if (superType != null) {
_recordIsAncestorOf(
descendant, superType.element, true, visitedElements);
@@ -991,7 +978,7 @@
/// The unique id of the string. It is set after indexing of the whole
/// package is done and we are assembling the full package index.
- int id;
+ late int id;
_StringInfo(this.value);
}
diff --git a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
index dc113ba..1f449ba 100644
--- a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
@@ -73,14 +73,14 @@
final AnalysisContext _context;
final LinkedElementFactory _elementFactory;
- LibraryElement _libraryElement;
+ late final LibraryElementImpl _libraryElement;
final Map<FileState, LineInfo> _fileToLineInfo = {};
final Map<FileState, IgnoreInfo> _fileToIgnoreInfo = {};
final Map<FileState, RecordingErrorListener> _errorListeners = {};
final Map<FileState, ErrorReporter> _errorReporters = {};
- final TestingData _testingData;
+ final TestingData? _testingData;
final List<UsedImportedElements> _usedImportedElementsList = [];
final List<UsedLocalElements> _usedLocalElementsList = [];
@@ -95,7 +95,7 @@
this._elementFactory,
this._inheritance,
this._library,
- {TestingData testingData})
+ {TestingData? testingData})
: _testingData = testingData;
TypeProviderImpl get _typeProvider => _libraryElement.typeProvider;
@@ -123,10 +123,10 @@
}
timerLibraryAnalyzerFreshUnit.stop();
- _libraryElement = _elementFactory.libraryOfUri(_library.uriStr);
+ _libraryElement = _elementFactory.libraryOfUri2(_library.uriStr);
// Resolve URIs in directives to corresponding sources.
- FeatureSet featureSet = units[_library].featureSet;
+ FeatureSet featureSet = units[_library]!.featureSet;
units.forEach((file, unit) {
_validateFeatureSet(unit, featureSet);
_resolveUriBasedDirectives(file, unit);
@@ -170,7 +170,7 @@
if (_analysisOptions.lint) {
var allUnits = _library.libraryFiles
- .map((file) => LinterContextUnit(file.content, units[file]))
+ .map((file) => LinterContextUnit(file.content, units[file]!))
.toList();
for (int i = 0; i < allUnits.length; i++) {
_computeLints(_library.libraryFiles[i], allUnits[i], allUnits);
@@ -186,7 +186,7 @@
for (var file in _library.libraryFiles) {
if (file.source != null) {
IgnoreValidator(_getErrorReporter(file), _getErrorListener(file).errors,
- _fileToIgnoreInfo[file], _fileToLineInfo[file])
+ _fileToIgnoreInfo[file]!, _fileToLineInfo[file]!)
.reportErrors();
}
}
@@ -214,7 +214,7 @@
var elementToUnit = <CompilationUnitElement, CompilationUnit>{};
for (var entry in units.entries) {
var unit = entry.value;
- elementToUnit[unit.declaredElement] = unit;
+ elementToUnit[unit.declaredElement!] = unit;
}
for (var directive in libraryUnit.directives) {
@@ -427,17 +427,17 @@
return errors;
}
- IgnoreInfo ignoreInfo = _fileToIgnoreInfo[file];
+ IgnoreInfo ignoreInfo = _fileToIgnoreInfo[file]!;
if (!ignoreInfo.hasIgnores) {
return errors;
}
- LineInfo lineInfo = _fileToLineInfo[file];
+ LineInfo lineInfo = _fileToLineInfo[file]!;
bool isIgnored(AnalysisError error) {
var code = error.errorCode;
// Don't allow error severity issues to be ignored.
- if (!IgnoreValidator.isIgnorable(file.path, code)) {
+ if (!IgnoreValidator.isIgnorable(file.path!, code)) {
return false;
}
@@ -477,7 +477,7 @@
RecordingErrorListener listener = _getErrorListener(file);
return ErrorReporter(
listener,
- file.source,
+ file.source!,
isNonNullableByDefault: _libraryElement.isNonNullableByDefault,
);
});
@@ -485,18 +485,18 @@
/// Return the name of the library that the given part is declared to be a
/// part of, or `null` if the part does not contain a part-of directive.
- _NameOrSource _getPartLibraryNameOrUri(Source partSource,
+ _NameOrSource? _getPartLibraryNameOrUri(Source partSource,
CompilationUnit partUnit, List<Directive> directivesToResolve) {
for (Directive directive in partUnit.directives) {
if (directive is PartOfDirective) {
directivesToResolve.add(directive);
- LibraryIdentifier libraryName = directive.libraryName;
+ LibraryIdentifier? libraryName = directive.libraryName;
if (libraryName != null) {
return _NameOrSource(libraryName.name, null);
}
- String uri = directive.uri?.stringValue;
+ String? uri = directive.uri?.stringValue;
if (uri != null) {
- Source librarySource = _sourceFactory.resolveUri(partSource, uri);
+ Source? librarySource = _sourceFactory.resolveUri(partSource, uri);
if (librarySource != null) {
return _NameOrSource(null, librarySource);
}
@@ -527,7 +527,7 @@
String content = file.content;
CompilationUnit unit = file.parse(errorListener);
- LineInfo lineInfo = unit.lineInfo;
+ LineInfo lineInfo = unit.lineInfo!;
_fileToLineInfo[file] = lineInfo;
_fileToIgnoreInfo[file] = IgnoreInfo.forDart(unit, content);
@@ -535,7 +535,7 @@
}
void _resolveDirectives(Map<FileState, CompilationUnit> units) {
- CompilationUnit definingCompilationUnit = units[_library];
+ CompilationUnit definingCompilationUnit = units[_library]!;
definingCompilationUnit.element = _libraryElement.definingCompilationUnit;
bool matchNodeElement(Directive node, Element element) {
@@ -544,7 +544,7 @@
ErrorReporter libraryErrorReporter = _getErrorReporter(_library);
- LibraryIdentifier libraryNameNode;
+ LibraryIdentifier? libraryNameNode;
var seenPartSources = <Source>{};
var directivesToResolve = <Directive>[];
int partDirectiveIndex = 0;
@@ -558,7 +558,7 @@
if (matchNodeElement(directive, importElement)) {
directive.element = importElement;
directive.prefix?.staticElement = importElement.prefix;
- Source source = importElement.importedLibrary?.source;
+ Source? source = importElement.importedLibrary?.source;
if (source != null && !_isLibrarySource(source)) {
libraryErrorReporter.reportErrorForNode(
CompileTimeErrorCode.IMPORT_OF_NON_LIBRARY,
@@ -571,7 +571,7 @@
for (ExportElement exportElement in _libraryElement.exports) {
if (matchNodeElement(directive, exportElement)) {
directive.element = exportElement;
- Source source = exportElement.exportedLibrary?.source;
+ Source? source = exportElement.exportedLibrary?.source;
if (source != null && !_isLibrarySource(source)) {
libraryErrorReporter.reportErrorForNode(
CompileTimeErrorCode.EXPORT_OF_NON_LIBRARY,
@@ -583,17 +583,17 @@
} else if (directive is PartDirective) {
StringLiteral partUri = directive.uri;
- FileState partFile = _library.partedFiles[partDirectiveIndex++];
+ var partFile = _library.partedFiles[partDirectiveIndex++];
if (partFile == null) {
continue;
}
- var partUnit = units[partFile];
+ var partUnit = units[partFile]!;
var partElement = _libraryElement.parts[partElementIndex++];
partUnit.element = partElement;
directive.element = partElement;
- Source partSource = directive.uriSource;
+ Source? partSource = directive.uriSource;
if (partSource == null) {
continue;
}
@@ -611,7 +611,7 @@
// name or uri as the library.
//
if (_isExistingSource(partSource)) {
- _NameOrSource nameOrSource = _getPartLibraryNameOrUri(
+ _NameOrSource? nameOrSource = _getPartLibraryNameOrUri(
partSource, partUnit, directivesToResolve);
if (nameOrSource == null) {
libraryErrorReporter.reportErrorForNode(
@@ -619,7 +619,7 @@
partUri,
[partUri.toSource()]);
} else {
- String name = nameOrSource.name;
+ String? name = nameOrSource.name;
if (name != null) {
if (libraryNameNode == null) {
libraryErrorReporter.reportErrorForNode(
@@ -633,7 +633,7 @@
[libraryNameNode.name, name]);
}
} else {
- Source source = nameOrSource.source;
+ Source source = nameOrSource.source!;
if (source != _library.source) {
libraryErrorReporter.reportErrorForNode(
CompileTimeErrorCode.PART_OF_DIFFERENT_LIBRARY,
@@ -660,14 +660,14 @@
}
void _resolveFile(FileState file, CompilationUnit unit) {
- Source source = file.source;
+ var source = file.source;
if (source == null) {
return;
}
RecordingErrorListener errorListener = _getErrorListener(file);
- CompilationUnitElementImpl unitElement = unit.declaredElement;
+ var unitElement = unit.declaredElement as CompilationUnitElementImpl;
// TODO(scheglov) Hack: set types for top-level variables
// Otherwise TypeResolverVisitor will set declared types, and because we
@@ -698,12 +698,12 @@
// Nothing for RESOLVED_UNIT9?
// Nothing for RESOLVED_UNIT10?
- FlowAnalysisHelper flowAnalysisHelper;
+ FlowAnalysisHelper? flowAnalysisHelper;
if (unit.featureSet.isEnabled(Feature.non_nullable)) {
flowAnalysisHelper =
FlowAnalysisHelper(_typeSystem, _testingData != null);
_testingData?.recordFlowAnalysisDataForTesting(
- file.uri, flowAnalysisHelper.dataForTesting);
+ file.uri, flowAnalysisHelper.dataForTesting!);
}
unit.accept(ResolverVisitor(
@@ -713,13 +713,13 @@
/// Return the result of resolve the given [uriContent], reporting errors
/// against the [uriLiteral].
- Source _resolveUri(FileState file, bool isImport, StringLiteral uriLiteral,
- String uriContent) {
- UriValidationCode code =
+ Source? _resolveUri(FileState file, bool isImport, StringLiteral uriLiteral,
+ String? uriContent) {
+ UriValidationCode? code =
UriBasedDirectiveImpl.validateUri(isImport, uriLiteral, uriContent);
if (code == null) {
try {
- Uri.parse(uriContent);
+ Uri.parse(uriContent!);
} on FormatException {
return null;
}
@@ -742,9 +742,9 @@
for (Directive directive in unit.directives) {
if (directive is UriBasedDirective) {
StringLiteral uriLiteral = directive.uri;
- String uriContent = uriLiteral.stringValue?.trim();
+ String? uriContent = uriLiteral.stringValue?.trim();
directive.uriContent = uriContent;
- Source defaultSource = _resolveUri(
+ Source? defaultSource = _resolveUri(
file, directive is ImportDirective, uriLiteral, uriContent);
directive.uriSource = defaultSource;
}
@@ -757,8 +757,8 @@
);
for (var configuration in directive.configurations) {
var uriLiteral = configuration.uri;
- String uriContent = uriLiteral.stringValue?.trim();
- Source defaultSource = _resolveUri(
+ String? uriContent = uriLiteral.stringValue?.trim();
+ Source? defaultSource = _resolveUri(
file, directive is ImportDirective, uriLiteral, uriContent);
configuration.uriSource = defaultSource;
}
@@ -774,7 +774,7 @@
return configuration.uri.stringValue ?? '';
}
}
- return directive.uri?.stringValue ?? '';
+ return directive.uri.stringValue ?? '';
}
/// Validate that the feature set associated with the compilation [unit] is
@@ -790,8 +790,8 @@
/// report an error if it does not.
void _validateUriBasedDirective(
FileState file, UriBasedDirectiveImpl directive) {
- String uriContent;
- Source source;
+ String? uriContent;
+ Source? source;
if (directive is NamespaceDirectiveImpl) {
uriContent = directive.selectedUriContent;
source = directive.selectedSource;
@@ -823,7 +823,7 @@
/// exists and report an error if it does not.
void _validateUriBasedDirectives(FileState file, CompilationUnit unit) {
for (Directive directive in unit.directives) {
- if (directive is UriBasedDirective) {
+ if (directive is UriBasedDirectiveImpl) {
_validateUriBasedDirective(file, directive);
}
}
@@ -841,8 +841,8 @@
/// Either the name or the source associated with a part-of directive.
class _NameOrSource {
- final String name;
- final Source source;
+ final String? name;
+ final Source? source;
_NameOrSource(this.name, this.source);
}
diff --git a/pkg/analyzer/lib/src/dart/analysis/library_context.dart b/pkg/analyzer/lib/src/dart/analysis/library_context.dart
index 411150a..d13ec6e 100644
--- a/pkg/analyzer/lib/src/dart/analysis/library_context.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/library_context.dart
@@ -16,14 +16,13 @@
import 'package:analyzer/src/dart/analysis/session.dart';
import 'package:analyzer/src/exception/exception.dart';
import 'package:analyzer/src/generated/engine.dart'
- show AnalysisContext, AnalysisOptions;
+ show AnalysisContext, AnalysisOptionsImpl;
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/summary/package_bundle_reader.dart';
import 'package:analyzer/src/summary2/bundle_reader.dart';
import 'package:analyzer/src/summary2/link.dart' as link2;
import 'package:analyzer/src/summary2/linked_element_factory.dart';
import 'package:analyzer/src/summary2/reference.dart';
-import 'package:meta/meta.dart';
var counterLinkedLibraries = 0;
var counterLoadedLibraries = 0;
@@ -44,7 +43,7 @@
final PerformanceLog logger;
final ByteStore byteStore;
final AnalysisSessionImpl analysisSession;
- final SummaryDataStore externalSummaries;
+ final SummaryDataStore? externalSummaries;
final SummaryDataStore store = SummaryDataStore([]);
/// The size of the linked data that is loaded by this context.
@@ -52,20 +51,20 @@
/// We use it as an approximation for the heap size of elements.
final int _linkedDataInBytes = 0;
- AnalysisContextImpl analysisContext;
- LinkedElementFactory elementFactory;
+ late final AnalysisContextImpl analysisContext;
+ late LinkedElementFactory elementFactory;
LibraryContext({
- @required this.testView,
- @required AnalysisSessionImpl session,
- @required PerformanceLog logger,
- @required ByteStore byteStore,
- @required AnalysisOptions analysisOptions,
- @required DeclaredVariables declaredVariables,
- @required SourceFactory sourceFactory,
- @required this.externalSummaries,
- @required FileState targetLibrary,
- }) : logger = logger,
+ required this.testView,
+ required AnalysisSessionImpl session,
+ required PerformanceLog logger,
+ required ByteStore byteStore,
+ required AnalysisOptionsImpl analysisOptions,
+ required DeclaredVariables declaredVariables,
+ required SourceFactory sourceFactory,
+ required this.externalSummaries,
+ required FileState targetLibrary,
+ }) : logger = logger,
byteStore = byteStore,
analysisSession = session {
var synchronousSession =
@@ -82,12 +81,13 @@
.getChild(library.uriStr)
.getChild('@unit')
.getChild(unit.uriStr);
- return elementFactory.elementOfReference(reference);
+ var element = elementFactory.elementOfReference(reference);
+ return element as CompilationUnitElement;
}
/// Get the [LibraryElement] for the given library.
LibraryElement getLibraryElement(FileState library) {
- return elementFactory.libraryOfUri(library.uriStr);
+ return elementFactory.libraryOfUri2(library.uriStr);
}
/// Return `true` if the given [uri] is known to be a library.
@@ -132,14 +132,14 @@
}
}
- var resolutionKey = cycle.transitiveSignature + '.linked_bundle';
- var resolutionBytes = byteStore.get(resolutionKey);
+ var resolutionKey = cycle.transitiveSignature! + '.linked_bundle';
+ var resolutionBytes = byteStore.get(resolutionKey) as Uint8List?;
if (resolutionBytes == null) {
librariesLinkedTimer.start();
testView.linkedCycles.add(
- cycle.libraries.map((e) => e.path).toSet(),
+ cycle.libraries.map((e) => e.path!).toSet(),
);
timerInputLibraries.start();
@@ -155,7 +155,7 @@
var isSynthetic = !file.exists;
var unit = file.parse();
- String partUriStr;
+ String? partUriStr;
if (partIndex >= 0) {
partUriStr = libraryFile.unlinked2.parts[partIndex];
}
@@ -164,7 +164,7 @@
inputUnits.add(
link2.LinkInputUnit(
partUriStr,
- file.source,
+ file.source!,
isSynthetic,
unit,
),
@@ -175,14 +175,15 @@
var existingLibraryReference =
elementFactory.rootReference[libraryFile.uriStr];
if (existingLibraryReference != null) {
- var existingElement = existingLibraryReference.element;
+ var existingElement =
+ existingLibraryReference.element as LibraryElement?;
if (existingElement != null) {
var buffer = StringBuffer();
buffer.writeln('[The library is already loaded]');
buffer.writeln();
- var existingSource = existingElement?.source;
+ var existingSource = existingElement.source;
buffer.writeln('[oldUri: ${existingSource.uri}]');
buffer.writeln('[oldPath: ${existingSource.fullName}]');
buffer.writeln('[newUri: ${libraryFile.uriStr}]');
@@ -284,7 +285,7 @@
Reference.root(),
);
if (externalSummaries != null) {
- for (var bundle in externalSummaries.bundles) {
+ for (var bundle in externalSummaries!.bundles) {
elementFactory.addBundle(
BundleReader(
elementFactory: elementFactory,
@@ -298,9 +299,9 @@
/// Ensure that type provider is created.
void _createElementFactoryTypeProvider() {
- if (analysisContext.typeProviderNonNullableByDefault == null) {
- var dartCore = elementFactory.libraryOfUri('dart:core');
- var dartAsync = elementFactory.libraryOfUri('dart:async');
+ if (!analysisContext.hasTypeProvider) {
+ var dartCore = elementFactory.libraryOfUri2('dart:core');
+ var dartAsync = elementFactory.libraryOfUri2('dart:async');
elementFactory.createTypeProviders(dartCore, dartAsync);
}
}
@@ -308,8 +309,7 @@
/// The [exception] was caught during the [cycle] linking.
///
/// Throw another exception that wraps the given one, with more information.
- @alwaysThrows
- void _throwLibraryCycleLinkException(
+ Never _throwLibraryCycleLinkException(
LibraryCycle cycle,
Object exception,
StackTrace stackTrace,
@@ -317,7 +317,7 @@
var fileContentMap = <String, String>{};
for (var libraryFile in cycle.libraries) {
for (var file in libraryFile.libraryFiles) {
- fileContentMap[file.path] = file.content;
+ fileContentMap[file.path!] = file.content;
}
}
throw CaughtExceptionWithFiles(exception, stackTrace, fileContentMap);
diff --git a/pkg/analyzer/lib/src/dart/analysis/library_graph.dart b/pkg/analyzer/lib/src/dart/analysis/library_graph.dart
index 08cb6aa..f4dcec5 100644
--- a/pkg/analyzer/lib/src/dart/analysis/library_graph.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/library_graph.dart
@@ -36,7 +36,7 @@
/// transitive signatures of the cycles that the [libraries] reference
/// directly. So, indirectly it is based on the transitive closure of all
/// files that [libraries] reference (but we don't compute these files).
- String transitiveSignature;
+ String? transitiveSignature;
/// The map from a library in [libraries] to its transitive signature.
///
@@ -110,8 +110,8 @@
// Sort libraries to produce stable signatures.
scc.sort((first, second) {
- var firstPath = first.file.path;
- var secondPath = second.file.path;
+ var firstPath = first.file.path!;
+ var secondPath = second.file.path!;
return firstPath.compareTo(secondPath);
});
@@ -128,7 +128,7 @@
for (var node in scc) {
cycle.libraries.add(node.file);
- signature.addLanguageVersion(node.file.packageLanguageVersion);
+ signature.addLanguageVersion(node.file.packageLanguageVersion!);
signature.addString(node.file.uriStr);
signature.addInt(node.file.libraryFiles.length);
@@ -145,7 +145,7 @@
for (var node in scc) {
var librarySignatureBuilder = ApiSignature()
..addString(node.file.uriStr)
- ..addString(cycle.transitiveSignature);
+ ..addString(cycle.transitiveSignature!);
var librarySignature = librarySignatureBuilder.toHex();
node.file.internal_setLibraryCycle(
@@ -173,7 +173,7 @@
if (cycle.directDependencies.add(referencedCycle)) {
referencedCycle._directUsers.add(cycle);
- signature.addString(referencedCycle.transitiveSignature);
+ signature.addString(referencedCycle.transitiveSignature!);
}
}
}
diff --git a/pkg/analyzer/lib/src/dart/analysis/mutex.dart b/pkg/analyzer/lib/src/dart/analysis/mutex.dart
index 938f6a2..e4533c9 100644
--- a/pkg/analyzer/lib/src/dart/analysis/mutex.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/mutex.dart
@@ -18,14 +18,14 @@
/// m.release();
/// }
class Mutex {
- Completer<void> _lock;
+ Completer<void>? _lock;
/// Acquire a lock.
///
/// Returns a [Future] that will be completed when the lock has been acquired.
Future<void> acquire() async {
while (_lock != null) {
- await _lock.future;
+ await _lock!.future;
}
_lock = Completer<void>();
}
@@ -47,7 +47,7 @@
if (_lock == null) {
throw StateError('No lock to release.');
}
- _lock.complete();
+ _lock!.complete();
_lock = null;
}
}
diff --git a/pkg/analyzer/lib/src/dart/analysis/performance_logger.dart b/pkg/analyzer/lib/src/dart/analysis/performance_logger.dart
index 245f058..0418984 100644
--- a/pkg/analyzer/lib/src/dart/analysis/performance_logger.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/performance_logger.dart
@@ -4,7 +4,7 @@
/// This class is used to gather and print performance information.
class PerformanceLog {
- final StringSink sink;
+ final StringSink? sink;
int _level = 0;
PerformanceLog(this.sink);
@@ -59,7 +59,7 @@
void writeln(String msg) {
if (sink != null) {
String indent = '\t' * _level;
- sink.writeln('$indent$msg');
+ sink!.writeln('$indent$msg');
}
}
}
diff --git a/pkg/analyzer/lib/src/dart/analysis/referenced_names.dart b/pkg/analyzer/lib/src/dart/analysis/referenced_names.dart
index 7c05adf..2461021 100644
--- a/pkg/analyzer/lib/src/dart/analysis/referenced_names.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/referenced_names.dart
@@ -17,7 +17,7 @@
Set<String> computeSubtypedNames(CompilationUnit unit) {
Set<String> subtypedNames = <String>{};
- void _addSubtypedName(TypeName type) {
+ void _addSubtypedName(TypeName? type) {
if (type != null) {
Identifier name = type.name;
if (name is SimpleIdentifier) {
@@ -28,7 +28,7 @@
}
}
- void _addSubtypedNames(List<TypeName> types) {
+ void _addSubtypedNames(List<TypeName>? types) {
types?.forEach(_addSubtypedName);
}
@@ -39,7 +39,7 @@
_addSubtypedNames(declaration.implementsClause?.interfaces);
} else if (declaration is ClassTypeAlias) {
_addSubtypedName(declaration.superclass);
- _addSubtypedNames(declaration.withClause?.mixinTypes);
+ _addSubtypedNames(declaration.withClause.mixinTypes);
_addSubtypedNames(declaration.implementsClause?.interfaces);
} else if (declaration is MixinDeclaration) {
_addSubtypedNames(declaration.onClause?.superclassConstraints);
@@ -52,8 +52,8 @@
/// Chained set of local names, that hide corresponding external names.
class _LocalNameScope {
- final _LocalNameScope enclosing;
- Set<String> names;
+ final _LocalNameScope? enclosing;
+ Set<String>? names;
_LocalNameScope(this.enclosing);
@@ -132,14 +132,13 @@
return scope;
}
- void add(SimpleIdentifier identifier) {
+ void add(SimpleIdentifier? identifier) {
if (identifier != null) {
- names ??= <String>{};
- names.add(identifier.name);
+ (names ??= <String>{}).add(identifier.name);
}
}
- void addFormalParameters(FormalParameterList parameterList) {
+ void addFormalParameters(FormalParameterList? parameterList) {
if (parameterList != null) {
parameterList.parameters
.map((p) => p is NormalFormalParameter ? p.identifier : null)
@@ -147,7 +146,7 @@
}
}
- void addTypeParameters(TypeParameterList typeParameterList) {
+ void addTypeParameters(TypeParameterList? typeParameterList) {
if (typeParameterList != null) {
typeParameterList.typeParameters.map((p) => p.name).forEach(add);
}
@@ -160,11 +159,11 @@
}
bool contains(String name) {
- if (names != null && names.contains(name)) {
+ if (names != null && names!.contains(name)) {
return true;
}
if (enclosing != null) {
- return enclosing.contains(name);
+ return enclosing!.contains(name);
}
return false;
}
@@ -257,8 +256,9 @@
@override
void visitImportDirective(ImportDirective node) {
- if (node.prefix != null) {
- importPrefixNames.add(node.prefix.name);
+ var prefix = node.prefix;
+ if (prefix != null) {
+ importPrefixNames.add(prefix.name);
}
super.visitImportDirective(node);
}
@@ -281,7 +281,7 @@
return;
}
// Ignore class names references from constructors.
- AstNode parent = node.parent;
+ var parent = node.parent!;
if (parent is ConstructorDeclaration && parent.returnType == node) {
return;
}
@@ -304,7 +304,7 @@
static bool _isNameExpressionLabel(AstNode parent) {
if (parent is Label) {
- AstNode parent2 = parent?.parent;
+ var parent2 = parent.parent;
return parent2 is NamedExpression && parent2.name == parent;
}
return false;
diff --git a/pkg/analyzer/lib/src/dart/analysis/results.dart b/pkg/analyzer/lib/src/dart/analysis/results.dart
index d16c22d..f8932cd 100644
--- a/pkg/analyzer/lib/src/dart/analysis/results.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/results.dart
@@ -17,7 +17,7 @@
final AnalysisSession session;
@override
- final String path;
+ final String? path;
@override
final Uri uri;
@@ -33,10 +33,10 @@
final AstNode node;
@override
- final ParsedUnitResult parsedUnit;
+ final ParsedUnitResult? parsedUnit;
@override
- final ResolvedUnitResult resolvedUnit;
+ final ResolvedUnitResult? resolvedUnit;
ElementDeclarationResultImpl(
this.element, this.node, this.parsedUnit, this.resolvedUnit);
@@ -69,10 +69,10 @@
class ParsedLibraryResultImpl extends AnalysisResultImpl
implements ParsedLibraryResult {
@override
- final List<ParsedUnitResult> units;
+ final List<ParsedUnitResult>? units;
ParsedLibraryResultImpl(
- AnalysisSession session, String path, Uri uri, this.units)
+ AnalysisSession session, String? path, Uri uri, this.units)
: super(session, path, uri);
ParsedLibraryResultImpl.external(AnalysisSession session, Uri uri)
@@ -87,13 +87,20 @@
}
@override
- ElementDeclarationResult getElementDeclaration(Element element) {
+ ElementDeclarationResult? getElementDeclaration(Element element) {
if (state != ResultState.VALID) {
throw StateError('The result is not valid: $state');
}
- var elementPath = element.source.fullName;
- var unitResult = units.firstWhere(
+ if (element is CompilationUnitElement ||
+ element is LibraryElement ||
+ element.isSynthetic ||
+ element.nameOffset == -1) {
+ return null;
+ }
+
+ var elementPath = element.source!.fullName;
+ var unitResult = units!.firstWhere(
(r) => r.path == elementPath,
orElse: () {
var elementStr = element.getDisplayString(withNullability: true);
@@ -102,14 +109,14 @@
},
);
- if (element.isSynthetic || element.nameOffset == -1) {
- return null;
- }
-
var locator = _DeclarationByElementLocator(element);
unitResult.unit.accept(locator);
var declaration = locator.result;
+ if (declaration == null) {
+ return null;
+ }
+
return ElementDeclarationResultImpl(element, declaration, unitResult, null);
}
}
@@ -145,19 +152,19 @@
ParseStringResultImpl(this.content, this.unit, this.errors);
@override
- LineInfo get lineInfo => unit.lineInfo;
+ LineInfo get lineInfo => unit.lineInfo!;
}
class ResolvedLibraryResultImpl extends AnalysisResultImpl
implements ResolvedLibraryResult {
@override
- final LibraryElement element;
+ final LibraryElement? element;
@override
- final List<ResolvedUnitResult> units;
+ final List<ResolvedUnitResult>? units;
ResolvedLibraryResultImpl(
- AnalysisSession session, String path, Uri uri, this.element, this.units)
+ AnalysisSession session, String? path, Uri uri, this.element, this.units)
: super(session, path, uri);
ResolvedLibraryResultImpl.external(AnalysisSession session, Uri uri)
@@ -172,16 +179,23 @@
}
@override
- TypeProvider get typeProvider => element.typeProvider;
+ TypeProvider get typeProvider => element!.typeProvider;
@override
- ElementDeclarationResult getElementDeclaration(Element element) {
+ ElementDeclarationResult? getElementDeclaration(Element element) {
if (state != ResultState.VALID) {
throw StateError('The result is not valid: $state');
}
- var elementPath = element.source.fullName;
- var unitResult = units.firstWhere(
+ if (element is CompilationUnitElement ||
+ element is LibraryElement ||
+ element.isSynthetic ||
+ element.nameOffset == -1) {
+ return null;
+ }
+
+ var elementPath = element.source!.fullName;
+ var unitResult = units!.firstWhere(
(r) => r.path == elementPath,
orElse: () {
var elementStr = element.getDisplayString(withNullability: true);
@@ -190,14 +204,19 @@
},
);
- if (element.isSynthetic || element.nameOffset == -1) {
- return null;
+ var unit = unitResult.unit;
+ if (unit == null) {
+ throw StateError('The result has no unit');
}
var locator = _DeclarationByElementLocator(element);
- unitResult.unit.accept(locator);
+ unit.accept(locator);
var declaration = locator.result;
+ if (declaration == null) {
+ return null;
+ }
+
return ElementDeclarationResultImpl(element, declaration, null, unitResult);
}
}
@@ -208,10 +227,10 @@
final bool exists;
@override
- final String content;
+ final String? content;
@override
- final CompilationUnit unit;
+ final CompilationUnit? unit;
@override
final List<AnalysisError> errors;
@@ -229,7 +248,13 @@
: super(session, path, uri, lineInfo, isPart);
@override
- LibraryElement get libraryElement => unit.declaredElement.library;
+ LibraryElement get libraryElement {
+ var unit = this.unit;
+ if (unit == null) {
+ throw StateError('The result has no unit');
+ }
+ return unit.declaredElement!.library;
+ }
@override
ResultState get state => exists ? ResultState.VALID : ResultState.NOT_A_FILE;
@@ -238,7 +263,7 @@
TypeProvider get typeProvider => libraryElement.typeProvider;
@override
- TypeSystemImpl get typeSystem => libraryElement.typeSystem;
+ TypeSystemImpl get typeSystem => libraryElement.typeSystem as TypeSystemImpl;
}
class UnitElementResultImpl extends AnalysisResultImpl
@@ -259,7 +284,7 @@
class _DeclarationByElementLocator extends GeneralizingAstVisitor<void> {
final Element element;
- AstNode result;
+ AstNode? result;
_DeclarationByElementLocator(this.element);
@@ -344,7 +369,7 @@
super.visitNode(node);
}
- bool _hasOffset(AstNode node) {
+ bool _hasOffset(AstNode? node) {
return node?.offset == element.nameOffset;
}
}
diff --git a/pkg/analyzer/lib/src/dart/analysis/search.dart b/pkg/analyzer/lib/src/dart/analysis/search.dart
index ba8695d..fa87c88 100644
--- a/pkg/analyzer/lib/src/dart/analysis/search.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/search.dart
@@ -19,9 +19,12 @@
Element _getEnclosingElement(CompilationUnitElement unitElement, int offset) {
var finder = _ContainingElementFinder(offset);
unitElement.accept(finder);
- Element element = finder.containingElement;
- assert(element != null,
- 'No containing element in ${unitElement.source.fullName} at $offset');
+ var element = finder.containingElement;
+ if (element == null) {
+ throw StateError(
+ 'No containing element in ${unitElement.source.fullName} at $offset',
+ );
+ }
return element;
}
@@ -51,7 +54,7 @@
List<String> files = await _driver.getFilesDefiningClassMemberName(name);
for (String file in files) {
if (searchedFiles.add(file, this)) {
- UnitElementResult unitResult = await _driver.getUnitElement(file);
+ var unitResult = await _driver.getUnitElement(file);
if (unitResult != null) {
unitResult.element.types.forEach(addElements);
unitResult.element.mixins.forEach(addElements);
@@ -63,7 +66,7 @@
/// Returns references to the [element].
Future<List<SearchResult>> references(
- Element element, SearchedFiles searchedFiles) async {
+ Element? element, SearchedFiles searchedFiles) async {
if (element == null) {
return const <SearchResult>[];
}
@@ -75,12 +78,11 @@
element is PropertyAccessorElement && element.isSetter ||
element is TypeAliasElement) {
return _searchReferences(element, searchedFiles);
- } else if (kind == ElementKind.COMPILATION_UNIT) {
+ } else if (element is CompilationUnitElement) {
return _searchReferences_CompilationUnit(element);
- } else if (kind == ElementKind.GETTER) {
+ } else if (element is PropertyAccessorElement && element.isGetter) {
return _searchReferences_Getter(element, searchedFiles);
- } else if (kind == ElementKind.FIELD ||
- kind == ElementKind.TOP_LEVEL_VARIABLE) {
+ } else if (element is PropertyInducingElement) {
return _searchReferences_Field(element, searchedFiles);
} else if (kind == ElementKind.FUNCTION || kind == ElementKind.METHOD) {
if (element.enclosingElement is ExecutableElement) {
@@ -88,18 +90,18 @@
element, (n) => n is Block, searchedFiles);
}
return _searchReferences_Function(element, searchedFiles);
- } else if (kind == ElementKind.IMPORT) {
+ } else if (element is ImportElement) {
return _searchReferences_Import(element, searchedFiles);
} else if (kind == ElementKind.LABEL ||
kind == ElementKind.LOCAL_VARIABLE) {
return _searchReferences_Local(element, (n) => n is Block, searchedFiles);
- } else if (kind == ElementKind.LIBRARY) {
+ } else if (element is LibraryElement) {
return _searchReferences_Library(element, searchedFiles);
- } else if (kind == ElementKind.PARAMETER) {
+ } else if (element is ParameterElement) {
return _searchReferences_Parameter(element, searchedFiles);
- } else if (kind == ElementKind.PREFIX) {
+ } else if (element is PrefixElement) {
return _searchReferences_Prefix(element, searchedFiles);
- } else if (kind == ElementKind.TYPE_PARAMETER) {
+ } else if (element is TypeParameterElement) {
return _searchReferences_Local(
element, (n) => n.parent is CompilationUnit, searchedFiles);
}
@@ -112,7 +114,7 @@
/// [Search] object, so should be only searched by it to avoid duplicate
/// results; and updated to take ownership if the file is not owned yet.
Future<List<SearchResult>> subTypes(
- ClassElement type, SearchedFiles searchedFiles) async {
+ ClassElement? type, SearchedFiles searchedFiles) async {
if (type == null) {
return const <SearchResult>[];
}
@@ -127,14 +129,14 @@
/// Return direct [SubtypeResult]s for either the [type] or [subtype].
Future<List<SubtypeResult>> subtypes(SearchedFiles searchedFiles,
- {ClassElement type, SubtypeResult subtype}) async {
+ {ClassElement? type, SubtypeResult? subtype}) async {
String name;
String id;
if (type != null) {
name = type.name;
id = '${type.librarySource.uri};${type.source.uri};$name';
} else {
- name = subtype.name;
+ name = subtype!.name;
id = subtype.id;
}
@@ -147,8 +149,8 @@
if (files != null) {
for (FileState file in files) {
- if (searchedFiles.add(file.path, this)) {
- AnalysisDriverUnitIndex index = await _driver.getIndex(file.path);
+ if (searchedFiles.add(file.path!, this)) {
+ var index = await _driver.getIndex(file.path!);
if (index != null) {
var request = _IndexRequest(index);
request.addSubtypes(id, results, file);
@@ -172,7 +174,7 @@
List<FileState> knownFiles = _driver.fsState.knownFiles.toList();
for (FileState file in knownFiles) {
- UnitElementResult unitResult = await _driver.getUnitElement(file.path);
+ var unitResult = await _driver.getUnitElement(file.path!);
if (unitResult != null) {
CompilationUnitElement unitElement = unitResult.element;
unitElement.accessors.forEach(addElement);
@@ -190,7 +192,7 @@
/// Returns unresolved references to the given [name].
Future<List<SearchResult>> unresolvedMemberReferences(
- String name, SearchedFiles searchedFiles) async {
+ String? name, SearchedFiles searchedFiles) async {
if (name == null) {
return const <SearchResult>[];
}
@@ -202,7 +204,7 @@
List<SearchResult> results = [];
for (String file in files) {
if (searchedFiles.add(file, this)) {
- AnalysisDriverUnitIndex index = await _driver.getIndex(file);
+ var index = await _driver.getIndex(file);
if (index != null) {
_IndexRequest request = _IndexRequest(index);
var fileResults = await request.getUnresolvedMemberReferences(
@@ -236,14 +238,14 @@
// Prepare the list of files that reference the element name.
List<String> files = <String>[];
- String path = element.source.fullName;
+ String path = element.source!.fullName;
if (name.startsWith('_')) {
- String libraryPath = element.library.source.fullName;
+ String libraryPath = element.library!.source.fullName;
if (searchedFiles.add(libraryPath, this)) {
FileState library = _driver.fsState.getFileForPath(libraryPath);
for (FileState file in library.libraryFiles) {
if (file.path == path || file.referencedNames.contains(name)) {
- files.add(file.path);
+ files.add(file.path!);
}
}
}
@@ -268,7 +270,7 @@
Element element,
Map<IndexRelationKind, SearchResultKind> relationToResultKind,
String file) async {
- AnalysisDriverUnitIndex index = await _driver.getIndex(file);
+ var index = await _driver.getIndex(file);
if (index != null) {
_IndexRequest request = _IndexRequest(index);
int elementId = request.findElementId(element);
@@ -280,8 +282,8 @@
}
}
- Future<CompilationUnitElement> _getUnitElement(String file) async {
- UnitElementResult result = await _driver.getUnitElement(file);
+ Future<CompilationUnitElement?> _getUnitElement(String file) async {
+ var result = await _driver.getUnitElement(file);
return result?.element;
}
@@ -314,7 +316,7 @@
const {
IndexRelationKind.IS_REFERENCED_BY: SearchResultKind.REFERENCE
},
- file.path);
+ file.path!);
}
}
}
@@ -324,8 +326,8 @@
Future<List<SearchResult>> _searchReferences_Field(
PropertyInducingElement field, SearchedFiles searchedFiles) async {
List<SearchResult> results = <SearchResult>[];
- PropertyAccessorElement getter = field.getter;
- PropertyAccessorElement setter = field.setter;
+ PropertyAccessorElement? getter = field.getter;
+ PropertyAccessorElement? setter = field.setter;
if (!field.isSynthetic) {
await _addResults(results, field, searchedFiles, const {
IndexRelationKind.IS_WRITTEN_BY: SearchResultKind.WRITE,
@@ -348,7 +350,7 @@
Future<List<SearchResult>> _searchReferences_Function(
Element element, SearchedFiles searchedFiles) async {
List<SearchResult> results = <SearchResult>[];
- await _addResults(results, element.declaration, searchedFiles, const {
+ await _addResults(results, element.declaration!, searchedFiles, const {
IndexRelationKind.IS_REFERENCED_BY: SearchResultKind.REFERENCE,
IndexRelationKind.IS_INVOKED_BY: SearchResultKind.INVOCATION
});
@@ -376,10 +378,10 @@
LibraryElement libraryElement = element.library;
for (CompilationUnitElement unitElement in libraryElement.units) {
String unitPath = unitElement.source.fullName;
- ResolvedUnitResult unitResult = await _driver.getResult(unitPath);
+ ResolvedUnitResult unitResult = (await _driver.getResult(unitPath))!;
_ImportElementReferencesVisitor visitor =
_ImportElementReferencesVisitor(element, unitElement);
- unitResult.unit.accept(visitor);
+ unitResult.unit!.accept(visitor);
results.addAll(visitor.results);
}
return results;
@@ -395,15 +397,15 @@
List<SearchResult> results = <SearchResult>[];
for (CompilationUnitElement unitElement in element.units) {
String unitPath = unitElement.source.fullName;
- ResolvedUnitResult unitResult = await _driver.getResult(unitPath);
- CompilationUnit unit = unitResult.unit;
+ ResolvedUnitResult unitResult = (await _driver.getResult(unitPath))!;
+ CompilationUnit unit = unitResult.unit!;
for (Directive directive in unit.directives) {
if (directive is PartOfDirective && directive.element == element) {
results.add(SearchResult._(
- unit.declaredElement,
+ unit.declaredElement!,
SearchResultKind.REFERENCE,
- directive.libraryName.offset,
- directive.libraryName.length,
+ directive.libraryName!.offset,
+ directive.libraryName!.length,
true,
false));
}
@@ -414,33 +416,33 @@
Future<List<SearchResult>> _searchReferences_Local(Element element,
bool Function(AstNode n) isRootNode, SearchedFiles searchedFiles) async {
- String path = element.source.fullName;
+ String path = element.source!.fullName;
if (!searchedFiles.add(path, this)) {
return const <SearchResult>[];
}
// Prepare the unit.
- ResolvedUnitResult unitResult = await _driver.getResult(path);
- CompilationUnit unit = unitResult.unit;
+ ResolvedUnitResult unitResult = (await _driver.getResult(path))!;
+ var unit = unitResult.unit;
if (unit == null) {
return const <SearchResult>[];
}
// Prepare the node.
- AstNode node = NodeLocator(element.nameOffset).searchWithin(unit);
+ var node = NodeLocator(element.nameOffset).searchWithin(unit);
if (node == null) {
return const <SearchResult>[];
}
// Prepare the enclosing node.
- AstNode enclosingNode = node.thisOrAncestorMatching(isRootNode);
+ var enclosingNode = node.thisOrAncestorMatching(isRootNode);
if (enclosingNode == null) {
return const <SearchResult>[];
}
// Find the matches.
_LocalReferencesVisitor visitor =
- _LocalReferencesVisitor(element, unit.declaredElement);
+ _LocalReferencesVisitor(element, unit.declaredElement!);
enclosingNode.accept(visitor);
return visitor.results;
}
@@ -451,7 +453,7 @@
results.addAll(await _searchReferences_Local(
parameter,
(AstNode node) {
- AstNode parent = node.parent;
+ var parent = node.parent;
return parent is ClassDeclaration || parent is CompilationUnit;
},
searchedFiles,
@@ -473,10 +475,10 @@
LibraryElement libraryElement = element.library;
for (CompilationUnitElement unitElement in libraryElement.units) {
String unitPath = unitElement.source.fullName;
- ResolvedUnitResult unitResult = await _driver.getResult(unitPath);
+ ResolvedUnitResult unitResult = (await _driver.getResult(unitPath))!;
_LocalReferencesVisitor visitor =
_LocalReferencesVisitor(element, unitElement);
- unitResult.unit.accept(visitor);
+ unitResult.unit!.accept(visitor);
results.addAll(visitor.results);
}
return results;
@@ -501,7 +503,7 @@
}
void ownAnalyzed(Search search) {
- var contextRoot = search._driver.analysisContext.contextRoot;
+ var contextRoot = search._driver.analysisContext!.contextRoot;
for (var path in contextRoot.analyzedFiles()) {
if (path.endsWith('.dart')) {
add(path, search);
@@ -531,8 +533,7 @@
final bool isQualified;
SearchResult._(this.enclosingElement, this.kind, this.offset, this.length,
- this.isResolved, this.isQualified)
- : assert(enclosingElement != null);
+ this.isResolved, this.isQualified);
@override
String toString() {
@@ -580,7 +581,7 @@
/// A visitor that finds the deep-most [Element] that contains the [offset].
class _ContainingElementFinder extends GeneralizingElementVisitor<void> {
final int offset;
- Element containingElement;
+ Element? containingElement;
_ContainingElementFinder(this.offset);
@@ -588,8 +589,8 @@
void visitElement(Element element) {
if (element is ElementImpl) {
if (element.codeOffset != null &&
- element.codeOffset <= offset &&
- offset <= element.codeOffset + element.codeLength) {
+ element.codeOffset! <= offset &&
+ offset <= element.codeOffset! + element.codeLength!) {
containingElement = element;
super.visitElement(element);
}
@@ -604,7 +605,7 @@
final ImportElement importElement;
final CompilationUnitElement enclosingUnitElement;
- Set<Element> importedElements;
+ late final Set<Element> importedElements;
_ImportElementReferencesVisitor(
ImportElement element, this.enclosingUnitElement)
@@ -625,7 +626,7 @@
}
if (importElement.prefix != null) {
if (node.staticElement == importElement.prefix) {
- AstNode parent = node.parent;
+ var parent = node.parent;
if (parent is PrefixedIdentifier && parent.prefix == node) {
var element = parent.writeOrReadElement?.declaration;
if (importedElements.contains(element)) {
@@ -745,7 +746,8 @@
Future<List<SearchResult>> getRelations(
int elementId,
Map<IndexRelationKind, SearchResultKind> relationToResultKind,
- Future<CompilationUnitElement> Function() getEnclosingUnitElement) async {
+ Future<CompilationUnitElement?> Function()
+ getEnclosingUnitElement) async {
// Find the first usage of the element.
int i = _findFirstOccurrence(index.usedElements, elementId);
if (i == -1) {
@@ -753,12 +755,12 @@
}
// Create locations for every usage of the element.
List<SearchResult> results = <SearchResult>[];
- CompilationUnitElement enclosingUnitElement;
+ CompilationUnitElement? enclosingUnitElement;
for (;
i < index.usedElements.length && index.usedElements[i] == elementId;
i++) {
IndexRelationKind relationKind = index.usedElementKinds[i];
- SearchResultKind resultKind = relationToResultKind[relationKind];
+ SearchResultKind? resultKind = relationToResultKind[relationKind];
if (resultKind != null) {
int offset = index.usedElementOffsets[i];
enclosingUnitElement ??= await getEnclosingUnitElement();
@@ -780,7 +782,7 @@
/// Return the identifier of [str] in the [index] or `-1` if [str] is not
/// used in the [index].
- int getStringId(String str) {
+ int getStringId(String? str) {
if (str == null) {
return index.nullStringId;
}
@@ -814,7 +816,8 @@
Future<List<SearchResult>> getUnresolvedMemberReferences(
String name,
Map<IndexRelationKind, SearchResultKind> relationToResultKind,
- Future<CompilationUnitElement> Function() getEnclosingUnitElement) async {
+ Future<CompilationUnitElement?> Function()
+ getEnclosingUnitElement) async {
// Find the name identifier.
int nameId = getStringId(name);
if (nameId == -1) {
@@ -829,10 +832,10 @@
// Create results for every usage of the name.
List<SearchResult> results = <SearchResult>[];
- CompilationUnitElement enclosingUnitElement;
+ CompilationUnitElement? enclosingUnitElement;
for (; i < index.usedNames.length && index.usedNames[i] == nameId; i++) {
IndexRelationKind relationKind = index.usedNameKinds[i];
- SearchResultKind resultKind = relationToResultKind[relationKind];
+ SearchResultKind? resultKind = relationToResultKind[relationKind];
if (resultKind != null) {
int offset = index.usedNameOffsets[i];
enclosingUnitElement ??= await getEnclosingUnitElement();
@@ -888,7 +891,7 @@
return;
}
if (node.staticElement == element) {
- AstNode parent = node.parent;
+ var parent = node.parent;
SearchResultKind kind = SearchResultKind.REFERENCE;
if (element is FunctionElement) {
if (parent is MethodInvocation && parent.methodName == node) {
diff --git a/pkg/analyzer/lib/src/dart/analysis/session.dart b/pkg/analyzer/lib/src/dart/analysis/session.dart
index 4bfedf3..7754ffa 100644
--- a/pkg/analyzer/lib/src/dart/analysis/session.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/session.dart
@@ -8,16 +8,15 @@
import 'package:analyzer/dart/analysis/session.dart';
import 'package:analyzer/dart/analysis/uri_converter.dart';
import 'package:analyzer/dart/element/element.dart';
-import 'package:analyzer/dart/element/type_provider.dart';
import 'package:analyzer/file_system/file_system.dart';
import 'package:analyzer/src/dart/analysis/driver.dart' as driver;
import 'package:analyzer/src/dart/analysis/uri_converter.dart';
import 'package:analyzer/src/dart/element/class_hierarchy.dart';
import 'package:analyzer/src/dart/element/inheritance_manager3.dart';
+import 'package:analyzer/src/dart/element/type_provider.dart';
import 'package:analyzer/src/dart/element/type_system.dart';
import 'package:analyzer/src/generated/engine.dart' show AnalysisOptionsImpl;
import 'package:analyzer/src/generated/source.dart';
-import 'package:meta/meta.dart';
/// A concrete implementation of an analysis session.
class AnalysisSessionImpl implements AnalysisSession {
@@ -25,7 +24,7 @@
final driver.AnalysisDriver _driver;
/// The URI converter used to convert between URI's and file paths.
- UriConverter _uriConverter;
+ UriConverter? _uriConverter;
/// The cache of libraries for URIs.
final Map<String, LibraryElement> _uriToLibraryCache = {};
@@ -37,7 +36,7 @@
AnalysisSessionImpl(this._driver);
@override
- AnalysisContext get analysisContext => _driver?.analysisContext;
+ AnalysisContext get analysisContext => _driver.analysisContext!;
@override
DeclaredVariables get declaredVariables => _driver.declaredVariables;
@@ -60,7 +59,7 @@
driver.AnalysisDriver getDriver() => _driver;
@override
- Future<ErrorsResult> getErrors(String path) {
+ Future<ErrorsResult?> getErrors(String path) {
_checkConsistency();
return _driver.getErrors(path);
}
@@ -116,19 +115,19 @@
}
@override
- Future<ResolvedUnitResult> getResolvedUnit(String path) {
+ Future<ResolvedUnitResult?> getResolvedUnit(String path) {
_checkConsistency();
return _driver.getResult(path);
}
@override
- Future<SourceKind> getSourceKind(String path) {
+ Future<SourceKind?> getSourceKind(String path) {
_checkConsistency();
return _driver.getSourceKind(path);
}
@override
- Future<UnitElementResult> getUnitElement(String path) {
+ Future<UnitElementResult?> getUnitElement(String path) {
_checkConsistency();
return _driver.getUnitElement(path);
}
@@ -164,11 +163,11 @@
final DeclaredVariables declaredVariables;
- TypeProvider _typeProviderLegacy;
- TypeProvider _typeProviderNonNullableByDefault;
+ TypeProviderImpl? _typeProviderLegacy;
+ TypeProviderImpl? _typeProviderNonNullableByDefault;
- TypeSystemImpl _typeSystemLegacy;
- TypeSystemImpl _typeSystemNonNullableByDefault;
+ TypeSystemImpl? _typeSystemLegacy;
+ TypeSystemImpl? _typeSystemNonNullableByDefault;
SynchronousSession(this._analysisOptions, this.declaredVariables);
@@ -188,20 +187,22 @@
);
}
- TypeProvider get typeProviderLegacy {
- return _typeProviderLegacy;
+ bool get hasTypeProvider => _typeProviderNonNullableByDefault != null;
+
+ TypeProviderImpl get typeProviderLegacy {
+ return _typeProviderLegacy!;
}
- TypeProvider get typeProviderNonNullableByDefault {
- return _typeProviderNonNullableByDefault;
+ TypeProviderImpl get typeProviderNonNullableByDefault {
+ return _typeProviderNonNullableByDefault!;
}
TypeSystemImpl get typeSystemLegacy {
- return _typeSystemLegacy;
+ return _typeSystemLegacy!;
}
TypeSystemImpl get typeSystemNonNullableByDefault {
- return _typeSystemNonNullableByDefault;
+ return _typeSystemNonNullableByDefault!;
}
void clearTypeProvider() {
@@ -213,8 +214,8 @@
}
void setTypeProviders({
- @required TypeProvider legacy,
- @required TypeProvider nonNullableByDefault,
+ required TypeProviderImpl legacy,
+ required TypeProviderImpl nonNullableByDefault,
}) {
if (_typeProviderLegacy != null ||
_typeProviderNonNullableByDefault != null) {
@@ -228,14 +229,14 @@
implicitCasts: _analysisOptions.implicitCasts,
isNonNullableByDefault: false,
strictInference: _analysisOptions.strictInference,
- typeProvider: _typeProviderLegacy,
+ typeProvider: legacy,
);
_typeSystemNonNullableByDefault = TypeSystemImpl(
implicitCasts: _analysisOptions.implicitCasts,
isNonNullableByDefault: true,
strictInference: _analysisOptions.strictInference,
- typeProvider: _typeProviderNonNullableByDefault,
+ typeProvider: nonNullableByDefault,
);
}
}
diff --git a/pkg/analyzer/lib/src/dart/analysis/session_helper.dart b/pkg/analyzer/lib/src/dart/analysis/session_helper.dart
index a7d78a6..235e67d 100644
--- a/pkg/analyzer/lib/src/dart/analysis/session_helper.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/session_helper.dart
@@ -21,7 +21,7 @@
/// Return the [ClassElement] with the given [className] that is exported
/// from the library with the given [libraryUri], or `null` if the library
/// does not export a class with such name.
- Future<ClassElement> getClass(String libraryUri, String className) async {
+ Future<ClassElement?> getClass(String libraryUri, String className) async {
var libraryElement = await session.getLibraryByUri(libraryUri);
var element = libraryElement.exportNamespace.get(className);
if (element is ClassElement) {
@@ -33,9 +33,9 @@
/// Return the declaration of the [element], or `null` is the [element]
/// is synthetic, or is declared in a file that is not a part of a library.
- Future<ElementDeclarationResult> getElementDeclaration(
+ Future<ElementDeclarationResult?> getElementDeclaration(
Element element) async {
- var libraryPath = element.library.source.fullName;
+ var libraryPath = element.library!.source.fullName;
// This should not happen in valid code, but sometimes we treat a file
// with a `part of` directive as a library, because there is no library
@@ -49,12 +49,12 @@
}
/// Return the resolved unit that declares the given [element].
- Future<ResolvedUnitResult> getResolvedUnitByElement(Element element) async {
- var libraryPath = element.library.source.fullName;
+ Future<ResolvedUnitResult?> getResolvedUnitByElement(Element element) async {
+ var libraryPath = element.library!.source.fullName;
var resolvedLibrary = await _getResolvedLibrary(libraryPath);
- var unitPath = element.source.fullName;
- return resolvedLibrary.units.singleWhere((resolvedUnit) {
+ var unitPath = element.source!.fullName;
+ return resolvedLibrary.units!.singleWhere((resolvedUnit) {
return resolvedUnit.path == unitPath;
});
}
@@ -62,7 +62,7 @@
/// Return the [PropertyAccessorElement] with the given [name] that is
/// exported from the library with the given [uri], or `null` if the
/// library does not export a top-level accessor with such name.
- Future<PropertyAccessorElement> getTopLevelPropertyAccessor(
+ Future<PropertyAccessorElement?> getTopLevelPropertyAccessor(
String uri, String name) async {
var libraryElement = await session.getLibraryByUri(uri);
var element = libraryElement.exportNamespace.get(name);
diff --git a/pkg/analyzer/lib/src/dart/analysis/status.dart b/pkg/analyzer/lib/src/dart/analysis/status.dart
index af6c6b8..5c15c9e 100644
--- a/pkg/analyzer/lib/src/dart/analysis/status.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/status.dart
@@ -56,7 +56,7 @@
/// If non-null, a completer which should be completed on the next transition
/// to idle.
- Completer<void> _idleCompleter;
+ Completer<void>? _idleCompleter;
/// Return the last status sent to the [stream].
AnalysisStatus get currentStatus => _currentStatus;
diff --git a/pkg/analyzer/lib/src/dart/analysis/unlinked_api_signature.dart b/pkg/analyzer/lib/src/dart/analysis/unlinked_api_signature.dart
index 6968796..7f59be6 100644
--- a/pkg/analyzer/lib/src/dart/analysis/unlinked_api_signature.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/unlinked_api_signature.dart
@@ -55,12 +55,14 @@
addToken(node.rightBracket);
}
- void addFunctionBodyModifiers(FunctionBody node) {
- signature.addBool(node.isSynchronous);
- signature.addBool(node.isGenerator);
+ void addFunctionBodyModifiers(FunctionBody? node) {
+ if (node != null) {
+ signature.addBool(node.isSynchronous);
+ signature.addBool(node.isGenerator);
+ }
}
- void addNode(AstNode node) {
+ void addNode(AstNode? node) {
if (node != null) {
addTokens(node.beginToken, node.endToken);
}
@@ -79,10 +81,10 @@
/// Appends tokens from [begin] (including), to [end] (also including).
void addTokens(Token begin, Token end) {
if (begin is CommentToken) {
- begin = (begin as CommentToken).parent;
+ begin = begin.parent!;
}
- Token token = begin;
+ Token? token = begin;
while (token != null) {
addToken(token);
@@ -111,13 +113,13 @@
includeInitializers) {
addTokens(node.beginToken, node.endToken);
} else {
- addTokens(node.beginToken, variableList.type.endToken);
+ addTokens(node.beginToken, variableList.type!.endToken);
signature.addInt(variableList.variables.length);
for (var variable in variableList.variables) {
addTokens(variable.beginToken, variable.name.endToken);
signature.addBool(variable.initializer != null);
- addToken(variable.endToken.next); // `,` or `;`
+ addToken(variable.endToken.next!); // `,` or `;`
}
}
}
diff --git a/pkg/analyzer/lib/src/dart/analysis/uri_converter.dart b/pkg/analyzer/lib/src/dart/analysis/uri_converter.dart
index da5f7e4..6a13f86 100644
--- a/pkg/analyzer/lib/src/dart/analysis/uri_converter.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/uri_converter.dart
@@ -18,11 +18,11 @@
DriverBasedUriConverter(this.driver);
@override
- Uri pathToUri(String path, {String containingPath}) {
+ Uri? pathToUri(String path, {String? containingPath}) {
ResourceProvider provider = driver.resourceProvider;
if (containingPath != null) {
Context context = provider.pathContext;
- String root = driver.contextRoot.root;
+ String root = driver.contextRoot!.root;
if (context.isWithin(root, path) &&
context.isWithin(root, containingPath)) {
String relativePath =
@@ -37,5 +37,5 @@
}
@override
- String uriToPath(Uri uri) => driver.sourceFactory.forUri2(uri)?.fullName;
+ String? uriToPath(Uri uri) => driver.sourceFactory.forUri2(uri)?.fullName;
}
diff --git a/pkg/analyzer/lib/src/dart/ast/ast.dart b/pkg/analyzer/lib/src/dart/ast/ast.dart
index 59fd5c6..807f627 100644
--- a/pkg/analyzer/lib/src/dart/ast/ast.dart
+++ b/pkg/analyzer/lib/src/dart/ast/ast.dart
@@ -12,12 +12,9 @@
import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/type.dart';
-import 'package:analyzer/exception/exception.dart';
import 'package:analyzer/src/dart/ast/to_source_visitor.dart';
import 'package:analyzer/src/dart/ast/token.dart';
import 'package:analyzer/src/fasta/token_utils.dart' as util show findPrevious;
-import 'package:analyzer/src/generated/engine.dart' show AnalysisEngine;
-import 'package:analyzer/src/generated/engine.dart';
import 'package:analyzer/src/generated/java_engine.dart';
import 'package:analyzer/src/generated/source.dart' show LineInfo, Source;
import 'package:analyzer/src/generated/utilities_dart.dart';
@@ -34,7 +31,7 @@
/// [StringLiteral] [StringLiteral]+
class AdjacentStringsImpl extends StringLiteralImpl implements AdjacentStrings {
/// The strings that are implicitly concatenated.
- NodeList<StringLiteral> _strings;
+ late final NodeList<StringLiteral> _strings;
/// Initialize a newly created list of adjacent strings. To be syntactically
/// valid, the list of [strings] must contain at least two elements.
@@ -43,20 +40,20 @@
}
@override
- Token get beginToken => _strings.beginToken;
+ Token get beginToken => _strings.beginToken!;
@override
Iterable<SyntacticEntity> get childEntities =>
ChildEntities()..addAll(_strings);
@override
- Token get endToken => _strings.endToken;
+ Token get endToken => _strings.endToken!;
@override
NodeList<StringLiteral> get strings => _strings;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitAdjacentStrings(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitAdjacentStrings(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -67,7 +64,7 @@
void _appendStringValue(StringBuffer buffer) {
int length = strings.length;
for (int i = 0; i < length; i++) {
- StringLiteralImpl stringLiteral = strings[i];
+ var stringLiteral = strings[i] as StringLiteralImpl;
stringLiteral._appendStringValue(buffer);
}
}
@@ -78,15 +75,15 @@
abstract class AnnotatedNodeImpl extends AstNodeImpl implements AnnotatedNode {
/// The documentation comment associated with this node, or `null` if this
/// node does not have a documentation comment associated with it.
- CommentImpl _comment;
+ CommentImpl? _comment;
/// The annotations associated with this node.
- NodeList<Annotation> _metadata;
+ late final NodeList<Annotation> _metadata;
/// Initialize a newly created annotated node. Either or both of the [comment]
/// and [metadata] can be `null` if the node does not have the corresponding
/// attribute.
- AnnotatedNodeImpl(CommentImpl comment, List<Annotation> metadata) {
+ AnnotatedNodeImpl(CommentImpl? comment, List<Annotation>? metadata) {
_comment = _becomeParentOf(comment);
_metadata = NodeListImpl<Annotation>(this, metadata);
}
@@ -97,12 +94,12 @@
if (_metadata.isEmpty) {
return firstTokenAfterCommentAndMetadata;
}
- return _metadata.beginToken;
+ return _metadata.beginToken!;
} else if (_metadata.isEmpty) {
- return _comment.beginToken;
+ return _comment!.beginToken;
}
- Token commentToken = _comment.beginToken;
- Token metadataToken = _metadata.beginToken;
+ Token commentToken = _comment!.beginToken;
+ Token metadataToken = _metadata.beginToken!;
if (commentToken.offset < metadataToken.offset) {
return commentToken;
}
@@ -110,11 +107,11 @@
}
@override
- Comment get documentationComment => _comment;
+ Comment? get documentationComment => _comment;
@override
- set documentationComment(Comment comment) {
- _comment = _becomeParentOf(comment as CommentImpl);
+ set documentationComment(Comment? comment) {
+ _comment = _becomeParentOf(comment as CommentImpl?);
}
@override
@@ -123,7 +120,7 @@
@override
List<AstNode> get sortedCommentAndAnnotations {
return <AstNode>[]
- ..add(_comment)
+ ..add(_comment!)
..addAll(_metadata)
..sort(AstNode.LEXICAL_ORDER);
}
@@ -163,7 +160,7 @@
return true;
}
Annotation firstAnnotation = _metadata[0];
- return _comment.offset < firstAnnotation.offset;
+ return _comment!.offset < firstAnnotation.offset;
}
}
@@ -181,47 +178,47 @@
/// The name of the class defining the constructor that is being invoked or
/// the name of the field that is being referenced.
- IdentifierImpl _name;
+ late IdentifierImpl _name;
/// The period before the constructor name, or `null` if this annotation is
/// not the invocation of a named constructor.
@override
- Token period;
+ Token? period;
/// The name of the constructor being invoked, or `null` if this annotation is
/// not the invocation of a named constructor.
- SimpleIdentifierImpl _constructorName;
+ SimpleIdentifierImpl? _constructorName;
/// The arguments to the constructor being invoked, or `null` if this
/// annotation is not the invocation of a constructor.
- ArgumentListImpl _arguments;
+ ArgumentListImpl? _arguments;
/// The element associated with this annotation, or `null` if the AST
/// structure has not been resolved or if this annotation could not be
/// resolved.
- Element _element;
+ Element? _element;
/// The element annotation representing this annotation in the element model.
@override
- ElementAnnotation elementAnnotation;
+ ElementAnnotation? elementAnnotation;
/// Initialize a newly created annotation. Both the [period] and the
/// [constructorName] can be `null` if the annotation is not referencing a
/// named constructor. The [arguments] can be `null` if the annotation is not
/// referencing a constructor.
AnnotationImpl(this.atSign, IdentifierImpl name, this.period,
- SimpleIdentifierImpl constructorName, ArgumentListImpl arguments) {
- _name = _becomeParentOf(name);
+ SimpleIdentifierImpl? constructorName, ArgumentListImpl? arguments) {
+ _name = _becomeParentOf(name)!;
_constructorName = _becomeParentOf(constructorName);
_arguments = _becomeParentOf(arguments);
}
@override
- ArgumentList get arguments => _arguments;
+ ArgumentList? get arguments => _arguments;
@override
- set arguments(ArgumentList arguments) {
- _arguments = _becomeParentOf(arguments as ArgumentListImpl);
+ set arguments(ArgumentList? arguments) {
+ _arguments = _becomeParentOf(arguments as ArgumentListImpl?);
}
@override
@@ -236,34 +233,34 @@
..add(_arguments);
@override
- SimpleIdentifier get constructorName => _constructorName;
+ SimpleIdentifier? get constructorName => _constructorName;
@override
- set constructorName(SimpleIdentifier name) {
- _constructorName = _becomeParentOf(name as SimpleIdentifierImpl);
+ set constructorName(SimpleIdentifier? name) {
+ _constructorName = _becomeParentOf(name as SimpleIdentifierImpl?);
}
@override
- Element get element {
+ Element? get element {
if (_element != null) {
- return _element;
- } else if (_constructorName == null && _name != null) {
+ return _element!;
+ } else if (_constructorName == null) {
return _name.staticElement;
}
return null;
}
@override
- set element(Element element) {
+ set element(Element? element) {
_element = element;
}
@override
Token get endToken {
if (_arguments != null) {
- return _arguments.endToken;
+ return _arguments!.endToken;
} else if (_constructorName != null) {
- return _constructorName.endToken;
+ return _constructorName!.endToken;
}
return _name.endToken;
}
@@ -273,15 +270,18 @@
@override
set name(Identifier name) {
- _name = _becomeParentOf(name as IdentifierImpl);
+ _name = _becomeParentOf(name as IdentifierImpl)!;
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitAnnotation(this);
+ AstNode get parent => super.parent!;
+
+ @override
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitAnnotation(this);
@override
void visitChildren(AstVisitor visitor) {
- _name?.accept(visitor);
+ _name.accept(visitor);
_constructorName?.accept(visitor);
_arguments?.accept(visitor);
}
@@ -302,7 +302,7 @@
Token leftParenthesis;
/// The expressions producing the values of the arguments.
- NodeList<Expression> _arguments;
+ late final NodeList<Expression> _arguments;
/// The right parenthesis.
@override
@@ -314,7 +314,7 @@
/// determined based on static type information. The list must be the same
/// length as the number of arguments, but can contain `null` entries if a
/// given argument does not correspond to a formal parameter.
- List<ParameterElement> _correspondingStaticParameters;
+ List<ParameterElement?>? _correspondingStaticParameters;
/// Initialize a newly created list of arguments. The list of [arguments] can
/// be `null` if there are no arguments.
@@ -336,11 +336,11 @@
..addAll(_arguments)
..add(rightParenthesis);
- List<ParameterElement> get correspondingStaticParameters =>
+ List<ParameterElement?>? get correspondingStaticParameters =>
_correspondingStaticParameters;
@override
- set correspondingStaticParameters(List<ParameterElement> parameters) {
+ set correspondingStaticParameters(List<ParameterElement?>? parameters) {
if (parameters != null && parameters.length != _arguments.length) {
throw ArgumentError(
"Expected ${_arguments.length} parameters, not ${parameters.length}");
@@ -352,7 +352,7 @@
Token get endToken => rightParenthesis;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitArgumentList(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitArgumentList(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -368,9 +368,9 @@
/// being invoked,
/// then return the parameter element representing the parameter to which the
/// value of the given expression will be bound. Otherwise, return `null`.
- ParameterElement _getStaticParameterElementFor(Expression expression) {
+ ParameterElement? _getStaticParameterElementFor(Expression expression) {
if (_correspondingStaticParameters == null ||
- _correspondingStaticParameters.length != _arguments.length) {
+ _correspondingStaticParameters!.length != _arguments.length) {
// Either the AST structure has not been resolved, the invocation of which
// this list is a part could not be resolved, or the argument list was
// modified after the parameters were set.
@@ -381,7 +381,7 @@
// The expression isn't a child of this node.
return null;
}
- return _correspondingStaticParameters[index];
+ return _correspondingStaticParameters![index];
}
}
@@ -391,14 +391,14 @@
/// [Expression] 'as' [TypeName]
class AsExpressionImpl extends ExpressionImpl implements AsExpression {
/// The expression used to compute the value being cast.
- ExpressionImpl _expression;
+ late ExpressionImpl _expression;
/// The 'as' operator.
@override
Token asOperator;
/// The type being cast to.
- TypeAnnotationImpl _type;
+ late TypeAnnotationImpl _type;
/// Initialize a newly created as expression.
AsExpressionImpl(
@@ -437,12 +437,12 @@
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitAsExpression(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitAsExpression(this);
@override
void visitChildren(AstVisitor visitor) {
- _expression?.accept(visitor);
- _type?.accept(visitor);
+ _expression.accept(visitor);
+ _type.accept(visitor);
}
}
@@ -459,14 +459,14 @@
Token leftParenthesis;
/// The condition that is being asserted to be `true`.
- ExpressionImpl _condition;
+ late ExpressionImpl _condition;
@override
- Token comma;
+ Token? comma;
/// The message to report if the assertion fails, or `null` if no message was
/// supplied.
- ExpressionImpl _message;
+ ExpressionImpl? _message;
@override
Token rightParenthesis;
@@ -477,7 +477,7 @@
this.leftParenthesis,
ExpressionImpl condition,
this.comma,
- ExpressionImpl message,
+ ExpressionImpl? message,
this.rightParenthesis) {
_condition = _becomeParentOf(condition);
_message = _becomeParentOf(message);
@@ -507,19 +507,19 @@
Token get endToken => rightParenthesis;
@override
- Expression get message => _message;
+ Expression? get message => _message;
@override
- set message(Expression expression) {
- _message = _becomeParentOf(expression as ExpressionImpl);
+ set message(Expression? expression) {
+ _message = _becomeParentOf(expression as ExpressionImpl?);
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitAssertInitializer(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitAssertInitializer(this);
@override
void visitChildren(AstVisitor visitor) {
- _condition?.accept(visitor);
+ _condition.accept(visitor);
message?.accept(visitor);
}
}
@@ -536,14 +536,14 @@
Token leftParenthesis;
/// The condition that is being asserted to be `true`.
- ExpressionImpl _condition;
+ late ExpressionImpl _condition;
@override
- Token comma;
+ Token? comma;
/// The message to report if the assertion fails, or `null` if no message was
/// supplied.
- ExpressionImpl _message;
+ ExpressionImpl? _message;
@override
Token rightParenthesis;
@@ -557,7 +557,7 @@
this.leftParenthesis,
ExpressionImpl condition,
this.comma,
- ExpressionImpl message,
+ ExpressionImpl? message,
this.rightParenthesis,
this.semicolon) {
_condition = _becomeParentOf(condition);
@@ -589,19 +589,19 @@
Token get endToken => semicolon;
@override
- Expression get message => _message;
+ Expression? get message => _message;
@override
- set message(Expression expression) {
+ set message(Expression? expression) {
_message = _becomeParentOf(expression as ExpressionImpl);
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitAssertStatement(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitAssertStatement(this);
@override
void visitChildren(AstVisitor visitor) {
- _condition?.accept(visitor);
+ _condition.accept(visitor);
message?.accept(visitor);
}
}
@@ -614,41 +614,25 @@
with NullShortableExpressionImpl, CompoundAssignmentExpressionImpl
implements AssignmentExpression {
/// The expression used to compute the left hand side.
- ExpressionImpl _leftHandSide;
+ late ExpressionImpl _leftHandSide;
/// The assignment operator being applied.
@override
Token operator;
/// The expression used to compute the right hand side.
- ExpressionImpl _rightHandSide;
+ late ExpressionImpl _rightHandSide;
/// The element associated with the operator based on the static type of the
/// left-hand-side, or `null` if the AST structure has not been resolved, if
/// the operator is not a compound operator, or if the operator could not be
/// resolved.
@override
- MethodElement staticElement;
+ MethodElement? staticElement;
/// Initialize a newly created assignment expression.
AssignmentExpressionImpl(ExpressionImpl leftHandSide, this.operator,
ExpressionImpl rightHandSide) {
- if (leftHandSide == null || rightHandSide == null) {
- String message;
- if (leftHandSide == null) {
- if (rightHandSide == null) {
- message = "Both the left-hand and right-hand sides are null";
- } else {
- message = "The left-hand size is null";
- }
- } else {
- message = "The right-hand size is null";
- }
- // TODO(39284): should this exception be silent?
- AnalysisEngine.instance.instrumentationService.logException(
- SilentException(message, AnalysisException(message), null),
- StackTrace.current);
- }
_leftHandSide = _becomeParentOf(leftHandSide);
_rightHandSide = _becomeParentOf(rightHandSide);
}
@@ -683,14 +667,14 @@
}
@override
- AstNode get _nullShortingExtensionCandidate => parent;
+ AstNode? get _nullShortingExtensionCandidate => parent;
/// If the AST structure has been resolved, and the function being invoked is
/// known based on static type information, then return the parameter element
/// representing the parameter to which the value of the right operand will be
/// bound. Otherwise, return `null`.
- ParameterElement get _staticParameterElementForRightHandSide {
- Element executableElement;
+ ParameterElement? get _staticParameterElementForRightHandSide {
+ Element? executableElement;
if (operator.type != TokenType.EQ) {
executableElement = staticElement;
} else {
@@ -712,12 +696,13 @@
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitAssignmentExpression(this);
+ E? accept<E>(AstVisitor<E> visitor) =>
+ visitor.visitAssignmentExpression(this);
@override
void visitChildren(AstVisitor visitor) {
- _leftHandSide?.accept(visitor);
- _rightHandSide?.accept(visitor);
+ _leftHandSide.accept(visitor);
+ _rightHandSide.accept(visitor);
}
@override
@@ -741,11 +726,11 @@
abstract class AstNodeImpl implements AstNode {
/// The parent of the node, or `null` if the node is the root of an AST
/// structure.
- AstNode _parent;
+ AstNode? _parent;
/// A table mapping the names of properties to their values, or `null` if this
/// node does not have any properties associated with it.
- Map<String, Object> _propertyMap;
+ Map<String, Object>? _propertyMap;
@override
int get end => offset + length;
@@ -757,28 +742,22 @@
int get length {
Token beginToken = this.beginToken;
Token endToken = this.endToken;
- if (beginToken == null || endToken == null) {
- return -1;
- }
return endToken.offset + endToken.length - beginToken.offset;
}
@override
int get offset {
Token beginToken = this.beginToken;
- if (beginToken == null) {
- return -1;
- }
return beginToken.offset;
}
@override
- AstNode get parent => _parent;
+ AstNode? get parent => _parent;
@override
AstNode get root {
AstNode root = this;
- AstNode parent = this.parent;
+ var parent = this.parent;
while (parent != null) {
root = parent;
parent = root.parent;
@@ -787,48 +766,48 @@
}
@override
- Token findPrevious(Token target) =>
+ Token? findPrevious(Token target) =>
util.findPrevious(beginToken, target) ?? parent?.findPrevious(target);
@override
- E getProperty<E>(String name) {
+ E? getProperty<E>(String name) {
if (_propertyMap == null) {
return null;
}
- return _propertyMap[name] as E;
+ return _propertyMap![name] as E?;
}
@override
- void setProperty(String name, Object value) {
+ void setProperty(String name, Object? value) {
if (value == null) {
if (_propertyMap != null) {
- _propertyMap.remove(name);
- if (_propertyMap.isEmpty) {
+ _propertyMap!.remove(name);
+ if (_propertyMap!.isEmpty) {
_propertyMap = null;
}
}
} else {
_propertyMap ??= HashMap<String, Object>();
- _propertyMap[name] = value;
+ _propertyMap![name] = value;
}
}
@override
- E thisOrAncestorMatching<E extends AstNode>(Predicate<AstNode> predicate) {
- AstNode node = this;
+ E? thisOrAncestorMatching<E extends AstNode>(Predicate<AstNode> predicate) {
+ AstNode? node = this;
while (node != null && !predicate(node)) {
node = node.parent;
}
- return node as E;
+ return node as E?;
}
@override
- E thisOrAncestorOfType<E extends AstNode>() {
- AstNode node = this;
+ E? thisOrAncestorOfType<E extends AstNode>() {
+ AstNode? node = this;
while (node != null && node is! E) {
node = node.parent;
}
- return node as E;
+ return node as E?;
}
@override
@@ -843,7 +822,7 @@
/// Make this node the parent of the given [child] node. Return the child
/// node.
- T _becomeParentOf<T extends AstNodeImpl>(T child) {
+ T _becomeParentOf<T extends AstNodeImpl?>(T child) {
if (child != null) {
child._parent = this;
}
@@ -861,7 +840,7 @@
Token awaitKeyword;
/// The expression whose value is being waited on.
- ExpressionImpl _expression;
+ late ExpressionImpl _expression;
/// Initialize a newly created await expression.
AwaitExpressionImpl(this.awaitKeyword, ExpressionImpl expression) {
@@ -870,10 +849,7 @@
@override
Token get beginToken {
- if (awaitKeyword != null) {
- return awaitKeyword;
- }
- return _expression.beginToken;
+ return awaitKeyword;
}
@override
@@ -895,11 +871,11 @@
Precedence get precedence => Precedence.prefix;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitAwaitExpression(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitAwaitExpression(this);
@override
void visitChildren(AstVisitor visitor) {
- _expression?.accept(visitor);
+ _expression.accept(visitor);
}
}
@@ -909,23 +885,23 @@
/// [Expression] [Token] [Expression]
class BinaryExpressionImpl extends ExpressionImpl implements BinaryExpression {
/// The expression used to compute the left operand.
- ExpressionImpl _leftOperand;
+ late ExpressionImpl _leftOperand;
/// The binary operator being applied.
@override
Token operator;
/// The expression used to compute the right operand.
- ExpressionImpl _rightOperand;
+ late ExpressionImpl _rightOperand;
/// The element associated with the operator based on the static type of the
/// left operand, or `null` if the AST structure has not been resolved, if the
/// operator is not user definable, or if the operator could not be resolved.
@override
- MethodElement staticElement;
+ MethodElement? staticElement;
@override
- FunctionType staticInvokeType;
+ FunctionType? staticInvokeType;
/// Initialize a newly created binary expression.
BinaryExpressionImpl(
@@ -964,12 +940,12 @@
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitBinaryExpression(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitBinaryExpression(this);
@override
void visitChildren(AstVisitor visitor) {
- _leftOperand?.accept(visitor);
- _rightOperand?.accept(visitor);
+ _leftOperand.accept(visitor);
+ _rightOperand.accept(visitor);
}
}
@@ -982,15 +958,15 @@
/// The token representing the 'async' or 'sync' keyword, or `null` if there
/// is no such keyword.
@override
- Token keyword;
+ Token? keyword;
/// The star optionally following the 'async' or 'sync' keyword, or `null` if
/// there is wither no such keyword or no star.
@override
- Token star;
+ Token? star;
/// The block representing the body of the function.
- BlockImpl _block;
+ late BlockImpl _block;
/// Initialize a newly created function body consisting of a block of
/// statements. The [keyword] can be `null` if there is no keyword specified
@@ -1003,7 +979,7 @@
@override
Token get beginToken {
if (keyword != null) {
- return keyword;
+ return keyword!;
}
return _block.beginToken;
}
@@ -1024,22 +1000,20 @@
Token get endToken => _block.endToken;
@override
- bool get isAsynchronous =>
- keyword != null && keyword.lexeme == Keyword.ASYNC.lexeme;
+ bool get isAsynchronous => keyword?.lexeme == Keyword.ASYNC.lexeme;
@override
bool get isGenerator => star != null;
@override
- bool get isSynchronous =>
- keyword == null || keyword.lexeme != Keyword.ASYNC.lexeme;
+ bool get isSynchronous => keyword?.lexeme != Keyword.ASYNC.lexeme;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitBlockFunctionBody(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitBlockFunctionBody(this);
@override
void visitChildren(AstVisitor visitor) {
- _block?.accept(visitor);
+ _block.accept(visitor);
}
}
@@ -1053,7 +1027,7 @@
Token leftBracket;
/// The statements contained in the block.
- NodeList<Statement> _statements;
+ late NodeList<Statement> _statements;
/// The right curly bracket.
@override
@@ -1080,7 +1054,7 @@
NodeList<Statement> get statements => _statements;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitBlock(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitBlock(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -1117,7 +1091,7 @@
bool get isSynthetic => literal.isSynthetic;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitBooleanLiteral(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitBooleanLiteral(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -1135,7 +1109,7 @@
Token breakKeyword;
/// The label associated with the statement, or `null` if there is no label.
- SimpleIdentifierImpl _label;
+ SimpleIdentifierImpl? _label;
/// The semicolon terminating the statement.
@override
@@ -1149,12 +1123,12 @@
/// resolved. Note that if the source code has errors, the target might be
/// invalid (e.g. trying to break to a switch case).
@override
- AstNode target;
+ AstNode? target;
/// Initialize a newly created break statement. The [label] can be `null` if
/// there is no label associated with the statement.
BreakStatementImpl(
- this.breakKeyword, SimpleIdentifierImpl label, this.semicolon) {
+ this.breakKeyword, SimpleIdentifierImpl? label, this.semicolon) {
_label = _becomeParentOf(label);
}
@@ -1169,15 +1143,15 @@
Token get endToken => semicolon;
@override
- SimpleIdentifier get label => _label;
+ SimpleIdentifier? get label => _label;
@override
- set label(SimpleIdentifier identifier) {
- _label = _becomeParentOf(identifier as SimpleIdentifierImpl);
+ set label(SimpleIdentifier? identifier) {
+ _label = _becomeParentOf(identifier as SimpleIdentifierImpl?);
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitBreakStatement(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitBreakStatement(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -1203,10 +1177,10 @@
with NullShortableExpressionImpl
implements CascadeExpression {
/// The target of the cascade sections.
- ExpressionImpl _target;
+ late ExpressionImpl _target;
/// The cascade sections sharing the common target.
- NodeList<Expression> _cascadeSections;
+ late NodeList<Expression> _cascadeSections;
/// Initialize a newly created cascade expression. The list of
/// [cascadeSections] must contain at least one element.
@@ -1228,11 +1202,11 @@
..addAll(_cascadeSections);
@override
- Token get endToken => _cascadeSections.endToken;
+ Token get endToken => _cascadeSections.endToken!;
@override
bool get isNullAware {
- return target.endToken.next.type == TokenType.QUESTION_PERIOD_PERIOD;
+ return target.endToken.next!.type == TokenType.QUESTION_PERIOD_PERIOD;
}
@override
@@ -1247,14 +1221,14 @@
}
@override
- AstNode get _nullShortingExtensionCandidate => null;
+ AstNode? get _nullShortingExtensionCandidate => null;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitCascadeExpression(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitCascadeExpression(this);
@override
void visitChildren(AstVisitor visitor) {
- _target?.accept(visitor);
+ _target.accept(visitor);
_cascadeSections.accept(visitor);
}
@@ -1276,40 +1250,40 @@
/// The token representing the 'on' keyword, or `null` if there is no 'on'
/// keyword.
@override
- Token onKeyword;
+ Token? onKeyword;
/// The type of exceptions caught by this catch clause, or `null` if this
/// catch clause catches every type of exception.
- TypeAnnotationImpl _exceptionType;
+ TypeAnnotationImpl? _exceptionType;
/// The token representing the 'catch' keyword, or `null` if there is no
/// 'catch' keyword.
@override
- Token catchKeyword;
+ Token? catchKeyword;
/// The left parenthesis, or `null` if there is no 'catch' keyword.
@override
- Token leftParenthesis;
+ Token? leftParenthesis;
/// The parameter whose value will be the exception that was thrown, or `null`
/// if there is no 'catch' keyword.
- SimpleIdentifierImpl _exceptionParameter;
+ SimpleIdentifierImpl? _exceptionParameter;
/// The comma separating the exception parameter from the stack trace
/// parameter, or `null` if there is no stack trace parameter.
@override
- Token comma;
+ Token? comma;
/// The parameter whose value will be the stack trace associated with the
/// exception, or `null` if there is no stack trace parameter.
- SimpleIdentifierImpl _stackTraceParameter;
+ SimpleIdentifierImpl? _stackTraceParameter;
/// The right parenthesis, or `null` if there is no 'catch' keyword.
@override
- Token rightParenthesis;
+ Token? rightParenthesis;
/// The body of the catch block.
- BlockImpl _body;
+ late BlockImpl _body;
/// Initialize a newly created catch clause. The [onKeyword] and
/// [exceptionType] can be `null` if the clause will catch all exceptions. The
@@ -1317,14 +1291,15 @@
/// parameter is not defined.
CatchClauseImpl(
this.onKeyword,
- TypeAnnotationImpl exceptionType,
+ TypeAnnotationImpl? exceptionType,
this.catchKeyword,
this.leftParenthesis,
- SimpleIdentifierImpl exceptionParameter,
+ SimpleIdentifierImpl? exceptionParameter,
this.comma,
- SimpleIdentifierImpl stackTraceParameter,
+ SimpleIdentifierImpl? stackTraceParameter,
this.rightParenthesis,
- BlockImpl body) {
+ BlockImpl body)
+ : assert(onKeyword != null || catchKeyword != null) {
_exceptionType = _becomeParentOf(exceptionType);
_exceptionParameter = _becomeParentOf(exceptionParameter);
_stackTraceParameter = _becomeParentOf(stackTraceParameter);
@@ -1334,9 +1309,9 @@
@override
Token get beginToken {
if (onKeyword != null) {
- return onKeyword;
+ return onKeyword!;
}
- return catchKeyword;
+ return catchKeyword!;
}
@override
@@ -1363,38 +1338,38 @@
Token get endToken => _body.endToken;
@override
- SimpleIdentifier get exceptionParameter => _exceptionParameter;
+ SimpleIdentifier? get exceptionParameter => _exceptionParameter;
@override
- set exceptionParameter(SimpleIdentifier parameter) {
- _exceptionParameter = _becomeParentOf(parameter as SimpleIdentifierImpl);
+ set exceptionParameter(SimpleIdentifier? parameter) {
+ _exceptionParameter = _becomeParentOf(parameter as SimpleIdentifierImpl?);
}
@override
- TypeAnnotation get exceptionType => _exceptionType;
+ TypeAnnotation? get exceptionType => _exceptionType;
@override
- set exceptionType(TypeAnnotation exceptionType) {
- _exceptionType = _becomeParentOf(exceptionType as TypeAnnotationImpl);
+ set exceptionType(TypeAnnotation? exceptionType) {
+ _exceptionType = _becomeParentOf(exceptionType as TypeAnnotationImpl?);
}
@override
- SimpleIdentifier get stackTraceParameter => _stackTraceParameter;
+ SimpleIdentifier? get stackTraceParameter => _stackTraceParameter;
@override
- set stackTraceParameter(SimpleIdentifier parameter) {
- _stackTraceParameter = _becomeParentOf(parameter as SimpleIdentifierImpl);
+ set stackTraceParameter(SimpleIdentifier? parameter) {
+ _stackTraceParameter = _becomeParentOf(parameter as SimpleIdentifierImpl?);
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitCatchClause(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitCatchClause(this);
@override
void visitChildren(AstVisitor visitor) {
_exceptionType?.accept(visitor);
_exceptionParameter?.accept(visitor);
_stackTraceParameter?.accept(visitor);
- _body?.accept(visitor);
+ _body.accept(visitor);
}
}
@@ -1409,14 +1384,14 @@
Iterator<SyntacticEntity> get iterator => _entities.iterator;
/// Add an AST node or token as the next child entity, if it is not `null`.
- void add(SyntacticEntity entity) {
+ void add(SyntacticEntity? entity) {
if (entity != null) {
_entities.add(entity);
}
}
/// Add the given items as the next child entities, if [items] is not `null`.
- void addAll(Iterable<SyntacticEntity> items) {
+ void addAll(Iterable<SyntacticEntity>? items) {
if (items != null) {
_entities.addAll(items);
}
@@ -1435,7 +1410,7 @@
implements ClassDeclaration {
/// The 'abstract' keyword, or `null` if the keyword was absent.
@override
- Token abstractKeyword;
+ Token? abstractKeyword;
/// The token representing the 'class' keyword.
@override
@@ -1443,15 +1418,15 @@
/// The extends clause for the class, or `null` if the class does not extend
/// any other class.
- ExtendsClauseImpl _extendsClause;
+ ExtendsClauseImpl? _extendsClause;
/// The with clause for the class, or `null` if the class does not have a with
/// clause.
- WithClauseImpl _withClause;
+ WithClauseImpl? _withClause;
/// The native clause for the class, or `null` if the class does not have a
/// native clause.
- NativeClauseImpl _nativeClause;
+ NativeClauseImpl? _nativeClause;
/// Initialize a newly created class declaration. Either or both of the
/// [comment] and [metadata] can be `null` if the class does not have the
@@ -1462,15 +1437,15 @@
/// corresponding clause. The list of [members] can be `null` if the class
/// does not have any members.
ClassDeclarationImpl(
- CommentImpl comment,
- List<Annotation> metadata,
+ CommentImpl? comment,
+ List<Annotation>? metadata,
this.abstractKeyword,
this.classKeyword,
SimpleIdentifierImpl name,
- TypeParameterListImpl typeParameters,
- ExtendsClauseImpl extendsClause,
- WithClauseImpl withClause,
- ImplementsClauseImpl implementsClause,
+ TypeParameterListImpl? typeParameters,
+ ExtendsClauseImpl? extendsClause,
+ WithClauseImpl? withClause,
+ ImplementsClauseImpl? implementsClause,
Token leftBracket,
List<ClassMember> members,
Token rightBracket)
@@ -1495,20 +1470,20 @@
..add(rightBracket);
@override
- ClassElement get declaredElement => _name?.staticElement as ClassElement;
+ ClassElement? get declaredElement => _name.staticElement as ClassElement?;
@override
- ExtendsClause get extendsClause => _extendsClause;
+ ExtendsClause? get extendsClause => _extendsClause;
@override
- set extendsClause(ExtendsClause extendsClause) {
- _extendsClause = _becomeParentOf(extendsClause as ExtendsClauseImpl);
+ set extendsClause(ExtendsClause? extendsClause) {
+ _extendsClause = _becomeParentOf(extendsClause as ExtendsClauseImpl?);
}
@override
Token get firstTokenAfterCommentAndMetadata {
if (abstractKeyword != null) {
- return abstractKeyword;
+ return abstractKeyword!;
}
return classKeyword;
}
@@ -1517,32 +1492,32 @@
bool get isAbstract => abstractKeyword != null;
@override
- NativeClause get nativeClause => _nativeClause;
+ NativeClause? get nativeClause => _nativeClause;
@override
- set nativeClause(NativeClause nativeClause) {
- _nativeClause = _becomeParentOf(nativeClause as NativeClauseImpl);
+ set nativeClause(NativeClause? nativeClause) {
+ _nativeClause = _becomeParentOf(nativeClause as NativeClauseImpl?);
}
@override
- WithClause get withClause => _withClause;
+ WithClause? get withClause => _withClause;
@override
- set withClause(WithClause withClause) {
- _withClause = _becomeParentOf(withClause as WithClauseImpl);
+ set withClause(WithClause? withClause) {
+ _withClause = _becomeParentOf(withClause as WithClauseImpl?);
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitClassDeclaration(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitClassDeclaration(this);
@override
- ConstructorDeclaration getConstructor(String name) {
+ ConstructorDeclaration? getConstructor(String? name) {
int length = _members.length;
for (int i = 0; i < length; i++) {
ClassMember classMember = _members[i];
if (classMember is ConstructorDeclaration) {
ConstructorDeclaration constructor = classMember;
- SimpleIdentifier constructorName = constructor.name;
+ SimpleIdentifier? constructorName = constructor.name;
if (name == null && constructorName == null) {
return constructor;
}
@@ -1557,7 +1532,7 @@
@override
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
- _name?.accept(visitor);
+ _name.accept(visitor);
_typeParameters?.accept(visitor);
_extendsClause?.accept(visitor);
_withClause?.accept(visitor);
@@ -1572,7 +1547,7 @@
/// Initialize a newly created member of a class. Either or both of the
/// [comment] and [metadata] can be `null` if the member does not have the
/// corresponding attribute.
- ClassMemberImpl(CommentImpl comment, List<Annotation> metadata)
+ ClassMemberImpl(CommentImpl? comment, List<Annotation>? metadata)
: super(comment, metadata);
}
@@ -1580,29 +1555,29 @@
extends NamedCompilationUnitMemberImpl implements ClassOrMixinDeclaration {
/// The type parameters for the class or mixin,
/// or `null` if the declaration does not have any type parameters.
- TypeParameterListImpl _typeParameters;
+ TypeParameterListImpl? _typeParameters;
/// The implements clause for the class or mixin,
/// or `null` if the declaration does not implement any interfaces.
- ImplementsClauseImpl _implementsClause;
+ ImplementsClauseImpl? _implementsClause;
/// The left curly bracket.
@override
Token leftBracket;
/// The members defined by the class or mixin.
- NodeList<ClassMember> _members;
+ late NodeList<ClassMember> _members;
/// The right curly bracket.
@override
Token rightBracket;
ClassOrMixinDeclarationImpl(
- CommentImpl comment,
- List<Annotation> metadata,
+ CommentImpl? comment,
+ List<Annotation>? metadata,
SimpleIdentifierImpl name,
- TypeParameterListImpl typeParameters,
- ImplementsClauseImpl implementsClause,
+ TypeParameterListImpl? typeParameters,
+ ImplementsClauseImpl? implementsClause,
this.leftBracket,
List<ClassMember> members,
this.rightBracket)
@@ -1616,25 +1591,25 @@
Token get endToken => rightBracket;
@override
- ImplementsClause get implementsClause => _implementsClause;
+ ImplementsClause? get implementsClause => _implementsClause;
- set implementsClause(ImplementsClause implementsClause) {
+ set implementsClause(ImplementsClause? implementsClause) {
_implementsClause =
- _becomeParentOf(implementsClause as ImplementsClauseImpl);
+ _becomeParentOf(implementsClause as ImplementsClauseImpl?);
}
@override
NodeList<ClassMember> get members => _members;
@override
- TypeParameterList get typeParameters => _typeParameters;
+ TypeParameterList? get typeParameters => _typeParameters;
- set typeParameters(TypeParameterList typeParameters) {
- _typeParameters = _becomeParentOf(typeParameters as TypeParameterListImpl);
+ set typeParameters(TypeParameterList? typeParameters) {
+ _typeParameters = _becomeParentOf(typeParameters as TypeParameterListImpl?);
}
@override
- VariableDeclaration getField(String name) {
+ VariableDeclaration? getField(String name) {
int memberLength = _members.length;
for (int i = 0; i < memberLength; i++) {
ClassMember classMember = _members[i];
@@ -1645,8 +1620,7 @@
int fieldLength = fields.length;
for (int i = 0; i < fieldLength; i++) {
VariableDeclaration field = fields[i];
- SimpleIdentifier fieldName = field.name;
- if (fieldName != null && name == fieldName.name) {
+ if (name == field.name.name) {
return field;
}
}
@@ -1656,14 +1630,13 @@
}
@override
- MethodDeclaration getMethod(String name) {
+ MethodDeclaration? getMethod(String name) {
int length = _members.length;
for (int i = 0; i < length; i++) {
ClassMember classMember = _members[i];
if (classMember is MethodDeclaration) {
MethodDeclaration method = classMember;
- SimpleIdentifier methodName = method.name;
- if (methodName != null && name == methodName.name) {
+ if (name == method.name.name) {
return method;
}
}
@@ -1685,7 +1658,7 @@
implements ClassTypeAlias {
/// The type parameters for the class, or `null` if the class does not have
/// any type parameters.
- TypeParameterListImpl _typeParameters;
+ TypeParameterListImpl? _typeParameters;
/// The token for the '=' separating the name from the definition.
@override
@@ -1694,17 +1667,17 @@
/// The token for the 'abstract' keyword, or `null` if this is not defining an
/// abstract class.
@override
- Token abstractKeyword;
+ Token? abstractKeyword;
/// The name of the superclass of the class being declared.
- TypeNameImpl _superclass;
+ late TypeNameImpl _superclass;
/// The with clause for this class.
- WithClauseImpl _withClause;
+ late WithClauseImpl _withClause;
/// The implements clause for this class, or `null` if there is no implements
/// clause.
- ImplementsClauseImpl _implementsClause;
+ ImplementsClauseImpl? _implementsClause;
/// Initialize a newly created class type alias. Either or both of the
/// [comment] and [metadata] can be `null` if the class type alias does not
@@ -1713,16 +1686,16 @@
/// `null` if the class is not abstract. The [implementsClause] can be `null`
/// if the class does not implement any interfaces.
ClassTypeAliasImpl(
- CommentImpl comment,
- List<Annotation> metadata,
+ CommentImpl? comment,
+ List<Annotation>? metadata,
Token keyword,
SimpleIdentifierImpl name,
- TypeParameterListImpl typeParameters,
+ TypeParameterListImpl? typeParameters,
this.equals,
this.abstractKeyword,
TypeNameImpl superclass,
WithClauseImpl withClause,
- ImplementsClauseImpl implementsClause,
+ ImplementsClauseImpl? implementsClause,
Token semicolon)
: super(comment, metadata, keyword, name, semicolon) {
_typeParameters = _becomeParentOf(typeParameters);
@@ -1744,23 +1717,23 @@
..add(semicolon);
@override
- ClassElement get declaredElement => _name?.staticElement as ClassElement;
+ ClassElement? get declaredElement => _name.staticElement as ClassElement?;
@override
Token get firstTokenAfterCommentAndMetadata {
if (abstractKeyword != null) {
- return abstractKeyword;
+ return abstractKeyword!;
}
return typedefKeyword;
}
@override
- ImplementsClause get implementsClause => _implementsClause;
+ ImplementsClause? get implementsClause => _implementsClause;
@override
- set implementsClause(ImplementsClause implementsClause) {
+ set implementsClause(ImplementsClause? implementsClause) {
_implementsClause =
- _becomeParentOf(implementsClause as ImplementsClauseImpl);
+ _becomeParentOf(implementsClause as ImplementsClauseImpl?);
}
@override
@@ -1775,10 +1748,10 @@
}
@override
- TypeParameterList get typeParameters => _typeParameters;
+ TypeParameterList? get typeParameters => _typeParameters;
@override
- set typeParameters(TypeParameterList typeParameters) {
+ set typeParameters(TypeParameterList? typeParameters) {
_typeParameters = _becomeParentOf(typeParameters as TypeParameterListImpl);
}
@@ -1791,15 +1764,15 @@
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitClassTypeAlias(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitClassTypeAlias(this);
@override
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
- _name?.accept(visitor);
+ _name.accept(visitor);
_typeParameters?.accept(visitor);
- _superclass?.accept(visitor);
- _withClause?.accept(visitor);
+ _superclass.accept(visitor);
+ _withClause.accept(visitor);
_implementsClause?.accept(visitor);
}
}
@@ -1852,7 +1825,7 @@
/// The references embedded within the documentation comment. This list will
/// be empty unless this is a documentation comment that has references embedded
/// within it.
- NodeList<CommentReference> _references;
+ late NodeList<CommentReference> _references;
/// Initialize a newly created comment. The list of [tokens] must contain at
/// least one token. The [_type] is the type of the comment. The list of
@@ -1885,7 +1858,7 @@
NodeList<CommentReference> get references => _references;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitComment(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitComment(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -1894,11 +1867,11 @@
/// Create a block comment consisting of the given [tokens].
static Comment createBlockComment(List<Token> tokens) =>
- CommentImpl(tokens, CommentType.BLOCK, null);
+ CommentImpl(tokens, CommentType.BLOCK, const <CommentReference>[]);
/// Create a documentation comment consisting of the given [tokens].
- static Comment createDocumentationComment(List<Token> tokens) =>
- CommentImpl(tokens, CommentType.DOCUMENTATION, <CommentReference>[]);
+ static Comment createDocumentationComment(List<Token> tokens) => CommentImpl(
+ tokens, CommentType.DOCUMENTATION, const <CommentReference>[]);
/// Create a documentation comment consisting of the given [tokens] and having
/// the given [references] embedded within it.
@@ -1908,7 +1881,7 @@
/// Create an end-of-line comment consisting of the given [tokens].
static Comment createEndOfLineComment(List<Token> tokens) =>
- CommentImpl(tokens, CommentType.END_OF_LINE, null);
+ CommentImpl(tokens, CommentType.END_OF_LINE, const <CommentReference>[]);
}
/// A reference to a Dart element that is found within a documentation comment.
@@ -1919,10 +1892,10 @@
/// The token representing the 'new' keyword, or `null` if there was no 'new'
/// keyword.
@override
- Token newKeyword;
+ Token? newKeyword;
/// The identifier being referenced.
- IdentifierImpl _identifier;
+ late IdentifierImpl _identifier;
/// Initialize a newly created reference to a Dart element. The [newKeyword]
/// can be `null` if the reference is not to a constructor.
@@ -1949,11 +1922,11 @@
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitCommentReference(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitCommentReference(this);
@override
void visitChildren(AstVisitor visitor) {
- _identifier?.accept(visitor);
+ _identifier.accept(visitor);
}
}
@@ -2007,13 +1980,13 @@
/// The script tag at the beginning of the compilation unit, or `null` if
/// there is no script tag in this compilation unit.
- ScriptTagImpl _scriptTag;
+ ScriptTagImpl? _scriptTag;
/// The directives contained in this compilation unit.
- NodeList<Directive> _directives;
+ late NodeList<Directive> _directives;
/// The declarations contained in this compilation unit.
- NodeList<CompilationUnitMember> _declarations;
+ late NodeList<CompilationUnitMember> _declarations;
/// The last token in the token stream that was parsed to form this
/// compilation unit. This token should always have a type of [TokenType.EOF].
@@ -2023,14 +1996,14 @@
/// The element associated with this compilation unit, or `null` if the AST
/// structure has not been resolved.
@override
- CompilationUnitElement declaredElement;
+ CompilationUnitElement? declaredElement;
/// The line information for this compilation unit.
@override
- LineInfo lineInfo;
+ LineInfo? lineInfo;
/// The language version information.
- LibraryLanguageVersion languageVersion;
+ LibraryLanguageVersion? languageVersion;
@override
final FeatureSet featureSet;
@@ -2038,7 +2011,7 @@
/// Data that is read during loading this node from summary, but is not
/// fully applied yet. For example in many cases we don't need the
/// documentation comment, and it is expensive to decode strings.
- Object summaryData;
+ Object? summaryData;
/// Initialize a newly created compilation unit to have the given directives
/// and declarations. The [scriptTag] can be `null` if there is no script tag
@@ -2047,9 +2020,9 @@
/// be `null` if there are no declarations in the compilation unit.
CompilationUnitImpl(
this.beginToken,
- ScriptTagImpl scriptTag,
- List<Directive> directives,
- List<CompilationUnitMember> declarations,
+ ScriptTagImpl? scriptTag,
+ List<Directive>? directives,
+ List<CompilationUnitMember>? declarations,
this.endToken,
this.featureSet) {
_scriptTag = _becomeParentOf(scriptTag);
@@ -2075,13 +2048,13 @@
NodeList<Directive> get directives => _directives;
@override
- set element(CompilationUnitElement element) {
+ set element(CompilationUnitElement? element) {
declaredElement = element;
}
@override
- LanguageVersionToken get languageVersionToken {
- CommentToken comment = beginToken.precedingComments;
+ LanguageVersionToken? get languageVersionToken {
+ Token? comment = beginToken.precedingComments;
while (comment != null) {
if (comment is LanguageVersionToken) {
return comment;
@@ -2094,9 +2067,6 @@
@override
int get length {
Token endToken = this.endToken;
- if (endToken == null) {
- return 0;
- }
return endToken.offset + endToken.length;
}
@@ -2104,11 +2074,11 @@
int get offset => 0;
@override
- ScriptTag get scriptTag => _scriptTag;
+ ScriptTag? get scriptTag => _scriptTag;
@override
- set scriptTag(ScriptTag scriptTag) {
- _scriptTag = _becomeParentOf(scriptTag as ScriptTagImpl);
+ set scriptTag(ScriptTag? scriptTag) {
+ _scriptTag = _becomeParentOf(scriptTag as ScriptTagImpl?);
}
@override
@@ -2131,7 +2101,7 @@
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitCompilationUnit(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitCompilationUnit(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -2166,22 +2136,22 @@
/// Initialize a newly created generic compilation unit member. Either or both
/// of the [comment] and [metadata] can be `null` if the member does not have
/// the corresponding attribute.
- CompilationUnitMemberImpl(CommentImpl comment, List<Annotation> metadata)
+ CompilationUnitMemberImpl(CommentImpl? comment, List<Annotation>? metadata)
: super(comment, metadata);
}
mixin CompoundAssignmentExpressionImpl implements CompoundAssignmentExpression {
@override
- Element readElement;
+ Element? readElement;
@override
- Element writeElement;
+ Element? writeElement;
@override
- DartType readType;
+ DartType? readType;
@override
- DartType writeType;
+ DartType? writeType;
}
/// A conditional expression.
@@ -2191,21 +2161,21 @@
class ConditionalExpressionImpl extends ExpressionImpl
implements ConditionalExpression {
/// The condition used to determine which of the expressions is executed next.
- ExpressionImpl _condition;
+ late ExpressionImpl _condition;
/// The token used to separate the condition from the then expression.
@override
Token question;
/// The expression that is executed if the condition evaluates to `true`.
- ExpressionImpl _thenExpression;
+ late ExpressionImpl _thenExpression;
/// The token used to separate the then expression from the else expression.
@override
Token colon;
/// The expression that is executed if the condition evaluates to `false`.
- ExpressionImpl _elseExpression;
+ late ExpressionImpl _elseExpression;
/// Initialize a newly created conditional expression.
ConditionalExpressionImpl(
@@ -2261,14 +2231,14 @@
}
@override
- E accept<E>(AstVisitor<E> visitor) =>
+ E? accept<E>(AstVisitor<E> visitor) =>
visitor.visitConditionalExpression(this);
@override
void visitChildren(AstVisitor visitor) {
- _condition?.accept(visitor);
- _thenExpression?.accept(visitor);
- _elseExpression?.accept(visitor);
+ _condition.accept(visitor);
+ _thenExpression.accept(visitor);
+ _elseExpression.accept(visitor);
}
}
@@ -2289,27 +2259,27 @@
@override
Token leftParenthesis;
- DottedNameImpl _name;
+ late DottedNameImpl _name;
@override
- Token equalToken;
+ Token? equalToken;
- StringLiteralImpl _value;
+ StringLiteralImpl? _value;
@override
Token rightParenthesis;
- StringLiteralImpl _uri;
+ late StringLiteralImpl _uri;
@override
- Source uriSource;
+ Source? uriSource;
ConfigurationImpl(
this.ifKeyword,
this.leftParenthesis,
DottedNameImpl name,
this.equalToken,
- StringLiteralImpl value,
+ StringLiteralImpl? value,
this.rightParenthesis,
StringLiteralImpl libraryUri) {
_name = _becomeParentOf(name);
@@ -2350,21 +2320,21 @@
}
@override
- StringLiteral get value => _value;
+ StringLiteral? get value => _value;
@override
- set value(StringLiteral value) {
+ set value(StringLiteral? value) {
_value = _becomeParentOf(value as StringLiteralImpl);
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitConfiguration(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitConfiguration(this);
@override
void visitChildren(AstVisitor visitor) {
- _name?.accept(visitor);
+ _name.accept(visitor);
_value?.accept(visitor);
- _uri?.accept(visitor);
+ _uri.accept(visitor);
}
}
@@ -2396,56 +2366,56 @@
/// The token for the 'external' keyword, or `null` if the constructor is not
/// external.
@override
- Token externalKeyword;
+ Token? externalKeyword;
/// The token for the 'const' keyword, or `null` if the constructor is not a
/// const constructor.
@override
- Token constKeyword;
+ Token? constKeyword;
/// The token for the 'factory' keyword, or `null` if the constructor is not a
/// factory constructor.
@override
- Token factoryKeyword;
+ Token? factoryKeyword;
/// The type of object being created. This can be different than the type in
/// which the constructor is being declared if the constructor is the
/// implementation of a factory constructor.
- IdentifierImpl _returnType;
+ late IdentifierImpl _returnType;
/// The token for the period before the constructor name, or `null` if the
/// constructor being declared is unnamed.
@override
- Token period;
+ Token? period;
/// The name of the constructor, or `null` if the constructor being declared
/// is unnamed.
- SimpleIdentifierImpl _name;
+ SimpleIdentifierImpl? _name;
/// The parameters associated with the constructor.
- FormalParameterListImpl _parameters;
+ late FormalParameterListImpl _parameters;
/// The token for the separator (colon or equals) before the initializer list
/// or redirection, or `null` if there are no initializers.
@override
- Token separator;
+ Token? separator;
/// The initializers associated with the constructor.
- NodeList<ConstructorInitializer> _initializers;
+ late NodeList<ConstructorInitializer> _initializers;
/// The name of the constructor to which this constructor will be redirected,
/// or `null` if this is not a redirecting factory constructor.
- ConstructorNameImpl _redirectedConstructor;
+ ConstructorNameImpl? _redirectedConstructor;
/// The body of the constructor, or `null` if the constructor does not have a
/// body.
- FunctionBodyImpl _body;
+ FunctionBodyImpl? _body;
/// The element associated with this constructor, or `null` if the AST
/// structure has not been resolved or if this constructor could not be
/// resolved.
@override
- ConstructorElement declaredElement;
+ ConstructorElement? declaredElement;
/// Initialize a newly created constructor declaration. The [externalKeyword]
/// can be `null` if the constructor is not external. Either or both of the
@@ -2461,19 +2431,19 @@
/// does not redirect to a different constructor. The [body] can be `null` if
/// the constructor does not have a body.
ConstructorDeclarationImpl(
- CommentImpl comment,
- List<Annotation> metadata,
+ CommentImpl? comment,
+ List<Annotation>? metadata,
this.externalKeyword,
this.constKeyword,
this.factoryKeyword,
IdentifierImpl returnType,
this.period,
- SimpleIdentifierImpl name,
+ SimpleIdentifierImpl? name,
FormalParameterListImpl parameters,
this.separator,
- List<ConstructorInitializer> initializers,
- ConstructorNameImpl redirectedConstructor,
- FunctionBodyImpl body)
+ List<ConstructorInitializer>? initializers,
+ ConstructorNameImpl? redirectedConstructor,
+ FunctionBodyImpl? body)
: super(comment, metadata) {
_returnType = _becomeParentOf(returnType);
_name = _becomeParentOf(name);
@@ -2484,11 +2454,11 @@
}
@override
- FunctionBody get body => _body;
+ FunctionBody? get body => _body;
@override
- set body(FunctionBody functionBody) {
- _body = _becomeParentOf(functionBody as FunctionBodyImpl);
+ set body(FunctionBody? functionBody) {
+ _body = _becomeParentOf(functionBody as FunctionBodyImpl?);
}
@override
@@ -2508,16 +2478,16 @@
@override
Token get endToken {
if (_body != null) {
- return _body.endToken;
+ return _body!.endToken;
} else if (_initializers.isNotEmpty) {
- return _initializers.endToken;
+ return _initializers.endToken!;
}
return _parameters.endToken;
}
@override
Token get firstTokenAfterCommentAndMetadata {
- Token leftMost =
+ Token? leftMost =
Token.lexicallyFirst([externalKeyword, constKeyword, factoryKeyword]);
if (leftMost != null) {
return leftMost;
@@ -2529,11 +2499,11 @@
NodeList<ConstructorInitializer> get initializers => _initializers;
@override
- SimpleIdentifier get name => _name;
+ SimpleIdentifier? get name => _name;
@override
- set name(SimpleIdentifier identifier) {
- _name = _becomeParentOf(identifier as SimpleIdentifierImpl);
+ set name(SimpleIdentifier? identifier) {
+ _name = _becomeParentOf(identifier as SimpleIdentifierImpl?);
}
@override
@@ -2545,10 +2515,10 @@
}
@override
- ConstructorName get redirectedConstructor => _redirectedConstructor;
+ ConstructorName? get redirectedConstructor => _redirectedConstructor;
@override
- set redirectedConstructor(ConstructorName redirectedConstructor) {
+ set redirectedConstructor(ConstructorName? redirectedConstructor) {
_redirectedConstructor =
_becomeParentOf(redirectedConstructor as ConstructorNameImpl);
}
@@ -2562,15 +2532,15 @@
}
@override
- E accept<E>(AstVisitor<E> visitor) =>
+ E? accept<E>(AstVisitor<E> visitor) =>
visitor.visitConstructorDeclaration(this);
@override
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
- _returnType?.accept(visitor);
+ _returnType.accept(visitor);
_name?.accept(visitor);
- _parameters?.accept(visitor);
+ _parameters.accept(visitor);
_initializers.accept(visitor);
_redirectedConstructor?.accept(visitor);
_body?.accept(visitor);
@@ -2585,22 +2555,22 @@
implements ConstructorFieldInitializer {
/// The token for the 'this' keyword, or `null` if there is no 'this' keyword.
@override
- Token thisKeyword;
+ Token? thisKeyword;
/// The token for the period after the 'this' keyword, or `null` if there is
- /// no'this' keyword.
+ /// no 'this' keyword.
@override
- Token period;
+ Token? period;
/// The name of the field being initialized.
- SimpleIdentifierImpl _fieldName;
+ late SimpleIdentifierImpl _fieldName;
/// The token for the equal sign between the field name and the expression.
@override
Token equals;
/// The expression computing the value to which the field will be initialized.
- ExpressionImpl _expression;
+ late ExpressionImpl _expression;
/// Initialize a newly created field initializer to initialize the field with
/// the given name to the value of the given expression. The [thisKeyword] and
@@ -2614,7 +2584,7 @@
@override
Token get beginToken {
if (thisKeyword != null) {
- return thisKeyword;
+ return thisKeyword!;
}
return _fieldName.beginToken;
}
@@ -2647,13 +2617,13 @@
}
@override
- E accept<E>(AstVisitor<E> visitor) =>
+ E? accept<E>(AstVisitor<E> visitor) =>
visitor.visitConstructorFieldInitializer(this);
@override
void visitChildren(AstVisitor visitor) {
- _fieldName?.accept(visitor);
- _expression?.accept(visitor);
+ _fieldName.accept(visitor);
+ _expression.accept(visitor);
}
}
@@ -2672,27 +2642,27 @@
/// type ('.' identifier)?
class ConstructorNameImpl extends AstNodeImpl implements ConstructorName {
/// The name of the type defining the constructor.
- TypeNameImpl _type;
+ late TypeNameImpl _type;
/// The token for the period before the constructor name, or `null` if the
/// specified constructor is the unnamed constructor.
@override
- Token period;
+ Token? period;
/// The name of the constructor, or `null` if the specified constructor is the
/// unnamed constructor.
- SimpleIdentifierImpl _name;
+ SimpleIdentifierImpl? _name;
/// The element associated with this constructor name based on static type
/// information, or `null` if the AST structure has not been resolved or if
/// this constructor name could not be resolved.
@override
- ConstructorElement staticElement;
+ ConstructorElement? staticElement;
/// Initialize a newly created constructor name. The [period] and [name] can
/// be`null` if the constructor being named is the unnamed constructor.
ConstructorNameImpl(
- TypeNameImpl type, this.period, SimpleIdentifierImpl name) {
+ TypeNameImpl type, this.period, SimpleIdentifierImpl? name) {
_type = _becomeParentOf(type);
_name = _becomeParentOf(name);
}
@@ -2707,17 +2677,17 @@
@override
Token get endToken {
if (_name != null) {
- return _name.endToken;
+ return _name!.endToken;
}
return _type.endToken;
}
@override
- SimpleIdentifier get name => _name;
+ SimpleIdentifier? get name => _name;
@override
- set name(SimpleIdentifier name) {
- _name = _becomeParentOf(name as SimpleIdentifierImpl);
+ set name(SimpleIdentifier? name) {
+ _name = _becomeParentOf(name as SimpleIdentifierImpl?);
}
@override
@@ -2729,11 +2699,11 @@
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitConstructorName(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitConstructorName(this);
@override
void visitChildren(AstVisitor visitor) {
- _type?.accept(visitor);
+ _type.accept(visitor);
_name?.accept(visitor);
}
}
@@ -2748,7 +2718,7 @@
Token continueKeyword;
/// The label associated with the statement, or `null` if there is no label.
- SimpleIdentifierImpl _label;
+ SimpleIdentifierImpl? _label;
/// The semicolon terminating the statement.
@override
@@ -2761,12 +2731,12 @@
/// Note that if the source code has errors, the target may be invalid (e.g.
/// the target may be in an enclosing function).
@override
- AstNode target;
+ AstNode? target;
/// Initialize a newly created continue statement. The [label] can be `null`
/// if there is no label associated with the statement.
ContinueStatementImpl(
- this.continueKeyword, SimpleIdentifierImpl label, this.semicolon) {
+ this.continueKeyword, SimpleIdentifierImpl? label, this.semicolon) {
_label = _becomeParentOf(label);
}
@@ -2781,15 +2751,15 @@
Token get endToken => semicolon;
@override
- SimpleIdentifier get label => _label;
+ SimpleIdentifier? get label => _label;
@override
- set label(SimpleIdentifier identifier) {
- _label = _becomeParentOf(identifier as SimpleIdentifierImpl);
+ set label(SimpleIdentifier? identifier) {
+ _label = _becomeParentOf(identifier as SimpleIdentifierImpl?);
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitContinueStatement(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitContinueStatement(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -2804,7 +2774,7 @@
/// Initialize a newly created declaration. Either or both of the [comment]
/// and [metadata] can be `null` if the declaration does not have the
/// corresponding attribute.
- DeclarationImpl(CommentImpl comment, List<Annotation> metadata)
+ DeclarationImpl(CommentImpl? comment, List<Annotation>? metadata)
: super(comment, metadata);
}
@@ -2817,21 +2787,21 @@
/// The token representing either the 'final', 'const' or 'var' keyword, or
/// `null` if no keyword was used.
@override
- Token keyword;
+ Token? keyword;
/// The name of the declared type of the parameter, or `null` if the parameter
/// does not have a declared type.
- TypeAnnotationImpl _type;
+ TypeAnnotationImpl? _type;
/// The name of the variable being declared.
- SimpleIdentifierImpl _identifier;
+ late SimpleIdentifierImpl _identifier;
/// Initialize a newly created formal parameter. Either or both of the
/// [comment] and [metadata] can be `null` if the declaration does not have
/// the corresponding attribute. The [keyword] can be `null` if a type name is
/// given. The [type] must be `null` if the keyword is 'var'.
- DeclaredIdentifierImpl(CommentImpl comment, List<Annotation> metadata,
- this.keyword, TypeAnnotationImpl type, SimpleIdentifierImpl identifier)
+ DeclaredIdentifierImpl(CommentImpl? comment, List<Annotation>? metadata,
+ this.keyword, TypeAnnotationImpl? type, SimpleIdentifierImpl identifier)
: super(comment, metadata) {
_type = _becomeParentOf(type);
_identifier = _becomeParentOf(identifier);
@@ -2842,10 +2812,7 @@
super._childEntities..add(keyword)..add(_type)..add(_identifier);
@override
- LocalVariableElement get declaredElement {
- if (_identifier == null) {
- return null;
- }
+ LocalVariableElement? get declaredElement {
return _identifier.staticElement as LocalVariableElement;
}
@@ -2855,9 +2822,9 @@
@override
Token get firstTokenAfterCommentAndMetadata {
if (keyword != null) {
- return keyword;
+ return keyword!;
} else if (_type != null) {
- return _type.beginToken;
+ return _type!.beginToken;
}
return _identifier.beginToken;
}
@@ -2877,21 +2844,21 @@
bool get isFinal => keyword?.keyword == Keyword.FINAL;
@override
- TypeAnnotation get type => _type;
+ TypeAnnotation? get type => _type;
@override
- set type(TypeAnnotation type) {
- _type = _becomeParentOf(type as TypeAnnotationImpl);
+ set type(TypeAnnotation? type) {
+ _type = _becomeParentOf(type as TypeAnnotationImpl?);
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitDeclaredIdentifier(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitDeclaredIdentifier(this);
@override
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
_type?.accept(visitor);
- _identifier?.accept(visitor);
+ _identifier.accept(visitor);
}
}
@@ -2923,7 +2890,7 @@
class DefaultFormalParameterImpl extends FormalParameterImpl
implements DefaultFormalParameter {
/// The formal parameter with which the default value is associated.
- NormalFormalParameterImpl _parameter;
+ late NormalFormalParameterImpl _parameter;
/// The kind of this parameter.
@override
@@ -2932,16 +2899,16 @@
/// The token separating the parameter from the default value, or `null` if
/// there is no default value.
@override
- Token separator;
+ Token? separator;
/// The expression computing the default value for the parameter, or `null` if
/// there is no default value.
- ExpressionImpl _defaultValue;
+ ExpressionImpl? _defaultValue;
/// Initialize a newly created default formal parameter. The [separator] and
/// [defaultValue] can be `null` if there is no default value.
DefaultFormalParameterImpl(NormalFormalParameterImpl parameter, this.kind,
- this.separator, ExpressionImpl defaultValue) {
+ this.separator, ExpressionImpl? defaultValue) {
_parameter = _becomeParentOf(parameter);
_defaultValue = _becomeParentOf(defaultValue);
}
@@ -2954,35 +2921,35 @@
ChildEntities()..add(_parameter)..add(separator)..add(_defaultValue);
@override
- Token get covariantKeyword => null;
+ Token? get covariantKeyword => null;
@override
- ParameterElement get declaredElement => _parameter.declaredElement;
+ ParameterElement? get declaredElement => _parameter.declaredElement;
@override
- Expression get defaultValue => _defaultValue;
+ Expression? get defaultValue => _defaultValue;
@override
- set defaultValue(Expression expression) {
- _defaultValue = _becomeParentOf(expression as ExpressionImpl);
+ set defaultValue(Expression? expression) {
+ _defaultValue = _becomeParentOf(expression as ExpressionImpl?);
}
@override
Token get endToken {
if (_defaultValue != null) {
- return _defaultValue.endToken;
+ return _defaultValue!.endToken;
}
return _parameter.endToken;
}
@override
- SimpleIdentifier get identifier => _parameter.identifier;
+ SimpleIdentifier? get identifier => _parameter.identifier;
@override
- bool get isConst => _parameter != null && _parameter.isConst;
+ bool get isConst => _parameter.isConst;
@override
- bool get isFinal => _parameter != null && _parameter.isFinal;
+ bool get isFinal => _parameter.isFinal;
@override
NodeList<Annotation> get metadata => _parameter.metadata;
@@ -2996,15 +2963,15 @@
}
@override
- Token get requiredKeyword => null;
+ Token? get requiredKeyword => null;
@override
- E accept<E>(AstVisitor<E> visitor) =>
+ E? accept<E>(AstVisitor<E> visitor) =>
visitor.visitDefaultFormalParameter(this);
@override
void visitChildren(AstVisitor visitor) {
- _parameter?.accept(visitor);
+ _parameter.accept(visitor);
_defaultValue?.accept(visitor);
}
}
@@ -3020,20 +2987,20 @@
abstract class DirectiveImpl extends AnnotatedNodeImpl implements Directive {
/// The element associated with this directive, or `null` if the AST structure
/// has not been resolved or if this directive could not be resolved.
- Element _element;
+ Element? _element;
/// Initialize a newly create directive. Either or both of the [comment] and
/// [metadata] can be `null` if the directive does not have the corresponding
/// attribute.
- DirectiveImpl(CommentImpl comment, List<Annotation> metadata)
+ DirectiveImpl(CommentImpl? comment, List<Annotation>? metadata)
: super(comment, metadata);
@override
- Element get element => _element;
+ Element? get element => _element;
/// Set the element associated with this directive to be the given [element].
@override
- set element(Element element) {
+ set element(Element? element) {
_element = element;
}
}
@@ -3048,7 +3015,7 @@
Token doKeyword;
/// The body of the loop.
- StatementImpl _body;
+ late StatementImpl _body;
/// The token representing the 'while' keyword.
@override
@@ -3059,7 +3026,7 @@
Token leftParenthesis;
/// The condition that determines when the loop will terminate.
- ExpressionImpl _condition;
+ late ExpressionImpl _condition;
/// The right parenthesis.
@override
@@ -3115,12 +3082,12 @@
Token get endToken => semicolon;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitDoStatement(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitDoStatement(this);
@override
void visitChildren(AstVisitor visitor) {
- _body?.accept(visitor);
- _condition?.accept(visitor);
+ _body.accept(visitor);
+ _condition.accept(visitor);
}
}
@@ -3130,7 +3097,7 @@
/// [SimpleIdentifier] ('.' [SimpleIdentifier])*
class DottedNameImpl extends AstNodeImpl implements DottedName {
/// The components of the identifier.
- NodeList<SimpleIdentifier> _components;
+ late NodeList<SimpleIdentifier> _components;
/// Initialize a newly created dotted name.
DottedNameImpl(List<SimpleIdentifier> components) {
@@ -3138,7 +3105,7 @@
}
@override
- Token get beginToken => _components.beginToken;
+ Token get beginToken => _components.beginToken!;
@override
// TODO(paulberry): add "." tokens.
@@ -3149,10 +3116,10 @@
NodeList<SimpleIdentifier> get components => _components;
@override
- Token get endToken => _components.endToken;
+ Token get endToken => _components.endToken!;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitDottedName(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitDottedName(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -3190,7 +3157,7 @@
Token get endToken => literal;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitDoubleLiteral(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitDoubleLiteral(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -3224,7 +3191,7 @@
Token get endToken => semicolon;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitEmptyFunctionBody(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitEmptyFunctionBody(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -3258,7 +3225,7 @@
bool get isSynthetic => semicolon.isSynthetic;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitEmptyStatement(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitEmptyStatement(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -3271,14 +3238,14 @@
with HasAstLinkedContext
implements EnumConstantDeclaration {
/// The name of the constant.
- SimpleIdentifierImpl _name;
+ late SimpleIdentifierImpl _name;
/// Initialize a newly created enum constant declaration. Either or both of
/// the [comment] and [metadata] can be `null` if the constant does not have
/// the corresponding attribute. (Technically, enum constants cannot have
/// metadata, but we allow it for consistency.)
- EnumConstantDeclarationImpl(
- CommentImpl comment, List<Annotation> metadata, SimpleIdentifierImpl name)
+ EnumConstantDeclarationImpl(CommentImpl? comment, List<Annotation>? metadata,
+ SimpleIdentifierImpl name)
: super(comment, metadata) {
_name = _becomeParentOf(name);
}
@@ -3288,7 +3255,7 @@
super._childEntities..add(_name);
@override
- FieldElement get declaredElement => _name?.staticElement as FieldElement;
+ FieldElement get declaredElement => _name.staticElement as FieldElement;
@override
Token get endToken => _name.endToken;
@@ -3305,13 +3272,13 @@
}
@override
- E accept<E>(AstVisitor<E> visitor) =>
+ E? accept<E>(AstVisitor<E> visitor) =>
visitor.visitEnumConstantDeclaration(this);
@override
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
- _name?.accept(visitor);
+ _name.accept(visitor);
}
}
@@ -3332,7 +3299,7 @@
Token leftBracket;
/// The enumeration constants being declared.
- NodeList<EnumConstantDeclaration> _constants;
+ late NodeList<EnumConstantDeclaration> _constants;
/// The right curly bracket.
@override
@@ -3343,8 +3310,8 @@
/// the corresponding attribute. The list of [constants] must contain at least
/// one value.
EnumDeclarationImpl(
- CommentImpl comment,
- List<Annotation> metadata,
+ CommentImpl? comment,
+ List<Annotation>? metadata,
this.enumKeyword,
SimpleIdentifierImpl name,
this.leftBracket,
@@ -3367,7 +3334,7 @@
NodeList<EnumConstantDeclaration> get constants => _constants;
@override
- ClassElement get declaredElement => _name?.staticElement as ClassElement;
+ ClassElement? get declaredElement => _name.staticElement as ClassElement?;
@override
Token get endToken => rightBracket;
@@ -3376,12 +3343,12 @@
Token get firstTokenAfterCommentAndMetadata => enumKeyword;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitEnumDeclaration(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitEnumDeclaration(this);
@override
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
- _name?.accept(visitor);
+ _name.accept(visitor);
_constants.accept(visitor);
}
}
@@ -3407,12 +3374,12 @@
/// corresponding attribute. The list of [combinators] can be `null` if there
/// are no combinators.
ExportDirectiveImpl(
- CommentImpl comment,
- List<Annotation> metadata,
+ CommentImpl? comment,
+ List<Annotation>? metadata,
Token keyword,
StringLiteralImpl libraryUri,
- List<Configuration> configurations,
- List<Combinator> combinators,
+ List<Configuration>? configurations,
+ List<Combinator>? combinators,
Token semicolon)
: super(comment, metadata, keyword, libraryUri, configurations,
combinators, semicolon);
@@ -3425,18 +3392,15 @@
..add(semicolon);
@override
- ExportElement get element => super.element as ExportElement;
+ ExportElement? get element => super.element as ExportElement?;
@override
- LibraryElement get uriElement {
- if (element != null) {
- return element.exportedLibrary;
- }
- return null;
+ LibraryElement? get uriElement {
+ return element?.exportedLibrary;
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitExportDirective(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitExportDirective(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -3455,7 +3419,7 @@
/// The token representing the 'async' keyword, or `null` if there is no such
/// keyword.
@override
- Token keyword;
+ Token? keyword;
/// The token introducing the expression that represents the body of the
/// function.
@@ -3463,11 +3427,11 @@
Token functionDefinition;
/// The expression representing the body of the function.
- ExpressionImpl _expression;
+ late ExpressionImpl _expression;
/// The semicolon terminating the statement.
@override
- Token semicolon;
+ Token? semicolon;
/// Initialize a newly created function body consisting of a block of
/// statements. The [keyword] can be `null` if the function body is not an
@@ -3480,7 +3444,7 @@
@override
Token get beginToken {
if (keyword != null) {
- return keyword;
+ return keyword!;
}
return functionDefinition;
}
@@ -3495,7 +3459,7 @@
@override
Token get endToken {
if (semicolon != null) {
- return semicolon;
+ return semicolon!;
}
return _expression.endToken;
}
@@ -3515,12 +3479,12 @@
bool get isSynchronous => keyword == null;
@override
- E accept<E>(AstVisitor<E> visitor) =>
+ E? accept<E>(AstVisitor<E> visitor) =>
visitor.visitExpressionFunctionBody(this);
@override
void visitChildren(AstVisitor visitor) {
- _expression?.accept(visitor);
+ _expression.accept(visitor);
}
}
@@ -3535,7 +3499,7 @@
/// The static type of this expression, or `null` if the AST structure has not
/// been resolved.
@override
- DartType staticType;
+ DartType? staticType;
/// An expression _e_ is said to _occur in a constant context_,
/// * if _e_ is an element of a constant list literal, or a key or value of an
@@ -3566,7 +3530,7 @@
child is SpreadElement ||
child is IfElement ||
child is ForElement) {
- AstNode parent = child.parent;
+ var parent = child.parent;
if (parent is TypedLiteralImpl && parent.constKeyword != null) {
// Inside an explicitly `const` list or map literal.
return true;
@@ -3578,13 +3542,15 @@
// Inside an annotation.
return true;
} else if (parent is VariableDeclaration) {
- AstNode grandParent = parent.parent;
+ var grandParent = parent.parent;
// Inside the initializer for a `const` variable declaration.
return grandParent is VariableDeclarationList &&
grandParent.keyword?.keyword == Keyword.CONST;
} else if (parent is SwitchCase) {
// Inside a switch case.
return true;
+ } else if (parent == null) {
+ break;
}
child = parent;
}
@@ -3595,8 +3561,8 @@
bool get isAssignable => false;
@override
- ParameterElement get staticParameterElement {
- AstNode parent = this.parent;
+ ParameterElement? get staticParameterElement {
+ var parent = this.parent;
if (parent is ArgumentListImpl) {
return parent._getStaticParameterElementFor(this);
} else if (parent is IndexExpressionImpl) {
@@ -3634,12 +3600,12 @@
class ExpressionStatementImpl extends StatementImpl
implements ExpressionStatement {
/// The expression that comprises the statement.
- ExpressionImpl _expression;
+ late ExpressionImpl _expression;
/// The semicolon terminating the statement, or `null` if the expression is a
/// function expression and therefore isn't followed by a semicolon.
@override
- Token semicolon;
+ Token? semicolon;
/// Initialize a newly created expression statement.
ExpressionStatementImpl(ExpressionImpl expression, this.semicolon) {
@@ -3656,7 +3622,7 @@
@override
Token get endToken {
if (semicolon != null) {
- return semicolon;
+ return semicolon!;
}
return _expression.endToken;
}
@@ -3670,14 +3636,15 @@
}
@override
- bool get isSynthetic => _expression.isSynthetic && semicolon.isSynthetic;
+ bool get isSynthetic =>
+ _expression.isSynthetic && (semicolon == null || semicolon!.isSynthetic);
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitExpressionStatement(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitExpressionStatement(this);
@override
void visitChildren(AstVisitor visitor) {
- _expression?.accept(visitor);
+ _expression.accept(visitor);
}
}
@@ -3691,7 +3658,7 @@
Token extendsKeyword;
/// The name of the class that is being extended.
- TypeNameImpl _superclass;
+ late TypeNameImpl _superclass;
/// Initialize a newly created extends clause.
ExtendsClauseImpl(this.extendsKeyword, TypeNameImpl superclass) {
@@ -3717,11 +3684,11 @@
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitExtendsClause(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitExtendsClause(this);
@override
void visitChildren(AstVisitor visitor) {
- _superclass?.accept(visitor);
+ _superclass.accept(visitor);
}
}
@@ -3740,35 +3707,35 @@
/// The name of the extension, or `null` if the extension does not have a
/// name.
- SimpleIdentifierImpl _name;
+ SimpleIdentifierImpl? _name;
/// The type parameters for the extension, or `null` if the extension does not
/// have any type parameters.
- TypeParameterListImpl _typeParameters;
+ TypeParameterListImpl? _typeParameters;
@override
Token onKeyword;
/// The type that is being extended.
- TypeAnnotationImpl _extendedType;
+ late TypeAnnotationImpl _extendedType;
@override
Token leftBracket;
/// The members being added to the extended class.
- NodeList<ClassMember> _members;
+ late NodeList<ClassMember> _members;
@override
Token rightBracket;
- ExtensionElement _declaredElement;
+ ExtensionElement? _declaredElement;
ExtensionDeclarationImpl(
- CommentImpl comment,
- List<Annotation> metadata,
+ CommentImpl? comment,
+ List<Annotation>? metadata,
this.extensionKeyword,
- SimpleIdentifierImpl name,
- TypeParameterListImpl typeParameters,
+ SimpleIdentifierImpl? name,
+ TypeParameterListImpl? typeParameters,
this.onKeyword,
TypeAnnotationImpl extendedType,
this.leftBracket,
@@ -3793,10 +3760,10 @@
..add(rightBracket);
@override
- ExtensionElement get declaredElement => _declaredElement;
+ ExtensionElement? get declaredElement => _declaredElement;
/// Set the element declared by this declaration to the given [element].
- set declaredElement(ExtensionElement element) {
+ set declaredElement(ExtensionElement? element) {
_declaredElement = element;
}
@@ -3817,28 +3784,29 @@
NodeList<ClassMember> get members => _members;
@override
- SimpleIdentifier get name => _name;
+ SimpleIdentifier? get name => _name;
- set name(SimpleIdentifier identifier) {
- _name = _becomeParentOf(identifier as SimpleIdentifierImpl);
+ set name(SimpleIdentifier? identifier) {
+ _name = _becomeParentOf(identifier as SimpleIdentifierImpl?);
}
@override
- TypeParameterList get typeParameters => _typeParameters;
+ TypeParameterList? get typeParameters => _typeParameters;
- set typeParameters(TypeParameterList typeParameters) {
- _typeParameters = _becomeParentOf(typeParameters as TypeParameterListImpl);
+ set typeParameters(TypeParameterList? typeParameters) {
+ _typeParameters = _becomeParentOf(typeParameters as TypeParameterListImpl?);
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitExtensionDeclaration(this);
+ E? accept<E>(AstVisitor<E> visitor) =>
+ visitor.visitExtensionDeclaration(this);
@override
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
name?.accept(visitor);
_typeParameters?.accept(visitor);
- _extendedType?.accept(visitor);
+ _extendedType.accept(visitor);
_members.accept(visitor);
}
}
@@ -3852,23 +3820,23 @@
implements ExtensionOverride {
/// The list of arguments to the override. In valid code this will contain a
/// single argument, which evaluates to the object being extended.
- ArgumentListImpl _argumentList;
+ late ArgumentListImpl _argumentList;
/// The name of the extension being selected.
- IdentifierImpl _extensionName;
+ late IdentifierImpl _extensionName;
/// The type arguments to be applied to the extension, or `null` if no type
/// arguments were provided.
- TypeArgumentListImpl _typeArguments;
+ TypeArgumentListImpl? _typeArguments;
@override
- List<DartType> typeArgumentTypes;
+ List<DartType>? typeArgumentTypes;
@override
- DartType extendedType;
+ DartType? extendedType;
ExtensionOverrideImpl(IdentifierImpl extensionName,
- TypeArgumentListImpl typeArguments, ArgumentListImpl argumentList) {
+ TypeArgumentListImpl? typeArguments, ArgumentListImpl argumentList) {
_extensionName = _becomeParentOf(extensionName);
_typeArguments = _becomeParentOf(typeArguments);
_argumentList = _becomeParentOf(argumentList);
@@ -3882,7 +3850,7 @@
}
@override
- Token get beginToken => _extensionName?.beginToken;
+ Token get beginToken => _extensionName.beginToken;
@override
Iterable<SyntacticEntity> get childEntities => ChildEntities()
@@ -3902,7 +3870,7 @@
@override
bool get isNullAware {
- var nextType = argumentList.endToken.next.type;
+ var nextType = argumentList.endToken.next!.type;
return nextType == TokenType.QUESTION_PERIOD ||
nextType == TokenType.QUESTION;
}
@@ -3911,25 +3879,27 @@
Precedence get precedence => Precedence.postfix;
@override
- ExtensionElement get staticElement => extensionName.staticElement;
-
- @override
- TypeArgumentList get typeArguments => _typeArguments;
-
- set typeArguments(TypeArgumentList typeArguments) {
- _typeArguments = _becomeParentOf(typeArguments as TypeArgumentListImpl);
+ ExtensionElement? get staticElement {
+ return extensionName.staticElement as ExtensionElement?;
}
@override
- E accept<E>(AstVisitor<E> visitor) {
+ TypeArgumentList? get typeArguments => _typeArguments;
+
+ set typeArguments(TypeArgumentList? typeArguments) {
+ _typeArguments = _becomeParentOf(typeArguments as TypeArgumentListImpl?);
+ }
+
+ @override
+ E? accept<E>(AstVisitor<E> visitor) {
return visitor.visitExtensionOverride(this);
}
@override
void visitChildren(AstVisitor visitor) {
- _extensionName?.accept(visitor);
+ _extensionName.accept(visitor);
_typeArguments?.accept(visitor);
- _argumentList?.accept(visitor);
+ _argumentList.accept(visitor);
}
}
@@ -3941,22 +3911,22 @@
with HasAstLinkedContext
implements FieldDeclaration {
@override
- Token abstractKeyword;
+ Token? abstractKeyword;
/// The 'covariant' keyword, or `null` if the keyword was not used.
@override
- Token covariantKeyword;
+ Token? covariantKeyword;
@override
- Token externalKeyword;
+ Token? externalKeyword;
/// The token representing the 'static' keyword, or `null` if the fields are
/// not static.
@override
- Token staticKeyword;
+ Token? staticKeyword;
/// The fields being declared.
- VariableDeclarationListImpl _fieldList;
+ late VariableDeclarationListImpl _fieldList;
/// The semicolon terminating the declaration.
@override
@@ -3967,8 +3937,8 @@
/// the corresponding attribute. The [staticKeyword] can be `null` if the
/// field is not a static field.
FieldDeclarationImpl(
- CommentImpl comment,
- List<Annotation> metadata,
+ CommentImpl? comment,
+ List<Annotation>? metadata,
this.abstractKeyword,
this.covariantKeyword,
this.externalKeyword,
@@ -3984,7 +3954,7 @@
super._childEntities..add(staticKeyword)..add(_fieldList)..add(semicolon);
@override
- Element get declaredElement => null;
+ Element? get declaredElement => null;
@override
Token get endToken => semicolon;
@@ -4000,13 +3970,13 @@
@override
Token get firstTokenAfterCommentAndMetadata {
if (abstractKeyword != null) {
- return abstractKeyword;
+ return abstractKeyword!;
} else if (externalKeyword != null) {
- return externalKeyword;
+ return externalKeyword!;
} else if (covariantKeyword != null) {
- return covariantKeyword;
+ return covariantKeyword!;
} else if (staticKeyword != null) {
- return staticKeyword;
+ return staticKeyword!;
}
return _fieldList.beginToken;
}
@@ -4015,12 +3985,12 @@
bool get isStatic => staticKeyword != null;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitFieldDeclaration(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitFieldDeclaration(this);
@override
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
- _fieldList?.accept(visitor);
+ _fieldList.accept(visitor);
}
}
@@ -4035,11 +4005,11 @@
/// The token representing either the 'final', 'const' or 'var' keyword, or
/// `null` if no keyword was used.
@override
- Token keyword;
+ Token? keyword;
/// The name of the declared type of the parameter, or `null` if the parameter
/// does not have a declared type.
- TypeAnnotationImpl _type;
+ TypeAnnotationImpl? _type;
/// The token representing the 'this' keyword.
@override
@@ -4051,14 +4021,14 @@
/// The type parameters associated with the method, or `null` if the method is
/// not a generic method.
- TypeParameterListImpl _typeParameters;
+ TypeParameterListImpl? _typeParameters;
/// The parameters of the function-typed parameter, or `null` if this is not a
/// function-typed field formal parameter.
- FormalParameterListImpl _parameters;
+ FormalParameterListImpl? _parameters;
@override
- Token question;
+ Token? question;
/// Initialize a newly created formal parameter. Either or both of the
/// [comment] and [metadata] can be `null` if the parameter does not have the
@@ -4068,17 +4038,17 @@
/// [parameters] can be `null` if this is not a function-typed field formal
/// parameter.
FieldFormalParameterImpl(
- CommentImpl comment,
- List<Annotation> metadata,
- Token covariantKeyword,
- Token requiredKeyword,
+ CommentImpl? comment,
+ List<Annotation>? metadata,
+ Token? covariantKeyword,
+ Token? requiredKeyword,
this.keyword,
- TypeAnnotationImpl type,
+ TypeAnnotationImpl? type,
this.thisKeyword,
this.period,
SimpleIdentifierImpl identifier,
- TypeParameterListImpl typeParameters,
- FormalParameterListImpl parameters,
+ TypeParameterListImpl? typeParameters,
+ FormalParameterListImpl? parameters,
this.question)
: super(
comment, metadata, covariantKeyword, requiredKeyword, identifier) {
@@ -4091,15 +4061,15 @@
Token get beginToken {
NodeList<Annotation> metadata = this.metadata;
if (metadata.isNotEmpty) {
- return metadata.beginToken;
+ return metadata.beginToken!;
} else if (requiredKeyword != null) {
- return requiredKeyword;
+ return requiredKeyword!;
} else if (covariantKeyword != null) {
- return covariantKeyword;
+ return covariantKeyword!;
} else if (keyword != null) {
- return keyword;
+ return keyword!;
} else if (_type != null) {
- return _type.beginToken;
+ return _type!.beginToken;
}
return thisKeyword;
}
@@ -4119,43 +4089,47 @@
}
@override
+ SimpleIdentifier get identifier => super.identifier!;
+
+ @override
bool get isConst => keyword?.keyword == Keyword.CONST;
@override
bool get isFinal => keyword?.keyword == Keyword.FINAL;
@override
- FormalParameterList get parameters => _parameters;
+ FormalParameterList? get parameters => _parameters;
@override
- set parameters(FormalParameterList parameters) {
- _parameters = _becomeParentOf(parameters as FormalParameterListImpl);
+ set parameters(FormalParameterList? parameters) {
+ _parameters = _becomeParentOf(parameters as FormalParameterListImpl?);
}
@override
- TypeAnnotation get type => _type;
+ TypeAnnotation? get type => _type;
@override
- set type(TypeAnnotation type) {
+ set type(TypeAnnotation? type) {
_type = _becomeParentOf(type as TypeAnnotationImpl);
}
@override
- TypeParameterList get typeParameters => _typeParameters;
+ TypeParameterList? get typeParameters => _typeParameters;
@override
- set typeParameters(TypeParameterList typeParameters) {
- _typeParameters = _becomeParentOf(typeParameters as TypeParameterListImpl);
+ set typeParameters(TypeParameterList? typeParameters) {
+ _typeParameters = _becomeParentOf(typeParameters as TypeParameterListImpl?);
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitFieldFormalParameter(this);
+ E? accept<E>(AstVisitor<E> visitor) =>
+ visitor.visitFieldFormalParameter(this);
@override
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
_type?.accept(visitor);
- identifier?.accept(visitor);
+ identifier.accept(visitor);
_typeParameters?.accept(visitor);
_parameters?.accept(visitor);
}
@@ -4167,7 +4141,7 @@
Token inKeyword;
/// The expression evaluated to produce the iterator.
- ExpressionImpl _iterable;
+ late ExpressionImpl _iterable;
/// Initialize a newly created for-each statement whose loop control variable
/// is declared internally (in the for-loop part). The [awaitKeyword] can be
@@ -4195,14 +4169,14 @@
@override
void visitChildren(AstVisitor visitor) {
- _iterable?.accept(visitor);
+ _iterable.accept(visitor);
}
}
class ForEachPartsWithDeclarationImpl extends ForEachPartsImpl
implements ForEachPartsWithDeclaration {
/// The declaration of the loop variable.
- DeclaredIdentifierImpl _loopVariable;
+ late DeclaredIdentifierImpl _loopVariable;
/// Initialize a newly created for-each statement whose loop control variable
/// is declared internally (inside the for-loop part).
@@ -4228,12 +4202,12 @@
}
@override
- E accept<E>(AstVisitor<E> visitor) =>
+ E? accept<E>(AstVisitor<E> visitor) =>
visitor.visitForEachPartsWithDeclaration(this);
@override
void visitChildren(AstVisitor visitor) {
- _loopVariable?.accept(visitor);
+ _loopVariable.accept(visitor);
super.visitChildren(visitor);
}
}
@@ -4241,7 +4215,7 @@
class ForEachPartsWithIdentifierImpl extends ForEachPartsImpl
implements ForEachPartsWithIdentifier {
/// The loop variable.
- SimpleIdentifierImpl _identifier;
+ late SimpleIdentifierImpl _identifier;
/// Initialize a newly created for-each statement whose loop control variable
/// is declared externally (outside the for-loop part).
@@ -4267,13 +4241,13 @@
}
@override
- E accept<E>(AstVisitor<E> visitor) =>
+ E? accept<E>(AstVisitor<E> visitor) =>
visitor.visitForEachPartsWithIdentifier(this);
@override
void visitChildren(AstVisitor visitor) {
- _identifier?.accept(visitor);
- _iterable?.accept(visitor);
+ _identifier.accept(visitor);
+ _iterable.accept(visitor);
}
}
@@ -4281,11 +4255,11 @@
with ForMixin
implements ForElement {
/// The body of the loop.
- CollectionElementImpl _body;
+ late CollectionElementImpl _body;
/// Initialize a newly created for element.
ForElementImpl(
- Token awaitKeyword,
+ Token? awaitKeyword,
Token forKeyword,
Token leftParenthesis,
ForLoopPartsImpl forLoopParts,
@@ -4315,12 +4289,12 @@
Token get endToken => _body.endToken;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitForElement(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitForElement(this);
@override
void visitChildren(AstVisitor visitor) {
- _forLoopParts?.accept(visitor);
- _body?.accept(visitor);
+ _forLoopParts.accept(visitor);
+ _body.accept(visitor);
}
}
@@ -4336,15 +4310,15 @@
/// Data that is read during loading this node from summary, but is not
/// fully applied yet. For example in many cases we don't need the
/// documentation comment, and it is expensive to decode strings.
- Object summaryData;
+ Object? summaryData;
@override
- ParameterElement get declaredElement {
- SimpleIdentifier identifier = this.identifier;
+ ParameterElement? get declaredElement {
+ var identifier = this.identifier;
if (identifier == null) {
return null;
}
- return identifier.staticElement as ParameterElement;
+ return identifier.staticElement as ParameterElement?;
}
@override
@@ -4383,7 +4357,7 @@
} else if (node is SimpleFormalParameterImpl) {
node.declaredElement = element;
} else {
- node.identifier.staticElement = element;
+ node.identifier!.staticElement = element;
}
}
}
@@ -4421,17 +4395,17 @@
Token leftParenthesis;
/// The parameters associated with the method.
- NodeList<FormalParameter> _parameters;
+ late NodeList<FormalParameter> _parameters;
/// The left square bracket ('[') or left curly brace ('{') introducing the
/// optional parameters, or `null` if there are no optional parameters.
@override
- Token leftDelimiter;
+ Token? leftDelimiter;
/// The right square bracket (']') or right curly brace ('}') terminating the
/// optional parameters, or `null` if there are no optional parameters.
@override
- Token rightDelimiter;
+ Token? rightDelimiter;
/// The right parenthesis.
@override
@@ -4460,7 +4434,7 @@
int length = _parameters.length;
for (int i = 0; i < length; i++) {
FormalParameter parameter = _parameters[i];
- if (leftDelimiterNeeded && leftDelimiter.offset < parameter.offset) {
+ if (leftDelimiterNeeded && leftDelimiter!.offset < parameter.offset) {
result.add(leftDelimiter);
leftDelimiterNeeded = false;
}
@@ -4473,11 +4447,11 @@
Token get endToken => rightParenthesis;
@override
- List<ParameterElement> get parameterElements {
+ List<ParameterElement?> get parameterElements {
int count = _parameters.length;
- List<ParameterElement> types = List<ParameterElement>.filled(count, null);
+ var types = <ParameterElement?>[];
for (int i = 0; i < count; i++) {
- types[i] = _parameters[i].declaredElement;
+ types.add(_parameters[i].declaredElement);
}
return types;
}
@@ -4486,7 +4460,7 @@
NodeList<FormalParameter> get parameters => _parameters;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitFormalParameterList(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitFormalParameterList(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -4495,15 +4469,15 @@
}
mixin ForMixin on AstNodeImpl {
- Token awaitKeyword;
+ Token? awaitKeyword;
- Token forKeyword;
+ late Token forKeyword;
- Token leftParenthesis;
+ late Token leftParenthesis;
- ForLoopPartsImpl _forLoopParts;
+ late ForLoopPartsImpl _forLoopParts;
- Token rightParenthesis;
+ late Token rightParenthesis;
@override
Token get beginToken => awaitKeyword ?? forKeyword;
@@ -4529,20 +4503,20 @@
/// The condition used to determine when to terminate the loop, or `null` if
/// there is no condition.
- ExpressionImpl _condition;
+ ExpressionImpl? _condition;
@override
Token rightSeparator;
/// The list of expressions run after each execution of the loop body.
- NodeList<Expression> _updaters;
+ late NodeList<Expression> _updaters;
/// Initialize a newly created for statement. Either the [variableList] or the
/// [initialization] must be `null`. Either the [condition] and the list of
/// [updaters] can be `null` if the loop does not have the corresponding
/// attribute.
- ForPartsImpl(this.leftSeparator, ExpressionImpl condition,
- this.rightSeparator, List<Expression> updaters) {
+ ForPartsImpl(this.leftSeparator, ExpressionImpl? condition,
+ this.rightSeparator, List<Expression>? updaters) {
_condition = _becomeParentOf(condition);
_updaters = NodeListImpl<Expression>(this, updaters);
}
@@ -4558,14 +4532,14 @@
..addAll(_updaters);
@override
- Expression get condition => _condition;
+ Expression? get condition => _condition;
- set condition(Expression expression) {
- _condition = _becomeParentOf(expression as ExpressionImpl);
+ set condition(Expression? expression) {
+ _condition = _becomeParentOf(expression as ExpressionImpl?);
}
@override
- Token get endToken => _updaters?.endToken ?? rightSeparator;
+ Token get endToken => _updaters.endToken ?? rightSeparator;
@override
NodeList<Expression> get updaters => _updaters;
@@ -4582,7 +4556,7 @@
/// The declaration of the loop variables, or `null` if there are no
/// variables. Note that a for statement cannot have both a variable list and
/// an initialization expression, but can validly have neither.
- VariableDeclarationListImpl _variableList;
+ late VariableDeclarationListImpl _variableList;
/// Initialize a newly created for statement. Both the [condition] and the
/// list of [updaters] can be `null` if the loop does not have the
@@ -4590,15 +4564,15 @@
ForPartsWithDeclarationsImpl(
VariableDeclarationListImpl variableList,
Token leftSeparator,
- ExpressionImpl condition,
+ ExpressionImpl? condition,
Token rightSeparator,
- List<Expression> updaters)
+ List<Expression>? updaters)
: super(leftSeparator, condition, rightSeparator, updaters) {
_variableList = _becomeParentOf(variableList);
}
@override
- Token get beginToken => _variableList?.beginToken ?? super.beginToken;
+ Token get beginToken => _variableList.beginToken;
@override
Iterable<SyntacticEntity> get childEntities => ChildEntities()
@@ -4608,18 +4582,18 @@
@override
VariableDeclarationList get variables => _variableList;
- set variables(VariableDeclarationList variableList) {
+ set variables(VariableDeclarationList? variableList) {
_variableList =
_becomeParentOf(variableList as VariableDeclarationListImpl);
}
@override
- E accept<E>(AstVisitor<E> visitor) =>
+ E? accept<E>(AstVisitor<E> visitor) =>
visitor.visitForPartsWithDeclarations(this);
@override
void visitChildren(AstVisitor visitor) {
- _variableList?.accept(visitor);
+ _variableList.accept(visitor);
super.visitChildren(visitor);
}
}
@@ -4629,13 +4603,17 @@
/// The initialization expression, or `null` if there is no initialization
/// expression. Note that a for statement cannot have both a variable list and
/// an initialization expression, but can validly have neither.
- ExpressionImpl _initialization;
+ ExpressionImpl? _initialization;
/// Initialize a newly created for statement. Both the [condition] and the
/// list of [updaters] can be `null` if the loop does not have the
/// corresponding attribute.
- ForPartsWithExpressionImpl(ExpressionImpl initialization, Token leftSeparator,
- ExpressionImpl condition, Token rightSeparator, List<Expression> updaters)
+ ForPartsWithExpressionImpl(
+ ExpressionImpl? initialization,
+ Token leftSeparator,
+ ExpressionImpl? condition,
+ Token rightSeparator,
+ List<Expression>? updaters)
: super(leftSeparator, condition, rightSeparator, updaters) {
_initialization = _becomeParentOf(initialization);
}
@@ -4649,14 +4627,14 @@
..addAll(super.childEntities);
@override
- Expression get initialization => _initialization;
+ Expression? get initialization => _initialization;
- set initialization(Expression initialization) {
- _initialization = _becomeParentOf(initialization as ExpressionImpl);
+ set initialization(Expression? initialization) {
+ _initialization = _becomeParentOf(initialization as ExpressionImpl?);
}
@override
- E accept<E>(AstVisitor<E> visitor) =>
+ E? accept<E>(AstVisitor<E> visitor) =>
visitor.visitForPartsWithExpression(this);
@override
@@ -4670,11 +4648,11 @@
with ForMixin
implements ForStatement {
/// The body of the loop.
- StatementImpl _body;
+ late StatementImpl _body;
/// Initialize a newly created for statement.
ForStatementImpl(
- Token awaitKeyword,
+ Token? awaitKeyword,
Token forKeyword,
Token leftParenthesis,
ForLoopPartsImpl forLoopParts,
@@ -4704,12 +4682,12 @@
Token get endToken => _body.endToken;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitForStatement(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitForStatement(this);
@override
void visitChildren(AstVisitor visitor) {
- _forLoopParts?.accept(visitor);
- _body?.accept(visitor);
+ _forLoopParts.accept(visitor);
+ _body.accept(visitor);
}
}
@@ -4723,7 +4701,7 @@
/// Additional information about local variables and parameters that are
/// declared within this function body or any enclosing function body. `null`
/// if resolution has not yet been performed.
- LocalVariableInfo localVariableInfo;
+ LocalVariableInfo? localVariableInfo;
/// Return `true` if this function body is asynchronous.
@override
@@ -4740,19 +4718,19 @@
/// Return the token representing the 'async' or 'sync' keyword, or `null` if
/// there is no such keyword.
@override
- Token get keyword => null;
+ Token? get keyword => null;
/// Return the star following the 'async' or 'sync' keyword, or `null` if
/// there is no star.
@override
- Token get star => null;
+ Token? get star => null;
@override
bool isPotentiallyMutatedInClosure(VariableElement variable) {
if (localVariableInfo == null) {
throw StateError('Resolution has not yet been performed');
}
- return localVariableInfo.potentiallyMutatedInClosure.contains(variable);
+ return localVariableInfo!.potentiallyMutatedInClosure.contains(variable);
}
@override
@@ -4760,7 +4738,7 @@
if (localVariableInfo == null) {
throw StateError('Resolution has not yet been performed');
}
- return localVariableInfo.potentiallyMutatedInScope.contains(variable);
+ return localVariableInfo!.potentiallyMutatedInScope.contains(variable);
}
}
@@ -4778,18 +4756,18 @@
/// The token representing the 'external' keyword, or `null` if this is not an
/// external function.
@override
- Token externalKeyword;
+ Token? externalKeyword;
/// The return type of the function, or `null` if no return type was declared.
- TypeAnnotationImpl _returnType;
+ TypeAnnotationImpl? _returnType;
/// The token representing the 'get' or 'set' keyword, or `null` if this is a
/// function declaration rather than a property declaration.
@override
- Token propertyKeyword;
+ Token? propertyKeyword;
/// The function expression being wrapped.
- FunctionExpressionImpl _functionExpression;
+ late FunctionExpressionImpl _functionExpression;
/// Initialize a newly created function declaration. Either or both of the
/// [comment] and [metadata] can be `null` if the function does not have the
@@ -4798,10 +4776,10 @@
/// return type was specified. The [propertyKeyword] can be `null` if the
/// function is neither a getter or a setter.
FunctionDeclarationImpl(
- CommentImpl comment,
- List<Annotation> metadata,
+ CommentImpl? comment,
+ List<Annotation>? metadata,
this.externalKeyword,
- TypeAnnotationImpl returnType,
+ TypeAnnotationImpl? returnType,
this.propertyKeyword,
SimpleIdentifierImpl name,
FunctionExpressionImpl functionExpression)
@@ -4819,8 +4797,8 @@
..add(_functionExpression);
@override
- ExecutableElement get declaredElement =>
- _name?.staticElement as ExecutableElement;
+ ExecutableElement? get declaredElement =>
+ _name.staticElement as ExecutableElement?;
@override
Token get endToken => _functionExpression.endToken;
@@ -4828,15 +4806,13 @@
@override
Token get firstTokenAfterCommentAndMetadata {
if (externalKeyword != null) {
- return externalKeyword;
+ return externalKeyword!;
} else if (_returnType != null) {
- return _returnType.beginToken;
+ return _returnType!.beginToken;
} else if (propertyKeyword != null) {
- return propertyKeyword;
- } else if (_name != null) {
- return _name.beginToken;
+ return propertyKeyword!;
}
- return _functionExpression.beginToken;
+ return _name.beginToken;
}
@override
@@ -4855,22 +4831,22 @@
bool get isSetter => propertyKeyword?.keyword == Keyword.SET;
@override
- TypeAnnotation get returnType => _returnType;
+ TypeAnnotation? get returnType => _returnType;
@override
- set returnType(TypeAnnotation type) {
+ set returnType(TypeAnnotation? type) {
_returnType = _becomeParentOf(type as TypeAnnotationImpl);
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitFunctionDeclaration(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitFunctionDeclaration(this);
@override
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
_returnType?.accept(visitor);
- _name?.accept(visitor);
- _functionExpression?.accept(visitor);
+ _name.accept(visitor);
+ _functionExpression.accept(visitor);
}
}
@@ -4878,7 +4854,7 @@
class FunctionDeclarationStatementImpl extends StatementImpl
implements FunctionDeclarationStatement {
/// The function declaration being wrapped.
- FunctionDeclarationImpl _functionDeclaration;
+ late FunctionDeclarationImpl _functionDeclaration;
/// Initialize a newly created function declaration statement.
FunctionDeclarationStatementImpl(
@@ -4906,12 +4882,12 @@
}
@override
- E accept<E>(AstVisitor<E> visitor) =>
+ E? accept<E>(AstVisitor<E> visitor) =>
visitor.visitFunctionDeclarationStatement(this);
@override
void visitChildren(AstVisitor visitor) {
- _functionDeclaration?.accept(visitor);
+ _functionDeclaration.accept(visitor);
}
}
@@ -4923,21 +4899,21 @@
implements FunctionExpression {
/// The type parameters associated with the method, or `null` if the method is
/// not a generic method.
- TypeParameterListImpl _typeParameters;
+ TypeParameterListImpl? _typeParameters;
/// The parameters associated with the function, or `null` if the function is
/// part of a top-level getter.
- FormalParameterListImpl _parameters;
+ FormalParameterListImpl? _parameters;
/// The body of the function, or `null` if this is an external function.
- FunctionBodyImpl _body;
+ FunctionBodyImpl? _body;
@override
- ExecutableElement declaredElement;
+ ExecutableElement? declaredElement;
/// Initialize a newly created function declaration.
- FunctionExpressionImpl(TypeParameterListImpl typeParameters,
- FormalParameterListImpl parameters, FunctionBodyImpl body) {
+ FunctionExpressionImpl(TypeParameterListImpl? typeParameters,
+ FormalParameterListImpl? parameters, FunctionBodyImpl? body) {
_typeParameters = _becomeParentOf(typeParameters);
_parameters = _becomeParentOf(parameters);
_body = _becomeParentOf(body);
@@ -4946,11 +4922,11 @@
@override
Token get beginToken {
if (_typeParameters != null) {
- return _typeParameters.beginToken;
+ return _typeParameters!.beginToken;
} else if (_parameters != null) {
- return _parameters.beginToken;
+ return _parameters!.beginToken;
} else if (_body != null) {
- return _body.beginToken;
+ return _body!.beginToken;
}
// This should never be reached because external functions must be named,
// hence either the body or the name should be non-null.
@@ -4958,11 +4934,11 @@
}
@override
- FunctionBody get body => _body;
+ FunctionBody? get body => _body;
@override
- set body(FunctionBody functionBody) {
- _body = _becomeParentOf(functionBody as FunctionBodyImpl);
+ set body(FunctionBody? functionBody) {
+ _body = _becomeParentOf(functionBody as FunctionBodyImpl?);
}
@override
@@ -4972,9 +4948,9 @@
@override
Token get endToken {
if (_body != null) {
- return _body.endToken;
+ return _body!.endToken;
} else if (_parameters != null) {
- return _parameters.endToken;
+ return _parameters!.endToken;
}
// This should never be reached because external functions must be named,
// hence either the body or the name should be non-null.
@@ -4982,26 +4958,26 @@
}
@override
- FormalParameterList get parameters => _parameters;
+ FormalParameterList? get parameters => _parameters;
@override
- set parameters(FormalParameterList parameters) {
- _parameters = _becomeParentOf(parameters as FormalParameterListImpl);
+ set parameters(FormalParameterList? parameters) {
+ _parameters = _becomeParentOf(parameters as FormalParameterListImpl?);
}
@override
Precedence get precedence => Precedence.primary;
@override
- TypeParameterList get typeParameters => _typeParameters;
+ TypeParameterList? get typeParameters => _typeParameters;
@override
- set typeParameters(TypeParameterList typeParameters) {
- _typeParameters = _becomeParentOf(typeParameters as TypeParameterListImpl);
+ set typeParameters(TypeParameterList? typeParameters) {
+ _typeParameters = _becomeParentOf(typeParameters as TypeParameterListImpl?);
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitFunctionExpression(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitFunctionExpression(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -5022,17 +4998,17 @@
with NullShortableExpressionImpl
implements FunctionExpressionInvocation {
/// The expression producing the function being invoked.
- ExpressionImpl _function;
+ late ExpressionImpl _function;
/// The element associated with the function being invoked based on static
/// type information, or `null` if the AST structure has not been resolved or
/// the function could not be resolved.
@override
- ExecutableElement staticElement;
+ ExecutableElement? staticElement;
/// Initialize a newly created function expression invocation.
FunctionExpressionInvocationImpl(ExpressionImpl function,
- TypeArgumentListImpl typeArguments, ArgumentListImpl argumentList)
+ TypeArgumentListImpl? typeArguments, ArgumentListImpl argumentList)
: super(typeArguments, argumentList) {
_function = _becomeParentOf(function);
}
@@ -5059,17 +5035,17 @@
Precedence get precedence => Precedence.postfix;
@override
- AstNode get _nullShortingExtensionCandidate => parent;
+ AstNode? get _nullShortingExtensionCandidate => parent;
@override
- E accept<E>(AstVisitor<E> visitor) =>
+ E? accept<E>(AstVisitor<E> visitor) =>
visitor.visitFunctionExpressionInvocation(this);
@override
void visitChildren(AstVisitor visitor) {
- _function?.accept(visitor);
+ _function.accept(visitor);
_typeArguments?.accept(visitor);
- _argumentList?.accept(visitor);
+ _argumentList.accept(visitor);
}
@override
@@ -5088,14 +5064,14 @@
implements FunctionTypeAlias {
/// The name of the return type of the function type being defined, or `null`
/// if no return type was given.
- TypeAnnotationImpl _returnType;
+ TypeAnnotationImpl? _returnType;
/// The type parameters for the function type, or `null` if the function type
/// does not have any type parameters.
- TypeParameterListImpl _typeParameters;
+ TypeParameterListImpl? _typeParameters;
/// The parameters associated with the function type.
- FormalParameterListImpl _parameters;
+ late FormalParameterListImpl _parameters;
/// Initialize a newly created function type alias. Either or both of the
/// [comment] and [metadata] can be `null` if the function does not have the
@@ -5103,12 +5079,12 @@
/// was specified. The [typeParameters] can be `null` if the function has no
/// type parameters.
FunctionTypeAliasImpl(
- CommentImpl comment,
- List<Annotation> metadata,
+ CommentImpl? comment,
+ List<Annotation>? metadata,
Token keyword,
- TypeAnnotationImpl returnType,
+ TypeAnnotationImpl? returnType,
SimpleIdentifierImpl name,
- TypeParameterListImpl typeParameters,
+ TypeParameterListImpl? typeParameters,
FormalParameterListImpl parameters,
Token semicolon)
: super(comment, metadata, keyword, name, semicolon) {
@@ -5127,8 +5103,8 @@
..add(semicolon);
@override
- FunctionTypeAliasElement get declaredElement =>
- _name?.staticElement as FunctionTypeAliasElement;
+ FunctionTypeAliasElement? get declaredElement =>
+ _name.staticElement as FunctionTypeAliasElement?;
@override
FormalParameterList get parameters => _parameters;
@@ -5139,31 +5115,31 @@
}
@override
- TypeAnnotation get returnType => _returnType;
+ TypeAnnotation? get returnType => _returnType;
@override
- set returnType(TypeAnnotation type) {
- _returnType = _becomeParentOf(type as TypeAnnotationImpl);
+ set returnType(TypeAnnotation? type) {
+ _returnType = _becomeParentOf(type as TypeAnnotationImpl?);
}
@override
- TypeParameterList get typeParameters => _typeParameters;
+ TypeParameterList? get typeParameters => _typeParameters;
@override
- set typeParameters(TypeParameterList typeParameters) {
- _typeParameters = _becomeParentOf(typeParameters as TypeParameterListImpl);
+ set typeParameters(TypeParameterList? typeParameters) {
+ _typeParameters = _becomeParentOf(typeParameters as TypeParameterListImpl?);
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitFunctionTypeAlias(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitFunctionTypeAlias(this);
@override
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
_returnType?.accept(visitor);
- _name?.accept(visitor);
+ _name.accept(visitor);
_typeParameters?.accept(visitor);
- _parameters?.accept(visitor);
+ _parameters.accept(visitor);
}
}
@@ -5176,30 +5152,30 @@
implements FunctionTypedFormalParameter {
/// The return type of the function, or `null` if the function does not have a
/// return type.
- TypeAnnotationImpl _returnType;
+ TypeAnnotationImpl? _returnType;
/// The type parameters associated with the function, or `null` if the
/// function is not a generic function.
- TypeParameterListImpl _typeParameters;
+ TypeParameterListImpl? _typeParameters;
/// The parameters of the function-typed parameter.
- FormalParameterListImpl _parameters;
+ late FormalParameterListImpl _parameters;
@override
- Token question;
+ Token? question;
/// Initialize a newly created formal parameter. Either or both of the
/// [comment] and [metadata] can be `null` if the parameter does not have the
/// corresponding attribute. The [returnType] can be `null` if no return type
/// was specified.
FunctionTypedFormalParameterImpl(
- CommentImpl comment,
- List<Annotation> metadata,
- Token covariantKeyword,
- Token requiredKeyword,
- TypeAnnotationImpl returnType,
+ CommentImpl? comment,
+ List<Annotation>? metadata,
+ Token? covariantKeyword,
+ Token? requiredKeyword,
+ TypeAnnotationImpl? returnType,
SimpleIdentifierImpl identifier,
- TypeParameterListImpl typeParameters,
+ TypeParameterListImpl? typeParameters,
FormalParameterListImpl parameters,
this.question)
: super(
@@ -5213,15 +5189,15 @@
Token get beginToken {
NodeList<Annotation> metadata = this.metadata;
if (metadata.isNotEmpty) {
- return metadata.beginToken;
+ return metadata.beginToken!;
} else if (requiredKeyword != null) {
- return requiredKeyword;
+ return requiredKeyword!;
} else if (covariantKeyword != null) {
- return covariantKeyword;
+ return covariantKeyword!;
} else if (_returnType != null) {
- return _returnType.beginToken;
+ return _returnType!.beginToken;
}
- return identifier?.beginToken;
+ return identifier.beginToken;
}
@override
@@ -5232,6 +5208,9 @@
Token get endToken => question ?? _parameters.endToken;
@override
+ SimpleIdentifier get identifier => super.identifier!;
+
+ @override
bool get isConst => false;
@override
@@ -5246,32 +5225,32 @@
}
@override
- TypeAnnotation get returnType => _returnType;
+ TypeAnnotation? get returnType => _returnType;
@override
- set returnType(TypeAnnotation type) {
- _returnType = _becomeParentOf(type as TypeAnnotationImpl);
+ set returnType(TypeAnnotation? type) {
+ _returnType = _becomeParentOf(type as TypeAnnotationImpl?);
}
@override
- TypeParameterList get typeParameters => _typeParameters;
+ TypeParameterList? get typeParameters => _typeParameters;
@override
- set typeParameters(TypeParameterList typeParameters) {
- _typeParameters = _becomeParentOf(typeParameters as TypeParameterListImpl);
+ set typeParameters(TypeParameterList? typeParameters) {
+ _typeParameters = _becomeParentOf(typeParameters as TypeParameterListImpl?);
}
@override
- E accept<E>(AstVisitor<E> visitor) =>
+ E? accept<E>(AstVisitor<E> visitor) =>
visitor.visitFunctionTypedFormalParameter(this);
@override
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
_returnType?.accept(visitor);
- identifier?.accept(visitor);
+ identifier.accept(visitor);
_typeParameters?.accept(visitor);
- _parameters?.accept(visitor);
+ _parameters.accept(visitor);
}
}
@@ -5307,31 +5286,31 @@
implements GenericFunctionType {
/// The name of the return type of the function type being defined, or
/// `null` if no return type was given.
- TypeAnnotationImpl _returnType;
+ TypeAnnotationImpl? _returnType;
@override
Token functionKeyword;
/// The type parameters for the function type, or `null` if the function type
/// does not have any type parameters.
- TypeParameterListImpl _typeParameters;
+ TypeParameterListImpl? _typeParameters;
/// The parameters associated with the function type.
- FormalParameterListImpl _parameters;
+ late FormalParameterListImpl _parameters;
@override
- Token question;
+ Token? question;
@override
- DartType type;
+ DartType? type;
/// Return the element associated with the function type, or `null` if the
/// AST structure has not been resolved.
- GenericFunctionTypeElement declaredElement;
+ GenericFunctionTypeElement? declaredElement;
/// Initialize a newly created generic function type.
- GenericFunctionTypeImpl(TypeAnnotationImpl returnType, this.functionKeyword,
- TypeParameterListImpl typeParameters, FormalParameterListImpl parameters,
+ GenericFunctionTypeImpl(TypeAnnotationImpl? returnType, this.functionKeyword,
+ TypeParameterListImpl? typeParameters, FormalParameterListImpl parameters,
{this.question}) {
_returnType = _becomeParentOf(returnType);
_typeParameters = _becomeParentOf(typeParameters);
@@ -5361,28 +5340,27 @@
}
@override
- TypeAnnotation get returnType => _returnType;
+ TypeAnnotation? get returnType => _returnType;
@override
- set returnType(TypeAnnotation type) {
- _returnType = _becomeParentOf(type as TypeAnnotationImpl);
+ set returnType(TypeAnnotation? type) {
+ _returnType = _becomeParentOf(type as TypeAnnotationImpl?);
}
/// Return the type parameters for the function type, or `null` if the
/// function type does not have any type parameters.
@override
- TypeParameterList get typeParameters => _typeParameters;
+ TypeParameterList? get typeParameters => _typeParameters;
/// Set the type parameters for the function type to the given list of
/// [typeParameters].
@override
- set typeParameters(TypeParameterList typeParameters) {
- _typeParameters = _becomeParentOf(typeParameters as TypeParameterListImpl);
+ set typeParameters(TypeParameterList? typeParameters) {
+ _typeParameters = _becomeParentOf(typeParameters as TypeParameterListImpl?);
}
- // TODO: implement type
@override
- E accept<E>(AstVisitor<E> visitor) {
+ E? accept<E>(AstVisitor<E> visitor) {
return visitor.visitGenericFunctionType(this);
}
@@ -5390,7 +5368,7 @@
void visitChildren(AstVisitor visitor) {
_returnType?.accept(visitor);
_typeParameters?.accept(visitor);
- _parameters?.accept(visitor);
+ _parameters.accept(visitor);
}
}
@@ -5403,11 +5381,11 @@
with HasAstLinkedContext
implements GenericTypeAlias {
/// The type being defined by the alias.
- TypeAnnotationImpl _type;
+ late TypeAnnotationImpl _type;
/// The type parameters for the function type, or `null` if the function
/// type does not have any type parameters.
- TypeParameterListImpl _typeParameters;
+ TypeParameterListImpl? _typeParameters;
@override
Token equals;
@@ -5417,11 +5395,11 @@
/// the corresponding attribute. The [typeParameters] can be `null` if there
/// are no type parameters.
GenericTypeAliasImpl(
- CommentImpl comment,
- List<Annotation> metadata,
+ CommentImpl? comment,
+ List<Annotation>? metadata,
Token typedefToken,
SimpleIdentifierImpl name,
- TypeParameterListImpl typeParameters,
+ TypeParameterListImpl? typeParameters,
this.equals,
TypeAnnotationImpl type,
Token semicolon)
@@ -5440,7 +5418,7 @@
..add(_type);
@override
- Element get declaredElement => name.staticElement;
+ Element? get declaredElement => name.staticElement;
/// The type of function being defined by the alias.
///
@@ -5448,14 +5426,14 @@
/// a [_type] which is not a [GenericFunctionTypeImpl]. In that case `null`
/// is returned.
@override
- GenericFunctionType get functionType {
+ GenericFunctionType? get functionType {
var type = _type;
return type is GenericFunctionTypeImpl ? type : null;
}
@override
- set functionType(GenericFunctionType functionType) {
- _type = _becomeParentOf(functionType as TypeAnnotationImpl);
+ set functionType(GenericFunctionType? functionType) {
+ _type = _becomeParentOf(functionType as GenericFunctionTypeImpl?)!;
}
@override
@@ -5467,29 +5445,29 @@
}
@override
- TypeParameterList get typeParameters => _typeParameters;
+ TypeParameterList? get typeParameters => _typeParameters;
@override
- set typeParameters(TypeParameterList typeParameters) {
- _typeParameters = _becomeParentOf(typeParameters as TypeParameterListImpl);
+ set typeParameters(TypeParameterList? typeParameters) {
+ _typeParameters = _becomeParentOf(typeParameters as TypeParameterListImpl?);
}
@override
- E accept<E>(AstVisitor<E> visitor) {
+ E? accept<E>(AstVisitor<E> visitor) {
return visitor.visitGenericTypeAlias(this);
}
@override
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
- name?.accept(visitor);
+ name.accept(visitor);
_typeParameters?.accept(visitor);
- _type?.accept(visitor);
+ _type.accept(visitor);
}
}
mixin HasAstLinkedContext {
- AstLinkedContext linkedContext;
+ AstLinkedContext? linkedContext;
}
/// A combinator that restricts the names being imported to those that are not
@@ -5499,7 +5477,7 @@
/// 'hide' [SimpleIdentifier] (',' [SimpleIdentifier])*
class HideCombinatorImpl extends CombinatorImpl implements HideCombinator {
/// The list of names from the library that are hidden by this combinator.
- NodeList<SimpleIdentifier> _hiddenNames;
+ late NodeList<SimpleIdentifier> _hiddenNames;
/// Initialize a newly created import show combinator.
HideCombinatorImpl(Token keyword, List<SimpleIdentifier> hiddenNames)
@@ -5513,13 +5491,13 @@
..addAll(_hiddenNames);
@override
- Token get endToken => _hiddenNames.endToken;
+ Token get endToken => _hiddenNames.endToken!;
@override
NodeList<SimpleIdentifier> get hiddenNames => _hiddenNames;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitHideCombinator(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitHideCombinator(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -5541,11 +5519,11 @@
with IfMixin
implements IfElement {
/// The element to be executed if the condition is `true`.
- CollectionElementImpl _thenElement;
+ late CollectionElementImpl _thenElement;
/// The element to be executed if the condition is `false`, or `null` if there
/// is no such element.
- CollectionElementImpl _elseElement;
+ CollectionElementImpl? _elseElement;
/// Initialize a newly created for element.
IfElementImpl(
@@ -5554,8 +5532,8 @@
ExpressionImpl condition,
Token rightParenthesis,
CollectionElementImpl thenElement,
- Token elseKeyword,
- CollectionElementImpl elseElement) {
+ Token? elseKeyword,
+ CollectionElementImpl? elseElement) {
this.ifKeyword = ifKeyword;
this.leftParenthesis = leftParenthesis;
_condition = _becomeParentOf(condition);
@@ -5573,10 +5551,10 @@
..add(_elseElement);
@override
- CollectionElement get elseElement => _elseElement;
+ CollectionElement? get elseElement => _elseElement;
- set elseElement(CollectionElement element) {
- _elseElement = _becomeParentOf(element as CollectionElementImpl);
+ set elseElement(CollectionElement? element) {
+ _elseElement = _becomeParentOf(element as CollectionElementImpl?);
}
@override
@@ -5590,27 +5568,27 @@
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitIfElement(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitIfElement(this);
@override
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
- _thenElement?.accept(visitor);
+ _thenElement.accept(visitor);
_elseElement?.accept(visitor);
}
}
mixin IfMixin on AstNodeImpl {
- Token ifKeyword;
+ late Token ifKeyword;
- Token leftParenthesis;
+ late Token leftParenthesis;
/// The condition used to determine which of the branches is executed next.
- ExpressionImpl _condition;
+ late ExpressionImpl _condition;
- Token rightParenthesis;
+ late Token rightParenthesis;
- Token elseKeyword;
+ Token? elseKeyword;
@override
Token get beginToken => ifKeyword;
@@ -5630,7 +5608,7 @@
@override
void visitChildren(AstVisitor visitor) {
- _condition?.accept(visitor);
+ _condition.accept(visitor);
}
}
@@ -5642,11 +5620,11 @@
with IfMixin
implements IfStatement {
/// The statement that is executed if the condition evaluates to `true`.
- StatementImpl _thenStatement;
+ late StatementImpl _thenStatement;
/// The statement that is executed if the condition evaluates to `false`, or
/// `null` if there is no else statement.
- StatementImpl _elseStatement;
+ StatementImpl? _elseStatement;
/// Initialize a newly created if statement. The [elseKeyword] and
/// [elseStatement] can be `null` if there is no else clause.
@@ -5656,8 +5634,8 @@
ExpressionImpl condition,
Token rightParenthesis,
StatementImpl thenStatement,
- Token elseKeyword,
- StatementImpl elseStatement) {
+ Token? elseKeyword,
+ StatementImpl? elseStatement) {
this.ifKeyword = ifKeyword;
this.leftParenthesis = leftParenthesis;
_condition = _becomeParentOf(condition);
@@ -5678,17 +5656,17 @@
..add(_elseStatement);
@override
- Statement get elseStatement => _elseStatement;
+ Statement? get elseStatement => _elseStatement;
@override
- set elseStatement(Statement statement) {
- _elseStatement = _becomeParentOf(statement as StatementImpl);
+ set elseStatement(Statement? statement) {
+ _elseStatement = _becomeParentOf(statement as StatementImpl?);
}
@override
Token get endToken {
if (_elseStatement != null) {
- return _elseStatement.endToken;
+ return _elseStatement!.endToken;
}
return _thenStatement.endToken;
}
@@ -5702,12 +5680,12 @@
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitIfStatement(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitIfStatement(this);
@override
void visitChildren(AstVisitor visitor) {
- _condition?.accept(visitor);
- _thenStatement?.accept(visitor);
+ _condition.accept(visitor);
+ _thenStatement.accept(visitor);
_elseStatement?.accept(visitor);
}
}
@@ -5722,7 +5700,7 @@
Token implementsKeyword;
/// The interfaces that are being implemented.
- NodeList<TypeName> _interfaces;
+ late NodeList<TypeName> _interfaces;
/// Initialize a newly created implements clause.
ImplementsClauseImpl(this.implementsKeyword, List<TypeName> interfaces) {
@@ -5739,13 +5717,13 @@
..addAll(interfaces);
@override
- Token get endToken => _interfaces.endToken;
+ Token get endToken => _interfaces.endToken!;
@override
NodeList<TypeName> get interfaces => _interfaces;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitImplementsClause(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitImplementsClause(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -5766,16 +5744,16 @@
/// The token representing the 'deferred' keyword, or `null` if the imported
/// is not deferred.
@override
- Token deferredKeyword;
+ Token? deferredKeyword;
/// The token representing the 'as' keyword, or `null` if the imported names
/// are not prefixed.
@override
- Token asKeyword;
+ Token? asKeyword;
/// The prefix to be used with the imported names, or `null` if the imported
/// names are not prefixed.
- SimpleIdentifierImpl _prefix;
+ SimpleIdentifierImpl? _prefix;
/// Initialize a newly created import directive. Either or both of the
/// [comment] and [metadata] can be `null` if the function does not have the
@@ -5784,15 +5762,15 @@
/// does not specify a prefix. The list of [combinators] can be `null` if
/// there are no combinators.
ImportDirectiveImpl(
- CommentImpl comment,
- List<Annotation> metadata,
+ CommentImpl? comment,
+ List<Annotation>? metadata,
Token keyword,
StringLiteralImpl libraryUri,
- List<Configuration> configurations,
+ List<Configuration>? configurations,
this.deferredKeyword,
this.asKeyword,
- SimpleIdentifierImpl prefix,
- List<Combinator> combinators,
+ SimpleIdentifierImpl? prefix,
+ List<Combinator>? combinators,
Token semicolon)
: super(comment, metadata, keyword, libraryUri, configurations,
combinators, semicolon) {
@@ -5810,27 +5788,23 @@
..add(semicolon);
@override
- ImportElement get element => super.element as ImportElement;
+ ImportElement? get element => super.element as ImportElement?;
@override
- SimpleIdentifier get prefix => _prefix;
+ SimpleIdentifier? get prefix => _prefix;
@override
- set prefix(SimpleIdentifier identifier) {
- _prefix = _becomeParentOf(identifier as SimpleIdentifierImpl);
+ set prefix(SimpleIdentifier? identifier) {
+ _prefix = _becomeParentOf(identifier as SimpleIdentifierImpl?);
}
@override
- LibraryElement get uriElement {
- ImportElement element = this.element;
- if (element == null) {
- return null;
- }
- return element.importedLibrary;
+ LibraryElement? get uriElement {
+ return element?.importedLibrary;
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitImportDirective(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitImportDirective(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -5849,20 +5823,20 @@
with NullShortableExpressionImpl
implements IndexExpression {
@override
- Token period;
+ Token? period;
/// The expression used to compute the object being indexed, or `null` if this
/// index expression is part of a cascade expression.
- ExpressionImpl _target;
+ ExpressionImpl? _target;
@override
- Token question;
+ Token? question;
@override
Token leftBracket;
/// The expression used to compute the index.
- ExpressionImpl _index;
+ late ExpressionImpl _index;
@override
Token rightBracket;
@@ -5871,7 +5845,7 @@
/// target, or `null` if the AST structure has not been resolved or if the
/// operator could not be resolved.
@override
- MethodElement staticElement;
+ MethodElement? staticElement;
/// Initialize a newly created index expression that is a child of a cascade
/// expression.
@@ -5891,9 +5865,9 @@
@override
Token get beginToken {
if (_target != null) {
- return _target.beginToken;
+ return _target!.beginToken;
}
- return period;
+ return period!;
}
@override
@@ -5929,7 +5903,7 @@
return question != null ||
(leftBracket.type == TokenType.OPEN_SQUARE_BRACKET &&
period != null &&
- period.type == TokenType.QUESTION_PERIOD_PERIOD);
+ period!.type == TokenType.QUESTION_PERIOD_PERIOD);
}
@override
@@ -5940,15 +5914,15 @@
if (isCascaded) {
return _ancestorCascade.target;
}
- return _target;
+ return _target!;
}
@override
- Expression get target => _target;
+ Expression? get target => _target;
@override
- set target(Expression expression) {
- _target = _becomeParentOf(expression as ExpressionImpl);
+ set target(Expression? expression) {
+ _target = _becomeParentOf(expression as ExpressionImpl?);
}
/// Return the cascade that contains this [IndexExpression].
@@ -5956,7 +5930,7 @@
/// We expect that [isCascaded] is `true`.
CascadeExpression get _ancestorCascade {
assert(isCascaded);
- for (var ancestor = parent;; ancestor = ancestor.parent) {
+ for (var ancestor = parent!;; ancestor = ancestor.parent!) {
if (ancestor is CascadeExpression) {
return ancestor;
}
@@ -5964,14 +5938,14 @@
}
@override
- AstNode get _nullShortingExtensionCandidate => parent;
+ AstNode get _nullShortingExtensionCandidate => parent!;
/// If the AST structure has been resolved, and the function being invoked is
/// known based on static type information, then return the parameter element
/// representing the parameter to which the value of the index expression will
/// be bound. Otherwise, return `null`.
- ParameterElement get _staticParameterElementForIndex {
- Element element = staticElement;
+ ParameterElement? get _staticParameterElementForIndex {
+ Element? element = staticElement;
var parent = this.parent;
if (parent is CompoundAssignmentExpression) {
@@ -5990,12 +5964,12 @@
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitIndexExpression(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitIndexExpression(this);
@override
bool inGetterContext() {
// TODO(brianwilkerson) Convert this to a getter.
- AstNode parent = this.parent;
+ AstNode parent = this.parent!;
if (parent is AssignmentExpression) {
AssignmentExpression assignment = parent;
if (identical(assignment.leftHandSide, this) &&
@@ -6009,7 +5983,7 @@
@override
bool inSetterContext() {
// TODO(brianwilkerson) Convert this to a getter.
- AstNode parent = this.parent;
+ AstNode parent = this.parent!;
if (parent is PrefixExpression) {
return parent.operator.type.isIncrementOperator;
} else if (parent is PostfixExpression) {
@@ -6023,7 +5997,7 @@
@override
void visitChildren(AstVisitor visitor) {
_target?.accept(visitor);
- _index?.accept(visitor);
+ _index.accept(visitor);
}
@override
@@ -6044,24 +6018,24 @@
/// The 'new' or 'const' keyword used to indicate how an object should be
/// created, or `null` if the keyword is implicit.
@override
- Token keyword;
+ Token? keyword;
/// The name of the constructor to be invoked.
- ConstructorNameImpl _constructorName;
+ late ConstructorNameImpl _constructorName;
/// The type arguments associated with the constructor, rather than with the
/// class in which the constructor is defined. It is always an error if there
/// are type arguments because Dart doesn't currently support generic
/// constructors, but we capture them in the AST in order to recover better.
- TypeArgumentListImpl _typeArguments;
+ TypeArgumentListImpl? _typeArguments;
/// The list of arguments to the constructor.
- ArgumentListImpl _argumentList;
+ late ArgumentListImpl _argumentList;
/// Initialize a newly created instance creation expression.
InstanceCreationExpressionImpl(this.keyword,
ConstructorNameImpl constructorName, ArgumentListImpl argumentList,
- {TypeArgumentListImpl typeArguments}) {
+ {TypeArgumentListImpl? typeArguments}) {
_constructorName = _becomeParentOf(constructorName);
_typeArguments = _becomeParentOf(typeArguments);
_argumentList = _becomeParentOf(argumentList);
@@ -6099,7 +6073,7 @@
@override
bool get isConst {
if (!isImplicit) {
- return keyword.keyword == Keyword.CONST;
+ return keyword!.keyword == Keyword.CONST;
} else {
return inConstantContext;
}
@@ -6115,25 +6089,25 @@
/// with the class in which the constructor is defined. It is always an error
/// if there are type arguments because Dart doesn't currently support generic
/// constructors, but we capture them in the AST in order to recover better.
- TypeArgumentList get typeArguments => _typeArguments;
+ TypeArgumentList? get typeArguments => _typeArguments;
/// Return the type arguments associated with the constructor, rather than
/// with the class in which the constructor is defined. It is always an error
/// if there are type arguments because Dart doesn't currently support generic
/// constructors, but we capture them in the AST in order to recover better.
- set typeArguments(TypeArgumentList typeArguments) {
- _typeArguments = _becomeParentOf(typeArguments as TypeArgumentListImpl);
+ set typeArguments(TypeArgumentList? typeArguments) {
+ _typeArguments = _becomeParentOf(typeArguments as TypeArgumentListImpl?);
}
@override
- E accept<E>(AstVisitor<E> visitor) =>
+ E? accept<E>(AstVisitor<E> visitor) =>
visitor.visitInstanceCreationExpression(this);
@override
void visitChildren(AstVisitor visitor) {
- _constructorName?.accept(visitor);
+ _constructorName.accept(visitor);
_typeArguments?.accept(visitor);
- _argumentList?.accept(visitor);
+ _argumentList.accept(visitor);
}
}
@@ -6156,7 +6130,7 @@
/// The value of the literal.
@override
- int value = 0;
+ int? value = 0;
/// Initialize a newly created integer literal.
IntegerLiteralImpl(this.literal, this.value);
@@ -6177,13 +6151,13 @@
/// the literal is the child of a negation operation. The literal value itself
/// will always be positive.
bool get immediatelyNegated {
- AstNode parent = this.parent; // Capture for type propagation.
+ AstNode parent = this.parent!; // Capture for type propagation.
return parent is PrefixExpression &&
parent.operator.type == TokenType.MINUS;
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitIntegerLiteral(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitIntegerLiteral(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -6197,7 +6171,7 @@
return true;
}
- BigInt fullPrecision = BigInt.tryParse(lexeme);
+ var fullPrecision = BigInt.tryParse(lexeme);
if (fullPrecision == null) {
return false;
}
@@ -6266,12 +6240,12 @@
/// The expression to be evaluated for the value to be converted into a
/// string.
- ExpressionImpl _expression;
+ late ExpressionImpl _expression;
/// The right curly bracket, or `null` if the expression is an identifier
/// without brackets.
@override
- Token rightBracket;
+ Token? rightBracket;
/// Initialize a newly created interpolation expression.
InterpolationExpressionImpl(
@@ -6287,12 +6261,7 @@
ChildEntities()..add(leftBracket)..add(_expression)..add(rightBracket);
@override
- Token get endToken {
- if (rightBracket != null) {
- return rightBracket;
- }
- return _expression.endToken;
- }
+ Token get endToken => rightBracket ?? _expression.endToken;
@override
Expression get expression => _expression;
@@ -6303,12 +6272,12 @@
}
@override
- E accept<E>(AstVisitor<E> visitor) =>
+ E? accept<E>(AstVisitor<E> visitor) =>
visitor.visitInterpolationExpression(this);
@override
void visitChildren(AstVisitor visitor) {
- _expression?.accept(visitor);
+ _expression.accept(visitor);
}
}
@@ -6346,7 +6315,7 @@
Token get endToken => contents;
@override
- StringInterpolation get parent => super.parent;
+ StringInterpolation get parent => super.parent as StringInterpolation;
StringLexemeHelper get _lexemeHelper {
String lexeme = contents.lexeme;
@@ -6355,7 +6324,7 @@
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitInterpolationString(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitInterpolationString(this);
@override
void visitChildren(AstVisitor visitor) {}
@@ -6366,21 +6335,21 @@
abstract class InvocationExpressionImpl extends ExpressionImpl
implements InvocationExpression {
/// The list of arguments to the function.
- ArgumentListImpl _argumentList;
+ late ArgumentListImpl _argumentList;
/// The type arguments to be applied to the method being invoked, or `null` if
/// no type arguments were provided.
- TypeArgumentListImpl _typeArguments;
+ TypeArgumentListImpl? _typeArguments;
@override
- List<DartType> typeArgumentTypes;
+ List<DartType>? typeArgumentTypes;
@override
- DartType staticInvokeType;
+ DartType? staticInvokeType;
/// Initialize a newly created invocation.
InvocationExpressionImpl(
- TypeArgumentListImpl typeArguments, ArgumentListImpl argumentList) {
+ TypeArgumentListImpl? typeArguments, ArgumentListImpl argumentList) {
_typeArguments = _becomeParentOf(typeArguments);
_argumentList = _becomeParentOf(argumentList);
}
@@ -6393,10 +6362,10 @@
}
@override
- TypeArgumentList get typeArguments => _typeArguments;
+ TypeArgumentList? get typeArguments => _typeArguments;
- set typeArguments(TypeArgumentList typeArguments) {
- _typeArguments = _becomeParentOf(typeArguments as TypeArgumentListImpl);
+ set typeArguments(TypeArgumentList? typeArguments) {
+ _typeArguments = _becomeParentOf(typeArguments as TypeArgumentListImpl?);
}
}
@@ -6406,7 +6375,7 @@
/// [Expression] 'is' '!'? [TypeName]
class IsExpressionImpl extends ExpressionImpl implements IsExpression {
/// The expression used to compute the value whose type is being tested.
- ExpressionImpl _expression;
+ late ExpressionImpl _expression;
/// The is operator.
@override
@@ -6414,10 +6383,10 @@
/// The not operator, or `null` if the sense of the test is not negated.
@override
- Token notOperator;
+ Token? notOperator;
/// The name of the type being tested for.
- TypeAnnotationImpl _type;
+ late TypeAnnotationImpl _type;
/// Initialize a newly created is expression. The [notOperator] can be `null`
/// if the sense of the test is not negated.
@@ -6460,12 +6429,12 @@
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitIsExpression(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitIsExpression(this);
@override
void visitChildren(AstVisitor visitor) {
- _expression?.accept(visitor);
- _type?.accept(visitor);
+ _expression.accept(visitor);
+ _type.accept(visitor);
}
}
@@ -6475,10 +6444,10 @@
/// [Label]+ [Statement]
class LabeledStatementImpl extends StatementImpl implements LabeledStatement {
/// The labels being associated with the statement.
- NodeList<Label> _labels;
+ late NodeList<Label> _labels;
/// The statement with which the labels are being associated.
- StatementImpl _statement;
+ late StatementImpl _statement;
/// Initialize a newly created labeled statement.
LabeledStatementImpl(List<Label> labels, StatementImpl statement) {
@@ -6489,7 +6458,7 @@
@override
Token get beginToken {
if (_labels.isNotEmpty) {
- return _labels.beginToken;
+ return _labels.beginToken!;
}
return _statement.beginToken;
}
@@ -6517,12 +6486,12 @@
Statement get unlabeled => _statement.unlabeled;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitLabeledStatement(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitLabeledStatement(this);
@override
void visitChildren(AstVisitor visitor) {
_labels.accept(visitor);
- _statement?.accept(visitor);
+ _statement.accept(visitor);
}
}
@@ -6532,7 +6501,7 @@
/// [SimpleIdentifier] ':'
class LabelImpl extends AstNodeImpl implements Label {
/// The label being associated with the statement.
- SimpleIdentifierImpl _label;
+ late SimpleIdentifierImpl _label;
/// The colon that separates the label from the statement.
@override
@@ -6562,11 +6531,11 @@
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitLabel(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitLabel(this);
@override
void visitChildren(AstVisitor visitor) {
- _label?.accept(visitor);
+ _label.accept(visitor);
}
}
@@ -6580,7 +6549,7 @@
Token libraryKeyword;
/// The name of the library being defined.
- LibraryIdentifierImpl _name;
+ late LibraryIdentifierImpl _name;
/// The semicolon terminating the directive.
@override
@@ -6589,12 +6558,12 @@
/// Data that is read during loading this node from summary, but is not
/// fully applied yet. For example in many cases we don't need the
/// documentation comment, and it is expensive to decode strings.
- Object summaryData;
+ Object? summaryData;
/// Initialize a newly created library directive. Either or both of the
/// [comment] and [metadata] can be `null` if the directive does not have the
/// corresponding attribute.
- LibraryDirectiveImpl(CommentImpl comment, List<Annotation> metadata,
+ LibraryDirectiveImpl(CommentImpl? comment, List<Annotation>? metadata,
this.libraryKeyword, LibraryIdentifierImpl name, this.semicolon)
: super(comment, metadata) {
_name = _becomeParentOf(name);
@@ -6622,12 +6591,12 @@
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitLibraryDirective(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitLibraryDirective(this);
@override
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
- _name?.accept(visitor);
+ _name.accept(visitor);
}
}
@@ -6638,7 +6607,7 @@
class LibraryIdentifierImpl extends IdentifierImpl
implements LibraryIdentifier {
/// The components of the identifier.
- NodeList<SimpleIdentifier> _components;
+ late NodeList<SimpleIdentifier> _components;
/// Initialize a newly created prefixed identifier.
LibraryIdentifierImpl(List<SimpleIdentifier> components) {
@@ -6646,7 +6615,7 @@
}
@override
- Token get beginToken => _components.beginToken;
+ Token get beginToken => _components.beginToken!;
@override
// TODO(paulberry): add "." tokens.
@@ -6657,7 +6626,7 @@
NodeList<SimpleIdentifier> get components => _components;
@override
- Token get endToken => _components.endToken;
+ Token get endToken => _components.endToken!;
@override
String get name {
@@ -6680,10 +6649,10 @@
Precedence get precedence => Precedence.postfix;
@override
- Element get staticElement => null;
+ Element? get staticElement => null;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitLibraryIdentifier(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitLibraryIdentifier(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -6697,7 +6666,7 @@
Token leftBracket;
/// The expressions used to compute the elements of the list.
- NodeList<CollectionElement> _elements;
+ late NodeList<CollectionElement> _elements;
/// The right square bracket.
@override
@@ -6707,7 +6676,7 @@
/// if the literal is not a constant. The [typeArguments] can be `null` if no
/// type arguments were declared. The list of [elements] can be `null` if the
/// list is empty.
- ListLiteralImpl(Token constKeyword, TypeArgumentListImpl typeArguments,
+ ListLiteralImpl(Token? constKeyword, TypeArgumentListImpl? typeArguments,
this.leftBracket, List<Expression> elements, this.rightBracket)
: super(constKeyword, typeArguments) {
_elements = NodeListImpl<Expression>(this, elements);
@@ -6719,8 +6688,8 @@
/// [typeArguments] can be `null` if no type arguments were declared. The list
/// of [elements] can be `null` if the list is empty.
ListLiteralImpl.experimental(
- Token constKeyword,
- TypeArgumentListImpl typeArguments,
+ Token? constKeyword,
+ TypeArgumentListImpl? typeArguments,
this.leftBracket,
List<CollectionElement> elements,
this.rightBracket)
@@ -6731,9 +6700,9 @@
@override
Token get beginToken {
if (constKeyword != null) {
- return constKeyword;
+ return constKeyword!;
}
- TypeArgumentList typeArguments = this.typeArguments;
+ var typeArguments = this.typeArguments;
if (typeArguments != null) {
return typeArguments.beginToken;
}
@@ -6754,7 +6723,7 @@
Token get endToken => rightBracket;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitListLiteral(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitListLiteral(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -6798,14 +6767,14 @@
class MapLiteralEntryImpl extends CollectionElementImpl
implements MapLiteralEntry {
/// The expression computing the key with which the value will be associated.
- ExpressionImpl _key;
+ late ExpressionImpl _key;
/// The colon that separates the key from the value.
@override
Token separator;
/// The expression computing the value that will be associated with the key.
- ExpressionImpl _value;
+ late ExpressionImpl _value;
/// Initialize a newly created map literal entry.
MapLiteralEntryImpl(
@@ -6841,12 +6810,12 @@
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitMapLiteralEntry(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitMapLiteralEntry(this);
@override
void visitChildren(AstVisitor visitor) {
- _key?.accept(visitor);
- _value?.accept(visitor);
+ _key.accept(visitor);
+ _value.accept(visitor);
}
}
@@ -6868,39 +6837,39 @@
/// The token for the 'external' keyword, or `null` if the constructor is not
/// external.
@override
- Token externalKeyword;
+ Token? externalKeyword;
/// The token representing the 'abstract' or 'static' keyword, or `null` if
/// neither modifier was specified.
@override
- Token modifierKeyword;
+ Token? modifierKeyword;
/// The return type of the method, or `null` if no return type was declared.
- TypeAnnotationImpl _returnType;
+ TypeAnnotationImpl? _returnType;
/// The token representing the 'get' or 'set' keyword, or `null` if this is a
/// method declaration rather than a property declaration.
@override
- Token propertyKeyword;
+ Token? propertyKeyword;
/// The token representing the 'operator' keyword, or `null` if this method
/// does not declare an operator.
@override
- Token operatorKeyword;
+ Token? operatorKeyword;
/// The name of the method.
- SimpleIdentifierImpl _name;
+ late SimpleIdentifierImpl _name;
/// The type parameters associated with the method, or `null` if the method is
/// not a generic method.
- TypeParameterListImpl _typeParameters;
+ TypeParameterListImpl? _typeParameters;
/// The parameters associated with the method, or `null` if this method
/// declares a getter.
- FormalParameterListImpl _parameters;
+ FormalParameterListImpl? _parameters;
/// The body of the method.
- FunctionBodyImpl _body;
+ late FunctionBodyImpl _body;
/// Initialize a newly created method declaration. Either or both of the
/// [comment] and [metadata] can be `null` if the declaration does not have
@@ -6912,16 +6881,16 @@
/// `null` if the method does not implement an operator. The [parameters] must
/// be `null` if this method declares a getter.
MethodDeclarationImpl(
- CommentImpl comment,
- List<Annotation> metadata,
+ CommentImpl? comment,
+ List<Annotation>? metadata,
this.externalKeyword,
this.modifierKeyword,
- TypeAnnotationImpl returnType,
+ TypeAnnotationImpl? returnType,
this.propertyKeyword,
this.operatorKeyword,
SimpleIdentifierImpl name,
- TypeParameterListImpl typeParameters,
- FormalParameterListImpl parameters,
+ TypeParameterListImpl? typeParameters,
+ FormalParameterListImpl? parameters,
FunctionBodyImpl body)
: super(comment, metadata) {
_returnType = _becomeParentOf(returnType);
@@ -6956,8 +6925,8 @@
/// a [PropertyAccessorElement] if this represents the declaration of either a
/// getter or a setter.
@override
- ExecutableElement get declaredElement =>
- _name?.staticElement as ExecutableElement;
+ ExecutableElement? get declaredElement =>
+ _name.staticElement as ExecutableElement?;
@override
Token get endToken => _body.endToken;
@@ -6965,15 +6934,15 @@
@override
Token get firstTokenAfterCommentAndMetadata {
if (externalKeyword != null) {
- return externalKeyword;
+ return externalKeyword!;
} else if (modifierKeyword != null) {
- return modifierKeyword;
+ return modifierKeyword!;
} else if (_returnType != null) {
- return _returnType.beginToken;
+ return _returnType!.beginToken;
} else if (propertyKeyword != null) {
- return propertyKeyword;
+ return propertyKeyword!;
} else if (operatorKeyword != null) {
- return operatorKeyword;
+ return operatorKeyword!;
}
return _name.beginToken;
}
@@ -7006,40 +6975,40 @@
}
@override
- FormalParameterList get parameters => _parameters;
+ FormalParameterList? get parameters => _parameters;
@override
- set parameters(FormalParameterList parameters) {
- _parameters = _becomeParentOf(parameters as FormalParameterListImpl);
+ set parameters(FormalParameterList? parameters) {
+ _parameters = _becomeParentOf(parameters as FormalParameterListImpl?);
}
@override
- TypeAnnotation get returnType => _returnType;
+ TypeAnnotation? get returnType => _returnType;
@override
- set returnType(TypeAnnotation type) {
- _returnType = _becomeParentOf(type as TypeAnnotationImpl);
+ set returnType(TypeAnnotation? type) {
+ _returnType = _becomeParentOf(type as TypeAnnotationImpl?);
}
@override
- TypeParameterList get typeParameters => _typeParameters;
+ TypeParameterList? get typeParameters => _typeParameters;
@override
- set typeParameters(TypeParameterList typeParameters) {
- _typeParameters = _becomeParentOf(typeParameters as TypeParameterListImpl);
+ set typeParameters(TypeParameterList? typeParameters) {
+ _typeParameters = _becomeParentOf(typeParameters as TypeParameterListImpl?);
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitMethodDeclaration(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitMethodDeclaration(this);
@override
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
_returnType?.accept(visitor);
- _name?.accept(visitor);
+ _name.accept(visitor);
_typeParameters?.accept(visitor);
_parameters?.accept(visitor);
- _body?.accept(visitor);
+ _body.accept(visitor);
}
}
@@ -7056,29 +7025,29 @@
implements MethodInvocation {
/// The expression producing the object on which the method is defined, or
/// `null` if there is no target (that is, the target is implicitly `this`).
- ExpressionImpl _target;
+ ExpressionImpl? _target;
/// The operator that separates the target from the method name, or `null`
/// if there is no target. In an ordinary method invocation this will be a
/// period ('.'). In a cascade section this will be the cascade operator
/// ('..' | '?..').
@override
- Token operator;
+ Token? operator;
/// The name of the method being invoked.
- SimpleIdentifierImpl _methodName;
+ late SimpleIdentifierImpl _methodName;
/// The invoke type of the [methodName] if the target element is a getter,
/// or `null` otherwise.
- DartType _methodNameType;
+ DartType? _methodNameType;
/// Initialize a newly created method invocation. The [target] and [operator]
/// can be `null` if there is no target.
MethodInvocationImpl(
- ExpressionImpl target,
+ ExpressionImpl? target,
this.operator,
SimpleIdentifierImpl methodName,
- TypeArgumentListImpl typeArguments,
+ TypeArgumentListImpl? typeArguments,
ArgumentListImpl argumentList)
: super(typeArguments, argumentList) {
_target = _becomeParentOf(target);
@@ -7088,9 +7057,9 @@
@override
Token get beginToken {
if (_target != null) {
- return _target.beginToken;
+ return _target!.beginToken;
} else if (operator != null) {
- return operator;
+ return operator!;
}
return _methodName.beginToken;
}
@@ -7111,8 +7080,8 @@
@override
bool get isCascaded =>
operator != null &&
- (operator.type == TokenType.PERIOD_PERIOD ||
- operator.type == TokenType.QUESTION_PERIOD_PERIOD);
+ (operator!.type == TokenType.PERIOD_PERIOD ||
+ operator!.type == TokenType.QUESTION_PERIOD_PERIOD);
@override
bool get isNullAware {
@@ -7120,8 +7089,8 @@
return _ancestorCascade.isNullAware;
}
return operator != null &&
- (operator.type == TokenType.QUESTION_PERIOD ||
- operator.type == TokenType.QUESTION_PERIOD_PERIOD);
+ (operator!.type == TokenType.QUESTION_PERIOD ||
+ operator!.type == TokenType.QUESTION_PERIOD_PERIOD);
}
@override
@@ -7139,12 +7108,12 @@
/// returning an [ExecutableElement] so that it can be invoked in this
/// [MethodInvocation], then this type is the type of the getter, and the
/// [staticInvokeType] is the invoked type of the returned element.
- DartType get methodNameType => _methodNameType ?? staticInvokeType;
+ DartType? get methodNameType => _methodNameType ?? staticInvokeType;
/// Set the [methodName] invoke type, only if the target element is a getter.
/// Otherwise, the target element itself is invoked, [_methodNameType] is
/// `null`, and the getter will return [staticInvokeType].
- set methodNameType(DartType methodNameType) {
+ set methodNameType(DartType? methodNameType) {
_methodNameType = methodNameType;
}
@@ -7152,7 +7121,7 @@
Precedence get precedence => Precedence.postfix;
@override
- Expression get realTarget {
+ Expression? get realTarget {
if (isCascaded) {
return _ancestorCascade.target;
}
@@ -7160,11 +7129,11 @@
}
@override
- Expression get target => _target;
+ Expression? get target => _target;
@override
- set target(Expression expression) {
- _target = _becomeParentOf(expression as ExpressionImpl);
+ set target(Expression? expression) {
+ _target = _becomeParentOf(expression as ExpressionImpl?);
}
/// Return the cascade that contains this [IndexExpression].
@@ -7172,7 +7141,7 @@
/// We expect that [isCascaded] is `true`.
CascadeExpression get _ancestorCascade {
assert(isCascaded);
- for (var ancestor = parent;; ancestor = ancestor.parent) {
+ for (var ancestor = parent!;; ancestor = ancestor.parent!) {
if (ancestor is CascadeExpression) {
return ancestor;
}
@@ -7180,17 +7149,17 @@
}
@override
- AstNode get _nullShortingExtensionCandidate => parent;
+ AstNode? get _nullShortingExtensionCandidate => parent;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitMethodInvocation(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitMethodInvocation(this);
@override
void visitChildren(AstVisitor visitor) {
_target?.accept(visitor);
- _methodName?.accept(visitor);
+ _methodName.accept(visitor);
_typeArguments?.accept(visitor);
- _argumentList?.accept(visitor);
+ _argumentList.accept(visitor);
}
@override
@@ -7210,7 +7179,7 @@
/// The on clause for the mixin, or `null` if the mixin does not have any
/// super-class constraints.
- OnClauseImpl _onClause;
+ OnClauseImpl? _onClause;
/// Initialize a newly created mixin declaration. Either or both of the
/// [comment] and [metadata] can be `null` if the mixin does not have the
@@ -7220,13 +7189,13 @@
/// corresponding clause. The list of [members] can be `null` if the mixin
/// does not have any members.
MixinDeclarationImpl(
- CommentImpl comment,
- List<Annotation> metadata,
+ CommentImpl? comment,
+ List<Annotation>? metadata,
this.mixinKeyword,
SimpleIdentifierImpl name,
- TypeParameterListImpl typeParameters,
- OnClauseImpl onClause,
- ImplementsClauseImpl implementsClause,
+ TypeParameterListImpl? typeParameters,
+ OnClauseImpl? onClause,
+ ImplementsClauseImpl? implementsClause,
Token leftBracket,
List<ClassMember> members,
Token rightBracket)
@@ -7247,7 +7216,7 @@
..add(rightBracket);
@override
- ClassElement get declaredElement => _name?.staticElement as ClassElement;
+ ClassElement? get declaredElement => _name.staticElement as ClassElement?;
@override
Token get firstTokenAfterCommentAndMetadata {
@@ -7255,10 +7224,10 @@
}
@override
- ImplementsClause get implementsClause => _implementsClause;
+ ImplementsClause? get implementsClause => _implementsClause;
@override
- set implementsClause(ImplementsClause implementsClause) {
+ set implementsClause(ImplementsClause? implementsClause) {
_implementsClause =
_becomeParentOf(implementsClause as ImplementsClauseImpl);
}
@@ -7267,28 +7236,27 @@
NodeList<ClassMember> get members => _members;
@override
- OnClause get onClause => _onClause;
+ OnClause? get onClause => _onClause;
- set onClause(OnClause onClause) {
- _onClause = _becomeParentOf(onClause as OnClauseImpl);
+ set onClause(OnClause? onClause) {
+ _onClause = _becomeParentOf(onClause as OnClauseImpl?);
}
@override
- @override
- TypeParameterList get typeParameters => _typeParameters;
+ TypeParameterList? get typeParameters => _typeParameters;
@override
- set typeParameters(TypeParameterList typeParameters) {
- _typeParameters = _becomeParentOf(typeParameters as TypeParameterListImpl);
+ set typeParameters(TypeParameterList? typeParameters) {
+ _typeParameters = _becomeParentOf(typeParameters as TypeParameterListImpl?);
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitMixinDeclaration(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitMixinDeclaration(this);
@override
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
- _name?.accept(visitor);
+ _name.accept(visitor);
_typeParameters?.accept(visitor);
_onClause?.accept(visitor);
_implementsClause?.accept(visitor);
@@ -7300,13 +7268,13 @@
abstract class NamedCompilationUnitMemberImpl extends CompilationUnitMemberImpl
implements NamedCompilationUnitMember {
/// The name of the member being declared.
- SimpleIdentifierImpl _name;
+ late SimpleIdentifierImpl _name;
/// Initialize a newly created compilation unit member with the given [name].
/// Either or both of the [comment] and [metadata] can be `null` if the member
/// does not have the corresponding attribute.
- NamedCompilationUnitMemberImpl(
- CommentImpl comment, List<Annotation> metadata, SimpleIdentifierImpl name)
+ NamedCompilationUnitMemberImpl(CommentImpl? comment,
+ List<Annotation>? metadata, SimpleIdentifierImpl name)
: super(comment, metadata) {
_name = _becomeParentOf(name);
}
@@ -7327,10 +7295,10 @@
/// [Label] [Expression]
class NamedExpressionImpl extends ExpressionImpl implements NamedExpression {
/// The name associated with the expression.
- LabelImpl _name;
+ late LabelImpl _name;
/// The expression with which the name is associated.
- ExpressionImpl _expression;
+ late ExpressionImpl _expression;
/// Initialize a newly created named expression..
NamedExpressionImpl(LabelImpl name, ExpressionImpl expression) {
@@ -7346,8 +7314,8 @@
ChildEntities()..add(_name)..add(_expression);
@override
- ParameterElement get element {
- Element element = _name.label.staticElement;
+ ParameterElement? get element {
+ var element = _name.label.staticElement;
if (element is ParameterElement) {
return element;
}
@@ -7377,12 +7345,12 @@
Precedence get precedence => Precedence.none;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitNamedExpression(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitNamedExpression(this);
@override
void visitChildren(AstVisitor visitor) {
- _name?.accept(visitor);
- _expression?.accept(visitor);
+ _name.accept(visitor);
+ _expression.accept(visitor);
}
}
@@ -7399,32 +7367,32 @@
/// The configurations used to control which library will actually be loaded
/// at run-time.
- NodeList<Configuration> _configurations;
+ late NodeList<Configuration> _configurations;
/// The combinators used to control which names are imported or exported.
- NodeList<Combinator> _combinators;
+ late NodeList<Combinator> _combinators;
/// The semicolon terminating the directive.
@override
Token semicolon;
@override
- String selectedUriContent;
+ String? selectedUriContent;
@override
- Source selectedSource;
+ Source? selectedSource;
/// Initialize a newly created namespace directive. Either or both of the
/// [comment] and [metadata] can be `null` if the directive does not have the
/// corresponding attribute. The list of [combinators] can be `null` if there
/// are no combinators.
NamespaceDirectiveImpl(
- CommentImpl comment,
- List<Annotation> metadata,
+ CommentImpl? comment,
+ List<Annotation>? metadata,
this.keyword,
StringLiteralImpl libraryUri,
- List<Configuration> configurations,
- List<Combinator> combinators,
+ List<Configuration>? configurations,
+ List<Combinator>? combinators,
this.semicolon)
: super(comment, metadata, libraryUri) {
_configurations = NodeListImpl<Configuration>(this, configurations);
@@ -7444,7 +7412,7 @@
Token get firstTokenAfterCommentAndMetadata => keyword;
@override
- LibraryElement get uriElement;
+ LibraryElement? get uriElement;
}
/// The "native" clause in an class declaration.
@@ -7457,10 +7425,10 @@
Token nativeKeyword;
/// The name of the native object that implements the class.
- StringLiteralImpl _name;
+ StringLiteralImpl? _name;
/// Initialize a newly created native clause.
- NativeClauseImpl(this.nativeKeyword, StringLiteralImpl name) {
+ NativeClauseImpl(this.nativeKeyword, StringLiteralImpl? name) {
_name = _becomeParentOf(name);
}
@@ -7472,18 +7440,20 @@
ChildEntities()..add(nativeKeyword)..add(_name);
@override
- Token get endToken => _name.endToken;
-
- @override
- StringLiteral get name => _name;
-
- @override
- set name(StringLiteral name) {
- _name = _becomeParentOf(name as StringLiteralImpl);
+ Token get endToken {
+ return _name?.endToken ?? nativeKeyword;
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitNativeClause(this);
+ StringLiteral? get name => _name;
+
+ @override
+ set name(StringLiteral? name) {
+ _name = _becomeParentOf(name as StringLiteralImpl?);
+ }
+
+ @override
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitNativeClause(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -7503,7 +7473,7 @@
Token nativeKeyword;
/// The string literal, after the 'native' token.
- StringLiteralImpl _stringLiteral;
+ StringLiteralImpl? _stringLiteral;
/// The token representing the semicolon that marks the end of the function
/// body.
@@ -7513,7 +7483,7 @@
/// Initialize a newly created function body consisting of the 'native' token,
/// a string literal, and a semicolon.
NativeFunctionBodyImpl(
- this.nativeKeyword, StringLiteralImpl stringLiteral, this.semicolon) {
+ this.nativeKeyword, StringLiteralImpl? stringLiteral, this.semicolon) {
_stringLiteral = _becomeParentOf(stringLiteral);
}
@@ -7528,15 +7498,15 @@
Token get endToken => semicolon;
@override
- StringLiteral get stringLiteral => _stringLiteral;
+ StringLiteral? get stringLiteral => _stringLiteral;
@override
- set stringLiteral(StringLiteral stringLiteral) {
- _stringLiteral = _becomeParentOf(stringLiteral as StringLiteralImpl);
+ set stringLiteral(StringLiteral? stringLiteral) {
+ _stringLiteral = _becomeParentOf(stringLiteral as StringLiteralImpl?);
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitNativeFunctionBody(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitNativeFunctionBody(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -7555,12 +7525,12 @@
/// Initialize a newly created list of nodes such that all of the nodes that
/// are added to the list will have their parent set to the given [owner]. The
/// list will initially be populated with the given [elements].
- NodeListImpl(this._owner, [List<E> elements]) {
+ NodeListImpl(this._owner, [List<E>? elements]) {
addAll(elements);
}
@override
- Token get beginToken {
+ Token? get beginToken {
if (_elements.isEmpty) {
return null;
}
@@ -7568,7 +7538,7 @@
}
@override
- Token get endToken {
+ Token? get endToken {
int length = _elements.length;
if (length == 0) {
return null;
@@ -7618,7 +7588,7 @@
}
@override
- bool addAll(Iterable<E> nodes) {
+ bool addAll(Iterable<E>? nodes) {
if (nodes != null && nodes.isNotEmpty) {
if (nodes is List<E>) {
int length = nodes.length;
@@ -7691,55 +7661,55 @@
implements NormalFormalParameter {
/// The documentation comment associated with this parameter, or `null` if
/// this parameter does not have a documentation comment associated with it.
- CommentImpl _comment;
+ CommentImpl? _comment;
/// The annotations associated with this parameter.
- NodeList<Annotation> _metadata;
+ late NodeList<Annotation> _metadata;
/// The 'covariant' keyword, or `null` if the keyword was not used.
@override
- Token covariantKeyword;
+ Token? covariantKeyword;
/// The 'required' keyword, or `null` if the keyword was not used.
@override
- Token requiredKeyword;
+ Token? requiredKeyword;
/// The name of the parameter being declared.
- SimpleIdentifierImpl _identifier;
+ SimpleIdentifierImpl? _identifier;
/// Initialize a newly created formal parameter. Either or both of the
/// [comment] and [metadata] can be `null` if the parameter does not have the
/// corresponding attribute.
NormalFormalParameterImpl(
- CommentImpl comment,
- List<Annotation> metadata,
+ CommentImpl? comment,
+ List<Annotation>? metadata,
this.covariantKeyword,
this.requiredKeyword,
- SimpleIdentifierImpl identifier) {
+ SimpleIdentifierImpl? identifier) {
_comment = _becomeParentOf(comment);
_metadata = NodeListImpl<Annotation>(this, metadata);
_identifier = _becomeParentOf(identifier);
}
@override
- Comment get documentationComment => _comment;
+ Comment? get documentationComment => _comment;
@override
- set documentationComment(Comment comment) {
- _comment = _becomeParentOf(comment as CommentImpl);
+ set documentationComment(Comment? comment) {
+ _comment = _becomeParentOf(comment as CommentImpl?);
}
@override
- SimpleIdentifier get identifier => _identifier;
+ SimpleIdentifier? get identifier => _identifier;
@override
- set identifier(SimpleIdentifier identifier) {
- _identifier = _becomeParentOf(identifier as SimpleIdentifierImpl);
+ set identifier(SimpleIdentifier? identifier) {
+ _identifier = _becomeParentOf(identifier as SimpleIdentifierImpl?);
}
@override
ParameterKind get kind {
- AstNode parent = this.parent;
+ var parent = this.parent;
if (parent is DefaultFormalParameterImpl) {
return parent.kind;
}
@@ -7758,7 +7728,7 @@
@override
List<AstNode> get sortedCommentAndAnnotations {
return <AstNode>[]
- ..add(_comment)
+ ..add(_comment!)
..addAll(_metadata)
..sort(AstNode.LEXICAL_ORDER);
}
@@ -7800,7 +7770,7 @@
return true;
}
Annotation firstAnnotation = _metadata[0];
- return _comment.offset < firstAnnotation.offset;
+ return _comment!.offset < firstAnnotation.offset;
}
}
@@ -7826,7 +7796,7 @@
Token get endToken => literal;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitNullLiteral(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitNullLiteral(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -7854,7 +7824,7 @@
/// Usually this is just the node's parent, however if `this` is the base of
/// a cascade section, it will be the cascade expression itself, which may be
/// a more distant ancestor.
- AstNode get _nullShortingExtensionCandidate;
+ AstNode? get _nullShortingExtensionCandidate;
/// Indicates whether the effect of any null-shorting within [descendant]
/// (which should be a descendant of `this`) should extend to include `this`.
@@ -7870,7 +7840,7 @@
Token onKeyword;
/// The classes are super-class constraints for the mixin.
- NodeList<TypeName> _superclassConstraints;
+ late NodeList<TypeName> _superclassConstraints;
/// Initialize a newly created on clause.
OnClauseImpl(this.onKeyword, List<TypeName> superclassConstraints) {
@@ -7888,13 +7858,13 @@
..addAll(superclassConstraints);
@override
- Token get endToken => _superclassConstraints.endToken;
+ Token get endToken => _superclassConstraints.endToken!;
@override
NodeList<TypeName> get superclassConstraints => _superclassConstraints;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitOnClause(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitOnClause(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -7913,7 +7883,7 @@
Token leftParenthesis;
/// The expression within the parentheses.
- ExpressionImpl _expression;
+ late ExpressionImpl _expression;
/// The right parenthesis.
@override
@@ -7954,18 +7924,18 @@
// degenerate case.
Expression expression = _expression;
while (expression is ParenthesizedExpressionImpl) {
- expression = (expression as ParenthesizedExpressionImpl)._expression;
+ expression = expression._expression;
}
return expression;
}
@override
- E accept<E>(AstVisitor<E> visitor) =>
+ E? accept<E>(AstVisitor<E> visitor) =>
visitor.visitParenthesizedExpression(this);
@override
void visitChildren(AstVisitor visitor) {
- _expression?.accept(visitor);
+ _expression.accept(visitor);
}
}
@@ -7985,7 +7955,7 @@
/// Initialize a newly created part directive. Either or both of the [comment]
/// and [metadata] can be `null` if the directive does not have the
/// corresponding attribute.
- PartDirectiveImpl(CommentImpl comment, List<Annotation> metadata,
+ PartDirectiveImpl(CommentImpl? comment, List<Annotation>? metadata,
this.partKeyword, StringLiteralImpl partUri, this.semicolon)
: super(comment, metadata, partUri);
@@ -8003,10 +7973,10 @@
Token get keyword => partKeyword;
@override
- CompilationUnitElement get uriElement => element as CompilationUnitElement;
+ CompilationUnitElement? get uriElement => element as CompilationUnitElement?;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitPartDirective(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitPartDirective(this);
}
/// A part-of directive.
@@ -8023,12 +7993,12 @@
Token ofKeyword;
/// The URI of the library that the containing compilation unit is part of.
- StringLiteralImpl _uri;
+ StringLiteralImpl? _uri;
/// The name of the library that the containing compilation unit is part of,
/// or `null` if no name was given (typically because a library URI was
/// provided).
- LibraryIdentifierImpl _libraryName;
+ LibraryIdentifierImpl? _libraryName;
/// The semicolon terminating the directive.
@override
@@ -8038,12 +8008,12 @@
/// [comment] and [metadata] can be `null` if the directive does not have the
/// corresponding attribute.
PartOfDirectiveImpl(
- CommentImpl comment,
- List<Annotation> metadata,
+ CommentImpl? comment,
+ List<Annotation>? metadata,
this.partKeyword,
this.ofKeyword,
- StringLiteralImpl uri,
- LibraryIdentifierImpl libraryName,
+ StringLiteralImpl? uri,
+ LibraryIdentifierImpl? libraryName,
this.semicolon)
: super(comment, metadata) {
_uri = _becomeParentOf(uri);
@@ -8068,23 +8038,23 @@
Token get keyword => partKeyword;
@override
- LibraryIdentifier get libraryName => _libraryName;
+ LibraryIdentifier? get libraryName => _libraryName;
@override
- set libraryName(LibraryIdentifier libraryName) {
- _libraryName = _becomeParentOf(libraryName as LibraryIdentifierImpl);
+ set libraryName(LibraryIdentifier? libraryName) {
+ _libraryName = _becomeParentOf(libraryName as LibraryIdentifierImpl?);
}
@override
- StringLiteral get uri => _uri;
+ StringLiteral? get uri => _uri;
@override
- set uri(StringLiteral uri) {
- _uri = _becomeParentOf(uri as StringLiteralImpl);
+ set uri(StringLiteral? uri) {
+ _uri = _becomeParentOf(uri as StringLiteralImpl?);
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitPartOfDirective(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitPartOfDirective(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -8102,7 +8072,7 @@
with NullShortableExpressionImpl, CompoundAssignmentExpressionImpl
implements PostfixExpression {
/// The expression computing the operand for the operator.
- ExpressionImpl _operand;
+ late ExpressionImpl _operand;
/// The postfix operator being applied to the operand.
@override
@@ -8112,7 +8082,7 @@
/// operand, or `null` if the AST structure has not been resolved, if the
/// operator is not user definable, or if the operator could not be resolved.
@override
- MethodElement staticElement;
+ MethodElement? staticElement;
/// Initialize a newly created postfix expression.
PostfixExpressionImpl(ExpressionImpl operand, this.operator) {
@@ -8141,17 +8111,17 @@
Precedence get precedence => Precedence.postfix;
@override
- AstNode get _nullShortingExtensionCandidate => parent;
+ AstNode? get _nullShortingExtensionCandidate => parent;
/// If the AST structure has been resolved, and the function being invoked is
/// known based on static type information, then return the parameter element
/// representing the parameter to which the value of the operand will be
/// bound. Otherwise, return `null`.
- ParameterElement get _staticParameterElementForOperand {
+ ParameterElement? get _staticParameterElementForOperand {
if (staticElement == null) {
return null;
}
- List<ParameterElement> parameters = staticElement.parameters;
+ List<ParameterElement> parameters = staticElement!.parameters;
if (parameters.isEmpty) {
return null;
}
@@ -8159,11 +8129,11 @@
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitPostfixExpression(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitPostfixExpression(this);
@override
void visitChildren(AstVisitor visitor) {
- _operand?.accept(visitor);
+ _operand.accept(visitor);
}
@override
@@ -8178,14 +8148,14 @@
class PrefixedIdentifierImpl extends IdentifierImpl
implements PrefixedIdentifier {
/// The prefix associated with the library in which the identifier is defined.
- SimpleIdentifierImpl _prefix;
+ late SimpleIdentifierImpl _prefix;
/// The period used to separate the prefix from the identifier.
@override
Token period;
/// The identifier being prefixed.
- SimpleIdentifierImpl _identifier;
+ late SimpleIdentifierImpl _identifier;
/// Initialize a newly created prefixed identifier.
PrefixedIdentifierImpl(SimpleIdentifierImpl prefix, this.period,
@@ -8194,11 +8164,6 @@
_identifier = _becomeParentOf(identifier);
}
- /// Initialize a newly created prefixed identifier that does not take
- /// ownership of the components. The resulting node is only for temporary use,
- /// such as by resolution.
- PrefixedIdentifierImpl.temp(this._prefix, this._identifier) : period = null;
-
@override
Token get beginToken => _prefix.beginToken;
@@ -8219,7 +8184,7 @@
@override
bool get isDeferred {
- Element element = _prefix.staticElement;
+ Element? element = _prefix.staticElement;
if (element is PrefixElement) {
List<ImportElement> imports =
element.enclosingElement.getImportsWithPrefix(element);
@@ -8246,20 +8211,17 @@
}
@override
- Element get staticElement {
- if (_identifier == null) {
- return null;
- }
+ Element? get staticElement {
return _identifier.staticElement;
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitPrefixedIdentifier(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitPrefixedIdentifier(this);
@override
void visitChildren(AstVisitor visitor) {
- _prefix?.accept(visitor);
- _identifier?.accept(visitor);
+ _prefix.accept(visitor);
+ _identifier.accept(visitor);
}
}
@@ -8275,13 +8237,13 @@
Token operator;
/// The expression computing the operand for the operator.
- ExpressionImpl _operand;
+ late ExpressionImpl _operand;
/// The element associated with the operator based on the static type of the
/// operand, or `null` if the AST structure has not been resolved, if the
/// operator is not user definable, or if the operator could not be resolved.
@override
- MethodElement staticElement;
+ MethodElement? staticElement;
/// Initialize a newly created prefix expression.
PrefixExpressionImpl(this.operator, ExpressionImpl operand) {
@@ -8310,17 +8272,17 @@
Precedence get precedence => Precedence.prefix;
@override
- AstNode get _nullShortingExtensionCandidate => parent;
+ AstNode? get _nullShortingExtensionCandidate => parent;
/// If the AST structure has been resolved, and the function being invoked is
/// known based on static type information, then return the parameter element
/// representing the parameter to which the value of the operand will be
/// bound. Otherwise, return `null`.
- ParameterElement get _staticParameterElementForOperand {
+ ParameterElement? get _staticParameterElementForOperand {
if (staticElement == null) {
return null;
}
- List<ParameterElement> parameters = staticElement.parameters;
+ List<ParameterElement> parameters = staticElement!.parameters;
if (parameters.isEmpty) {
return null;
}
@@ -8328,11 +8290,11 @@
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitPrefixExpression(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitPrefixExpression(this);
@override
void visitChildren(AstVisitor visitor) {
- _operand?.accept(visitor);
+ _operand.accept(visitor);
}
@override
@@ -8352,18 +8314,18 @@
with NullShortableExpressionImpl
implements PropertyAccess {
/// The expression computing the object defining the property being accessed.
- ExpressionImpl _target;
+ ExpressionImpl? _target;
/// The property access operator.
@override
Token operator;
/// The name of the property being accessed.
- SimpleIdentifierImpl _propertyName;
+ late SimpleIdentifierImpl _propertyName;
/// Initialize a newly created property access expression.
- PropertyAccessImpl(
- ExpressionImpl target, this.operator, SimpleIdentifierImpl propertyName) {
+ PropertyAccessImpl(ExpressionImpl? target, this.operator,
+ SimpleIdentifierImpl propertyName) {
_target = _becomeParentOf(target);
_propertyName = _becomeParentOf(propertyName);
}
@@ -8371,7 +8333,7 @@
@override
Token get beginToken {
if (_target != null) {
- return _target.beginToken;
+ return _target!.beginToken;
}
return operator;
}
@@ -8388,18 +8350,16 @@
@override
bool get isCascaded =>
- operator != null &&
- (operator.type == TokenType.PERIOD_PERIOD ||
- operator.type == TokenType.QUESTION_PERIOD_PERIOD);
+ operator.type == TokenType.PERIOD_PERIOD ||
+ operator.type == TokenType.QUESTION_PERIOD_PERIOD;
@override
bool get isNullAware {
if (isCascaded) {
return _ancestorCascade.isNullAware;
}
- return operator != null &&
- (operator.type == TokenType.QUESTION_PERIOD ||
- operator.type == TokenType.QUESTION_PERIOD_PERIOD);
+ return operator.type == TokenType.QUESTION_PERIOD ||
+ operator.type == TokenType.QUESTION_PERIOD_PERIOD;
}
@override
@@ -8418,15 +8378,15 @@
if (isCascaded) {
return _ancestorCascade.target;
}
- return _target;
+ return _target!;
}
@override
- Expression get target => _target;
+ Expression? get target => _target;
@override
- set target(Expression expression) {
- _target = _becomeParentOf(expression as ExpressionImpl);
+ set target(Expression? expression) {
+ _target = _becomeParentOf(expression as ExpressionImpl?);
}
/// Return the cascade that contains this [IndexExpression].
@@ -8434,7 +8394,7 @@
/// We expect that [isCascaded] is `true`.
CascadeExpression get _ancestorCascade {
assert(isCascaded);
- for (var ancestor = parent;; ancestor = ancestor.parent) {
+ for (var ancestor = parent!;; ancestor = ancestor.parent!) {
if (ancestor is CascadeExpression) {
return ancestor;
}
@@ -8442,15 +8402,15 @@
}
@override
- AstNode get _nullShortingExtensionCandidate => parent;
+ AstNode? get _nullShortingExtensionCandidate => parent;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitPropertyAccess(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitPropertyAccess(this);
@override
void visitChildren(AstVisitor visitor) {
_target?.accept(visitor);
- _propertyName?.accept(visitor);
+ _propertyName.accept(visitor);
}
@override
@@ -8471,27 +8431,27 @@
/// The token for the period before the name of the constructor that is being
/// invoked, or `null` if the unnamed constructor is being invoked.
@override
- Token period;
+ Token? period;
/// The name of the constructor that is being invoked, or `null` if the
/// unnamed constructor is being invoked.
- SimpleIdentifierImpl _constructorName;
+ SimpleIdentifierImpl? _constructorName;
/// The list of arguments to the constructor.
- ArgumentListImpl _argumentList;
+ late ArgumentListImpl _argumentList;
/// The element associated with the constructor based on static type
/// information, or `null` if the AST structure has not been resolved or if
/// the constructor could not be resolved.
@override
- ConstructorElement staticElement;
+ ConstructorElement? staticElement;
/// Initialize a newly created redirecting invocation to invoke the
/// constructor with the given name with the given arguments. The
/// [constructorName] can be `null` if the constructor being invoked is the
/// unnamed constructor.
RedirectingConstructorInvocationImpl(this.thisKeyword, this.period,
- SimpleIdentifierImpl constructorName, ArgumentListImpl argumentList) {
+ SimpleIdentifierImpl? constructorName, ArgumentListImpl argumentList) {
_constructorName = _becomeParentOf(constructorName);
_argumentList = _becomeParentOf(argumentList);
}
@@ -8515,24 +8475,24 @@
..add(_argumentList);
@override
- SimpleIdentifier get constructorName => _constructorName;
+ SimpleIdentifier? get constructorName => _constructorName;
@override
- set constructorName(SimpleIdentifier identifier) {
- _constructorName = _becomeParentOf(identifier as SimpleIdentifierImpl);
+ set constructorName(SimpleIdentifier? identifier) {
+ _constructorName = _becomeParentOf(identifier as SimpleIdentifierImpl?);
}
@override
Token get endToken => _argumentList.endToken;
@override
- E accept<E>(AstVisitor<E> visitor) =>
+ E? accept<E>(AstVisitor<E> visitor) =>
visitor.visitRedirectingConstructorInvocation(this);
@override
void visitChildren(AstVisitor visitor) {
_constructorName?.accept(visitor);
- _argumentList?.accept(visitor);
+ _argumentList.accept(visitor);
}
}
@@ -8563,7 +8523,7 @@
Precedence get precedence => Precedence.assignment;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitRethrowExpression(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitRethrowExpression(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -8582,7 +8542,7 @@
/// The expression computing the value to be returned, or `null` if no
/// explicit value was provided.
- ExpressionImpl _expression;
+ ExpressionImpl? _expression;
/// The semicolon terminating the statement.
@override
@@ -8591,7 +8551,7 @@
/// Initialize a newly created return statement. The [expression] can be
/// `null` if no explicit value was provided.
ReturnStatementImpl(
- this.returnKeyword, ExpressionImpl expression, this.semicolon) {
+ this.returnKeyword, ExpressionImpl? expression, this.semicolon) {
_expression = _becomeParentOf(expression);
}
@@ -8606,15 +8566,15 @@
Token get endToken => semicolon;
@override
- Expression get expression => _expression;
+ Expression? get expression => _expression;
@override
- set expression(Expression expression) {
- _expression = _becomeParentOf(expression as ExpressionImpl);
+ set expression(Expression? expression) {
+ _expression = _becomeParentOf(expression as ExpressionImpl?);
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitReturnStatement(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitReturnStatement(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -8646,7 +8606,7 @@
Token get endToken => scriptTag;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitScriptTag(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitScriptTag(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -8659,14 +8619,14 @@
Token leftBracket;
/// The syntactic elements in the set.
- NodeList<CollectionElement> _elements;
+ late NodeList<CollectionElement> _elements;
@override
Token rightBracket;
/// A representation of whether this literal represents a map or a set, or
/// whether the kind has not or cannot be determined.
- _SetOrMapKind _resolvedKind;
+ _SetOrMapKind _resolvedKind = _SetOrMapKind.unresolved;
/// The context type computed by
/// [ResolverVisitor._computeSetOrMapContextType].
@@ -8679,25 +8639,24 @@
///
/// The context pushed down by type inference is null, whereas the
/// `contextType` is `Map<dynamic, dynamic>`.
- InterfaceType contextType;
+ InterfaceType? contextType;
/// Initialize a newly created set or map literal. The [constKeyword] can be
/// `null` if the literal is not a constant. The [typeArguments] can be `null`
/// if no type arguments were declared. The [elements] can be `null` if the
/// set is empty.
- SetOrMapLiteralImpl(Token constKeyword, TypeArgumentListImpl typeArguments,
+ SetOrMapLiteralImpl(Token? constKeyword, TypeArgumentListImpl? typeArguments,
this.leftBracket, List<CollectionElement> elements, this.rightBracket)
: super(constKeyword, typeArguments) {
_elements = NodeListImpl<CollectionElement>(this, elements);
- _resolvedKind = _SetOrMapKind.unresolved;
}
@override
Token get beginToken {
if (constKeyword != null) {
- return constKeyword;
+ return constKeyword!;
}
- TypeArgumentList typeArguments = this.typeArguments;
+ var typeArguments = this.typeArguments;
if (typeArguments != null) {
return typeArguments.beginToken;
}
@@ -8724,7 +8683,7 @@
bool get isSet => _resolvedKind == _SetOrMapKind.set;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitSetOrMapLiteral(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitSetOrMapLiteral(this);
void becomeMap() {
assert(_resolvedKind == _SetOrMapKind.unresolved ||
@@ -8757,7 +8716,7 @@
class ShowCombinatorImpl extends CombinatorImpl implements ShowCombinator {
/// The list of names from the library that are made visible by this
/// combinator.
- NodeList<SimpleIdentifier> _shownNames;
+ late NodeList<SimpleIdentifier> _shownNames;
/// Initialize a newly created import show combinator.
ShowCombinatorImpl(Token keyword, List<SimpleIdentifier> shownNames)
@@ -8772,13 +8731,13 @@
..addAll(_shownNames);
@override
- Token get endToken => _shownNames.endToken;
+ Token get endToken => _shownNames.endToken!;
@override
NodeList<SimpleIdentifier> get shownNames => _shownNames;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitShowCombinator(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitShowCombinator(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -8795,30 +8754,30 @@
/// The token representing either the 'final', 'const' or 'var' keyword, or
/// `null` if no keyword was used.
@override
- Token keyword;
+ Token? keyword;
/// The name of the declared type of the parameter, or `null` if the parameter
/// does not have a declared type.
- TypeAnnotationImpl _type;
+ TypeAnnotationImpl? _type;
@override
// TODO(brianwilkerson) This overrides a concrete implementation in which the
// element is assumed to be stored in the `identifier`, but there is no
// corresponding inherited setter. This seems inconsistent and error prone.
- ParameterElement declaredElement;
+ ParameterElement? declaredElement;
/// Initialize a newly created formal parameter. Either or both of the
/// [comment] and [metadata] can be `null` if the parameter does not have the
/// corresponding attribute. The [keyword] can be `null` if a type was
/// specified. The [type] must be `null` if the keyword is 'var'.
SimpleFormalParameterImpl(
- CommentImpl comment,
- List<Annotation> metadata,
- Token covariantKeyword,
- Token requiredKeyword,
+ CommentImpl? comment,
+ List<Annotation>? metadata,
+ Token? covariantKeyword,
+ Token? requiredKeyword,
this.keyword,
- TypeAnnotationImpl type,
- SimpleIdentifierImpl identifier)
+ TypeAnnotationImpl? type,
+ SimpleIdentifierImpl? identifier)
: super(
comment, metadata, covariantKeyword, requiredKeyword, identifier) {
_type = _becomeParentOf(type);
@@ -8828,17 +8787,17 @@
Token get beginToken {
NodeList<Annotation> metadata = this.metadata;
if (metadata.isNotEmpty) {
- return metadata.beginToken;
+ return metadata.beginToken!;
} else if (requiredKeyword != null) {
- return requiredKeyword;
+ return requiredKeyword!;
} else if (covariantKeyword != null) {
- return covariantKeyword;
+ return covariantKeyword!;
} else if (keyword != null) {
- return keyword;
+ return keyword!;
} else if (_type != null) {
- return _type.beginToken;
+ return _type!.beginToken;
}
- return identifier?.beginToken;
+ return identifier!.beginToken;
}
@override
@@ -8846,7 +8805,7 @@
super._childEntities..add(keyword)..add(_type)..add(identifier);
@override
- Token get endToken => identifier?.endToken ?? type?.endToken;
+ Token get endToken => identifier?.endToken ?? type!.endToken;
@override
bool get isConst => keyword?.keyword == Keyword.CONST;
@@ -8855,15 +8814,15 @@
bool get isFinal => keyword?.keyword == Keyword.FINAL;
@override
- TypeAnnotation get type => _type;
+ TypeAnnotation? get type => _type;
@override
- set type(TypeAnnotation type) {
- _type = _becomeParentOf(type as TypeAnnotationImpl);
+ set type(TypeAnnotation? type) {
+ _type = _becomeParentOf(type as TypeAnnotationImpl?);
}
@override
- E accept<E>(AstVisitor<E> visitor) =>
+ E? accept<E>(AstVisitor<E> visitor) =>
visitor.visitSimpleFormalParameter(this);
@override
@@ -8890,10 +8849,10 @@
/// The element associated with this identifier based on static type
/// information, or `null` if the AST structure has not been resolved or if
/// this identifier could not be resolved.
- Element _staticElement;
+ Element? _staticElement;
@override
- List<DartType> tearOffTypeArgumentTypes;
+ List<DartType>? tearOffTypeArgumentTypes;
/// Initialize a newly created identifier.
SimpleIdentifierImpl(this.token);
@@ -8909,7 +8868,7 @@
@override
bool get isQualified {
- AstNode parent = this.parent;
+ AstNode parent = this.parent!;
if (parent is PrefixedIdentifier) {
return identical(parent.identifier, this);
} else if (parent is PropertyAccess) {
@@ -8956,18 +8915,18 @@
/// All three [readElement], [writeElement], and [referenceElement] can be
/// `null` when the AST structure has not been resolved, or this identifier
/// could not be resolved.
- Element get referenceElement => null;
+ Element? get referenceElement => null;
@override
- Element get staticElement => _staticElement;
+ Element? get staticElement => _staticElement;
@override
- set staticElement(Element element) {
+ set staticElement(Element? element) {
_staticElement = element;
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitSimpleIdentifier(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitSimpleIdentifier(this);
@override
bool inDeclarationContext() => false;
@@ -8975,7 +8934,7 @@
@override
bool inGetterContext() {
// TODO(brianwilkerson) Convert this to a getter.
- AstNode initialParent = this.parent;
+ AstNode initialParent = this.parent!;
AstNode parent = initialParent;
AstNode target = this;
// skip prefix
@@ -8983,13 +8942,13 @@
if (identical(initialParent.prefix, this)) {
return true;
}
- parent = initialParent.parent;
+ parent = initialParent.parent!;
target = initialParent;
} else if (initialParent is PropertyAccess) {
if (identical(initialParent.target, this)) {
return true;
}
- parent = initialParent.parent;
+ parent = initialParent.parent!;
target = initialParent;
}
// skip label
@@ -9028,7 +8987,7 @@
@override
bool inSetterContext() {
// TODO(brianwilkerson) Convert this to a getter.
- AstNode initialParent = this.parent;
+ AstNode initialParent = this.parent!;
AstNode parent = initialParent;
AstNode target = this;
// skip prefix
@@ -9037,13 +8996,13 @@
if (identical(initialParent.prefix, this)) {
return false;
}
- parent = initialParent.parent;
+ parent = initialParent.parent!;
target = initialParent;
} else if (initialParent is PropertyAccess) {
if (identical(initialParent.target, this)) {
return false;
}
- parent = initialParent.parent;
+ parent = initialParent.parent!;
target = initialParent;
}
// analyze usage
@@ -9092,7 +9051,7 @@
Token literal;
/// The value of the literal.
- String _value;
+ late String _value;
/// Initialize a newly created simple string literal.
SimpleStringLiteralImpl(this.literal, String value) {
@@ -9139,7 +9098,7 @@
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitSimpleStringLiteral(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitSimpleStringLiteral(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -9165,7 +9124,7 @@
@override
Token spreadOperator;
- ExpressionImpl _expression;
+ late ExpressionImpl _expression;
SpreadElementImpl(this.spreadOperator, ExpressionImpl expression) {
_expression = _becomeParentOf(expression);
@@ -9193,13 +9152,13 @@
spreadOperator.type == TokenType.PERIOD_PERIOD_PERIOD_QUESTION;
@override
- E accept<E>(AstVisitor<E> visitor) {
+ E? accept<E>(AstVisitor<E> visitor) {
return visitor.visitSpreadElement(this);
}
@override
void visitChildren(AstVisitor visitor) {
- _expression?.accept(visitor);
+ _expression.accept(visitor);
}
}
@@ -9233,7 +9192,7 @@
class StringInterpolationImpl extends SingleStringLiteralImpl
implements StringInterpolation {
/// The elements that will be composed to produce the resulting string.
- NodeList<InterpolationElement> _elements;
+ late NodeList<InterpolationElement> _elements;
/// Initialize a newly created string interpolation expression.
StringInterpolationImpl(List<InterpolationElement> elements) {
@@ -9241,7 +9200,7 @@
}
@override
- Token get beginToken => _elements.beginToken;
+ Token get beginToken => _elements.beginToken!;
@override
Iterable<SyntacticEntity> get childEntities =>
@@ -9249,13 +9208,13 @@
@override
int get contentsEnd {
- InterpolationString element = _elements.last;
+ var element = _elements.last as InterpolationString;
return element.contentsEnd;
}
@override
int get contentsOffset {
- InterpolationString element = _elements.first;
+ var element = _elements.first as InterpolationString;
return element.contentsOffset;
}
@@ -9264,7 +9223,7 @@
NodeList<InterpolationElement> get elements => _elements;
@override
- Token get endToken => _elements.endToken;
+ Token get endToken => _elements.endToken!;
@override
bool get isMultiline => _firstHelper.isMultiline;
@@ -9276,13 +9235,13 @@
bool get isSingleQuoted => _firstHelper.isSingleQuoted;
StringLexemeHelper get _firstHelper {
- InterpolationString lastString = _elements.first;
+ var lastString = _elements.first as InterpolationString;
String lexeme = lastString.contents.lexeme;
return StringLexemeHelper(lexeme, true, false);
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitStringInterpolation(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitStringInterpolation(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -9305,7 +9264,7 @@
bool isSingleQuoted = false;
bool isMultiline = false;
int start = 0;
- int end;
+ late int end;
StringLexemeHelper(this.lexeme, this.isFirst, this.isLast) {
if (isFirst) {
@@ -9394,7 +9353,7 @@
/// | [StringInterpolation]
abstract class StringLiteralImpl extends LiteralImpl implements StringLiteral {
@override
- String get stringValue {
+ String? get stringValue {
StringBuffer buffer = StringBuffer();
try {
_appendStringValue(buffer);
@@ -9424,27 +9383,27 @@
/// The token for the period before the name of the constructor that is being
/// invoked, or `null` if the unnamed constructor is being invoked.
@override
- Token period;
+ Token? period;
/// The name of the constructor that is being invoked, or `null` if the
/// unnamed constructor is being invoked.
- SimpleIdentifierImpl _constructorName;
+ SimpleIdentifierImpl? _constructorName;
/// The list of arguments to the constructor.
- ArgumentListImpl _argumentList;
+ late ArgumentListImpl _argumentList;
/// The element associated with the constructor based on static type
/// information, or `null` if the AST structure has not been resolved or if
/// the constructor could not be resolved.
@override
- ConstructorElement staticElement;
+ ConstructorElement? staticElement;
/// Initialize a newly created super invocation to invoke the inherited
/// constructor with the given name with the given arguments. The [period] and
/// [constructorName] can be `null` if the constructor being invoked is the
/// unnamed constructor.
SuperConstructorInvocationImpl(this.superKeyword, this.period,
- SimpleIdentifierImpl constructorName, ArgumentListImpl argumentList) {
+ SimpleIdentifierImpl? constructorName, ArgumentListImpl argumentList) {
_constructorName = _becomeParentOf(constructorName);
_argumentList = _becomeParentOf(argumentList);
}
@@ -9468,24 +9427,24 @@
..add(_argumentList);
@override
- SimpleIdentifier get constructorName => _constructorName;
+ SimpleIdentifier? get constructorName => _constructorName;
@override
- set constructorName(SimpleIdentifier identifier) {
- _constructorName = _becomeParentOf(identifier as SimpleIdentifierImpl);
+ set constructorName(SimpleIdentifier? identifier) {
+ _constructorName = _becomeParentOf(identifier as SimpleIdentifierImpl?);
}
@override
Token get endToken => _argumentList.endToken;
@override
- E accept<E>(AstVisitor<E> visitor) =>
+ E? accept<E>(AstVisitor<E> visitor) =>
visitor.visitSuperConstructorInvocation(this);
@override
void visitChildren(AstVisitor visitor) {
_constructorName?.accept(visitor);
- _argumentList?.accept(visitor);
+ _argumentList.accept(visitor);
}
}
@@ -9515,7 +9474,7 @@
Precedence get precedence => Precedence.primary;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitSuperExpression(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitSuperExpression(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -9529,7 +9488,7 @@
/// [SimpleIdentifier]* 'case' [Expression] ':' [Statement]*
class SwitchCaseImpl extends SwitchMemberImpl implements SwitchCase {
/// The expression controlling whether the statements will be executed.
- ExpressionImpl _expression;
+ late ExpressionImpl _expression;
/// Initialize a newly created switch case. The list of [labels] can be `null`
/// if there are no labels.
@@ -9556,12 +9515,12 @@
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitSwitchCase(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitSwitchCase(this);
@override
void visitChildren(AstVisitor visitor) {
labels.accept(visitor);
- _expression?.accept(visitor);
+ _expression.accept(visitor);
statements.accept(visitor);
}
}
@@ -9585,7 +9544,7 @@
..addAll(statements);
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitSwitchDefault(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitSwitchDefault(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -9601,7 +9560,7 @@
/// | switchDefault
abstract class SwitchMemberImpl extends AstNodeImpl implements SwitchMember {
/// The labels associated with the switch member.
- NodeList<Label> _labels;
+ late NodeList<Label> _labels;
/// The token representing the 'case' or 'default' keyword.
@override
@@ -9612,7 +9571,7 @@
Token colon;
/// The statements that will be executed if this switch member is selected.
- NodeList<Statement> _statements;
+ late NodeList<Statement> _statements;
/// Initialize a newly created switch member. The list of [labels] can be
/// `null` if there are no labels.
@@ -9625,7 +9584,7 @@
@override
Token get beginToken {
if (_labels.isNotEmpty) {
- return _labels.beginToken;
+ return _labels.beginToken!;
}
return keyword;
}
@@ -9633,7 +9592,7 @@
@override
Token get endToken {
if (_statements.isNotEmpty) {
- return _statements.endToken;
+ return _statements.endToken!;
}
return colon;
}
@@ -9660,7 +9619,7 @@
/// The expression used to determine which of the switch members will be
/// selected.
- ExpressionImpl _expression;
+ late ExpressionImpl _expression;
/// The right parenthesis.
@override
@@ -9671,7 +9630,7 @@
Token leftBracket;
/// The switch members that can be selected by the expression.
- NodeList<SwitchMember> _members;
+ late NodeList<SwitchMember> _members;
/// The right curly bracket.
@override
@@ -9719,11 +9678,11 @@
NodeList<SwitchMember> get members => _members;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitSwitchStatement(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitSwitchStatement(this);
@override
void visitChildren(AstVisitor visitor) {
- _expression?.accept(visitor);
+ _expression.accept(visitor);
_members.accept(visitor);
}
}
@@ -9757,7 +9716,7 @@
Token get endToken => components[components.length - 1];
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitSymbolLiteral(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitSymbolLiteral(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -9791,7 +9750,7 @@
Precedence get precedence => Precedence.primary;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitThisExpression(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitThisExpression(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -9809,7 +9768,7 @@
Token throwKeyword;
/// The expression computing the exception to be thrown.
- ExpressionImpl _expression;
+ late ExpressionImpl _expression;
/// Initialize a newly created throw expression.
ThrowExpressionImpl(this.throwKeyword, ExpressionImpl expression) {
@@ -9825,10 +9784,7 @@
@override
Token get endToken {
- if (_expression != null) {
- return _expression.endToken;
- }
- return throwKeyword;
+ return _expression.endToken;
}
@override
@@ -9843,11 +9799,11 @@
Precedence get precedence => Precedence.assignment;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitThrowExpression(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitThrowExpression(this);
@override
void visitChildren(AstVisitor visitor) {
- _expression?.accept(visitor);
+ _expression.accept(visitor);
}
}
@@ -9860,10 +9816,10 @@
with HasAstLinkedContext
implements TopLevelVariableDeclaration {
/// The top-level variables being declared.
- VariableDeclarationListImpl _variableList;
+ late VariableDeclarationListImpl _variableList;
@override
- Token externalKeyword;
+ Token? externalKeyword;
/// The semicolon terminating the declaration.
@override
@@ -9873,8 +9829,8 @@
/// of the [comment] and [metadata] can be `null` if the variable does not
/// have the corresponding attribute.
TopLevelVariableDeclarationImpl(
- CommentImpl comment,
- List<Annotation> metadata,
+ CommentImpl? comment,
+ List<Annotation>? metadata,
this.externalKeyword,
VariableDeclarationListImpl variableList,
this.semicolon)
@@ -9887,7 +9843,7 @@
super._childEntities..add(_variableList)..add(semicolon);
@override
- Element get declaredElement => null;
+ Element? get declaredElement => null;
@override
Token get endToken => semicolon;
@@ -9905,13 +9861,13 @@
}
@override
- E accept<E>(AstVisitor<E> visitor) =>
+ E? accept<E>(AstVisitor<E> visitor) =>
visitor.visitTopLevelVariableDeclaration(this);
@override
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
- _variableList?.accept(visitor);
+ _variableList.accept(visitor);
}
}
@@ -9928,19 +9884,19 @@
Token tryKeyword;
/// The body of the statement.
- BlockImpl _body;
+ late BlockImpl _body;
/// The catch clauses contained in the try statement.
- NodeList<CatchClause> _catchClauses;
+ late NodeList<CatchClause> _catchClauses;
/// The token representing the 'finally' keyword, or `null` if the statement
/// does not contain a finally clause.
@override
- Token finallyKeyword;
+ Token? finallyKeyword;
/// The finally block contained in the try statement, or `null` if the
/// statement does not contain a finally clause.
- BlockImpl _finallyBlock;
+ BlockImpl? _finallyBlock;
/// Initialize a newly created try statement. The list of [catchClauses] can
/// be`null` if there are no catch clauses. The [finallyKeyword] and
@@ -9950,7 +9906,7 @@
BlockImpl body,
List<CatchClause> catchClauses,
this.finallyKeyword,
- BlockImpl finallyBlock) {
+ BlockImpl? finallyBlock) {
_body = _becomeParentOf(body);
_catchClauses = NodeListImpl<CatchClause>(this, catchClauses);
_finallyBlock = _becomeParentOf(finallyBlock);
@@ -9981,29 +9937,29 @@
@override
Token get endToken {
if (_finallyBlock != null) {
- return _finallyBlock.endToken;
+ return _finallyBlock!.endToken;
} else if (finallyKeyword != null) {
- return finallyKeyword;
+ return finallyKeyword!;
} else if (_catchClauses.isNotEmpty) {
- return _catchClauses.endToken;
+ return _catchClauses.endToken!;
}
return _body.endToken;
}
@override
- Block get finallyBlock => _finallyBlock;
+ Block? get finallyBlock => _finallyBlock;
@override
- set finallyBlock(Block block) {
- _finallyBlock = _becomeParentOf(block as BlockImpl);
+ set finallyBlock(Block? block) {
+ _finallyBlock = _becomeParentOf(block as BlockImpl?);
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitTryStatement(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitTryStatement(this);
@override
void visitChildren(AstVisitor visitor) {
- _body?.accept(visitor);
+ _body.accept(visitor);
_catchClauses.accept(visitor);
_finallyBlock?.accept(visitor);
}
@@ -10030,7 +9986,7 @@
/// Initialize a newly created type alias. Either or both of the [comment] and
/// [metadata] can be `null` if the declaration does not have the
/// corresponding attribute.
- TypeAliasImpl(CommentImpl comment, List<Annotation> metadata,
+ TypeAliasImpl(CommentImpl? comment, List<Annotation>? metadata,
this.typedefKeyword, SimpleIdentifierImpl name, this.semicolon)
: super(comment, metadata, name);
@@ -10059,7 +10015,7 @@
Token leftBracket;
/// The type arguments associated with the type.
- NodeList<TypeAnnotation> _arguments;
+ late NodeList<TypeAnnotation> _arguments;
/// The right bracket.
@override
@@ -10088,7 +10044,7 @@
Token get endToken => rightBracket;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitTypeArgumentList(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitTypeArgumentList(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -10105,16 +10061,16 @@
/// The token representing the 'const' keyword, or `null` if the literal is
/// not a constant.
@override
- Token constKeyword;
+ Token? constKeyword;
/// The type argument associated with this literal, or `null` if no type
/// arguments were declared.
- TypeArgumentListImpl _typeArguments;
+ TypeArgumentListImpl? _typeArguments;
/// Initialize a newly created typed literal. The [constKeyword] can be
/// `null` if the literal is not a constant. The [typeArguments] can be `null`
/// if no type arguments were declared.
- TypedLiteralImpl(this.constKeyword, TypeArgumentListImpl typeArguments) {
+ TypedLiteralImpl(this.constKeyword, TypeArgumentListImpl? typeArguments) {
_typeArguments = _becomeParentOf(typeArguments);
}
@@ -10124,11 +10080,11 @@
}
@override
- TypeArgumentList get typeArguments => _typeArguments;
+ TypeArgumentList? get typeArguments => _typeArguments;
@override
- set typeArguments(TypeArgumentList typeArguments) {
- _typeArguments = _becomeParentOf(typeArguments as TypeArgumentListImpl);
+ set typeArguments(TypeArgumentList? typeArguments) {
+ _typeArguments = _becomeParentOf(typeArguments as TypeArgumentListImpl?);
}
ChildEntities get _childEntities =>
@@ -10146,23 +10102,23 @@
/// [Identifier] typeArguments? '?'?
class TypeNameImpl extends TypeAnnotationImpl implements TypeName {
/// The name of the type.
- IdentifierImpl _name;
+ late IdentifierImpl _name;
/// The type arguments associated with the type, or `null` if there are no
/// type arguments.
- TypeArgumentListImpl _typeArguments;
+ TypeArgumentListImpl? _typeArguments;
@override
- Token question;
+ Token? question;
/// The type being named, or `null` if the AST structure has not been
/// resolved.
@override
- DartType type;
+ DartType? type;
/// Initialize a newly created type name. The [typeArguments] can be `null` if
/// there are no type arguments.
- TypeNameImpl(IdentifierImpl name, TypeArgumentListImpl typeArguments,
+ TypeNameImpl(IdentifierImpl name, TypeArgumentListImpl? typeArguments,
{this.question}) {
_name = _becomeParentOf(name);
_typeArguments = _becomeParentOf(typeArguments);
@@ -10184,7 +10140,7 @@
if (identifier is! PrefixedIdentifier) {
return false;
}
- return (identifier as PrefixedIdentifier).isDeferred;
+ return identifier.isDeferred;
}
@override
@@ -10199,19 +10155,19 @@
}
@override
- TypeArgumentList get typeArguments => _typeArguments;
+ TypeArgumentList? get typeArguments => _typeArguments;
@override
- set typeArguments(TypeArgumentList typeArguments) {
- _typeArguments = _becomeParentOf(typeArguments as TypeArgumentListImpl);
+ set typeArguments(TypeArgumentList? typeArguments) {
+ _typeArguments = _becomeParentOf(typeArguments as TypeArgumentListImpl?);
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitTypeName(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitTypeName(this);
@override
void visitChildren(AstVisitor visitor) {
- _name?.accept(visitor);
+ _name.accept(visitor);
_typeArguments?.accept(visitor);
}
}
@@ -10224,43 +10180,43 @@
/// typeParameterVariance ::= 'out' | 'inout' | 'in'
class TypeParameterImpl extends DeclarationImpl implements TypeParameter {
/// The name of the type parameter.
- SimpleIdentifierImpl _name;
+ late SimpleIdentifierImpl _name;
/// The token representing the variance modifier keyword, or `null` if
/// there is no explicit variance modifier, meaning legacy covariance.
- Token varianceKeyword;
+ Token? varianceKeyword;
/// The token representing the 'extends' keyword, or `null` if there is no
/// explicit upper bound.
@override
- Token extendsKeyword;
+ Token? extendsKeyword;
/// The name of the upper bound for legal arguments, or `null` if there is no
/// explicit upper bound.
- TypeAnnotationImpl _bound;
+ TypeAnnotationImpl? _bound;
/// Data that is read during loading this node from summary, but is not
/// fully applied yet. For example in many cases we don't need the
/// documentation comment, and it is expensive to decode strings.
- Object summaryData;
+ Object? summaryData;
/// Initialize a newly created type parameter. Either or both of the [comment]
/// and [metadata] can be `null` if the parameter does not have the
/// corresponding attribute. The [extendsKeyword] and [bound] can be `null` if
/// the parameter does not have an upper bound.
- TypeParameterImpl(CommentImpl comment, List<Annotation> metadata,
- SimpleIdentifierImpl name, this.extendsKeyword, TypeAnnotationImpl bound)
+ TypeParameterImpl(CommentImpl? comment, List<Annotation>? metadata,
+ SimpleIdentifierImpl name, this.extendsKeyword, TypeAnnotationImpl? bound)
: super(comment, metadata) {
_name = _becomeParentOf(name);
_bound = _becomeParentOf(bound);
}
@override
- TypeAnnotation get bound => _bound;
+ TypeAnnotation? get bound => _bound;
@override
- set bound(TypeAnnotation type) {
- _bound = _becomeParentOf(type as TypeAnnotationImpl);
+ set bound(TypeAnnotation? type) {
+ _bound = _becomeParentOf(type as TypeAnnotationImpl?);
}
@override
@@ -10268,15 +10224,15 @@
super._childEntities..add(_name)..add(extendsKeyword)..add(_bound);
@override
- TypeParameterElement get declaredElement =>
- _name?.staticElement as TypeParameterElement;
+ TypeParameterElement? get declaredElement =>
+ _name.staticElement as TypeParameterElement?;
@override
Token get endToken {
if (_bound == null) {
return _name.endToken;
}
- return _bound.endToken;
+ return _bound!.endToken;
}
@override
@@ -10291,12 +10247,12 @@
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitTypeParameter(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitTypeParameter(this);
@override
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
- _name?.accept(visitor);
+ _name.accept(visitor);
_bound?.accept(visitor);
}
}
@@ -10311,7 +10267,7 @@
final Token leftBracket;
/// The type parameters in the list.
- NodeList<TypeParameter> _typeParameters;
+ late NodeList<TypeParameter> _typeParameters;
/// The right angle bracket.
@override
@@ -10339,7 +10295,7 @@
NodeList<TypeParameter> get typeParameters => _typeParameters;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitTypeParameterList(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitTypeParameterList(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -10360,19 +10316,19 @@
static const String _DART_EXT_SCHEME = "dart-ext:";
/// The URI referenced by this directive.
- StringLiteralImpl _uri;
+ late StringLiteralImpl _uri;
@override
- String uriContent;
+ String? uriContent;
@override
- Source uriSource;
+ Source? uriSource;
/// Initialize a newly create URI-based directive. Either or both of the
/// [comment] and [metadata] can be `null` if the directive does not have the
/// corresponding attribute.
UriBasedDirectiveImpl(
- CommentImpl comment, List<Annotation> metadata, StringLiteralImpl uri)
+ CommentImpl? comment, List<Annotation>? metadata, StringLiteralImpl uri)
: super(comment, metadata) {
_uri = _becomeParentOf(uri);
}
@@ -10385,20 +10341,20 @@
_uri = _becomeParentOf(uri as StringLiteralImpl);
}
- UriValidationCode validate() {
+ UriValidationCode? validate() {
return validateUri(this is ImportDirective, uri, uriContent);
}
@override
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
- _uri?.accept(visitor);
+ _uri.accept(visitor);
}
/// Validate this directive, but do not check for existence. Return a code
/// indicating the problem if there is one, or `null` no problem.
- static UriValidationCode validateUri(
- bool isImport, StringLiteral uriLiteral, String uriContent) {
+ static UriValidationCode? validateUri(
+ bool isImport, StringLiteral uriLiteral, String? uriContent) {
if (uriLiteral is StringInterpolation) {
return UriValidationCode.URI_WITH_INTERPOLATION;
}
@@ -10457,16 +10413,16 @@
class VariableDeclarationImpl extends DeclarationImpl
implements VariableDeclaration {
/// The name of the variable being declared.
- SimpleIdentifierImpl _name;
+ late SimpleIdentifierImpl _name;
/// The equal sign separating the variable name from the initial value, or
/// `null` if the initial value was not specified.
@override
- Token equals;
+ Token? equals;
/// The expression used to compute the initial value for the variable, or
/// `null` if the initial value was not specified.
- ExpressionImpl _initializer;
+ ExpressionImpl? _initializer;
/// When this node is read as a part of summaries, we usually don't want
/// to read the [initializer], but we need to know if there is one in
@@ -10477,7 +10433,7 @@
/// Initialize a newly created variable declaration. The [equals] and
/// [initializer] can be `null` if there is no initializer.
VariableDeclarationImpl(
- SimpleIdentifierImpl name, this.equals, ExpressionImpl initializer)
+ SimpleIdentifierImpl name, this.equals, ExpressionImpl? initializer)
: super(null, null) {
_name = _becomeParentOf(name);
_initializer = _becomeParentOf(initializer);
@@ -10488,17 +10444,17 @@
super._childEntities..add(_name)..add(equals)..add(_initializer);
@override
- VariableElement get declaredElement =>
- _name?.staticElement as VariableElement;
+ VariableElement? get declaredElement =>
+ _name.staticElement as VariableElement?;
/// This overridden implementation of [documentationComment] looks in the
/// grandparent node for Dartdoc comments if no documentation is specifically
/// available on the node.
@override
- Comment get documentationComment {
- Comment comment = super.documentationComment;
+ Comment? get documentationComment {
+ Comment? comment = super.documentationComment;
if (comment == null) {
- AstNode node = parent?.parent;
+ var node = parent?.parent;
if (node is AnnotatedNode) {
return node.documentationComment;
}
@@ -10509,7 +10465,7 @@
@override
Token get endToken {
if (_initializer != null) {
- return _initializer.endToken;
+ return _initializer!.endToken;
}
return _name.endToken;
}
@@ -10518,28 +10474,28 @@
Token get firstTokenAfterCommentAndMetadata => _name.beginToken;
@override
- Expression get initializer => _initializer;
+ Expression? get initializer => _initializer;
@override
- set initializer(Expression expression) {
- _initializer = _becomeParentOf(expression as ExpressionImpl);
+ set initializer(Expression? expression) {
+ _initializer = _becomeParentOf(expression as ExpressionImpl?);
}
@override
bool get isConst {
- AstNode parent = this.parent;
+ var parent = this.parent;
return parent is VariableDeclarationList && parent.isConst;
}
@override
bool get isFinal {
- AstNode parent = this.parent;
+ var parent = this.parent;
return parent is VariableDeclarationList && parent.isFinal;
}
@override
bool get isLate {
- AstNode parent = this.parent;
+ var parent = this.parent;
return parent is VariableDeclarationList && parent.isLate;
}
@@ -10552,12 +10508,12 @@
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitVariableDeclaration(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitVariableDeclaration(this);
@override
void visitChildren(AstVisitor visitor) {
super.visitChildren(visitor);
- _name?.accept(visitor);
+ _name.accept(visitor);
_initializer?.accept(visitor);
}
}
@@ -10578,30 +10534,30 @@
/// The token representing the 'final', 'const' or 'var' keyword, or `null` if
/// no keyword was included.
@override
- Token keyword;
+ Token? keyword;
/// The token representing the 'late' keyword, or `null` if the late modifier
/// was not included.
@override
- Token lateKeyword;
+ Token? lateKeyword;
/// The type of the variables being declared, or `null` if no type was
/// provided.
- TypeAnnotationImpl _type;
+ TypeAnnotationImpl? _type;
/// A list containing the individual variables being declared.
- NodeList<VariableDeclaration> _variables;
+ late NodeList<VariableDeclaration> _variables;
/// Initialize a newly created variable declaration list. Either or both of
/// the [comment] and [metadata] can be `null` if the variable list does not
/// have the corresponding attribute. The [keyword] can be `null` if a type
/// was specified. The [type] must be `null` if the keyword is 'var'.
VariableDeclarationListImpl(
- CommentImpl comment,
- List<Annotation> metadata,
+ CommentImpl? comment,
+ List<Annotation>? metadata,
this.lateKeyword,
this.keyword,
- TypeAnnotationImpl type,
+ TypeAnnotationImpl? type,
List<VariableDeclaration> variables)
: super(comment, metadata) {
_type = _becomeParentOf(type);
@@ -10616,18 +10572,18 @@
..addAll(_variables);
@override
- Token get endToken => _variables.endToken;
+ Token get endToken => _variables.endToken!;
@override
Token get firstTokenAfterCommentAndMetadata {
if (lateKeyword != null) {
- return lateKeyword;
+ return lateKeyword!;
} else if (keyword != null) {
- return keyword;
+ return keyword!;
} else if (_type != null) {
- return _type.beginToken;
+ return _type!.beginToken;
}
- return _variables.beginToken;
+ return _variables.beginToken!;
}
@override
@@ -10640,18 +10596,18 @@
bool get isLate => lateKeyword != null;
@override
- TypeAnnotation get type => _type;
+ TypeAnnotation? get type => _type;
@override
- set type(TypeAnnotation type) {
- _type = _becomeParentOf(type as TypeAnnotationImpl);
+ set type(TypeAnnotation? type) {
+ _type = _becomeParentOf(type as TypeAnnotationImpl?);
}
@override
NodeList<VariableDeclaration> get variables => _variables;
@override
- E accept<E>(AstVisitor<E> visitor) =>
+ E? accept<E>(AstVisitor<E> visitor) =>
visitor.visitVariableDeclarationList(this);
@override
@@ -10670,7 +10626,7 @@
class VariableDeclarationStatementImpl extends StatementImpl
implements VariableDeclarationStatement {
/// The variables being declared.
- VariableDeclarationListImpl _variableList;
+ late VariableDeclarationListImpl _variableList;
/// The semicolon terminating the statement.
@override
@@ -10701,12 +10657,12 @@
}
@override
- E accept<E>(AstVisitor<E> visitor) =>
+ E? accept<E>(AstVisitor<E> visitor) =>
visitor.visitVariableDeclarationStatement(this);
@override
void visitChildren(AstVisitor visitor) {
- _variableList?.accept(visitor);
+ _variableList.accept(visitor);
}
}
@@ -10724,14 +10680,14 @@
Token leftParenthesis;
/// The expression used to determine whether to execute the body of the loop.
- ExpressionImpl _condition;
+ late ExpressionImpl _condition;
/// The right parenthesis.
@override
Token rightParenthesis;
/// The body of the loop.
- StatementImpl _body;
+ late StatementImpl _body;
/// Initialize a newly created while statement.
WhileStatementImpl(this.whileKeyword, this.leftParenthesis,
@@ -10771,12 +10727,12 @@
Token get endToken => _body.endToken;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitWhileStatement(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitWhileStatement(this);
@override
void visitChildren(AstVisitor visitor) {
- _condition?.accept(visitor);
- _body?.accept(visitor);
+ _condition.accept(visitor);
+ _body.accept(visitor);
}
}
@@ -10790,7 +10746,7 @@
Token withKeyword;
/// The names of the mixins that were specified.
- NodeList<TypeName> _mixinTypes;
+ late NodeList<TypeName> _mixinTypes;
/// Initialize a newly created with clause.
WithClauseImpl(this.withKeyword, List<TypeName> mixinTypes) {
@@ -10807,13 +10763,13 @@
..addAll(_mixinTypes);
@override
- Token get endToken => _mixinTypes.endToken;
+ Token get endToken => _mixinTypes.endToken!;
@override
NodeList<TypeName> get mixinTypes => _mixinTypes;
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitWithClause(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitWithClause(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -10832,10 +10788,10 @@
/// The star optionally following the 'yield' keyword.
@override
- Token star;
+ Token? star;
/// The expression whose value will be yielded.
- ExpressionImpl _expression;
+ late ExpressionImpl _expression;
/// The semicolon following the expression.
@override
@@ -10850,10 +10806,7 @@
@override
Token get beginToken {
- if (yieldKeyword != null) {
- return yieldKeyword;
- }
- return _expression.beginToken;
+ return yieldKeyword;
}
@override
@@ -10865,10 +10818,7 @@
@override
Token get endToken {
- if (semicolon != null) {
- return semicolon;
- }
- return _expression.endToken;
+ return semicolon;
}
@override
@@ -10880,11 +10830,11 @@
}
@override
- E accept<E>(AstVisitor<E> visitor) => visitor.visitYieldStatement(this);
+ E? accept<E>(AstVisitor<E> visitor) => visitor.visitYieldStatement(this);
@override
void visitChildren(AstVisitor visitor) {
- _expression?.accept(visitor);
+ _expression.accept(visitor);
}
}
diff --git a/pkg/analyzer/lib/src/dart/ast/ast_factory.dart b/pkg/analyzer/lib/src/dart/ast/ast_factory.dart
index f1a91b6..63e7e6a 100644
--- a/pkg/analyzer/lib/src/dart/ast/ast_factory.dart
+++ b/pkg/analyzer/lib/src/dart/ast/ast_factory.dart
@@ -8,7 +8,6 @@
import 'package:analyzer/dart/ast/ast_factory.dart';
import 'package:analyzer/src/dart/ast/ast.dart';
import 'package:analyzer/src/generated/utilities_dart.dart';
-import 'package:meta/meta.dart';
/// Concrete implementation of [AstFactory] based on the standard AST
/// implementation.
@@ -18,9 +17,14 @@
AdjacentStringsImpl(strings);
@override
- Annotation annotation(Token atSign, Identifier name, Token period,
- SimpleIdentifier constructorName, ArgumentList arguments) =>
- AnnotationImpl(atSign, name, period, constructorName, arguments);
+ Annotation annotation(Token atSign, Identifier name, Token? period,
+ SimpleIdentifier? constructorName, ArgumentList? arguments) =>
+ AnnotationImpl(
+ atSign,
+ name as IdentifierImpl,
+ period,
+ constructorName as SimpleIdentifierImpl?,
+ arguments as ArgumentListImpl?);
@override
ArgumentList argumentList(Token leftParenthesis, List<Expression> arguments,
@@ -30,44 +34,58 @@
@override
AsExpression asExpression(
Expression expression, Token asOperator, TypeAnnotation type) =>
- AsExpressionImpl(expression, asOperator, type);
+ AsExpressionImpl(
+ expression as ExpressionImpl, asOperator, type as TypeAnnotationImpl);
@override
AssertInitializer assertInitializer(
Token assertKeyword,
Token leftParenthesis,
Expression condition,
- Token comma,
- Expression message,
+ Token? comma,
+ Expression? message,
Token rightParenthesis) =>
- AssertInitializerImpl(assertKeyword, leftParenthesis, condition, comma,
- message, rightParenthesis);
+ AssertInitializerImpl(
+ assertKeyword,
+ leftParenthesis,
+ condition as ExpressionImpl,
+ comma,
+ message as ExpressionImpl?,
+ rightParenthesis);
@override
AssertStatement assertStatement(
Token assertKeyword,
Token leftParenthesis,
Expression condition,
- Token comma,
- Expression message,
+ Token? comma,
+ Expression? message,
Token rightParenthesis,
Token semicolon) =>
- AssertStatementImpl(assertKeyword, leftParenthesis, condition, comma,
- message, rightParenthesis, semicolon);
+ AssertStatementImpl(
+ assertKeyword,
+ leftParenthesis,
+ condition as ExpressionImpl,
+ comma,
+ message as ExpressionImpl?,
+ rightParenthesis,
+ semicolon);
@override
AssignmentExpression assignmentExpression(
Expression leftHandSide, Token operator, Expression rightHandSide) =>
- AssignmentExpressionImpl(leftHandSide, operator, rightHandSide);
+ AssignmentExpressionImpl(leftHandSide as ExpressionImpl, operator,
+ rightHandSide as ExpressionImpl);
@override
AwaitExpression awaitExpression(Token awaitKeyword, Expression expression) =>
- AwaitExpressionImpl(awaitKeyword, expression);
+ AwaitExpressionImpl(awaitKeyword, expression as ExpressionImpl);
@override
BinaryExpression binaryExpression(
Expression leftOperand, Token operator, Expression rightOperand) =>
- BinaryExpressionImpl(leftOperand, operator, rightOperand);
+ BinaryExpressionImpl(leftOperand as ExpressionImpl, operator,
+ rightOperand as ExpressionImpl);
@override
Block block(
@@ -79,8 +97,9 @@
CommentImpl.createBlockComment(tokens);
@override
- BlockFunctionBody blockFunctionBody(Token keyword, Token star, Block block) =>
- BlockFunctionBodyImpl(keyword, star, block);
+ BlockFunctionBody blockFunctionBody(
+ Token? keyword, Token? star, Block block) =>
+ BlockFunctionBodyImpl(keyword, star, block as BlockImpl);
@override
BooleanLiteral booleanLiteral(Token literal, bool value) =>
@@ -88,104 +107,105 @@
@override
BreakStatement breakStatement(
- Token breakKeyword, SimpleIdentifier label, Token semicolon) =>
- BreakStatementImpl(breakKeyword, label, semicolon);
+ Token breakKeyword, SimpleIdentifier? label, Token semicolon) =>
+ BreakStatementImpl(
+ breakKeyword, label as SimpleIdentifierImpl?, semicolon);
@override
CascadeExpression cascadeExpression(
Expression target, List<Expression> cascadeSections) =>
- CascadeExpressionImpl(target, cascadeSections);
+ CascadeExpressionImpl(target as ExpressionImpl, cascadeSections);
@override
CatchClause catchClause(
- Token onKeyword,
- TypeAnnotation exceptionType,
- Token catchKeyword,
- Token leftParenthesis,
- SimpleIdentifier exceptionParameter,
- Token comma,
- SimpleIdentifier stackTraceParameter,
- Token rightParenthesis,
+ Token? onKeyword,
+ TypeAnnotation? exceptionType,
+ Token? catchKeyword,
+ Token? leftParenthesis,
+ SimpleIdentifier? exceptionParameter,
+ Token? comma,
+ SimpleIdentifier? stackTraceParameter,
+ Token? rightParenthesis,
Block body) =>
CatchClauseImpl(
onKeyword,
- exceptionType,
+ exceptionType as TypeAnnotationImpl?,
catchKeyword,
leftParenthesis,
- exceptionParameter,
+ exceptionParameter as SimpleIdentifierImpl?,
comma,
- stackTraceParameter,
+ stackTraceParameter as SimpleIdentifierImpl?,
rightParenthesis,
- body);
+ body as BlockImpl);
@override
ClassDeclaration classDeclaration(
- Comment comment,
- List<Annotation> metadata,
- Token abstractKeyword,
+ Comment? comment,
+ List<Annotation>? metadata,
+ Token? abstractKeyword,
Token classKeyword,
SimpleIdentifier name,
- TypeParameterList typeParameters,
- ExtendsClause extendsClause,
- WithClause withClause,
- ImplementsClause implementsClause,
+ TypeParameterList? typeParameters,
+ ExtendsClause? extendsClause,
+ WithClause? withClause,
+ ImplementsClause? implementsClause,
Token leftBracket,
List<ClassMember> members,
Token rightBracket) =>
ClassDeclarationImpl(
- comment,
+ comment as CommentImpl?,
metadata,
abstractKeyword,
classKeyword,
- name,
- typeParameters,
- extendsClause,
- withClause,
- implementsClause,
+ name as SimpleIdentifierImpl,
+ typeParameters as TypeParameterListImpl?,
+ extendsClause as ExtendsClauseImpl?,
+ withClause as WithClauseImpl?,
+ implementsClause as ImplementsClauseImpl?,
leftBracket,
members,
rightBracket);
@override
ClassTypeAlias classTypeAlias(
- Comment comment,
- List<Annotation> metadata,
+ Comment? comment,
+ List<Annotation>? metadata,
Token keyword,
SimpleIdentifier name,
- TypeParameterList typeParameters,
+ TypeParameterList? typeParameters,
Token equals,
- Token abstractKeyword,
+ Token? abstractKeyword,
TypeName superclass,
WithClause withClause,
- ImplementsClause implementsClause,
+ ImplementsClause? implementsClause,
Token semicolon) =>
ClassTypeAliasImpl(
- comment,
+ comment as CommentImpl?,
metadata,
keyword,
- name,
- typeParameters,
+ name as SimpleIdentifierImpl,
+ typeParameters as TypeParameterListImpl?,
equals,
abstractKeyword,
- superclass,
- withClause,
- implementsClause,
+ superclass as TypeNameImpl,
+ withClause as WithClauseImpl,
+ implementsClause as ImplementsClauseImpl?,
semicolon);
@override
- CommentReference commentReference(Token newKeyword, Identifier identifier) =>
- CommentReferenceImpl(newKeyword, identifier);
+ CommentReference commentReference(Token? newKeyword, Identifier identifier) =>
+ CommentReferenceImpl(newKeyword, identifier as IdentifierImpl);
@override
CompilationUnit compilationUnit(
- {Token beginToken,
- ScriptTag scriptTag,
- List<Directive> directives,
- List<CompilationUnitMember> declarations,
- Token endToken,
- FeatureSet featureSet}) =>
- CompilationUnitImpl(beginToken, scriptTag, directives, declarations,
- endToken, featureSet);
+ {required Token beginToken,
+ ScriptTag? scriptTag,
+ List<Directive>? directives,
+ List<CompilationUnitMember>? declarations,
+ required Token endToken,
+ required FeatureSet featureSet}) =>
+ CompilationUnitImpl(beginToken, scriptTag as ScriptTagImpl?, directives,
+ declarations, endToken, featureSet);
@override
ConditionalExpression conditionalExpression(
@@ -195,87 +215,105 @@
Token colon,
Expression elseExpression) =>
ConditionalExpressionImpl(
- condition, question, thenExpression, colon, elseExpression);
+ condition as ExpressionImpl,
+ question,
+ thenExpression as ExpressionImpl,
+ colon,
+ elseExpression as ExpressionImpl);
@override
Configuration configuration(
Token ifKeyword,
Token leftParenthesis,
DottedName name,
- Token equalToken,
- StringLiteral value,
+ Token? equalToken,
+ StringLiteral? value,
Token rightParenthesis,
StringLiteral libraryUri) =>
- ConfigurationImpl(ifKeyword, leftParenthesis, name, equalToken, value,
- rightParenthesis, libraryUri);
+ ConfigurationImpl(
+ ifKeyword,
+ leftParenthesis,
+ name as DottedNameImpl,
+ equalToken,
+ value as StringLiteralImpl?,
+ rightParenthesis,
+ libraryUri as StringLiteralImpl);
@override
ConstructorDeclaration constructorDeclaration(
- Comment comment,
- List<Annotation> metadata,
- Token externalKeyword,
- Token constKeyword,
- Token factoryKeyword,
+ Comment? comment,
+ List<Annotation>? metadata,
+ Token? externalKeyword,
+ Token? constKeyword,
+ Token? factoryKeyword,
Identifier returnType,
- Token period,
- SimpleIdentifier name,
+ Token? period,
+ SimpleIdentifier? name,
FormalParameterList parameters,
- Token separator,
- List<ConstructorInitializer> initializers,
- ConstructorName redirectedConstructor,
- FunctionBody body) =>
+ Token? separator,
+ List<ConstructorInitializer>? initializers,
+ ConstructorName? redirectedConstructor,
+ FunctionBody? body) =>
ConstructorDeclarationImpl(
- comment,
+ comment as CommentImpl?,
metadata,
externalKeyword,
constKeyword,
factoryKeyword,
- returnType,
+ returnType as IdentifierImpl,
period,
- name,
- parameters,
+ name as SimpleIdentifierImpl?,
+ parameters as FormalParameterListImpl,
separator,
initializers,
- redirectedConstructor,
- body);
+ redirectedConstructor as ConstructorNameImpl?,
+ body as FunctionBodyImpl?);
@override
ConstructorFieldInitializer constructorFieldInitializer(
- Token thisKeyword,
- Token period,
+ Token? thisKeyword,
+ Token? period,
SimpleIdentifier fieldName,
Token equals,
Expression expression) =>
ConstructorFieldInitializerImpl(
- thisKeyword, period, fieldName, equals, expression);
+ thisKeyword,
+ period,
+ fieldName as SimpleIdentifierImpl,
+ equals,
+ expression as ExpressionImpl);
@override
ConstructorName constructorName(
- TypeName type, Token period, SimpleIdentifier name) =>
- ConstructorNameImpl(type, period, name);
+ TypeName type, Token? period, SimpleIdentifier? name) =>
+ ConstructorNameImpl(
+ type as TypeNameImpl, period, name as SimpleIdentifierImpl?);
@override
ContinueStatement continueStatement(
- Token continueKeyword, SimpleIdentifier label, Token semicolon) =>
- ContinueStatementImpl(continueKeyword, label, semicolon);
+ Token continueKeyword, SimpleIdentifier? label, Token semicolon) =>
+ ContinueStatementImpl(
+ continueKeyword, label as SimpleIdentifierImpl?, semicolon);
@override
DeclaredIdentifier declaredIdentifier(
- Comment comment,
- List<Annotation> metadata,
- Token keyword,
- TypeAnnotation type,
+ Comment? comment,
+ List<Annotation>? metadata,
+ Token? keyword,
+ TypeAnnotation? type,
SimpleIdentifier identifier) =>
- DeclaredIdentifierImpl(comment, metadata, keyword, type, identifier);
+ DeclaredIdentifierImpl(comment as CommentImpl?, metadata, keyword,
+ type as TypeAnnotationImpl?, identifier as SimpleIdentifierImpl);
@override
DefaultFormalParameter defaultFormalParameter(NormalFormalParameter parameter,
- ParameterKind kind, Token separator, Expression defaultValue) =>
- DefaultFormalParameterImpl(parameter, kind, separator, defaultValue);
+ ParameterKind kind, Token? separator, Expression? defaultValue) =>
+ DefaultFormalParameterImpl(parameter as NormalFormalParameterImpl, kind,
+ separator, defaultValue as ExpressionImpl?);
@override
Comment documentationComment(List<Token> tokens,
- [List<CommentReference> references]) =>
+ [List<CommentReference>? references]) =>
CommentImpl.createDocumentationCommentWithReferences(
tokens, references ?? <CommentReference>[]);
@@ -288,8 +326,14 @@
Expression condition,
Token rightParenthesis,
Token semicolon) =>
- DoStatementImpl(doKeyword, body, whileKeyword, leftParenthesis, condition,
- rightParenthesis, semicolon);
+ DoStatementImpl(
+ doKeyword,
+ body as StatementImpl,
+ whileKeyword,
+ leftParenthesis,
+ condition as ExpressionImpl,
+ rightParenthesis,
+ semicolon);
@override
DottedName dottedName(List<SimpleIdentifier> components) =>
@@ -312,273 +356,338 @@
CommentImpl.createEndOfLineComment(tokens);
@override
- EnumConstantDeclaration enumConstantDeclaration(
- Comment comment, List<Annotation> metadata, SimpleIdentifier name) =>
- EnumConstantDeclarationImpl(comment, metadata, name);
+ EnumConstantDeclaration enumConstantDeclaration(Comment? comment,
+ List<Annotation>? metadata, SimpleIdentifier name) =>
+ EnumConstantDeclarationImpl(
+ comment as CommentImpl?, metadata, name as SimpleIdentifierImpl);
@override
EnumDeclaration enumDeclaration(
- Comment comment,
- List<Annotation> metadata,
+ Comment? comment,
+ List<Annotation>? metadata,
Token enumKeyword,
SimpleIdentifier name,
Token leftBracket,
List<EnumConstantDeclaration> constants,
Token rightBracket) =>
- EnumDeclarationImpl(comment, metadata, enumKeyword, name, leftBracket,
- constants, rightBracket);
+ EnumDeclarationImpl(comment as CommentImpl?, metadata, enumKeyword,
+ name as SimpleIdentifierImpl, leftBracket, constants, rightBracket);
@override
ExportDirective exportDirective(
- Comment comment,
- List<Annotation> metadata,
+ Comment? comment,
+ List<Annotation>? metadata,
Token keyword,
StringLiteral libraryUri,
- List<Configuration> configurations,
- List<Combinator> combinators,
+ List<Configuration>? configurations,
+ List<Combinator>? combinators,
Token semicolon) =>
- ExportDirectiveImpl(comment, metadata, keyword, libraryUri,
- configurations, combinators, semicolon);
+ ExportDirectiveImpl(
+ comment as CommentImpl?,
+ metadata,
+ keyword,
+ libraryUri as StringLiteralImpl,
+ configurations,
+ combinators,
+ semicolon);
@override
- ExpressionFunctionBody expressionFunctionBody(Token keyword,
- Token functionDefinition, Expression expression, Token semicolon) =>
+ ExpressionFunctionBody expressionFunctionBody(Token? keyword,
+ Token functionDefinition, Expression expression, Token? semicolon) =>
ExpressionFunctionBodyImpl(
- keyword, functionDefinition, expression, semicolon);
+ keyword, functionDefinition, expression as ExpressionImpl, semicolon);
@override
ExpressionStatement expressionStatement(
- Expression expression, Token semicolon) =>
- ExpressionStatementImpl(expression, semicolon);
+ Expression expression, Token? semicolon) =>
+ ExpressionStatementImpl(expression as ExpressionImpl, semicolon);
@override
ExtendsClause extendsClause(Token extendsKeyword, TypeName superclass) =>
- ExtendsClauseImpl(extendsKeyword, superclass);
+ ExtendsClauseImpl(extendsKeyword, superclass as TypeNameImpl);
@override
ExtensionDeclaration extensionDeclaration(
- {Comment comment,
- List<Annotation> metadata,
- Token extensionKeyword,
- @required SimpleIdentifier name,
- TypeParameterList typeParameters,
- Token onKeyword,
- @required TypeAnnotation extendedType,
- Token leftBracket,
- List<ClassMember> members,
- Token rightBracket}) =>
+ {Comment? comment,
+ List<Annotation>? metadata,
+ required Token extensionKeyword,
+ required SimpleIdentifier? name,
+ TypeParameterList? typeParameters,
+ required Token onKeyword,
+ required TypeAnnotation extendedType,
+ required Token leftBracket,
+ required List<ClassMember> members,
+ required Token rightBracket}) =>
ExtensionDeclarationImpl(
- comment,
+ comment as CommentImpl?,
metadata,
extensionKeyword,
- name,
- typeParameters,
+ name as SimpleIdentifierImpl?,
+ typeParameters as TypeParameterListImpl?,
onKeyword,
- extendedType,
+ extendedType as TypeAnnotationImpl,
leftBracket,
members,
rightBracket);
@override
ExtensionOverride extensionOverride(
- {@required Identifier extensionName,
- TypeArgumentList typeArguments,
- @required ArgumentList argumentList}) =>
- ExtensionOverrideImpl(extensionName, typeArguments, argumentList);
+ {required Identifier extensionName,
+ TypeArgumentList? typeArguments,
+ required ArgumentList argumentList}) =>
+ ExtensionOverrideImpl(
+ extensionName as IdentifierImpl,
+ typeArguments as TypeArgumentListImpl?,
+ argumentList as ArgumentListImpl);
@override
FieldDeclaration fieldDeclaration2(
- {Comment comment,
- List<Annotation> metadata,
- Token abstractKeyword,
- Token covariantKeyword,
- Token externalKeyword,
- Token staticKeyword,
- @required VariableDeclarationList fieldList,
- @required Token semicolon}) =>
- FieldDeclarationImpl(comment, metadata, abstractKeyword, covariantKeyword,
- externalKeyword, staticKeyword, fieldList, semicolon);
+ {Comment? comment,
+ List<Annotation>? metadata,
+ Token? abstractKeyword,
+ Token? covariantKeyword,
+ Token? externalKeyword,
+ Token? staticKeyword,
+ required VariableDeclarationList fieldList,
+ required Token semicolon}) =>
+ FieldDeclarationImpl(
+ comment as CommentImpl?,
+ metadata,
+ abstractKeyword,
+ covariantKeyword,
+ externalKeyword,
+ staticKeyword,
+ fieldList as VariableDeclarationListImpl,
+ semicolon);
@override
FieldFormalParameter fieldFormalParameter2(
- {Comment comment,
- List<Annotation> metadata,
- Token covariantKeyword,
- Token requiredKeyword,
- Token keyword,
- TypeAnnotation type,
- @required Token thisKeyword,
- @required Token period,
- @required SimpleIdentifier identifier,
- TypeParameterList typeParameters,
- FormalParameterList parameters,
- Token question}) =>
+ {Comment? comment,
+ List<Annotation>? metadata,
+ Token? covariantKeyword,
+ Token? requiredKeyword,
+ Token? keyword,
+ TypeAnnotation? type,
+ required Token thisKeyword,
+ required Token period,
+ required SimpleIdentifier identifier,
+ TypeParameterList? typeParameters,
+ FormalParameterList? parameters,
+ Token? question}) =>
FieldFormalParameterImpl(
- comment,
+ comment as CommentImpl?,
metadata,
covariantKeyword,
requiredKeyword,
keyword,
- type,
+ type as TypeAnnotationImpl?,
thisKeyword,
period,
- identifier,
- typeParameters,
- parameters,
+ identifier as SimpleIdentifierImpl,
+ typeParameters as TypeParameterListImpl?,
+ parameters as FormalParameterListImpl?,
question);
@override
ForEachPartsWithDeclaration forEachPartsWithDeclaration(
- {DeclaredIdentifier loopVariable,
- Token inKeyword,
- Expression iterable}) =>
- ForEachPartsWithDeclarationImpl(loopVariable, inKeyword, iterable);
+ {required DeclaredIdentifier loopVariable,
+ required Token inKeyword,
+ required Expression iterable}) =>
+ ForEachPartsWithDeclarationImpl(loopVariable as DeclaredIdentifierImpl,
+ inKeyword, iterable as ExpressionImpl);
@override
ForEachPartsWithIdentifier forEachPartsWithIdentifier(
- {SimpleIdentifier identifier,
- Token inKeyword,
- Expression iterable}) =>
- ForEachPartsWithIdentifierImpl(identifier, inKeyword, iterable);
+ {required SimpleIdentifier identifier,
+ required Token inKeyword,
+ required Expression iterable}) =>
+ ForEachPartsWithIdentifierImpl(identifier as SimpleIdentifierImpl,
+ inKeyword, iterable as ExpressionImpl);
@override
ForElement forElement(
- {Token awaitKeyword,
- Token forKeyword,
- Token leftParenthesis,
- ForLoopParts forLoopParts,
- Token rightParenthesis,
- CollectionElement body}) =>
- ForElementImpl(awaitKeyword, forKeyword, leftParenthesis, forLoopParts,
- rightParenthesis, body);
+ {Token? awaitKeyword,
+ required Token forKeyword,
+ required Token leftParenthesis,
+ required ForLoopParts forLoopParts,
+ required Token rightParenthesis,
+ required CollectionElement body}) =>
+ ForElementImpl(
+ awaitKeyword,
+ forKeyword,
+ leftParenthesis,
+ forLoopParts as ForLoopPartsImpl,
+ rightParenthesis,
+ body as CollectionElementImpl);
@override
FormalParameterList formalParameterList(
Token leftParenthesis,
List<FormalParameter> parameters,
- Token leftDelimiter,
- Token rightDelimiter,
+ Token? leftDelimiter,
+ Token? rightDelimiter,
Token rightParenthesis) =>
FormalParameterListImpl(leftParenthesis, parameters, leftDelimiter,
rightDelimiter, rightParenthesis);
@override
ForPartsWithDeclarations forPartsWithDeclarations(
- {VariableDeclarationList variables,
- Token leftSeparator,
- Expression condition,
- Token rightSeparator,
- List<Expression> updaters}) =>
+ {required VariableDeclarationList variables,
+ required Token leftSeparator,
+ Expression? condition,
+ required Token rightSeparator,
+ List<Expression>? updaters}) =>
ForPartsWithDeclarationsImpl(
- variables, leftSeparator, condition, rightSeparator, updaters);
+ variables as VariableDeclarationListImpl,
+ leftSeparator,
+ condition as ExpressionImpl?,
+ rightSeparator,
+ updaters);
@override
ForPartsWithExpression forPartsWithExpression(
- {Expression initialization,
- Token leftSeparator,
- Expression condition,
- Token rightSeparator,
- List<Expression> updaters}) =>
+ {Expression? initialization,
+ required Token leftSeparator,
+ Expression? condition,
+ required Token rightSeparator,
+ List<Expression>? updaters}) =>
ForPartsWithExpressionImpl(
- initialization, leftSeparator, condition, rightSeparator, updaters);
+ initialization as ExpressionImpl?,
+ leftSeparator,
+ condition as ExpressionImpl?,
+ rightSeparator,
+ updaters);
@override
ForStatement forStatement(
- {Token awaitKeyword,
- Token forKeyword,
- Token leftParenthesis,
- ForLoopParts forLoopParts,
- Token rightParenthesis,
- Statement body}) {
- return ForStatementImpl(awaitKeyword, forKeyword, leftParenthesis,
- forLoopParts, rightParenthesis, body);
+ {Token? awaitKeyword,
+ required Token forKeyword,
+ required Token leftParenthesis,
+ required ForLoopParts forLoopParts,
+ required Token rightParenthesis,
+ required Statement body}) {
+ return ForStatementImpl(
+ awaitKeyword,
+ forKeyword,
+ leftParenthesis,
+ forLoopParts as ForLoopPartsImpl,
+ rightParenthesis,
+ body as StatementImpl);
}
@override
FunctionDeclaration functionDeclaration(
- Comment comment,
- List<Annotation> metadata,
- Token externalKeyword,
- TypeAnnotation returnType,
- Token propertyKeyword,
+ Comment? comment,
+ List<Annotation>? metadata,
+ Token? externalKeyword,
+ TypeAnnotation? returnType,
+ Token? propertyKeyword,
SimpleIdentifier name,
FunctionExpression functionExpression) =>
- FunctionDeclarationImpl(comment, metadata, externalKeyword, returnType,
- propertyKeyword, name, functionExpression);
+ FunctionDeclarationImpl(
+ comment as CommentImpl?,
+ metadata,
+ externalKeyword,
+ returnType as TypeAnnotationImpl?,
+ propertyKeyword,
+ name as SimpleIdentifierImpl,
+ functionExpression as FunctionExpressionImpl);
@override
FunctionDeclarationStatement functionDeclarationStatement(
FunctionDeclaration functionDeclaration) =>
- FunctionDeclarationStatementImpl(functionDeclaration);
+ FunctionDeclarationStatementImpl(
+ functionDeclaration as FunctionDeclarationImpl);
@override
- FunctionExpression functionExpression(TypeParameterList typeParameters,
- FormalParameterList parameters, FunctionBody body) =>
- FunctionExpressionImpl(typeParameters, parameters, body);
+ FunctionExpression functionExpression(TypeParameterList? typeParameters,
+ FormalParameterList? parameters, FunctionBody? body) =>
+ FunctionExpressionImpl(typeParameters as TypeParameterListImpl?,
+ parameters as FormalParameterListImpl?, body as FunctionBodyImpl?);
@override
FunctionExpressionInvocation functionExpressionInvocation(Expression function,
- TypeArgumentList typeArguments, ArgumentList argumentList) =>
- FunctionExpressionInvocationImpl(function, typeArguments, argumentList);
+ TypeArgumentList? typeArguments, ArgumentList argumentList) =>
+ FunctionExpressionInvocationImpl(
+ function as ExpressionImpl,
+ typeArguments as TypeArgumentListImpl?,
+ argumentList as ArgumentListImpl);
@override
FunctionTypeAlias functionTypeAlias(
- Comment comment,
- List<Annotation> metadata,
+ Comment? comment,
+ List<Annotation>? metadata,
Token keyword,
- TypeAnnotation returnType,
+ TypeAnnotation? returnType,
SimpleIdentifier name,
- TypeParameterList typeParameters,
+ TypeParameterList? typeParameters,
FormalParameterList parameters,
Token semicolon) =>
- FunctionTypeAliasImpl(comment, metadata, keyword, returnType, name,
- typeParameters, parameters, semicolon);
+ FunctionTypeAliasImpl(
+ comment as CommentImpl?,
+ metadata,
+ keyword,
+ returnType as TypeAnnotationImpl?,
+ name as SimpleIdentifierImpl,
+ typeParameters as TypeParameterListImpl?,
+ parameters as FormalParameterListImpl,
+ semicolon);
@override
FunctionTypedFormalParameter functionTypedFormalParameter2(
- {Comment comment,
- List<Annotation> metadata,
- Token covariantKeyword,
- Token requiredKeyword,
- TypeAnnotation returnType,
- @required SimpleIdentifier identifier,
- TypeParameterList typeParameters,
- @required FormalParameterList parameters,
- Token question}) =>
+ {Comment? comment,
+ List<Annotation>? metadata,
+ Token? covariantKeyword,
+ Token? requiredKeyword,
+ TypeAnnotation? returnType,
+ required SimpleIdentifier identifier,
+ TypeParameterList? typeParameters,
+ required FormalParameterList parameters,
+ Token? question}) =>
FunctionTypedFormalParameterImpl(
- comment,
+ comment as CommentImpl?,
metadata,
covariantKeyword,
requiredKeyword,
- returnType,
- identifier,
- typeParameters,
- parameters,
+ returnType as TypeAnnotationImpl?,
+ identifier as SimpleIdentifierImpl,
+ typeParameters as TypeParameterListImpl?,
+ parameters as FormalParameterListImpl,
question);
@override
GenericFunctionType genericFunctionType(
- TypeAnnotation returnType,
+ TypeAnnotation? returnType,
Token functionKeyword,
- TypeParameterList typeParameters,
+ TypeParameterList? typeParameters,
FormalParameterList parameters,
- {Token question}) =>
+ {Token? question}) =>
GenericFunctionTypeImpl(
- returnType, functionKeyword, typeParameters, parameters,
+ returnType as TypeAnnotationImpl?,
+ functionKeyword,
+ typeParameters as TypeParameterListImpl?,
+ parameters as FormalParameterListImpl,
question: question);
@override
GenericTypeAlias genericTypeAlias(
- Comment comment,
- List<Annotation> metadata,
+ Comment? comment,
+ List<Annotation>? metadata,
Token typedefKeyword,
SimpleIdentifier name,
- TypeParameterList typeParameters,
+ TypeParameterList? typeParameters,
Token equals,
TypeAnnotation type,
Token semicolon) =>
- GenericTypeAliasImpl(comment, metadata, typedefKeyword, name,
- typeParameters, equals, type, semicolon);
+ GenericTypeAliasImpl(
+ comment as CommentImpl?,
+ metadata,
+ typedefKeyword,
+ name as SimpleIdentifierImpl,
+ typeParameters as TypeParameterListImpl?,
+ equals,
+ type as TypeAnnotationImpl,
+ semicolon);
@override
HideCombinator hideCombinator(
@@ -587,15 +696,21 @@
@override
IfElement ifElement(
- {Token ifKeyword,
- Token leftParenthesis,
- Expression condition,
- Token rightParenthesis,
- CollectionElement thenElement,
- Token elseKeyword,
- CollectionElement elseElement}) =>
- IfElementImpl(ifKeyword, leftParenthesis, condition, rightParenthesis,
- thenElement, elseKeyword, elseElement);
+ {required Token ifKeyword,
+ required Token leftParenthesis,
+ required Expression condition,
+ required Token rightParenthesis,
+ required CollectionElement thenElement,
+ Token? elseKeyword,
+ CollectionElement? elseElement}) =>
+ IfElementImpl(
+ ifKeyword,
+ leftParenthesis,
+ condition as ExpressionImpl,
+ rightParenthesis,
+ thenElement as CollectionElementImpl,
+ elseKeyword,
+ elseElement as CollectionElementImpl?);
@override
IfStatement ifStatement(
@@ -604,10 +719,16 @@
Expression condition,
Token rightParenthesis,
Statement thenStatement,
- Token elseKeyword,
- Statement elseStatement) =>
- IfStatementImpl(ifKeyword, leftParenthesis, condition, rightParenthesis,
- thenStatement, elseKeyword, elseStatement);
+ Token? elseKeyword,
+ Statement? elseStatement) =>
+ IfStatementImpl(
+ ifKeyword,
+ leftParenthesis,
+ condition as ExpressionImpl,
+ rightParenthesis,
+ thenStatement as StatementImpl,
+ elseKeyword,
+ elseStatement as StatementImpl?);
@override
ImplementsClause implementsClause(
@@ -616,63 +737,67 @@
@override
ImportDirective importDirective(
- Comment comment,
- List<Annotation> metadata,
+ Comment? comment,
+ List<Annotation>? metadata,
Token keyword,
StringLiteral libraryUri,
- List<Configuration> configurations,
- Token deferredKeyword,
- Token asKeyword,
- SimpleIdentifier prefix,
- List<Combinator> combinators,
+ List<Configuration>? configurations,
+ Token? deferredKeyword,
+ Token? asKeyword,
+ SimpleIdentifier? prefix,
+ List<Combinator>? combinators,
Token semicolon) =>
ImportDirectiveImpl(
- comment,
+ comment as CommentImpl?,
metadata,
keyword,
- libraryUri,
+ libraryUri as StringLiteralImpl,
configurations,
deferredKeyword,
asKeyword,
- prefix,
+ prefix as SimpleIdentifierImpl?,
combinators,
semicolon);
@override
IndexExpression indexExpressionForCascade2(
- {@required Token period,
- Token question,
- @required Token leftBracket,
- @required Expression index,
- @required Token rightBracket}) =>
+ {required Token period,
+ Token? question,
+ required Token leftBracket,
+ required Expression index,
+ required Token rightBracket}) =>
IndexExpressionImpl.forCascade(
- period, question, leftBracket, index, rightBracket);
+ period, question, leftBracket, index as ExpressionImpl, rightBracket);
@override
IndexExpression indexExpressionForTarget2(
- {@required Expression target,
- Token question,
- @required Token leftBracket,
- @required Expression index,
- @required Token rightBracket}) =>
- IndexExpressionImpl.forTarget(
- target, question, leftBracket, index, rightBracket);
+ {required Expression target,
+ Token? question,
+ required Token leftBracket,
+ required Expression index,
+ required Token rightBracket}) =>
+ IndexExpressionImpl.forTarget(target as ExpressionImpl, question,
+ leftBracket, index as ExpressionImpl, rightBracket);
@override
- InstanceCreationExpression instanceCreationExpression(Token keyword,
+ InstanceCreationExpression instanceCreationExpression(Token? keyword,
ConstructorName constructorName, ArgumentList argumentList,
- {TypeArgumentList typeArguments}) =>
- InstanceCreationExpressionImpl(keyword, constructorName, argumentList,
- typeArguments: typeArguments);
+ {TypeArgumentList? typeArguments}) =>
+ InstanceCreationExpressionImpl(
+ keyword,
+ constructorName as ConstructorNameImpl,
+ argumentList as ArgumentListImpl,
+ typeArguments: typeArguments as TypeArgumentListImpl?);
@override
- IntegerLiteral integerLiteral(Token literal, int value) =>
+ IntegerLiteral integerLiteral(Token literal, int? value) =>
IntegerLiteralImpl(literal, value);
@override
InterpolationExpression interpolationExpression(
- Token leftBracket, Expression expression, Token rightBracket) =>
- InterpolationExpressionImpl(leftBracket, expression, rightBracket);
+ Token leftBracket, Expression expression, Token? rightBracket) =>
+ InterpolationExpressionImpl(
+ leftBracket, expression as ExpressionImpl, rightBracket);
@override
InterpolationString interpolationString(Token contents, String value) =>
@@ -680,116 +805,137 @@
@override
IsExpression isExpression(Expression expression, Token isOperator,
- Token notOperator, TypeAnnotation type) =>
- IsExpressionImpl(expression, isOperator, notOperator, type);
+ Token? notOperator, TypeAnnotation type) =>
+ IsExpressionImpl(expression as ExpressionImpl, isOperator, notOperator,
+ type as TypeAnnotationImpl);
@override
- Label label(SimpleIdentifier label, Token colon) => LabelImpl(label, colon);
+ Label label(SimpleIdentifier label, Token colon) =>
+ LabelImpl(label as SimpleIdentifierImpl, colon);
@override
LabeledStatement labeledStatement(List<Label> labels, Statement statement) =>
- LabeledStatementImpl(labels, statement);
+ LabeledStatementImpl(labels, statement as StatementImpl);
@override
- LibraryDirective libraryDirective(Comment comment, List<Annotation> metadata,
- Token libraryKeyword, LibraryIdentifier name, Token semicolon) =>
- LibraryDirectiveImpl(comment, metadata, libraryKeyword, name, semicolon);
+ LibraryDirective libraryDirective(
+ Comment? comment,
+ List<Annotation>? metadata,
+ Token libraryKeyword,
+ LibraryIdentifier name,
+ Token semicolon) =>
+ LibraryDirectiveImpl(comment as CommentImpl?, metadata, libraryKeyword,
+ name as LibraryIdentifierImpl, semicolon);
@override
LibraryIdentifier libraryIdentifier(List<SimpleIdentifier> components) =>
LibraryIdentifierImpl(components);
@override
- ListLiteral listLiteral(Token constKeyword, TypeArgumentList typeArguments,
+ ListLiteral listLiteral(Token? constKeyword, TypeArgumentList? typeArguments,
Token leftBracket, List<CollectionElement> elements, Token rightBracket) {
- if (elements == null || elements is List<Expression>) {
+ if (elements is List<Expression>) {
return ListLiteralImpl(
- constKeyword, typeArguments, leftBracket, elements, rightBracket);
+ constKeyword,
+ typeArguments as TypeArgumentListImpl?,
+ leftBracket,
+ elements,
+ rightBracket);
}
return ListLiteralImpl.experimental(
- constKeyword, typeArguments, leftBracket, elements, rightBracket);
+ constKeyword,
+ typeArguments as TypeArgumentListImpl?,
+ leftBracket,
+ elements,
+ rightBracket);
}
@override
MapLiteralEntry mapLiteralEntry(
Expression key, Token separator, Expression value) =>
- MapLiteralEntryImpl(key, separator, value);
+ MapLiteralEntryImpl(
+ key as ExpressionImpl, separator, value as ExpressionImpl);
@override
MethodDeclaration methodDeclaration(
- Comment comment,
- List<Annotation> metadata,
- Token externalKeyword,
- Token modifierKeyword,
- TypeAnnotation returnType,
- Token propertyKeyword,
- Token operatorKeyword,
+ Comment? comment,
+ List<Annotation>? metadata,
+ Token? externalKeyword,
+ Token? modifierKeyword,
+ TypeAnnotation? returnType,
+ Token? propertyKeyword,
+ Token? operatorKeyword,
SimpleIdentifier name,
- TypeParameterList typeParameters,
- FormalParameterList parameters,
+ TypeParameterList? typeParameters,
+ FormalParameterList? parameters,
FunctionBody body) =>
MethodDeclarationImpl(
- comment,
+ comment as CommentImpl?,
metadata,
externalKeyword,
modifierKeyword,
- returnType,
+ returnType as TypeAnnotationImpl?,
propertyKeyword,
operatorKeyword,
- name,
- typeParameters,
- parameters,
- body);
+ name as SimpleIdentifierImpl,
+ typeParameters as TypeParameterListImpl?,
+ parameters as FormalParameterListImpl?,
+ body as FunctionBodyImpl);
@override
MethodInvocation methodInvocation(
- Expression target,
- Token operator,
+ Expression? target,
+ Token? operator,
SimpleIdentifier methodName,
- TypeArgumentList typeArguments,
+ TypeArgumentList? typeArguments,
ArgumentList argumentList) =>
MethodInvocationImpl(
- target, operator, methodName, typeArguments, argumentList);
+ target as ExpressionImpl?,
+ operator,
+ methodName as SimpleIdentifierImpl,
+ typeArguments as TypeArgumentListImpl?,
+ argumentList as ArgumentListImpl);
@override
MixinDeclaration mixinDeclaration(
- Comment comment,
- List<Annotation> metadata,
+ Comment? comment,
+ List<Annotation>? metadata,
Token mixinKeyword,
SimpleIdentifier name,
- TypeParameterList typeParameters,
- OnClause onClause,
- ImplementsClause implementsClause,
+ TypeParameterList? typeParameters,
+ OnClause? onClause,
+ ImplementsClause? implementsClause,
Token leftBracket,
List<ClassMember> members,
Token rightBracket) =>
MixinDeclarationImpl(
- comment,
+ comment as CommentImpl?,
metadata,
mixinKeyword,
- name,
- typeParameters,
- onClause,
- implementsClause,
+ name as SimpleIdentifierImpl,
+ typeParameters as TypeParameterListImpl?,
+ onClause as OnClauseImpl?,
+ implementsClause as ImplementsClauseImpl?,
leftBracket,
members,
rightBracket);
@override
NamedExpression namedExpression(Label name, Expression expression) =>
- NamedExpressionImpl(name, expression);
+ NamedExpressionImpl(name as LabelImpl, expression as ExpressionImpl);
@override
- NativeClause nativeClause(Token nativeKeyword, StringLiteral name) =>
- NativeClauseImpl(nativeKeyword, name);
+ NativeClause nativeClause(Token nativeKeyword, StringLiteral? name) =>
+ NativeClauseImpl(nativeKeyword, name as StringLiteralImpl?);
@override
NativeFunctionBody nativeFunctionBody(
- Token nativeKeyword, StringLiteral stringLiteral, Token semicolon) =>
- NativeFunctionBodyImpl(nativeKeyword, stringLiteral, semicolon);
+ Token nativeKeyword, StringLiteral? stringLiteral, Token semicolon) =>
+ NativeFunctionBodyImpl(
+ nativeKeyword, stringLiteral as StringLiteralImpl?, semicolon);
@override
- NodeList<E> nodeList<E extends AstNode>(AstNode owner, [List<E> elements]) =>
+ NodeList<E> nodeList<E extends AstNode>(AstNode owner, [List<E>? elements]) =>
NodeListImpl<E>(owner as AstNodeImpl, elements);
@override
@@ -803,51 +949,63 @@
ParenthesizedExpression parenthesizedExpression(Token leftParenthesis,
Expression expression, Token rightParenthesis) =>
ParenthesizedExpressionImpl(
- leftParenthesis, expression, rightParenthesis);
+ leftParenthesis, expression as ExpressionImpl, rightParenthesis);
@override
- PartDirective partDirective(Comment comment, List<Annotation> metadata,
+ PartDirective partDirective(Comment? comment, List<Annotation>? metadata,
Token partKeyword, StringLiteral partUri, Token semicolon) =>
- PartDirectiveImpl(comment, metadata, partKeyword, partUri, semicolon);
+ PartDirectiveImpl(comment as CommentImpl?, metadata, partKeyword,
+ partUri as StringLiteralImpl, semicolon);
@override
PartOfDirective partOfDirective(
- Comment comment,
- List<Annotation> metadata,
+ Comment? comment,
+ List<Annotation>? metadata,
Token partKeyword,
Token ofKeyword,
- StringLiteral uri,
- LibraryIdentifier libraryName,
+ StringLiteral? uri,
+ LibraryIdentifier? libraryName,
Token semicolon) =>
- PartOfDirectiveImpl(comment, metadata, partKeyword, ofKeyword, uri,
- libraryName, semicolon);
+ PartOfDirectiveImpl(
+ comment as CommentImpl?,
+ metadata,
+ partKeyword,
+ ofKeyword,
+ uri as StringLiteralImpl?,
+ libraryName as LibraryIdentifierImpl?,
+ semicolon);
@override
PostfixExpression postfixExpression(Expression operand, Token operator) =>
- PostfixExpressionImpl(operand, operator);
+ PostfixExpressionImpl(operand as ExpressionImpl, operator);
@override
PrefixedIdentifier prefixedIdentifier(
SimpleIdentifier prefix, Token period, SimpleIdentifier identifier) =>
- PrefixedIdentifierImpl(prefix, period, identifier);
+ PrefixedIdentifierImpl(prefix as SimpleIdentifierImpl, period,
+ identifier as SimpleIdentifierImpl);
@override
PrefixExpression prefixExpression(Token operator, Expression operand) =>
- PrefixExpressionImpl(operator, operand);
+ PrefixExpressionImpl(operator, operand as ExpressionImpl);
@override
PropertyAccess propertyAccess(
- Expression target, Token operator, SimpleIdentifier propertyName) =>
- PropertyAccessImpl(target, operator, propertyName);
+ Expression? target, Token operator, SimpleIdentifier propertyName) =>
+ PropertyAccessImpl(target as ExpressionImpl?, operator,
+ propertyName as SimpleIdentifierImpl);
@override
RedirectingConstructorInvocation redirectingConstructorInvocation(
Token thisKeyword,
- Token period,
- SimpleIdentifier constructorName,
+ Token? period,
+ SimpleIdentifier? constructorName,
ArgumentList argumentList) =>
RedirectingConstructorInvocationImpl(
- thisKeyword, period, constructorName, argumentList);
+ thisKeyword,
+ period,
+ constructorName as SimpleIdentifierImpl?,
+ argumentList as ArgumentListImpl);
@override
RethrowExpression rethrowExpression(Token rethrowKeyword) =>
@@ -855,21 +1013,22 @@
@override
ReturnStatement returnStatement(
- Token returnKeyword, Expression expression, Token semicolon) =>
- ReturnStatementImpl(returnKeyword, expression, semicolon);
+ Token returnKeyword, Expression? expression, Token semicolon) =>
+ ReturnStatementImpl(
+ returnKeyword, expression as ExpressionImpl?, semicolon);
@override
ScriptTag scriptTag(Token scriptTag) => ScriptTagImpl(scriptTag);
@override
SetOrMapLiteral setOrMapLiteral(
- {Token constKeyword,
- TypeArgumentList typeArguments,
- Token leftBracket,
- List<CollectionElement> elements,
- Token rightBracket}) =>
- SetOrMapLiteralImpl(
- constKeyword, typeArguments, leftBracket, elements, rightBracket);
+ {Token? constKeyword,
+ TypeArgumentList? typeArguments,
+ required Token leftBracket,
+ required List<CollectionElement> elements,
+ required Token rightBracket}) =>
+ SetOrMapLiteralImpl(constKeyword, typeArguments as TypeArgumentListImpl?,
+ leftBracket, elements, rightBracket);
@override
ShowCombinator showCombinator(
@@ -878,15 +1037,21 @@
@override
SimpleFormalParameter simpleFormalParameter2(
- {Comment comment,
- List<Annotation> metadata,
- Token covariantKeyword,
- Token requiredKeyword,
- Token keyword,
- TypeAnnotation type,
- @required SimpleIdentifier identifier}) =>
- SimpleFormalParameterImpl(comment, metadata, covariantKeyword,
- requiredKeyword, keyword, type, identifier);
+ {Comment? comment,
+ List<Annotation>? metadata,
+ Token? covariantKeyword,
+ Token? requiredKeyword,
+ Token? keyword,
+ TypeAnnotation? type,
+ required SimpleIdentifier? identifier}) =>
+ SimpleFormalParameterImpl(
+ comment as CommentImpl?,
+ metadata,
+ covariantKeyword,
+ requiredKeyword,
+ keyword,
+ type as TypeAnnotationImpl?,
+ identifier as SimpleIdentifierImpl?);
@override
SimpleIdentifier simpleIdentifier(Token token, {bool isDeclaration = false}) {
@@ -901,8 +1066,9 @@
SimpleStringLiteralImpl(literal, value);
@override
- SpreadElement spreadElement({Token spreadOperator, Expression expression}) =>
- SpreadElementImpl(spreadOperator, expression);
+ SpreadElement spreadElement(
+ {required Token spreadOperator, required Expression expression}) =>
+ SpreadElementImpl(spreadOperator, expression as ExpressionImpl);
@override
StringInterpolation stringInterpolation(
@@ -912,11 +1078,14 @@
@override
SuperConstructorInvocation superConstructorInvocation(
Token superKeyword,
- Token period,
- SimpleIdentifier constructorName,
+ Token? period,
+ SimpleIdentifier? constructorName,
ArgumentList argumentList) =>
SuperConstructorInvocationImpl(
- superKeyword, period, constructorName, argumentList);
+ superKeyword,
+ period,
+ constructorName as SimpleIdentifierImpl?,
+ argumentList as ArgumentListImpl);
@override
SuperExpression superExpression(Token superKeyword) =>
@@ -925,7 +1094,8 @@
@override
SwitchCase switchCase(List<Label> labels, Token keyword,
Expression expression, Token colon, List<Statement> statements) =>
- SwitchCaseImpl(labels, keyword, expression, colon, statements);
+ SwitchCaseImpl(
+ labels, keyword, expression as ExpressionImpl, colon, statements);
@override
SwitchDefault switchDefault(List<Label> labels, Token keyword, Token colon,
@@ -941,8 +1111,14 @@
Token leftBracket,
List<SwitchMember> members,
Token rightBracket) =>
- SwitchStatementImpl(switchKeyword, leftParenthesis, expression,
- rightParenthesis, leftBracket, members, rightBracket);
+ SwitchStatementImpl(
+ switchKeyword,
+ leftParenthesis,
+ expression as ExpressionImpl,
+ rightParenthesis,
+ leftBracket,
+ members,
+ rightBracket);
@override
SymbolLiteral symbolLiteral(Token poundSign, List<Token> components) =>
@@ -954,27 +1130,31 @@
@override
ThrowExpression throwExpression(Token throwKeyword, Expression expression) =>
- ThrowExpressionImpl(throwKeyword, expression);
+ ThrowExpressionImpl(throwKeyword, expression as ExpressionImpl);
@override
TopLevelVariableDeclaration topLevelVariableDeclaration(
- Comment comment,
- List<Annotation> metadata,
+ Comment? comment,
+ List<Annotation>? metadata,
VariableDeclarationList variableList,
Token semicolon,
- {Token externalKeyword}) =>
+ {Token? externalKeyword}) =>
TopLevelVariableDeclarationImpl(
- comment, metadata, externalKeyword, variableList, semicolon);
+ comment as CommentImpl?,
+ metadata,
+ externalKeyword,
+ variableList as VariableDeclarationListImpl,
+ semicolon);
@override
TryStatement tryStatement(
Token tryKeyword,
Block body,
List<CatchClause> catchClauses,
- Token finallyKeyword,
- Block finallyBlock) =>
- TryStatementImpl(
- tryKeyword, body, catchClauses, finallyKeyword, finallyBlock);
+ Token? finallyKeyword,
+ Block? finallyBlock) =>
+ TryStatementImpl(tryKeyword, body as BlockImpl, catchClauses,
+ finallyKeyword, finallyBlock as BlockImpl?);
@override
TypeArgumentList typeArgumentList(Token leftBracket,
@@ -982,23 +1162,39 @@
TypeArgumentListImpl(leftBracket, arguments, rightBracket);
@override
- TypeName typeName(Identifier name, TypeArgumentList typeArguments,
- {Token question}) =>
- TypeNameImpl(name, typeArguments, question: question);
+ TypeName typeName(Identifier name, TypeArgumentList? typeArguments,
+ {Token? question}) =>
+ TypeNameImpl(
+ name as IdentifierImpl, typeArguments as TypeArgumentListImpl?,
+ question: question);
@override
- TypeParameter typeParameter(Comment comment, List<Annotation> metadata,
- SimpleIdentifier name, Token extendsKeyword, TypeAnnotation bound) =>
- TypeParameterImpl(comment, metadata, name, extendsKeyword, bound);
+ TypeParameter typeParameter(
+ Comment? comment,
+ List<Annotation>? metadata,
+ SimpleIdentifier name,
+ Token? extendsKeyword,
+ TypeAnnotation? bound) =>
+ TypeParameterImpl(
+ comment as CommentImpl?,
+ metadata,
+ name as SimpleIdentifierImpl,
+ extendsKeyword,
+ bound as TypeAnnotationImpl?);
TypeParameter typeParameter2(
- {Comment comment,
- List<Annotation> metadata,
- SimpleIdentifier name,
- Token extendsKeyword,
- TypeAnnotation bound,
- Token varianceKeyword}) =>
- TypeParameterImpl(comment, metadata, name, extendsKeyword, bound)
+ {Comment? comment,
+ List<Annotation>? metadata,
+ required SimpleIdentifier name,
+ Token? extendsKeyword,
+ TypeAnnotation? bound,
+ Token? varianceKeyword}) =>
+ TypeParameterImpl(
+ comment as CommentImpl?,
+ metadata,
+ name as SimpleIdentifierImpl,
+ extendsKeyword,
+ bound as TypeAnnotationImpl?)
..varianceKeyword = varianceKeyword;
@override
@@ -1008,48 +1204,51 @@
@override
VariableDeclaration variableDeclaration(
- SimpleIdentifier name, Token equals, Expression initializer) =>
- VariableDeclarationImpl(name, equals, initializer);
+ SimpleIdentifier name, Token? equals, Expression? initializer) =>
+ VariableDeclarationImpl(
+ name as SimpleIdentifierImpl, equals, initializer as ExpressionImpl?);
@override
VariableDeclarationList variableDeclarationList(
- Comment comment,
- List<Annotation> metadata,
- Token keyword,
- TypeAnnotation type,
+ Comment? comment,
+ List<Annotation>? metadata,
+ Token? keyword,
+ TypeAnnotation? type,
List<VariableDeclaration> variables) =>
- VariableDeclarationListImpl(
- comment, metadata, null, keyword, type, variables);
+ VariableDeclarationListImpl(comment as CommentImpl?, metadata, null,
+ keyword, type as TypeAnnotationImpl?, variables);
@override
VariableDeclarationList variableDeclarationList2(
- {Comment comment,
- List<Annotation> metadata,
- Token lateKeyword,
- Token keyword,
- TypeAnnotation type,
- List<VariableDeclaration> variables}) {
- return VariableDeclarationListImpl(
- comment, metadata, lateKeyword, keyword, type, variables);
+ {Comment? comment,
+ List<Annotation>? metadata,
+ Token? lateKeyword,
+ Token? keyword,
+ TypeAnnotation? type,
+ required List<VariableDeclaration> variables}) {
+ return VariableDeclarationListImpl(comment as CommentImpl?, metadata,
+ lateKeyword, keyword, type as TypeAnnotationImpl?, variables);
}
@override
VariableDeclarationStatement variableDeclarationStatement(
VariableDeclarationList variableList, Token semicolon) =>
- VariableDeclarationStatementImpl(variableList, semicolon);
+ VariableDeclarationStatementImpl(
+ variableList as VariableDeclarationListImpl, semicolon);
@override
WhileStatement whileStatement(Token whileKeyword, Token leftParenthesis,
Expression condition, Token rightParenthesis, Statement body) =>
- WhileStatementImpl(
- whileKeyword, leftParenthesis, condition, rightParenthesis, body);
+ WhileStatementImpl(whileKeyword, leftParenthesis,
+ condition as ExpressionImpl, rightParenthesis, body as StatementImpl);
@override
WithClause withClause(Token withKeyword, List<TypeName> mixinTypes) =>
WithClauseImpl(withKeyword, mixinTypes);
@override
- YieldStatement yieldStatement(Token yieldKeyword, Token star,
+ YieldStatement yieldStatement(Token yieldKeyword, Token? star,
Expression expression, Token semicolon) =>
- YieldStatementImpl(yieldKeyword, star, expression, semicolon);
+ YieldStatementImpl(
+ yieldKeyword, star, expression as ExpressionImpl, semicolon);
}
diff --git a/pkg/analyzer/lib/src/dart/ast/constant_evaluator.dart b/pkg/analyzer/lib/src/dart/ast/constant_evaluator.dart
index b1da5de..f2e5968 100644
--- a/pkg/analyzer/lib/src/dart/ast/constant_evaluator.dart
+++ b/pkg/analyzer/lib/src/dart/ast/constant_evaluator.dart
@@ -98,10 +98,10 @@
static Object NOT_A_CONSTANT = Object();
@override
- Object visitAdjacentStrings(AdjacentStrings node) {
+ Object? visitAdjacentStrings(AdjacentStrings node) {
StringBuffer buffer = StringBuffer();
for (StringLiteral string in node.strings) {
- Object value = string.accept(this);
+ var value = string.accept(this);
if (identical(value, NOT_A_CONSTANT)) {
return value;
}
@@ -111,12 +111,12 @@
}
@override
- Object visitBinaryExpression(BinaryExpression node) {
- Object leftOperand = node.leftOperand.accept(this);
+ Object? visitBinaryExpression(BinaryExpression node) {
+ var leftOperand = node.leftOperand.accept(this);
if (identical(leftOperand, NOT_A_CONSTANT)) {
return leftOperand;
}
- Object rightOperand = node.rightOperand.accept(this);
+ var rightOperand = node.rightOperand.accept(this);
if (identical(rightOperand, NOT_A_CONSTANT)) {
return rightOperand;
}
@@ -235,17 +235,17 @@
}
@override
- Object visitBooleanLiteral(BooleanLiteral node) => node.value ? true : false;
+ Object? visitBooleanLiteral(BooleanLiteral node) => node.value ? true : false;
@override
- Object visitDoubleLiteral(DoubleLiteral node) => node.value;
+ Object? visitDoubleLiteral(DoubleLiteral node) => node.value;
@override
- Object visitIntegerLiteral(IntegerLiteral node) => node.value;
+ Object? visitIntegerLiteral(IntegerLiteral node) => node.value;
@override
- Object visitInterpolationExpression(InterpolationExpression node) {
- Object value = node.expression.accept(this);
+ Object? visitInterpolationExpression(InterpolationExpression node) {
+ var value = node.expression.accept(this);
if (value == null || value is bool || value is String || value is num) {
return value;
}
@@ -253,14 +253,14 @@
}
@override
- Object visitInterpolationString(InterpolationString node) => node.value;
+ Object? visitInterpolationString(InterpolationString node) => node.value;
@override
- Object visitListLiteral(ListLiteral node) {
- List<Object> list = <Object>[];
+ Object? visitListLiteral(ListLiteral node) {
+ List<Object?> list = <Object>[];
for (CollectionElement element in node.elements) {
if (element is Expression) {
- Object value = element.accept(this);
+ var value = element.accept(this);
if (identical(value, NOT_A_CONSTANT)) {
return value;
}
@@ -275,25 +275,25 @@
}
@override
- Object visitMethodInvocation(MethodInvocation node) => visitNode(node);
+ Object? visitMethodInvocation(MethodInvocation node) => visitNode(node);
@override
- Object visitNode(AstNode node) => NOT_A_CONSTANT;
+ Object? visitNode(AstNode node) => NOT_A_CONSTANT;
@override
- Object visitNullLiteral(NullLiteral node) => null;
+ Object? visitNullLiteral(NullLiteral node) => null;
@override
- Object visitParenthesizedExpression(ParenthesizedExpression node) =>
+ Object? visitParenthesizedExpression(ParenthesizedExpression node) =>
node.expression.accept(this);
@override
- Object visitPrefixedIdentifier(PrefixedIdentifier node) =>
+ Object? visitPrefixedIdentifier(PrefixedIdentifier node) =>
_getConstantValue(null);
@override
- Object visitPrefixExpression(PrefixExpression node) {
- Object operand = node.operand.accept(this);
+ Object? visitPrefixExpression(PrefixExpression node) {
+ var operand = node.operand.accept(this);
if (identical(operand, NOT_A_CONSTANT)) {
return operand;
}
@@ -321,18 +321,18 @@
}
@override
- Object visitPropertyAccess(PropertyAccess node) => _getConstantValue(null);
+ Object? visitPropertyAccess(PropertyAccess node) => _getConstantValue(null);
@override
- Object visitSetOrMapLiteral(SetOrMapLiteral node) {
+ Object? visitSetOrMapLiteral(SetOrMapLiteral node) {
// There are a lot of constants that this class does not support, so we
// didn't add support for set literals. As a result, this assumes that we're
// looking at a map literal until we prove otherwise.
- Map<String, Object> map = HashMap<String, Object>();
+ Map<String, Object?> map = HashMap<String, Object>();
for (CollectionElement element in node.elements) {
if (element is MapLiteralEntry) {
- Object key = element.key.accept(this);
- Object value = element.value.accept(this);
+ var key = element.key.accept(this);
+ var value = element.value.accept(this);
if (key is String && !identical(value, NOT_A_CONSTANT)) {
map[key] = value;
} else {
@@ -348,17 +348,17 @@
}
@override
- Object visitSimpleIdentifier(SimpleIdentifier node) =>
+ Object? visitSimpleIdentifier(SimpleIdentifier node) =>
_getConstantValue(null);
@override
- Object visitSimpleStringLiteral(SimpleStringLiteral node) => node.value;
+ Object? visitSimpleStringLiteral(SimpleStringLiteral node) => node.value;
@override
- Object visitStringInterpolation(StringInterpolation node) {
+ Object? visitStringInterpolation(StringInterpolation node) {
StringBuffer buffer = StringBuffer();
for (InterpolationElement element in node.elements) {
- Object value = element.accept(this);
+ var value = element.accept(this);
if (identical(value, NOT_A_CONSTANT)) {
return value;
}
@@ -368,7 +368,7 @@
}
@override
- Object visitSymbolLiteral(SymbolLiteral node) {
+ Object? visitSymbolLiteral(SymbolLiteral node) {
// TODO(brianwilkerson) This isn't optimal because a Symbol is not a String.
StringBuffer buffer = StringBuffer();
for (Token component in node.components) {
@@ -382,7 +382,7 @@
/// Return the constant value of the static constant represented by the given
/// [element].
- Object _getConstantValue(Element element) {
+ Object _getConstantValue(Element? element) {
// TODO(brianwilkerson) Implement this
// if (element is FieldElement) {
// FieldElement field = element;
diff --git a/pkg/analyzer/lib/src/dart/ast/element_locator.dart b/pkg/analyzer/lib/src/dart/ast/element_locator.dart
index e646c4e..8159d3a 100644
--- a/pkg/analyzer/lib/src/dart/ast/element_locator.dart
+++ b/pkg/analyzer/lib/src/dart/ast/element_locator.dart
@@ -11,7 +11,7 @@
class ElementLocator {
/// Return the element associated with the given [node], or `null` if there
/// is no element associated with the node.
- static Element locate(AstNode node) {
+ static Element? locate(AstNode? node) {
if (node == null) return null;
var mapper = _ElementMapper();
@@ -22,47 +22,47 @@
/// Visitor that maps nodes to elements.
class _ElementMapper extends GeneralizingAstVisitor<Element> {
@override
- Element visitAnnotation(Annotation node) {
+ Element? visitAnnotation(Annotation node) {
return node.element;
}
@override
- Element visitAssignmentExpression(AssignmentExpression node) {
+ Element? visitAssignmentExpression(AssignmentExpression node) {
return node.staticElement;
}
@override
- Element visitBinaryExpression(BinaryExpression node) {
+ Element? visitBinaryExpression(BinaryExpression node) {
return node.staticElement;
}
@override
- Element visitClassDeclaration(ClassDeclaration node) {
+ Element? visitClassDeclaration(ClassDeclaration node) {
return node.declaredElement;
}
@override
- Element visitCompilationUnit(CompilationUnit node) {
+ Element? visitCompilationUnit(CompilationUnit node) {
return node.declaredElement;
}
@override
- Element visitConstructorDeclaration(ConstructorDeclaration node) {
+ Element? visitConstructorDeclaration(ConstructorDeclaration node) {
return node.declaredElement;
}
@override
- Element visitExportDirective(ExportDirective node) {
+ Element? visitExportDirective(ExportDirective node) {
return node.element;
}
@override
- Element visitFunctionDeclaration(FunctionDeclaration node) {
+ Element? visitFunctionDeclaration(FunctionDeclaration node) {
return node.declaredElement;
}
@override
- Element visitIdentifier(Identifier node) {
+ Element? visitIdentifier(Identifier node) {
var parent = node.parent;
if (parent is Annotation) {
// Type name in Annotation
@@ -98,57 +98,57 @@
}
@override
- Element visitImportDirective(ImportDirective node) {
+ Element? visitImportDirective(ImportDirective node) {
return node.element;
}
@override
- Element visitIndexExpression(IndexExpression node) {
+ Element? visitIndexExpression(IndexExpression node) {
return node.staticElement;
}
@override
- Element visitInstanceCreationExpression(InstanceCreationExpression node) {
+ Element? visitInstanceCreationExpression(InstanceCreationExpression node) {
return node.constructorName.staticElement;
}
@override
- Element visitLibraryDirective(LibraryDirective node) {
+ Element? visitLibraryDirective(LibraryDirective node) {
return node.element;
}
@override
- Element visitMethodDeclaration(MethodDeclaration node) {
+ Element? visitMethodDeclaration(MethodDeclaration node) {
return node.declaredElement;
}
@override
- Element visitMethodInvocation(MethodInvocation node) {
+ Element? visitMethodInvocation(MethodInvocation node) {
return node.methodName.staticElement;
}
@override
- Element visitPartOfDirective(PartOfDirective node) {
+ Element? visitPartOfDirective(PartOfDirective node) {
return node.element;
}
@override
- Element visitPostfixExpression(PostfixExpression node) {
+ Element? visitPostfixExpression(PostfixExpression node) {
return node.staticElement;
}
@override
- Element visitPrefixedIdentifier(PrefixedIdentifier node) {
+ Element? visitPrefixedIdentifier(PrefixedIdentifier node) {
return node.staticElement;
}
@override
- Element visitPrefixExpression(PrefixExpression node) {
+ Element? visitPrefixExpression(PrefixExpression node) {
return node.staticElement;
}
@override
- Element visitStringLiteral(StringLiteral node) {
+ Element? visitStringLiteral(StringLiteral node) {
var parent = node.parent;
if (parent is UriBasedDirective) {
return parent.uriElement;
@@ -157,7 +157,7 @@
}
@override
- Element visitVariableDeclaration(VariableDeclaration node) {
+ Element? visitVariableDeclaration(VariableDeclaration node) {
return node.declaredElement;
}
}
diff --git a/pkg/analyzer/lib/src/dart/ast/extensions.dart b/pkg/analyzer/lib/src/dart/ast/extensions.dart
index 2063cd9..2a92953 100644
--- a/pkg/analyzer/lib/src/dart/ast/extensions.dart
+++ b/pkg/analyzer/lib/src/dart/ast/extensions.dart
@@ -8,7 +8,7 @@
import 'package:analyzer/src/dart/ast/ast.dart';
/// TODO(scheglov) https://github.com/dart-lang/sdk/issues/43608
-Element _readElement(AstNode node) {
+Element? _readElement(AstNode node) {
var parent = node.parent;
if (parent is AssignmentExpression && parent.leftHandSide == node) {
@@ -31,7 +31,7 @@
}
/// TODO(scheglov) https://github.com/dart-lang/sdk/issues/43608
-Element _writeElement(AstNode node) {
+Element? _writeElement(AstNode node) {
var parent = node.parent;
if (parent is AssignmentExpression && parent.leftHandSide == node) {
@@ -54,7 +54,7 @@
}
/// TODO(scheglov) https://github.com/dart-lang/sdk/issues/43608
-DartType _writeType(AstNode node) {
+DartType? _writeType(AstNode node) {
var parent = node.parent;
if (parent is AssignmentExpression && parent.leftHandSide == node) {
@@ -88,7 +88,10 @@
AstNode get typeOrSelf {
var self = this;
if (self is SimpleFormalParameter) {
- return self.type;
+ var type = self.type;
+ if (type != null) {
+ return type;
+ }
}
return self;
}
@@ -96,26 +99,26 @@
/// TODO(scheglov) https://github.com/dart-lang/sdk/issues/43608
extension IdentifierExtension on Identifier {
- Element get writeElement {
+ Element? get writeElement {
return _writeElement(this);
}
- Element get readElement {
+ Element? get readElement {
return _readElement(this);
}
- Element get writeOrReadElement {
+ Element? get writeOrReadElement {
return _writeElement(this) ?? staticElement;
}
- DartType get writeOrReadType {
+ DartType? get writeOrReadType {
return _writeType(this) ?? staticType;
}
}
/// TODO(scheglov) https://github.com/dart-lang/sdk/issues/43608
extension IndexExpressionExtension on IndexExpression {
- Element get writeOrReadElement {
+ Element? get writeOrReadElement {
return _writeElement(this) ?? staticElement;
}
}
diff --git a/pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart b/pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart
index 38736b4..2758b97 100644
--- a/pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart
+++ b/pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart
@@ -30,7 +30,7 @@
/// Safely visit the given [node].
@protected
- void safelyVisitNode(AstNode node) {
+ void safelyVisitNode(AstNode? node) {
if (node != null) {
node.accept(this);
}
@@ -46,19 +46,12 @@
@protected
void safelyVisitNodeListWithSeparator(
NodeList<AstNode> nodes, String separator) {
- if (nodes != null) {
- int size = nodes.length;
- for (int i = 0; i < size; i++) {
- if (i > 0) {
- sink.write(separator);
- }
- var node = nodes[i];
- if (node != null) {
- node.accept(this);
- } else {
- sink.write('<null>');
- }
+ int size = nodes.length;
+ for (int i = 0; i < size; i++) {
+ if (i > 0) {
+ sink.write(separator);
}
+ nodes[i].accept(this);
}
}
@@ -67,16 +60,14 @@
@protected
void safelyVisitNodeListWithSeparatorAndPrefix(
String prefix, NodeList<AstNode> nodes, String separator) {
- if (nodes != null) {
- int size = nodes.length;
- if (size > 0) {
- sink.write(prefix);
- for (int i = 0; i < size; i++) {
- if (i > 0) {
- sink.write(separator);
- }
- nodes[i].accept(this);
+ int size = nodes.length;
+ if (size > 0) {
+ sink.write(prefix);
+ for (int i = 0; i < size; i++) {
+ if (i > 0) {
+ sink.write(separator);
}
+ nodes[i].accept(this);
}
}
}
@@ -86,24 +77,22 @@
@protected
void safelyVisitNodeListWithSeparatorAndSuffix(
NodeList<AstNode> nodes, String separator, String suffix) {
- if (nodes != null) {
- int size = nodes.length;
- if (size > 0) {
- for (int i = 0; i < size; i++) {
- if (i > 0) {
- sink.write(separator);
- }
- nodes[i].accept(this);
+ int size = nodes.length;
+ if (size > 0) {
+ for (int i = 0; i < size; i++) {
+ if (i > 0) {
+ sink.write(separator);
}
- sink.write(suffix);
+ nodes[i].accept(this);
}
+ sink.write(suffix);
}
}
/// Safely visit the given [node], printing the [prefix] before the node if it
/// is non-`null`.
@protected
- void safelyVisitNodeWithPrefix(String prefix, AstNode node) {
+ void safelyVisitNodeWithPrefix(String prefix, AstNode? node) {
if (node != null) {
sink.write(prefix);
node.accept(this);
@@ -113,7 +102,7 @@
/// Safely visit the given [node], printing the [suffix] after the node if it
/// is non-`null`.
@protected
- void safelyVisitNodeWithSuffix(AstNode node, String suffix) {
+ void safelyVisitNodeWithSuffix(AstNode? node, String suffix) {
if (node != null) {
node.accept(this);
sink.write(suffix);
@@ -122,7 +111,7 @@
/// Safely visit the given [token].
@protected
- void safelyVisitToken(Token token) {
+ void safelyVisitToken(Token? token) {
if (token != null) {
sink.write(token.lexeme);
}
@@ -131,7 +120,7 @@
/// Safely visit the given [token], printing the [suffix] after the token if
/// it is non-`null`.
@protected
- void safelyVisitTokenWithSuffix(Token token, String suffix) {
+ void safelyVisitTokenWithSuffix(Token? token, String suffix) {
if (token != null) {
sink.write(token.lexeme);
sink.write(suffix);
@@ -220,7 +209,7 @@
@override
void visitBlockFunctionBody(BlockFunctionBody node) {
- Token keyword = node.keyword;
+ var keyword = node.keyword;
if (keyword != null) {
sink.write(keyword.lexeme);
if (node.star != null) {
@@ -305,7 +294,7 @@
@override
void visitCompilationUnit(CompilationUnit node) {
- ScriptTag scriptTag = node.scriptTag;
+ var scriptTag = node.scriptTag;
NodeList<Directive> directives = node.directives;
safelyVisitNode(scriptTag);
String prefix = scriptTag == null ? "" : " ";
@@ -343,7 +332,7 @@
safelyVisitNode(node.parameters);
safelyVisitNodeListWithSeparatorAndPrefix(" : ", node.initializers, ", ");
safelyVisitNodeWithPrefix(" = ", node.redirectedConstructor);
- safelyVisitFunctionWithPrefix(" ", node.body);
+ safelyVisitFunctionWithPrefix(" ", node.body!);
}
@override
@@ -382,10 +371,10 @@
}
safelyVisitNode(node.parameter);
if (node.separator != null) {
- if (node.separator.lexeme != ":") {
+ if (node.separator!.lexeme != ":") {
sink.write(" ");
}
- sink.write(node.separator.lexeme);
+ sink.write(node.separator!.lexeme);
safelyVisitNodeWithPrefix(" ", node.defaultValue);
}
}
@@ -446,12 +435,12 @@
@override
void visitExpressionFunctionBody(ExpressionFunctionBody node) {
- Token keyword = node.keyword;
+ var keyword = node.keyword;
if (keyword != null) {
sink.write(keyword.lexeme);
sink.write(' ');
}
- sink.write('${node.functionDefinition?.lexeme} ');
+ sink.write('${node.functionDefinition.lexeme} ');
safelyVisitNode(node.expression);
if (node.semicolon != null) {
sink.write(';');
@@ -539,7 +528,7 @@
@override
void visitFormalParameterList(FormalParameterList node) {
- String groupEnd;
+ String? groupEnd;
sink.write('(');
NodeList<FormalParameter> parameters = node.parameters;
int size = parameters.length;
@@ -827,11 +816,11 @@
@override
void visitMethodInvocation(MethodInvocation node) {
if (node.isCascaded) {
- sink.write(node.operator.lexeme);
+ sink.write(node.operator!.lexeme);
} else {
if (node.target != null) {
- node.target.accept(this);
- sink.write(node.operator.lexeme);
+ node.target!.accept(this);
+ sink.write(node.operator!.lexeme);
}
}
safelyVisitNode(node.methodName);
@@ -950,7 +939,7 @@
@override
void visitReturnStatement(ReturnStatement node) {
- Expression expression = node.expression;
+ var expression = node.expression;
if (expression == null) {
sink.write("return;");
} else {
@@ -1108,8 +1097,9 @@
safelyVisitNodeListWithSeparatorAndSuffix(node.metadata, " ", " ");
// TODO (kallentu) : Clean up TypeParameterImpl casting once variance is
// added to the interface.
- if ((node as TypeParameterImpl).varianceKeyword != null) {
- sink.write((node as TypeParameterImpl).varianceKeyword.lexeme + ' ');
+ var varianceKeyword = (node as TypeParameterImpl).varianceKeyword;
+ if (varianceKeyword != null) {
+ sink.write(varianceKeyword.lexeme + ' ');
}
safelyVisitNode(node.name);
safelyVisitNodeWithPrefix(" extends ", node.bound);
@@ -1170,15 +1160,13 @@
}
void _writeOperand(Expression node, Expression operand) {
- if (operand != null) {
- bool needsParenthesis = operand.precedence < node.precedence;
- if (needsParenthesis) {
- sink.write('(');
- }
- operand.accept(this);
- if (needsParenthesis) {
- sink.write(')');
- }
+ bool needsParenthesis = operand.precedence < node.precedence;
+ if (needsParenthesis) {
+ sink.write('(');
+ }
+ operand.accept(this);
+ if (needsParenthesis) {
+ sink.write(')');
}
}
}
diff --git a/pkg/analyzer/lib/src/dart/ast/utilities.dart b/pkg/analyzer/lib/src/dart/ast/utilities.dart
index 6e0c1a8..3f388e56b 100644
--- a/pkg/analyzer/lib/src/dart/ast/utilities.dart
+++ b/pkg/analyzer/lib/src/dart/ast/utilities.dart
@@ -34,10 +34,10 @@
final Map<Token, Token> _clonedTokens = Map<Token, Token>.identity();
/// The next original token to clone.
- Token _nextToClone;
+ Token? _nextToClone;
/// The last cloned token.
- Token _lastCloned;
+ Token? _lastCloned;
/// The offset of the last cloned token.
int _lastClonedOffset = -1;
@@ -50,9 +50,6 @@
/// Return a clone of the given [node].
E cloneNode<E extends AstNode>(E node) {
- if (node == null) {
- return null;
- }
return node.accept(this) as E;
}
@@ -67,8 +64,16 @@
return clonedNodes;
}
+ /// Return a clone of the given [node].
+ E? cloneNullableNode<E extends AstNode>(E? node) {
+ if (node == null) {
+ return null;
+ }
+ return node.accept(this) as E;
+ }
+
/// Clone the given [token] if tokens are supposed to be cloned.
- Token cloneToken(Token token) {
+ Token? cloneNullableToken(Token? token) {
if (cloneTokens) {
if (token == null) {
return null;
@@ -76,9 +81,19 @@
if (_lastClonedOffset <= token.offset) {
_cloneTokens(_nextToClone ?? token, token.offset);
}
- Token clone = _clonedTokens[token];
- assert(clone != null);
- return clone;
+ return _clonedTokens[token]!;
+ } else {
+ return token;
+ }
+ }
+
+ /// Clone the given [token] if tokens are supposed to be cloned.
+ Token cloneToken(Token token) {
+ if (cloneTokens) {
+ if (_lastClonedOffset <= token.offset) {
+ _cloneTokens(_nextToClone ?? token, token.offset);
+ }
+ return _clonedTokens[token]!;
} else {
return token;
}
@@ -100,9 +115,9 @@
Annotation visitAnnotation(Annotation node) => astFactory.annotation(
cloneToken(node.atSign),
cloneNode(node.name),
- cloneToken(node.period),
- cloneNode(node.constructorName),
- cloneNode(node.arguments));
+ cloneNullableToken(node.period),
+ cloneNullableNode(node.constructorName),
+ cloneNullableNode(node.arguments));
@override
ArgumentList visitArgumentList(ArgumentList node) => astFactory.argumentList(
@@ -122,8 +137,8 @@
cloneToken(node.assertKeyword),
cloneToken(node.leftParenthesis),
cloneNode(node.condition),
- cloneToken(node.comma),
- cloneNode(node.message),
+ cloneNullableToken(node.comma),
+ cloneNullableNode(node.message),
cloneToken(node.rightParenthesis));
@override
@@ -132,8 +147,8 @@
cloneToken(node.assertKeyword),
cloneToken(node.leftParenthesis),
cloneNode(node.condition),
- cloneToken(node.comma),
- cloneNode(node.message),
+ cloneNullableToken(node.comma),
+ cloneNullableNode(node.message),
cloneToken(node.rightParenthesis),
cloneToken(node.semicolon));
@@ -158,8 +173,8 @@
@override
BlockFunctionBody visitBlockFunctionBody(BlockFunctionBody node) =>
- astFactory.blockFunctionBody(cloneToken(node.keyword),
- cloneToken(node.star), cloneNode(node.block));
+ astFactory.blockFunctionBody(cloneNullableToken(node.keyword),
+ cloneNullableToken(node.star), cloneNode(node.block));
@override
BooleanLiteral visitBooleanLiteral(BooleanLiteral node) =>
@@ -168,7 +183,7 @@
@override
BreakStatement visitBreakStatement(BreakStatement node) =>
astFactory.breakStatement(cloneToken(node.breakKeyword),
- cloneNode(node.label), cloneToken(node.semicolon));
+ cloneNullableNode(node.label), cloneToken(node.semicolon));
@override
CascadeExpression visitCascadeExpression(CascadeExpression node) =>
@@ -177,49 +192,49 @@
@override
CatchClause visitCatchClause(CatchClause node) => astFactory.catchClause(
- cloneToken(node.onKeyword),
- cloneNode(node.exceptionType),
- cloneToken(node.catchKeyword),
- cloneToken(node.leftParenthesis),
- cloneNode(node.exceptionParameter),
- cloneToken(node.comma),
- cloneNode(node.stackTraceParameter),
- cloneToken(node.rightParenthesis),
+ cloneNullableToken(node.onKeyword),
+ cloneNullableNode(node.exceptionType),
+ cloneNullableToken(node.catchKeyword),
+ cloneNullableToken(node.leftParenthesis),
+ cloneNullableNode(node.exceptionParameter),
+ cloneNullableToken(node.comma),
+ cloneNullableNode(node.stackTraceParameter),
+ cloneNullableToken(node.rightParenthesis),
cloneNode(node.body));
@override
ClassDeclaration visitClassDeclaration(ClassDeclaration node) {
ClassDeclaration copy = astFactory.classDeclaration(
- cloneNode(node.documentationComment),
+ cloneNullableNode(node.documentationComment),
cloneNodeList(node.metadata),
- cloneToken(node.abstractKeyword),
+ cloneNullableToken(node.abstractKeyword),
cloneToken(node.classKeyword),
cloneNode(node.name),
- cloneNode(node.typeParameters),
- cloneNode(node.extendsClause),
- cloneNode(node.withClause),
- cloneNode(node.implementsClause),
+ cloneNullableNode(node.typeParameters),
+ cloneNullableNode(node.extendsClause),
+ cloneNullableNode(node.withClause),
+ cloneNullableNode(node.implementsClause),
cloneToken(node.leftBracket),
cloneNodeList(node.members),
cloneToken(node.rightBracket));
- copy.nativeClause = cloneNode(node.nativeClause);
+ copy.nativeClause = cloneNullableNode(node.nativeClause);
return copy;
}
@override
ClassTypeAlias visitClassTypeAlias(ClassTypeAlias node) {
- cloneToken(node.abstractKeyword);
+ cloneNullableToken(node.abstractKeyword);
return astFactory.classTypeAlias(
- cloneNode(node.documentationComment),
+ cloneNullableNode(node.documentationComment),
cloneNodeList(node.metadata),
cloneToken(node.typedefKeyword),
cloneNode(node.name),
- cloneNode(node.typeParameters),
+ cloneNullableNode(node.typeParameters),
cloneToken(node.equals),
- cloneToken(node.abstractKeyword),
+ cloneNullableToken(node.abstractKeyword),
cloneNode(node.superclass),
cloneNode(node.withClause),
- cloneNode(node.implementsClause),
+ cloneNullableNode(node.implementsClause),
cloneToken(node.semicolon));
}
@@ -240,7 +255,7 @@
// separate from the compilation unit's token stream.
// Clone the tokens in that stream here and add them to _clondedTokens
// for use when cloning the comment reference.
- Token token = node.beginToken;
+ Token? token = node.beginToken;
Token lastCloned = Token.eof(-1);
while (token != null) {
Token clone = token.copy();
@@ -253,14 +268,14 @@
token = token.next;
}
return astFactory.commentReference(
- cloneToken(node.newKeyword), cloneNode(node.identifier));
+ cloneNullableToken(node.newKeyword), cloneNode(node.identifier));
}
@override
CompilationUnit visitCompilationUnit(CompilationUnit node) {
CompilationUnit clone = astFactory.compilationUnit(
beginToken: cloneToken(node.beginToken),
- scriptTag: cloneNode(node.scriptTag),
+ scriptTag: cloneNullableNode(node.scriptTag),
directives: cloneNodeList(node.directives),
declarations: cloneNodeList(node.declarations),
endToken: cloneToken(node.endToken),
@@ -285,8 +300,8 @@
cloneToken(node.ifKeyword),
cloneToken(node.leftParenthesis),
cloneNode(node.name),
- cloneToken(node.equalToken),
- cloneNode(node.value),
+ cloneNullableToken(node.equalToken),
+ cloneNullableNode(node.value),
cloneToken(node.rightParenthesis),
cloneNode(node.uri));
@@ -294,54 +309,57 @@
ConstructorDeclaration visitConstructorDeclaration(
ConstructorDeclaration node) =>
astFactory.constructorDeclaration(
- cloneNode(node.documentationComment),
+ cloneNullableNode(node.documentationComment),
cloneNodeList(node.metadata),
- cloneToken(node.externalKeyword),
- cloneToken(node.constKeyword),
- cloneToken(node.factoryKeyword),
+ cloneNullableToken(node.externalKeyword),
+ cloneNullableToken(node.constKeyword),
+ cloneNullableToken(node.factoryKeyword),
cloneNode(node.returnType),
- cloneToken(node.period),
- cloneNode(node.name),
+ cloneNullableToken(node.period),
+ cloneNullableNode(node.name),
cloneNode(node.parameters),
- cloneToken(node.separator),
+ cloneNullableToken(node.separator),
cloneNodeList(node.initializers),
- cloneNode(node.redirectedConstructor),
- cloneNode(node.body));
+ cloneNullableNode(node.redirectedConstructor),
+ cloneNullableNode(node.body));
@override
ConstructorFieldInitializer visitConstructorFieldInitializer(
ConstructorFieldInitializer node) =>
astFactory.constructorFieldInitializer(
- cloneToken(node.thisKeyword),
- cloneToken(node.period),
+ cloneNullableToken(node.thisKeyword),
+ cloneNullableToken(node.period),
cloneNode(node.fieldName),
cloneToken(node.equals),
cloneNode(node.expression));
@override
ConstructorName visitConstructorName(ConstructorName node) =>
- astFactory.constructorName(
- cloneNode(node.type), cloneToken(node.period), cloneNode(node.name));
+ astFactory.constructorName(cloneNode(node.type),
+ cloneNullableToken(node.period), cloneNullableNode(node.name));
@override
ContinueStatement visitContinueStatement(ContinueStatement node) =>
astFactory.continueStatement(cloneToken(node.continueKeyword),
- cloneNode(node.label), cloneToken(node.semicolon));
+ cloneNullableNode(node.label), cloneToken(node.semicolon));
@override
DeclaredIdentifier visitDeclaredIdentifier(DeclaredIdentifier node) =>
astFactory.declaredIdentifier(
- cloneNode(node.documentationComment),
+ cloneNullableNode(node.documentationComment),
cloneNodeList(node.metadata),
- cloneToken(node.keyword),
- cloneNode(node.type),
+ cloneNullableToken(node.keyword),
+ cloneNullableNode(node.type),
cloneNode(node.identifier));
@override
DefaultFormalParameter visitDefaultFormalParameter(
covariant DefaultFormalParameterImpl node) =>
- astFactory.defaultFormalParameter(cloneNode(node.parameter), node.kind,
- cloneToken(node.separator), cloneNode(node.defaultValue));
+ astFactory.defaultFormalParameter(
+ cloneNode(node.parameter),
+ node.kind,
+ cloneNullableToken(node.separator),
+ cloneNullableNode(node.defaultValue));
@override
DoStatement visitDoStatement(DoStatement node) => astFactory.doStatement(
@@ -371,13 +389,15 @@
@override
AstNode visitEnumConstantDeclaration(EnumConstantDeclaration node) =>
- astFactory.enumConstantDeclaration(cloneNode(node.documentationComment),
- cloneNodeList(node.metadata), cloneNode(node.name));
+ astFactory.enumConstantDeclaration(
+ cloneNullableNode(node.documentationComment),
+ cloneNodeList(node.metadata),
+ cloneNode(node.name));
@override
EnumDeclaration visitEnumDeclaration(EnumDeclaration node) =>
astFactory.enumDeclaration(
- cloneNode(node.documentationComment),
+ cloneNullableNode(node.documentationComment),
cloneNodeList(node.metadata),
cloneToken(node.enumKeyword),
cloneNode(node.name),
@@ -387,14 +407,14 @@
@override
ExportDirective visitExportDirective(ExportDirective node) {
- ExportDirectiveImpl directive = astFactory.exportDirective(
- cloneNode(node.documentationComment),
+ var directive = astFactory.exportDirective(
+ cloneNullableNode(node.documentationComment),
cloneNodeList(node.metadata),
cloneToken(node.keyword),
cloneNode(node.uri),
cloneNodeList(node.configurations),
cloneNodeList(node.combinators),
- cloneToken(node.semicolon));
+ cloneToken(node.semicolon)) as ExportDirectiveImpl;
directive.selectedUriContent = node.selectedUriContent;
directive.selectedSource = node.selectedSource;
directive.uriSource = node.uriSource;
@@ -406,15 +426,15 @@
ExpressionFunctionBody visitExpressionFunctionBody(
ExpressionFunctionBody node) =>
astFactory.expressionFunctionBody(
- cloneToken(node.keyword),
+ cloneNullableToken(node.keyword),
cloneToken(node.functionDefinition),
cloneNode(node.expression),
- cloneToken(node.semicolon));
+ cloneNullableToken(node.semicolon));
@override
ExpressionStatement visitExpressionStatement(ExpressionStatement node) =>
astFactory.expressionStatement(
- cloneNode(node.expression), cloneToken(node.semicolon));
+ cloneNode(node.expression), cloneNullableToken(node.semicolon));
@override
ExtendsClause visitExtendsClause(ExtendsClause node) =>
@@ -424,11 +444,11 @@
@override
ExtensionDeclaration visitExtensionDeclaration(ExtensionDeclaration node) =>
astFactory.extensionDeclaration(
- comment: cloneNode(node.documentationComment),
+ comment: cloneNullableNode(node.documentationComment),
metadata: cloneNodeList(node.metadata),
extensionKeyword: cloneToken(node.extensionKeyword),
- name: cloneNode(node.name),
- typeParameters: cloneNode(node.typeParameters),
+ name: cloneNullableNode(node.name),
+ typeParameters: cloneNullableNode(node.typeParameters),
onKeyword: cloneToken(node.onKeyword),
extendedType: cloneNode(node.extendedType),
leftBracket: cloneToken(node.leftBracket),
@@ -439,35 +459,35 @@
ExtensionOverride visitExtensionOverride(ExtensionOverride node) =>
astFactory.extensionOverride(
extensionName: cloneNode(node.extensionName),
- typeArguments: cloneNode(node.typeArguments),
+ typeArguments: cloneNullableNode(node.typeArguments),
argumentList: cloneNode(node.argumentList));
@override
FieldDeclaration visitFieldDeclaration(FieldDeclaration node) =>
astFactory.fieldDeclaration2(
- comment: cloneNode(node.documentationComment),
+ comment: cloneNullableNode(node.documentationComment),
metadata: cloneNodeList(node.metadata),
- abstractKeyword: cloneToken(node.abstractKeyword),
- covariantKeyword: cloneToken(node.covariantKeyword),
- externalKeyword: cloneToken(node.externalKeyword),
- staticKeyword: cloneToken(node.staticKeyword),
+ abstractKeyword: cloneNullableToken(node.abstractKeyword),
+ covariantKeyword: cloneNullableToken(node.covariantKeyword),
+ externalKeyword: cloneNullableToken(node.externalKeyword),
+ staticKeyword: cloneNullableToken(node.staticKeyword),
fieldList: cloneNode(node.fields),
semicolon: cloneToken(node.semicolon));
@override
FieldFormalParameter visitFieldFormalParameter(FieldFormalParameter node) =>
astFactory.fieldFormalParameter2(
- comment: cloneNode(node.documentationComment),
+ comment: cloneNullableNode(node.documentationComment),
metadata: cloneNodeList(node.metadata),
- covariantKeyword: cloneToken(node.covariantKeyword),
- keyword: cloneToken(node.keyword),
- type: cloneNode(node.type),
+ covariantKeyword: cloneNullableToken(node.covariantKeyword),
+ keyword: cloneNullableToken(node.keyword),
+ type: cloneNullableNode(node.type),
thisKeyword: cloneToken(node.thisKeyword),
period: cloneToken(node.period),
identifier: cloneNode(node.identifier),
- typeParameters: cloneNode(node.typeParameters),
- parameters: cloneNode(node.parameters),
- question: cloneToken(node.question));
+ typeParameters: cloneNullableNode(node.typeParameters),
+ parameters: cloneNullableNode(node.parameters),
+ question: cloneNullableToken(node.question));
@override
ForEachPartsWithDeclaration visitForEachPartsWithDeclaration(
@@ -487,7 +507,7 @@
@override
ForElement visitForElement(ForElement node) => astFactory.forElement(
- awaitKeyword: cloneToken(node.awaitKeyword),
+ awaitKeyword: cloneNullableToken(node.awaitKeyword),
forKeyword: cloneToken(node.forKeyword),
leftParenthesis: cloneToken(node.leftParenthesis),
forLoopParts: cloneNode(node.forLoopParts),
@@ -499,8 +519,8 @@
astFactory.formalParameterList(
cloneToken(node.leftParenthesis),
cloneNodeList(node.parameters),
- cloneToken(node.leftDelimiter),
- cloneToken(node.rightDelimiter),
+ cloneNullableToken(node.leftDelimiter),
+ cloneNullableToken(node.rightDelimiter),
cloneToken(node.rightParenthesis));
@override
@@ -509,7 +529,7 @@
astFactory.forPartsWithDeclarations(
variables: cloneNode(node.variables),
leftSeparator: cloneToken(node.leftSeparator),
- condition: cloneNode(node.condition),
+ condition: cloneNullableNode(node.condition),
rightSeparator: cloneToken(node.rightSeparator),
updaters: cloneNodeList(node.updaters));
@@ -517,15 +537,15 @@
ForPartsWithExpression visitForPartsWithExpression(
ForPartsWithExpression node) =>
astFactory.forPartsWithExpression(
- initialization: cloneNode(node.initialization),
+ initialization: cloneNullableNode(node.initialization),
leftSeparator: cloneToken(node.leftSeparator),
- condition: cloneNode(node.condition),
+ condition: cloneNullableNode(node.condition),
rightSeparator: cloneToken(node.rightSeparator),
updaters: cloneNodeList(node.updaters));
@override
ForStatement visitForStatement(ForStatement node) => astFactory.forStatement(
- awaitKeyword: cloneToken(node.awaitKeyword),
+ awaitKeyword: cloneNullableToken(node.awaitKeyword),
forKeyword: cloneToken(node.forKeyword),
leftParenthesis: cloneToken(node.leftParenthesis),
forLoopParts: cloneNode(node.forLoopParts),
@@ -535,11 +555,11 @@
@override
FunctionDeclaration visitFunctionDeclaration(FunctionDeclaration node) =>
astFactory.functionDeclaration(
- cloneNode(node.documentationComment),
+ cloneNullableNode(node.documentationComment),
cloneNodeList(node.metadata),
- cloneToken(node.externalKeyword),
- cloneNode(node.returnType),
- cloneToken(node.propertyKeyword),
+ cloneNullableToken(node.externalKeyword),
+ cloneNullableNode(node.returnType),
+ cloneNullableToken(node.propertyKeyword),
cloneNode(node.name),
cloneNode(node.functionExpression));
@@ -551,24 +571,24 @@
@override
FunctionExpression visitFunctionExpression(FunctionExpression node) =>
- astFactory.functionExpression(cloneNode(node.typeParameters),
- cloneNode(node.parameters), cloneNode(node.body));
+ astFactory.functionExpression(cloneNullableNode(node.typeParameters),
+ cloneNullableNode(node.parameters), cloneNullableNode(node.body));
@override
FunctionExpressionInvocation visitFunctionExpressionInvocation(
FunctionExpressionInvocation node) =>
astFactory.functionExpressionInvocation(cloneNode(node.function),
- cloneNode(node.typeArguments), cloneNode(node.argumentList));
+ cloneNullableNode(node.typeArguments), cloneNode(node.argumentList));
@override
FunctionTypeAlias visitFunctionTypeAlias(FunctionTypeAlias node) =>
astFactory.functionTypeAlias(
- cloneNode(node.documentationComment),
+ cloneNullableNode(node.documentationComment),
cloneNodeList(node.metadata),
cloneToken(node.typedefKeyword),
- cloneNode(node.returnType),
+ cloneNullableNode(node.returnType),
cloneNode(node.name),
- cloneNode(node.typeParameters),
+ cloneNullableNode(node.typeParameters),
cloneNode(node.parameters),
cloneToken(node.semicolon));
@@ -576,32 +596,32 @@
FunctionTypedFormalParameter visitFunctionTypedFormalParameter(
FunctionTypedFormalParameter node) =>
astFactory.functionTypedFormalParameter2(
- comment: cloneNode(node.documentationComment),
+ comment: cloneNullableNode(node.documentationComment),
metadata: cloneNodeList(node.metadata),
- covariantKeyword: cloneToken(node.covariantKeyword),
- returnType: cloneNode(node.returnType),
+ covariantKeyword: cloneNullableToken(node.covariantKeyword),
+ returnType: cloneNullableNode(node.returnType),
identifier: cloneNode(node.identifier),
- typeParameters: cloneNode(node.typeParameters),
+ typeParameters: cloneNullableNode(node.typeParameters),
parameters: cloneNode(node.parameters),
- question: cloneToken(node.question));
+ question: cloneNullableToken(node.question));
@override
AstNode visitGenericFunctionType(GenericFunctionType node) =>
astFactory.genericFunctionType(
- cloneNode(node.returnType),
+ cloneNullableNode(node.returnType),
cloneToken(node.functionKeyword),
- cloneNode(node.typeParameters),
+ cloneNullableNode(node.typeParameters),
cloneNode(node.parameters),
- question: cloneToken(node.question));
+ question: cloneNullableToken(node.question));
@override
AstNode visitGenericTypeAlias(GenericTypeAlias node) =>
astFactory.genericTypeAlias(
- cloneNode(node.documentationComment),
+ cloneNullableNode(node.documentationComment),
cloneNodeList(node.metadata),
cloneToken(node.typedefKeyword),
cloneNode(node.name),
- cloneNode(node.typeParameters),
+ cloneNullableNode(node.typeParameters),
cloneToken(node.equals),
cloneNode(node.type),
cloneToken(node.semicolon));
@@ -618,8 +638,8 @@
condition: cloneNode(node.condition),
rightParenthesis: cloneToken(node.rightParenthesis),
thenElement: cloneNode(node.thenElement),
- elseKeyword: cloneToken(node.elseKeyword),
- elseElement: cloneNode(node.elseElement));
+ elseKeyword: cloneNullableToken(node.elseKeyword),
+ elseElement: cloneNullableNode(node.elseElement));
@override
IfStatement visitIfStatement(IfStatement node) => astFactory.ifStatement(
@@ -628,8 +648,8 @@
cloneNode(node.condition),
cloneToken(node.rightParenthesis),
cloneNode(node.thenStatement),
- cloneToken(node.elseKeyword),
- cloneNode(node.elseStatement));
+ cloneNullableToken(node.elseKeyword),
+ cloneNullableNode(node.elseStatement));
@override
ImplementsClause visitImplementsClause(ImplementsClause node) =>
@@ -638,17 +658,17 @@
@override
ImportDirective visitImportDirective(ImportDirective node) {
- ImportDirectiveImpl directive = astFactory.importDirective(
- cloneNode(node.documentationComment),
+ var directive = astFactory.importDirective(
+ cloneNullableNode(node.documentationComment),
cloneNodeList(node.metadata),
cloneToken(node.keyword),
cloneNode(node.uri),
cloneNodeList(node.configurations),
- cloneToken(node.deferredKeyword),
- cloneToken(node.asKeyword),
- cloneNode(node.prefix),
+ cloneNullableToken(node.deferredKeyword),
+ cloneNullableToken(node.asKeyword),
+ cloneNullableNode(node.prefix),
cloneNodeList(node.combinators),
- cloneToken(node.semicolon));
+ cloneToken(node.semicolon)) as ImportDirectiveImpl;
directive.selectedUriContent = node.selectedUriContent;
directive.selectedSource = node.selectedSource;
directive.uriSource = node.uriSource;
@@ -658,10 +678,10 @@
@override
IndexExpression visitIndexExpression(IndexExpression node) {
- Token period = node.period;
+ var period = node.period;
if (period == null) {
return astFactory.indexExpressionForTarget2(
- target: cloneNode(node.target),
+ target: cloneNode(node.target!),
leftBracket: cloneToken(node.leftBracket),
index: cloneNode(node.index),
rightBracket: cloneToken(node.rightBracket));
@@ -677,7 +697,7 @@
@override
InstanceCreationExpression visitInstanceCreationExpression(
InstanceCreationExpression node) =>
- astFactory.instanceCreationExpression(cloneToken(node.keyword),
+ astFactory.instanceCreationExpression(cloneNullableToken(node.keyword),
cloneNode(node.constructorName), cloneNode(node.argumentList));
@override
@@ -688,7 +708,7 @@
InterpolationExpression visitInterpolationExpression(
InterpolationExpression node) =>
astFactory.interpolationExpression(cloneToken(node.leftBracket),
- cloneNode(node.expression), cloneToken(node.rightBracket));
+ cloneNode(node.expression), cloneNullableToken(node.rightBracket));
@override
InterpolationString visitInterpolationString(InterpolationString node) =>
@@ -698,7 +718,7 @@
IsExpression visitIsExpression(IsExpression node) => astFactory.isExpression(
cloneNode(node.expression),
cloneToken(node.isOperator),
- cloneToken(node.notOperator),
+ cloneNullableToken(node.notOperator),
cloneNode(node.type));
@override
@@ -712,7 +732,7 @@
@override
LibraryDirective visitLibraryDirective(LibraryDirective node) =>
astFactory.libraryDirective(
- cloneNode(node.documentationComment),
+ cloneNullableNode(node.documentationComment),
cloneNodeList(node.metadata),
cloneToken(node.libraryKeyword),
cloneNode(node.name),
@@ -724,8 +744,8 @@
@override
ListLiteral visitListLiteral(ListLiteral node) => astFactory.listLiteral(
- cloneToken(node.constKeyword),
- cloneNode(node.typeArguments),
+ cloneNullableToken(node.constKeyword),
+ cloneNullableNode(node.typeArguments),
cloneToken(node.leftBracket),
cloneNodeList(node.elements),
cloneToken(node.rightBracket));
@@ -738,37 +758,37 @@
@override
MethodDeclaration visitMethodDeclaration(MethodDeclaration node) =>
astFactory.methodDeclaration(
- cloneNode(node.documentationComment),
+ cloneNullableNode(node.documentationComment),
cloneNodeList(node.metadata),
- cloneToken(node.externalKeyword),
- cloneToken(node.modifierKeyword),
- cloneNode(node.returnType),
- cloneToken(node.propertyKeyword),
- cloneToken(node.operatorKeyword),
+ cloneNullableToken(node.externalKeyword),
+ cloneNullableToken(node.modifierKeyword),
+ cloneNullableNode(node.returnType),
+ cloneNullableToken(node.propertyKeyword),
+ cloneNullableToken(node.operatorKeyword),
cloneNode(node.name),
- cloneNode(node.typeParameters),
- cloneNode(node.parameters),
+ cloneNullableNode(node.typeParameters),
+ cloneNullableNode(node.parameters),
cloneNode(node.body));
@override
MethodInvocation visitMethodInvocation(MethodInvocation node) =>
astFactory.methodInvocation(
- cloneNode(node.target),
- cloneToken(node.operator),
+ cloneNullableNode(node.target),
+ cloneNullableToken(node.operator),
cloneNode(node.methodName),
- cloneNode(node.typeArguments),
+ cloneNullableNode(node.typeArguments),
cloneNode(node.argumentList));
@override
AstNode visitMixinDeclaration(MixinDeclaration node) =>
astFactory.mixinDeclaration(
- cloneNode(node.documentationComment),
+ cloneNullableNode(node.documentationComment),
cloneNodeList(node.metadata),
cloneToken(node.mixinKeyword),
cloneNode(node.name),
- cloneNode(node.typeParameters),
- cloneNode(node.onClause),
- cloneNode(node.implementsClause),
+ cloneNullableNode(node.typeParameters),
+ cloneNullableNode(node.onClause),
+ cloneNullableNode(node.implementsClause),
cloneToken(node.leftBracket),
cloneNodeList(node.members),
cloneToken(node.rightBracket));
@@ -779,12 +799,12 @@
@override
AstNode visitNativeClause(NativeClause node) => astFactory.nativeClause(
- cloneToken(node.nativeKeyword), cloneNode(node.name));
+ cloneToken(node.nativeKeyword), cloneNullableNode(node.name));
@override
NativeFunctionBody visitNativeFunctionBody(NativeFunctionBody node) =>
astFactory.nativeFunctionBody(cloneToken(node.nativeKeyword),
- cloneNode(node.stringLiteral), cloneToken(node.semicolon));
+ cloneNullableNode(node.stringLiteral), cloneToken(node.semicolon));
@override
NullLiteral visitNullLiteral(NullLiteral node) =>
@@ -803,7 +823,7 @@
@override
PartDirective visitPartDirective(PartDirective node) {
PartDirective directive = astFactory.partDirective(
- cloneNode(node.documentationComment),
+ cloneNullableNode(node.documentationComment),
cloneNodeList(node.metadata),
cloneToken(node.partKeyword),
cloneNode(node.uri),
@@ -816,12 +836,12 @@
@override
PartOfDirective visitPartOfDirective(PartOfDirective node) =>
astFactory.partOfDirective(
- cloneNode(node.documentationComment),
+ cloneNullableNode(node.documentationComment),
cloneNodeList(node.metadata),
cloneToken(node.partKeyword),
cloneToken(node.ofKeyword),
- cloneNode(node.uri),
- cloneNode(node.libraryName),
+ cloneNullableNode(node.uri),
+ cloneNullableNode(node.libraryName),
cloneToken(node.semicolon));
@override
@@ -839,7 +859,7 @@
@override
PropertyAccess visitPropertyAccess(PropertyAccess node) =>
- astFactory.propertyAccess(cloneNode(node.target),
+ astFactory.propertyAccess(cloneNullableNode(node.target),
cloneToken(node.operator), cloneNode(node.propertyName));
@override
@@ -847,8 +867,8 @@
RedirectingConstructorInvocation node) =>
astFactory.redirectingConstructorInvocation(
cloneToken(node.thisKeyword),
- cloneToken(node.period),
- cloneNode(node.constructorName),
+ cloneNullableToken(node.period),
+ cloneNullableNode(node.constructorName),
cloneNode(node.argumentList));
@override
@@ -858,7 +878,7 @@
@override
ReturnStatement visitReturnStatement(ReturnStatement node) =>
astFactory.returnStatement(cloneToken(node.returnKeyword),
- cloneNode(node.expression), cloneToken(node.semicolon));
+ cloneNullableNode(node.expression), cloneToken(node.semicolon));
@override
ScriptTag visitScriptTag(ScriptTag node) =>
@@ -867,8 +887,8 @@
@override
SetOrMapLiteral visitSetOrMapLiteral(SetOrMapLiteral node) {
var result = astFactory.setOrMapLiteral(
- constKeyword: cloneToken(node.constKeyword),
- typeArguments: cloneNode(node.typeArguments),
+ constKeyword: cloneNullableToken(node.constKeyword),
+ typeArguments: cloneNullableNode(node.typeArguments),
leftBracket: cloneToken(node.leftBracket),
elements: cloneNodeList(node.elements),
rightBracket: cloneToken(node.rightBracket));
@@ -888,12 +908,12 @@
SimpleFormalParameter visitSimpleFormalParameter(
SimpleFormalParameter node) =>
astFactory.simpleFormalParameter2(
- comment: cloneNode(node.documentationComment),
+ comment: cloneNullableNode(node.documentationComment),
metadata: cloneNodeList(node.metadata),
- covariantKeyword: cloneToken(node.covariantKeyword),
- keyword: cloneToken(node.keyword),
- type: cloneNode(node.type),
- identifier: cloneNode(node.identifier));
+ covariantKeyword: cloneNullableToken(node.covariantKeyword),
+ keyword: cloneNullableToken(node.keyword),
+ type: cloneNullableNode(node.type),
+ identifier: cloneNullableNode(node.identifier));
@override
SimpleIdentifier visitSimpleIdentifier(SimpleIdentifier node) =>
@@ -919,8 +939,8 @@
SuperConstructorInvocation node) =>
astFactory.superConstructorInvocation(
cloneToken(node.superKeyword),
- cloneToken(node.period),
- cloneNode(node.constructorName),
+ cloneNullableToken(node.period),
+ cloneNullableNode(node.constructorName),
cloneNode(node.argumentList));
@override
@@ -972,19 +992,19 @@
TopLevelVariableDeclaration visitTopLevelVariableDeclaration(
TopLevelVariableDeclaration node) =>
astFactory.topLevelVariableDeclaration(
- cloneNode(node.documentationComment),
+ cloneNullableNode(node.documentationComment),
cloneNodeList(node.metadata),
cloneNode(node.variables),
cloneToken(node.semicolon),
- externalKeyword: cloneToken(node.externalKeyword));
+ externalKeyword: cloneNullableToken(node.externalKeyword));
@override
TryStatement visitTryStatement(TryStatement node) => astFactory.tryStatement(
cloneToken(node.tryKeyword),
cloneNode(node.body),
cloneNodeList(node.catchClauses),
- cloneToken(node.finallyKeyword),
- cloneNode(node.finallyBlock));
+ cloneNullableToken(node.finallyKeyword),
+ cloneNullableNode(node.finallyBlock));
@override
TypeArgumentList visitTypeArgumentList(TypeArgumentList node) =>
@@ -992,22 +1012,22 @@
cloneNodeList(node.arguments), cloneToken(node.rightBracket));
@override
- TypeName visitTypeName(TypeName node) =>
- astFactory.typeName(cloneNode(node.name), cloneNode(node.typeArguments),
- question: cloneToken(node.question));
+ TypeName visitTypeName(TypeName node) => astFactory.typeName(
+ cloneNode(node.name), cloneNullableNode(node.typeArguments),
+ question: cloneNullableToken(node.question));
@override
TypeParameter visitTypeParameter(TypeParameter node) =>
// TODO (kallentu) : Clean up TypeParameterImpl and AstFactoryImpl casting
// once variance is added to the interface.
(astFactory as AstFactoryImpl).typeParameter2(
- comment: cloneNode(node.documentationComment),
+ comment: cloneNullableNode(node.documentationComment),
metadata: cloneNodeList(node.metadata),
name: cloneNode(node.name),
- extendsKeyword: cloneToken(node.extendsKeyword),
- bound: cloneNode(node.bound),
+ extendsKeyword: cloneNullableToken(node.extendsKeyword),
+ bound: cloneNullableNode(node.bound),
varianceKeyword:
- cloneToken((node as TypeParameterImpl).varianceKeyword));
+ cloneNullableToken((node as TypeParameterImpl).varianceKeyword));
@override
TypeParameterList visitTypeParameterList(TypeParameterList node) =>
@@ -1017,16 +1037,16 @@
@override
VariableDeclaration visitVariableDeclaration(VariableDeclaration node) =>
astFactory.variableDeclaration(cloneNode(node.name),
- cloneToken(node.equals), cloneNode(node.initializer));
+ cloneNullableToken(node.equals), cloneNullableNode(node.initializer));
@override
VariableDeclarationList visitVariableDeclarationList(
VariableDeclarationList node) =>
astFactory.variableDeclarationList(
- cloneNode(node.documentationComment),
+ cloneNullableNode(node.documentationComment),
cloneNodeList(node.metadata),
- cloneToken(node.keyword),
- cloneNode(node.type),
+ cloneNullableToken(node.keyword),
+ cloneNullableNode(node.type),
cloneNodeList(node.variables));
@override
@@ -1052,7 +1072,7 @@
YieldStatement visitYieldStatement(YieldStatement node) =>
astFactory.yieldStatement(
cloneToken(node.yieldKeyword),
- cloneToken(node.star),
+ cloneNullableToken(node.star),
cloneNode(node.expression),
cloneToken(node.semicolon));
@@ -1063,12 +1083,12 @@
/// We cannot clone tokens as we visit nodes because not every token is a part
/// of a node, E.g. commas in argument lists are not represented in AST. But
/// we need to the sequence of tokens that is identical to the original one.
- void _cloneTokens(Token token, int stopAfter) {
+ void _cloneTokens(Token? token, int stopAfter) {
if (token == null) {
return;
}
Token nonComment(Token token) {
- return token is CommentToken ? token.parent : token;
+ return token is CommentToken ? token.parent! : token;
}
token = nonComment(token);
@@ -1076,16 +1096,16 @@
while (token != null) {
Token clone = token.copy();
{
- CommentToken c1 = token.precedingComments;
- CommentToken c2 = clone.precedingComments;
+ CommentToken? c1 = token.precedingComments;
+ CommentToken? c2 = clone.precedingComments;
while (c1 != null && c2 != null) {
_clonedTokens[c1] = c2;
- c1 = c1.next;
- c2 = c2.next;
+ c1 = c1.next as CommentToken?;
+ c2 = c2.next as CommentToken?;
}
}
_clonedTokens[token] = clone;
- _lastCloned.setNext(clone);
+ _lastCloned!.setNext(clone);
_lastCloned = clone;
if (token.type == TokenType.EOF) {
break;
@@ -1101,7 +1121,7 @@
/// Return a clone of the given [node].
static AstNode clone(AstNode node) {
- return node.accept(AstCloner());
+ return node.accept(AstCloner())!;
}
}
@@ -1111,7 +1131,7 @@
/// The AST node with which the node being visited is to be compared. This is
/// only valid at the beginning of each visit method (until [isEqualNodes] is
/// invoked).
- AstNode _other;
+ AstNode? _other;
/// Notify that [first] and second have different length.
/// This implementation returns `false`. Subclasses can override and throw.
@@ -1122,18 +1142,18 @@
/// Check whether the values of the [first] and [second] nodes are [equal].
/// Subclasses can override to throw.
bool failIfNotEqual(
- AstNode first, Object firstValue, AstNode second, Object secondValue) {
+ AstNode first, Object? firstValue, AstNode second, Object? secondValue) {
return firstValue == secondValue;
}
/// Check whether [second] is null. Subclasses can override to throw.
- bool failIfNotNull(Object first, Object second) {
+ bool failIfNotNull(Object? first, Object? second) {
return second == null;
}
/// Notify that [first] is not `null` while [second] one is `null`.
/// This implementation returns `false`. Subclasses can override and throw.
- bool failIsNull(Object first, Object second) {
+ bool failIsNull(Object first, Object? second) {
return false;
}
@@ -1148,7 +1168,7 @@
///
/// *Note:* This method is only visible for testing purposes and should not be
/// used by clients.
- bool isEqualNodes(AstNode first, AstNode second) {
+ bool isEqualNodes(AstNode? first, AstNode? second) {
if (first == null) {
return failIfNotNull(first, second);
} else if (second == null) {
@@ -1157,7 +1177,7 @@
return failRuntimeType(first, second);
}
_other = second;
- return first.accept(this);
+ return first.accept(this)!;
}
/// Return `true` if the [first] token and the [second] token have the same
@@ -1165,7 +1185,7 @@
///
/// *Note:* This method is only visible for testing purposes and should not be
/// used by clients.
- bool isEqualTokens(Token first, Token second) {
+ bool isEqualTokens(Token? first, Token? second) {
if (first == null) {
return failIfNotNull(first, second);
} else if (second == null) {
@@ -2304,7 +2324,7 @@
/// Return `true` if the [first] and [second] lists of AST nodes have the same
/// size and corresponding elements are equal.
- bool _isEqualNodeLists(NodeList first, NodeList second) {
+ bool _isEqualNodeLists(NodeList? first, NodeList? second) {
if (first == null) {
return failIfNotNull(first, second);
} else if (second == null) {
@@ -2382,14 +2402,10 @@
/// visitors to visit the nodes of an AST structure.
ExceptionHandlingDelegatingAstVisitor(
Iterable<AstVisitor<T>> delegates, this.handler)
- : super(delegates) {
- if (handler == null) {
- throw ArgumentError('A handler must be provided');
- }
- }
+ : super(delegates);
@override
- T visitNode(AstNode node) {
+ T? visitNode(AstNode node) {
delegates.forEach((delegate) {
try {
node.accept(delegate);
@@ -2407,7 +2423,7 @@
AstNode node, Object visitor, dynamic exception, StackTrace stackTrace) {
StringBuffer buffer = StringBuffer();
buffer.write('Exception while using a ${visitor.runtimeType} to visit a ');
- AstNode currentNode = node;
+ AstNode? currentNode = node;
bool first = true;
while (currentNode != null) {
if (first) {
@@ -2437,23 +2453,23 @@
/// The element that was found that corresponds to the given source range, or
/// `null` if there is no such element.
- AstNode _foundNode;
+ AstNode? _foundNode;
/// Initialize a newly created locator to locate an [AstNode] by locating the
/// node within an AST structure that corresponds to the given range of
/// characters (between the [startOffset] and [endOffset] in the source.
- NodeLocator(int startOffset, [int endOffset])
+ NodeLocator(int startOffset, [int? endOffset])
: _startOffset = startOffset,
_endOffset = endOffset ?? startOffset;
/// Return the node that was found that corresponds to the given source range
/// or `null` if there is no such node.
- AstNode get foundNode => _foundNode;
+ AstNode? get foundNode => _foundNode;
/// Search within the given AST [node] for an identifier representing an
/// element in the specified source range. Return the element that was found,
/// or `null` if no element was found.
- AstNode searchWithin(AstNode node) {
+ AstNode? searchWithin(AstNode? node) {
if (node == null) {
return null;
}
@@ -2488,7 +2504,7 @@
if (endToken.type == TokenType.EOF || endToken.length > 0) {
break;
}
- endToken = endToken.previous;
+ endToken = endToken.previous!;
}
int end = endToken.end;
int start = node.offset;
@@ -2528,20 +2544,20 @@
final int _endOffset;
/// The found node or `null` if there is no such node.
- AstNode _foundNode;
+ AstNode? _foundNode;
/// Initialize a newly created locator to locate the deepest [AstNode] for
/// which `node.offset <= [startOffset]` and `[endOffset] < node.end`.
///
/// If [endOffset] is not provided, then it is considered the same as the
/// given [startOffset].
- NodeLocator2(int startOffset, [int endOffset])
+ NodeLocator2(int startOffset, [int? endOffset])
: _startOffset = startOffset,
_endOffset = endOffset ?? startOffset;
/// Search within the given AST [node] and return the node that was found,
/// or `null` if no node was found.
- AstNode searchWithin(AstNode node) {
+ AstNode? searchWithin(AstNode? node) {
if (node == null) {
return null;
}
@@ -2577,7 +2593,7 @@
if (endToken.type == TokenType.EOF || endToken.length > 0) {
break;
}
- endToken = endToken.previous;
+ endToken = endToken.previous!;
}
int end = endToken.end;
int start = node.offset;
@@ -3282,7 +3298,7 @@
}
@override
- bool visitGenericFunctionType(GenericFunctionType node) {
+ bool? visitGenericFunctionType(GenericFunctionType node) {
if (identical(node.returnType, _oldNode)) {
node.returnType = _newNode as TypeAnnotation;
return true;
@@ -3960,17 +3976,15 @@
/// Throws an [ArgumentError] if either node is `null`, if the old node does
/// not have a parent node, or if the AST structure has been corrupted.
static bool replace(AstNode oldNode, AstNode newNode) {
- if (oldNode == null || newNode == null) {
- throw ArgumentError("The old and new nodes must be non-null");
- } else if (identical(oldNode, newNode)) {
+ if (identical(oldNode, newNode)) {
return true;
}
- AstNode parent = oldNode.parent;
+ var parent = oldNode.parent;
if (parent == null) {
throw ArgumentError("The old node is not a child of another node");
}
NodeReplacer replacer = NodeReplacer(oldNode, newNode);
- return parent.accept(replacer);
+ return parent.accept(replacer)!;
}
}
@@ -3981,7 +3995,7 @@
/// The AST node with which the node being visited is to be compared. This is
/// only valid at the beginning of each visit method (until [isEqualNodes] is
/// invoked).
- AstNode _toNode;
+ AstNode? _toNode;
@override
bool visitAdjacentStrings(AdjacentStrings node) {
@@ -4255,7 +4269,7 @@
@override
bool visitConstructorDeclaration(ConstructorDeclaration node) {
- ConstructorDeclarationImpl toNode = _toNode as ConstructorDeclaration;
+ var toNode = _toNode as ConstructorDeclarationImpl;
if (_and(
_isEqualNodes(node.documentationComment, toNode.documentationComment),
_isEqualNodeLists(node.metadata, toNode.metadata),
@@ -4588,7 +4602,7 @@
@override
bool visitFunctionExpression(FunctionExpression node) {
- FunctionExpressionImpl toNode = _toNode as FunctionExpression;
+ var toNode = _toNode as FunctionExpressionImpl;
if (_and(_isEqualNodes(node.parameters, toNode.parameters),
_isEqualNodes(node.body, toNode.body))) {
toNode.declaredElement = node.declaredElement;
@@ -5417,7 +5431,7 @@
/// Return `true` if the [first] and [second] lists of AST nodes have the same
/// size and corresponding elements are equal.
- bool _isEqualNodeLists(NodeList first, NodeList second) {
+ bool _isEqualNodeLists(NodeList? first, NodeList? second) {
if (first == null) {
return second == null;
} else if (second == null) {
@@ -5439,14 +5453,14 @@
/// Return `true` if the [fromNode] and [toNode] have the same structure. As a
/// side-effect, if the nodes do have the same structure, any resolution data
/// from the first node will be copied to the second node.
- bool _isEqualNodes(AstNode fromNode, AstNode toNode) {
+ bool _isEqualNodes(AstNode? fromNode, AstNode? toNode) {
if (fromNode == null) {
return toNode == null;
} else if (toNode == null) {
return false;
} else if (fromNode.runtimeType == toNode.runtimeType) {
_toNode = toNode;
- return fromNode.accept(this);
+ return fromNode.accept(this)!;
}
//
// Check for a simple transformation caused by entering a period.
@@ -5455,13 +5469,13 @@
SimpleIdentifier prefix = toNode.prefix;
if (fromNode.runtimeType == prefix.runtimeType) {
_toNode = prefix;
- return fromNode.accept(this);
+ return fromNode.accept(this)!;
}
} else if (toNode is PropertyAccess) {
- Expression target = toNode.target;
+ var target = toNode.target;
if (fromNode.runtimeType == target.runtimeType) {
_toNode = target;
- return fromNode.accept(this);
+ return fromNode.accept(this)!;
}
}
return false;
@@ -5483,7 +5497,7 @@
}
/// Return `true` if the [first] and [second] tokens have the same structure.
- bool _isEqualTokens(Token first, Token second) {
+ bool _isEqualTokens(Token? first, Token? second) {
if (first == null) {
return second == null;
} else if (second == null) {
@@ -5507,9 +5521,9 @@
/// Completion test code coverage is 95%. The two basic blocks that are not
/// executed cannot be executed. They are included for future reference.
class ScopedNameFinder extends GeneralizingAstVisitor<void> {
- Declaration _declarationNode;
+ Declaration? _declarationNode;
- AstNode _immediateChild;
+ AstNode? _immediateChild;
final Map<String, SimpleIdentifier> _locals =
HashMap<String, SimpleIdentifier>();
@@ -5520,7 +5534,7 @@
ScopedNameFinder(this._position);
- Declaration get declaration => _declarationNode;
+ Declaration? get declaration => _declarationNode;
Map<String, SimpleIdentifier> get locals => _locals;
@@ -5579,9 +5593,9 @@
@override
void visitFunctionExpression(FunctionExpression node) {
- if (node.parameters != null &&
- !identical(_immediateChild, node.parameters)) {
- _addParameters(node.parameters.parameters);
+ var parameters = node.parameters;
+ if (parameters != null && !identical(_immediateChild, parameters)) {
+ _addParameters(parameters.parameters);
}
super.visitFunctionExpression(node);
}
@@ -5589,19 +5603,16 @@
@override
void visitMethodDeclaration(MethodDeclaration node) {
_declarationNode = node;
- if (node.parameters != null &&
- !identical(_immediateChild, node.parameters)) {
- _addParameters(node.parameters.parameters);
+ var parameters = node.parameters;
+ if (parameters != null && !identical(_immediateChild, parameters)) {
+ _addParameters(parameters.parameters);
}
}
@override
void visitNode(AstNode node) {
_immediateChild = node;
- AstNode parent = node.parent;
- if (parent != null) {
- parent.accept(this);
- }
+ node.parent?.accept(this);
}
@override
@@ -5626,7 +5637,7 @@
}
}
- void _addToScope(SimpleIdentifier identifier) {
+ void _addToScope(SimpleIdentifier? identifier) {
if (identifier != null && _isInRange(identifier)) {
String name = identifier.name;
if (!_locals.containsKey(name)) {
diff --git a/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart b/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart
index e517f1d..4f10340 100644
--- a/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart
+++ b/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart
@@ -43,7 +43,7 @@
final InterfaceType _intType;
/// The current library that is being analyzed.
- final LibraryElement _currentLibrary;
+ final LibraryElementImpl _currentLibrary;
final ConstantEvaluationEngine _evaluationEngine;
@@ -52,7 +52,7 @@
/// Initialize a newly created constant verifier.
ConstantVerifier(
ErrorReporter errorReporter,
- LibraryElement currentLibrary,
+ LibraryElementImpl currentLibrary,
DeclaredVariables declaredVariables,
) : this._(
errorReporter,
@@ -77,7 +77,7 @@
void visitAnnotation(Annotation node) {
super.visitAnnotation(node);
// check annotation creation
- Element element = node.element;
+ var element = node.element;
if (element is ConstructorElement) {
// should be 'const' constructor
if (!element.isConst) {
@@ -86,7 +86,7 @@
return;
}
// should have arguments
- ArgumentList argumentList = node.arguments;
+ var argumentList = node.arguments;
if (argumentList == null) {
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.NO_ANNOTATION_CONSTRUCTOR_ARGUMENTS, node);
@@ -102,7 +102,8 @@
if (node.constKeyword != null) {
_validateConstructorInitializers(node);
if (node.factoryKeyword == null) {
- _validateFieldInitializers(node.parent, node);
+ _validateFieldInitializers(
+ node.parent as ClassOrMixinDeclaration, node);
}
}
_validateDefaultValues(node.parameters);
@@ -125,7 +126,7 @@
// We need to evaluate the constant to see if any errors occur during its
// evaluation.
- ConstructorElement constructor = node.constructorName.staticElement;
+ var constructor = node.constructorName.staticElement;
if (constructor != null) {
ConstantVisitor constantVisitor =
ConstantVisitor(_evaluationEngine, _currentLibrary, _errorReporter);
@@ -146,7 +147,7 @@
void visitListLiteral(ListLiteral node) {
super.visitListLiteral(node);
if (node.isConst) {
- InterfaceType nodeType = node.staticType;
+ var nodeType = node.staticType as InterfaceType;
DartType elementType = nodeType.typeArguments[0];
var verifier = _ConstLiteralVerifier(
this,
@@ -171,7 +172,7 @@
super.visitSetOrMapLiteral(node);
if (node.isSet) {
if (node.isConst) {
- InterfaceType nodeType = node.staticType;
+ var nodeType = node.staticType as InterfaceType;
var elementType = nodeType.typeArguments[0];
var duplicateElements = <Expression, Expression>{};
var verifier = _ConstLiteralVerifier(
@@ -185,16 +186,14 @@
for (CollectionElement element in node.elements) {
verifier.verify(element);
}
- for (var duplicateElement in duplicateElements.keys) {
+ for (var duplicateEntry in duplicateElements.entries) {
_errorReporter.reportError(_diagnosticFactory.equalElementsInConstSet(
- _errorReporter.source,
- duplicateElement,
- duplicateElements[duplicateElement]));
+ _errorReporter.source, duplicateEntry.key, duplicateEntry.value));
}
}
} else if (node.isMap) {
if (node.isConst) {
- InterfaceType nodeType = node.staticType;
+ var nodeType = node.staticType as InterfaceType;
var keyType = nodeType.typeArguments[0];
var valueType = nodeType.typeArguments[1];
bool reportEqualKeys = true;
@@ -212,11 +211,11 @@
verifier.verify(entry);
}
if (reportEqualKeys) {
- for (var duplicateKeyElement in duplicateKeyElements.keys) {
+ for (var duplicateEntry in duplicateKeyElements.entries) {
_errorReporter.reportError(_diagnosticFactory.equalKeysInConstMap(
_errorReporter.source,
- duplicateKeyElement,
- duplicateKeyElements[duplicateKeyElement]));
+ duplicateEntry.key,
+ duplicateEntry.value));
}
}
}
@@ -236,10 +235,10 @@
@override
void visitVariableDeclaration(VariableDeclaration node) {
super.visitVariableDeclaration(node);
- Expression initializer = node.initializer;
+ var initializer = node.initializer;
if (initializer != null && (node.isConst || node.isFinal)) {
- VariableElementImpl element = node.declaredElement as VariableElementImpl;
- EvaluationResultImpl result = element.evaluationResult;
+ var element = node.declaredElement as VariableElementImpl;
+ var result = element.evaluationResult;
if (result == null) {
// Variables marked "const" should have had their values computed by
// ConstantValueComputer. Other variables will only have had their
@@ -271,16 +270,13 @@
}
TypeName typeName = type;
Identifier name = typeName.name;
- if (name == null) {
- return;
- }
// should not be a type parameter
if (name.staticElement is TypeParameterElement) {
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.CONST_WITH_TYPE_PARAMETERS, name);
}
// check type arguments
- TypeArgumentList typeArguments = typeName.typeArguments;
+ var typeArguments = typeName.typeArguments;
if (typeArguments != null) {
for (TypeAnnotation argument in typeArguments.arguments) {
_checkForConstWithTypeParameters(argument);
@@ -290,7 +286,7 @@
/// @return `true` if given [Type] implements operator <i>==</i>, and it is
/// not <i>int</i> or <i>String</i>.
- bool _implementsEqualsWhenNotAllowed(DartType type) {
+ bool _implementsEqualsWhenNotAllowed(DartType? type) {
// ignore int or String
if (type == null ||
type.element == _intType.element ||
@@ -300,11 +296,10 @@
return true;
}
// prepare ClassElement
- Element element = type.element;
+ var element = type.element;
if (element is ClassElement) {
// lookup for ==
- MethodElement method =
- element.lookUpConcreteMethod("==", _currentLibrary);
+ var method = element.lookUpConcreteMethod("==", _currentLibrary);
if (method == null ||
(method.enclosingElement as ClassElement).isDartCoreObject) {
return false;
@@ -338,7 +333,7 @@
///
/// @param errors the errors that need to be reported
/// @param errorCode the error code to be used
- void _reportErrors(List<AnalysisError> errors, ErrorCode errorCode) {
+ void _reportErrors(List<AnalysisError> errors, ErrorCode? errorCode) {
int length = errors.length;
for (int i = 0; i < length; i++) {
AnalysisError data = errors[i];
@@ -388,9 +383,6 @@
/// Validates that all arguments in the [argumentList] are potentially
/// constant expressions.
void _reportNotPotentialConstantsArguments(ArgumentList argumentList) {
- if (argumentList == null) {
- return;
- }
for (Expression argument in argumentList.arguments) {
_reportNotPotentialConstants(argument);
}
@@ -410,14 +402,14 @@
/// @param errorCode the error code to be used if the expression is not a
/// compile time constant
/// @return the value of the compile time constant
- DartObjectImpl _validate(Expression expression, ErrorCode errorCode) {
+ DartObjectImpl? _validate(Expression expression, ErrorCode errorCode) {
RecordingErrorListener errorListener = RecordingErrorListener();
ErrorReporter subErrorReporter = ErrorReporter(
errorListener,
_errorReporter.source,
isNonNullableByDefault: _currentLibrary.isNonNullableByDefault,
);
- DartObjectImpl result = expression.accept(
+ var result = expression.accept(
ConstantVisitor(_evaluationEngine, _currentLibrary, subErrorReporter));
_reportErrors(errorListener.errors, errorCode);
return result;
@@ -442,7 +434,7 @@
for (ConstructorInitializer initializer in initializers) {
if (initializer is AssertInitializer) {
_reportNotPotentialConstants(initializer.condition);
- Expression message = initializer.message;
+ var message = initializer.message;
if (message != null) {
_reportNotPotentialConstants(message);
}
@@ -460,14 +452,14 @@
/// the given list is a compile time constant.
///
/// @param parameters the list of parameters to be validated
- void _validateDefaultValues(FormalParameterList parameters) {
+ void _validateDefaultValues(FormalParameterList? parameters) {
if (parameters == null) {
return;
}
for (FormalParameter parameter in parameters.parameters) {
if (parameter is DefaultFormalParameter) {
- Expression defaultValue = parameter.defaultValue;
- DartObjectImpl result;
+ var defaultValue = parameter.defaultValue;
+ DartObjectImpl? result;
if (defaultValue == null) {
result = DartObjectImpl(
_typeSystem,
@@ -505,7 +497,7 @@
if (member is FieldDeclaration && !member.isStatic) {
for (VariableDeclaration variableDeclaration
in member.fields.variables) {
- Expression initializer = variableDeclaration.initializer;
+ var initializer = variableDeclaration.initializer;
if (initializer != null) {
// Ignore any errors produced during validation--if the constant
// can't be evaluated we'll just report a single error.
@@ -516,13 +508,13 @@
_errorReporter.source,
isNonNullableByDefault: _currentLibrary.isNonNullableByDefault,
);
- DartObjectImpl result = initializer.accept(ConstantVisitor(
+ var result = initializer.accept(ConstantVisitor(
_evaluationEngine, _currentLibrary, subErrorReporter));
if (result == null) {
_errorReporter.reportErrorForToken(
CompileTimeErrorCode
.CONST_CONSTRUCTOR_WITH_FIELD_INITIALIZED_BY_NON_CONST,
- errorSite.constKeyword,
+ errorSite.constKeyword!,
[variableDeclaration.name.name]);
}
}
@@ -536,12 +528,12 @@
// compare all types with the most popular type rather than the first
// type.
bool foundError = false;
- DartType firstType;
+ DartType? firstType;
for (var switchMember in node.members) {
if (switchMember is SwitchCase) {
Expression expression = switchMember.expression;
- DartObjectImpl expressionValue = _validate(
+ var expressionValue = _validate(
expression,
CompileTimeErrorCode.NON_CONSTANT_CASE_EXPRESSION,
);
@@ -588,12 +580,12 @@
}
void _validateSwitchStatement_nullSafety(SwitchStatement node) {
- var switchType = node.expression.staticType;
+ var switchType = node.expression.staticType!;
for (var switchMember in node.members) {
if (switchMember is SwitchCase) {
Expression expression = switchMember.expression;
- DartObjectImpl expressionValue = _validate(
+ var expressionValue = _validate(
expression,
CompileTimeErrorCode.NON_CONSTANT_CASE_EXPRESSION,
);
@@ -632,15 +624,15 @@
class _ConstLiteralVerifier {
final ConstantVerifier verifier;
- final Map<DartObject, Expression> mapUniqueKeys;
- final Map<Expression, Expression> mapDuplicateKeyExpressions;
+ final Map<DartObject, Expression>? mapUniqueKeys;
+ final Map<Expression, Expression>? mapDuplicateKeyExpressions;
final ErrorCode errorCode;
- final DartType listElementType;
- final DartType mapKeyType;
- final DartType mapValueType;
- final DartType setElementType;
- final Map<DartObject, Expression> setUniqueValues;
- final Map<Expression, Expression> setDuplicateExpressions;
+ final DartType? listElementType;
+ final DartType? mapKeyType;
+ final DartType? mapValueType;
+ final DartType? setElementType;
+ final Map<DartObject, Expression>? setUniqueValues;
+ final Map<Expression, Expression>? setDuplicateExpressions;
final bool forList;
final bool forMap;
final bool forSet;
@@ -649,7 +641,7 @@
this.verifier, {
this.mapUniqueKeys,
this.mapDuplicateKeyExpressions,
- this.errorCode,
+ required this.errorCode,
this.listElementType,
this.mapKeyType,
this.mapValueType,
@@ -661,7 +653,7 @@
this.forSet = false,
});
- ErrorCode get _fromDeferredErrorCode {
+ ErrorCode? get _fromDeferredErrorCode {
if (forList) {
return CompileTimeErrorCode
.NON_CONSTANT_LIST_ELEMENT_FROM_DEFERRED_LIBRARY;
@@ -679,7 +671,7 @@
if (_fromDeferredErrorCode != null) {
verifier._reportErrorIfFromDeferredLibrary(
- element, _fromDeferredErrorCode);
+ element, _fromDeferredErrorCode!);
}
if (forList) {
@@ -709,12 +701,12 @@
if (conditionBool) {
thenValid = verify(element.thenElement);
if (element.elseElement != null) {
- elseValid = _reportNotPotentialConstants(element.elseElement);
+ elseValid = _reportNotPotentialConstants(element.elseElement!);
}
} else {
thenValid = _reportNotPotentialConstants(element.thenElement);
if (element.elseElement != null) {
- elseValid = verify(element.elseElement);
+ elseValid = verify(element.elseElement!);
}
}
@@ -757,7 +749,9 @@
errorCode = CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT;
} else if (forMap) {
errorCode = CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT;
- for (var parent = notConst; parent != null; parent = parent.parent) {
+ for (AstNode? parent = notConst;
+ parent != null;
+ parent = parent.parent) {
if (parent is MapLiteralEntry) {
if (parent.key == notConst) {
errorCode = CompileTimeErrorCode.NON_CONSTANT_MAP_KEY;
@@ -769,6 +763,8 @@
}
} else if (forSet) {
errorCode = CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT;
+ } else {
+ throw UnimplementedError();
}
verifier._errorReporter.reportErrorForNode(errorCode, notConst);
}
@@ -777,7 +773,7 @@
}
bool _validateListExpression(Expression expression, DartObjectImpl value) {
- if (!verifier._runtimeTypeMatch(value, listElementType)) {
+ if (!verifier._runtimeTypeMatch(value, listElementType!)) {
verifier._errorReporter.reportErrorForNode(
CompileTimeErrorCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE,
expression,
@@ -822,13 +818,13 @@
}
if (forSet) {
- var iterableValue = listValue ?? setValue;
+ var iterableValue = (listValue ?? setValue)!;
for (var item in iterableValue) {
Expression expression = element.expression;
- if (setUniqueValues.containsKey(item)) {
- setDuplicateExpressions[expression] = setUniqueValues[item];
+ if (setUniqueValues!.containsKey(item)) {
+ setDuplicateExpressions![expression] = setUniqueValues![item]!;
} else {
- setUniqueValues[item] = expression;
+ setUniqueValues![item] = expression;
}
}
}
@@ -854,7 +850,7 @@
if (keyValue != null) {
var keyType = keyValue.type;
- if (!verifier._runtimeTypeMatch(keyValue, mapKeyType)) {
+ if (!verifier._runtimeTypeMatch(keyValue, mapKeyType!)) {
verifier._errorReporter.reportErrorForNode(
CompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE,
keyExpression,
@@ -875,15 +871,15 @@
CompileTimeErrorCode.NON_CONSTANT_MAP_KEY_FROM_DEFERRED_LIBRARY,
);
- if (mapUniqueKeys.containsKey(keyValue)) {
- mapDuplicateKeyExpressions[keyExpression] = mapUniqueKeys[keyValue];
+ if (mapUniqueKeys!.containsKey(keyValue)) {
+ mapDuplicateKeyExpressions![keyExpression] = mapUniqueKeys![keyValue]!;
} else {
- mapUniqueKeys[keyValue] = keyExpression;
+ mapUniqueKeys![keyValue] = keyExpression;
}
}
if (valueValue != null) {
- if (!verifier._runtimeTypeMatch(valueValue, mapValueType)) {
+ if (!verifier._runtimeTypeMatch(valueValue, mapValueType!)) {
verifier._errorReporter.reportErrorForNode(
CompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE,
valueExpression,
@@ -904,21 +900,18 @@
if (value.isNull && _isNullableSpread(element)) {
return true;
}
- Map<DartObject, DartObject> map = value.toMapValue();
+ var map = value.toMapValue();
if (map != null) {
// TODO(brianwilkerson) Figure out how to improve the error messages. They
// currently point to the whole spread expression, but the key and/or
// value being referenced might not be located there (if it's referenced
// through a const variable).
- for (var entry in map.entries) {
- DartObjectImpl keyValue = entry.key;
- if (keyValue != null) {
- if (mapUniqueKeys.containsKey(keyValue)) {
- mapDuplicateKeyExpressions[element.expression] =
- mapUniqueKeys[keyValue];
- } else {
- mapUniqueKeys[keyValue] = element.expression;
- }
+ for (var keyValue in map.keys) {
+ if (mapUniqueKeys!.containsKey(keyValue)) {
+ mapDuplicateKeyExpressions![element.expression] =
+ mapUniqueKeys![keyValue]!;
+ } else {
+ mapUniqueKeys![keyValue] = element.expression;
}
}
return true;
@@ -931,7 +924,7 @@
}
bool _validateSetExpression(Expression expression, DartObjectImpl value) {
- if (!verifier._runtimeTypeMatch(value, setElementType)) {
+ if (!verifier._runtimeTypeMatch(value, setElementType!)) {
verifier._errorReporter.reportErrorForNode(
CompileTimeErrorCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE,
expression,
@@ -954,10 +947,10 @@
CompileTimeErrorCode.SET_ELEMENT_FROM_DEFERRED_LIBRARY,
);
- if (setUniqueValues.containsKey(value)) {
- setDuplicateExpressions[expression] = setUniqueValues[value];
+ if (setUniqueValues!.containsKey(value)) {
+ setDuplicateExpressions![expression] = setUniqueValues![value]!;
} else {
- setUniqueValues[value] = expression;
+ setUniqueValues![value] = expression;
}
return true;
diff --git a/pkg/analyzer/lib/src/dart/constant/evaluation.dart b/pkg/analyzer/lib/src/dart/constant/evaluation.dart
index 329422d..672647e 100644
--- a/pkg/analyzer/lib/src/dart/constant/evaluation.dart
+++ b/pkg/analyzer/lib/src/dart/constant/evaluation.dart
@@ -81,7 +81,7 @@
bool checkFromEnvironmentArguments(
LibraryElementImpl library,
List<Expression> arguments,
- List<DartObjectImpl> argumentValues,
+ List<DartObjectImpl?> argumentValues,
Map<String, DartObjectImpl> namedArgumentValues,
InterfaceType expectedDefaultValueType) {
int argumentCount = arguments.length;
@@ -91,7 +91,7 @@
if (arguments[0] is NamedExpression) {
return false;
}
- if (argumentValues[0].type != library.typeProvider.stringType) {
+ if (argumentValues[0]!.type != library.typeProvider.stringType) {
return false;
}
if (argumentCount == 2) {
@@ -101,7 +101,7 @@
return false;
}
ParameterizedType defaultValueType =
- namedArgumentValues[_DEFAULT_VALUE_PARAM].type;
+ namedArgumentValues[_DEFAULT_VALUE_PARAM]!.type;
if (!(defaultValueType == expectedDefaultValueType ||
defaultValueType == library.typeProvider.nullType)) {
return false;
@@ -120,8 +120,8 @@
/// `false` if there is an error.
bool checkSymbolArguments(
LibraryElementImpl library,
- NodeList<Expression> arguments,
- List<DartObjectImpl> argumentValues,
+ List<Expression> arguments,
+ List<DartObjectImpl?> argumentValues,
Map<String, DartObjectImpl> namedArgumentValues) {
if (arguments.length != 1) {
return false;
@@ -129,11 +129,11 @@
if (arguments[0] is NamedExpression) {
return false;
}
- if (argumentValues[0].type != library.typeProvider.stringType) {
+ if (argumentValues[0]!.type != library.typeProvider.stringType) {
return false;
}
- String name = argumentValues[0].toStringValue();
- return isValidPublicSymbol(name);
+ var name = argumentValues[0]?.toStringValue();
+ return name != null && isValidPublicSymbol(name);
}
/// Compute the constant value associated with the given [constant].
@@ -143,18 +143,18 @@
constant = element.declaration as ConstantEvaluationTarget;
}
- var library = constant.library;
+ var library = constant.library as LibraryElementImpl;
if (constant is ParameterElementImpl) {
if (constant.isOptional) {
- Expression defaultValue = constant.constantInitializer;
+ var defaultValue = constant.constantInitializer;
if (defaultValue != null) {
RecordingErrorListener errorListener = RecordingErrorListener();
ErrorReporter errorReporter = ErrorReporter(
errorListener,
- constant.source,
+ constant.source!,
isNonNullableByDefault: library.isNonNullableByDefault,
);
- DartObjectImpl dartObject = defaultValue
+ var dartObject = defaultValue
.accept(ConstantVisitor(this, library, errorReporter));
constant.evaluationResult =
EvaluationResultImpl(dartObject, errorListener.errors);
@@ -165,15 +165,15 @@
}
}
} else if (constant is VariableElementImpl) {
- Expression constantInitializer = constant.constantInitializer;
+ var constantInitializer = constant.constantInitializer;
if (constantInitializer != null) {
RecordingErrorListener errorListener = RecordingErrorListener();
ErrorReporter errorReporter = ErrorReporter(
errorListener,
- constant.source,
+ constant.source!,
isNonNullableByDefault: library.isNonNullableByDefault,
);
- DartObjectImpl dartObject = constantInitializer
+ var dartObject = constantInitializer
.accept(ConstantVisitor(this, library, errorReporter));
// Only check the type for truly const declarations (don't check final
// fields with initializers, since their types may be generic. The type
@@ -202,8 +202,8 @@
constant.isConstantEvaluated = true;
}
} else if (constant is ElementAnnotationImpl) {
- Annotation constNode = constant.annotationAst;
- Element element = constant.element;
+ var constNode = constant.annotationAst;
+ var element = constant.element;
if (element is PropertyAccessorElement &&
element.variable is VariableElement) {
// The annotation is a reference to a compile-time constant variable.
@@ -229,10 +229,10 @@
);
ConstantVisitor constantVisitor =
ConstantVisitor(this, library, errorReporter);
- DartObjectImpl result = evaluateConstructorCall(
+ var result = evaluateConstructorCall(
library,
constNode,
- constNode.arguments.arguments,
+ constNode.arguments!.arguments,
element,
constantVisitor,
errorReporter);
@@ -267,21 +267,19 @@
ConstantEvaluationTarget constant, ReferenceFinderCallback callback) {
ReferenceFinder referenceFinder = ReferenceFinder(callback);
if (constant is ConstructorElement) {
- constant = (constant as ConstructorElement).declaration;
+ constant = constant.declaration;
}
if (constant is VariableElement) {
var declaration = constant.declaration as VariableElementImpl;
- Expression initializer = declaration.constantInitializer;
+ var initializer = declaration.constantInitializer;
if (initializer != null) {
initializer.accept(referenceFinder);
}
} else if (constant is ConstructorElementImpl) {
if (constant.isConst) {
- ConstructorElement redirectedConstructor =
- getConstRedirectedConstructor(constant);
+ var redirectedConstructor = getConstRedirectedConstructor(constant);
if (redirectedConstructor != null) {
- ConstructorElement redirectedConstructorBase =
- redirectedConstructor?.declaration;
+ var redirectedConstructorBase = redirectedConstructor.declaration;
callback(redirectedConstructorBase);
return;
} else if (constant.isFactory) {
@@ -296,23 +294,20 @@
return;
}
bool defaultSuperInvocationNeeded = true;
- List<ConstructorInitializer> initializers =
- constant.constantInitializers;
- if (initializers != null) {
- for (ConstructorInitializer initializer in initializers) {
- if (initializer is SuperConstructorInvocation ||
- initializer is RedirectingConstructorInvocation) {
- defaultSuperInvocationNeeded = false;
- }
- initializer.accept(referenceFinder);
+ var initializers = constant.constantInitializers;
+ for (ConstructorInitializer initializer in initializers) {
+ if (initializer is SuperConstructorInvocation ||
+ initializer is RedirectingConstructorInvocation) {
+ defaultSuperInvocationNeeded = false;
}
+ initializer.accept(referenceFinder);
}
if (defaultSuperInvocationNeeded) {
// No explicit superconstructor invocation found, so we need to
// manually insert a reference to the implicit superconstructor.
- InterfaceType superclass = constant.returnType.superclass;
+ var superclass = constant.returnType.superclass;
if (superclass != null && !superclass.isDartCoreObject) {
- ConstructorElement unnamedConstructor =
+ var unnamedConstructor =
superclass.element.unnamedConstructor?.declaration;
if (unnamedConstructor != null) {
callback(unnamedConstructor);
@@ -334,7 +329,7 @@
}
} else if (constant is ElementAnnotationImpl) {
Annotation constNode = constant.annotationAst;
- Element element = constant.element;
+ var element = constant.element;
if (element is PropertyAccessorElement &&
element.variable is VariableElement) {
// The annotation is a reference to a compile-time constant variable,
@@ -348,15 +343,8 @@
// This could happen in the event of invalid code. The error will be
// reported at constant evaluation time.
}
- if (constNode == null) {
- // We cannot determine what element the annotation is on, nor the offset
- // of the annotation, so there's not a lot of information in this
- // message, but it's better than getting an exception.
- // https://github.com/dart-lang/sdk/issues/26811
- AnalysisEngine.instance.instrumentationService.logInfo(
- 'No annotationAst for $constant in ${constant.compilationUnit}');
- } else if (constNode.arguments != null) {
- constNode.arguments.accept(referenceFinder);
+ if (constNode.arguments != null) {
+ constNode.arguments!.accept(referenceFinder);
}
} else if (constant is VariableElement) {
// constant is a VariableElement but not a VariableElementImpl. This can
@@ -373,18 +361,18 @@
}
}
- DartObjectImpl evaluateConstructorCall(
+ DartObjectImpl? evaluateConstructorCall(
LibraryElementImpl library,
AstNode node,
List<Expression> arguments,
ConstructorElement constructor,
ConstantVisitor constantVisitor,
ErrorReporter errorReporter,
- {ConstructorInvocation invocation}) {
+ {ConstructorInvocation? invocation}) {
if (!constructor.isConst) {
if (node is InstanceCreationExpression && node.keyword != null) {
errorReporter.reportErrorForToken(
- CompileTimeErrorCode.CONST_WITH_NON_CONST, node.keyword);
+ CompileTimeErrorCode.CONST_WITH_NON_CONST, node.keyword!);
} else {
errorReporter.reportErrorForNode(
CompileTimeErrorCode.CONST_WITH_NON_CONST, node);
@@ -405,9 +393,9 @@
}
int argumentCount = arguments.length;
- var argumentValues = List<DartObjectImpl>.filled(argumentCount, null);
- Map<String, NamedExpression> namedNodes;
- Map<String, DartObjectImpl> namedValues;
+ var argumentValues = List<DartObjectImpl?>.filled(argumentCount, null);
+ Map<String, NamedExpression>? namedNodes;
+ Map<String, DartObjectImpl>? namedValues;
for (int i = 0; i < argumentCount; i++) {
Expression argument = arguments[i];
if (argument is NamedExpression) {
@@ -444,8 +432,8 @@
CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, node);
return null;
}
- String variableName =
- argumentCount < 1 ? null : argumentValues[0].toStringValue();
+ String? variableName =
+ argumentCount < 1 ? null : argumentValues[0]?.toStringValue();
if (definingClass == library.typeProvider.boolElement) {
return FromEnvironmentEvaluator(
library.typeSystem,
@@ -464,7 +452,8 @@
}
} else if (constructor.name == 'hasEnvironment' &&
definingClass == library.typeProvider.boolElement) {
- var name = argumentCount < 1 ? null : argumentValues[0].toStringValue();
+ var name =
+ argumentCount < 1 ? null : argumentValues[0]?.toStringValue();
return FromEnvironmentEvaluator(
library.typeSystem,
_declaredVariables,
@@ -478,7 +467,7 @@
CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, node);
return null;
}
- String argumentValue = argumentValues[0].toStringValue();
+ var argumentValue = argumentValues[0]?.toStringValue();
return DartObjectImpl(
library.typeSystem,
definingType,
@@ -497,19 +486,7 @@
);
}
var constructorBase = constructor.declaration as ConstructorElementImpl;
- List<ConstructorInitializer> initializers =
- constructorBase.constantInitializers;
- if (initializers == null) {
- // This can happen in some cases where there are compile errors in the
- // code being analyzed (for example if the code is trying to create a
- // const instance using a non-const constructor, or the node we're
- // visiting is involved in a cycle). The error has already been reported,
- // so consider it an unknown value to suppress further errors.
- return DartObjectImpl.validWithUnknownValue(
- library.typeSystem,
- definingType,
- );
- }
+ var initializers = constructorBase.constantInitializers;
var fieldMap = HashMap<String, DartObjectImpl>();
@@ -532,7 +509,7 @@
if ((field.isFinal || field.isConst) &&
!field.isStatic &&
field is ConstFieldElementImpl) {
- DartObjectImpl fieldValue = field.evaluationResult?.value;
+ var fieldValue = field.evaluationResult?.value;
// It is possible that the evaluation result is null.
// This happens for example when we have duplicate fields.
@@ -543,8 +520,7 @@
// Match the value and the type.
DartType fieldType =
FieldMember.from(field, constructor.returnType).type;
- if (fieldValue != null &&
- !runtimeTypeMatch(library, fieldValue, fieldType)) {
+ if (!runtimeTypeMatch(library, fieldValue, fieldType)) {
errorReporter.reportErrorForNode(
CompileTimeErrorCode.CONST_CONSTRUCTOR_FIELD_TYPE_MISMATCH,
node,
@@ -562,8 +538,8 @@
for (int i = 0; i < parameterCount; i++) {
ParameterElement parameter = parameters[i];
ParameterElement baseParameter = parameter.declaration;
- DartObjectImpl argumentValue;
- AstNode errorTarget;
+ DartObjectImpl? argumentValue;
+ AstNode? errorTarget;
if (baseParameter.isNamed) {
argumentValue = namedValues[baseParameter.name];
errorTarget = namedNodes[baseParameter.name];
@@ -578,7 +554,7 @@
if (argumentValue == null && baseParameter is ParameterElementImpl) {
// The parameter is an optional positional parameter for which no value
// was provided, so use the default value.
- EvaluationResultImpl evaluationResult = baseParameter.evaluationResult;
+ var evaluationResult = baseParameter.evaluationResult;
if (evaluationResult == null) {
// No default was provided, so the default value is null.
argumentValue = _nullObject(library);
@@ -594,7 +570,7 @@
[argumentValue.type, parameter.type]);
}
if (baseParameter.isInitializingFormal) {
- FieldElement field = (parameter as FieldFormalParameterElement).field;
+ var field = (parameter as FieldFormalParameterElement).field;
if (field != null) {
DartType fieldType = field.type;
if (fieldType != parameter.type) {
@@ -622,19 +598,18 @@
}
ConstantVisitor initializerVisitor = ConstantVisitor(
this,
- constructor.library,
+ constructor.library as LibraryElementImpl,
externalErrorReporter,
lexicalEnvironment: parameterMap,
substitution: Substitution.fromInterfaceType(definingType),
);
- String superName;
- NodeList<Expression> superArguments;
+ String? superName;
+ NodeList<Expression>? superArguments;
for (var i = 0; i < initializers.length; i++) {
var initializer = initializers[i];
if (initializer is ConstructorFieldInitializer) {
Expression initializerExpression = initializer.expression;
- DartObjectImpl evaluationResult =
- initializerExpression?.accept(initializerVisitor);
+ var evaluationResult = initializerExpression.accept(initializerVisitor);
if (evaluationResult != null) {
String fieldName = initializer.fieldName.name;
if (fieldMap.containsKey(fieldName)) {
@@ -642,7 +617,7 @@
CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, node);
}
fieldMap[fieldName] = evaluationResult;
- PropertyAccessorElement getter = definingType.getGetter(fieldName);
+ var getter = definingType.getGetter(fieldName);
if (getter != null) {
PropertyInducingElement field = getter.variable;
if (!runtimeTypeMatch(library, evaluationResult, field.type)) {
@@ -657,7 +632,7 @@
CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, node);
}
} else if (initializer is SuperConstructorInvocation) {
- SimpleIdentifier name = initializer.constructorName;
+ var name = initializer.constructorName;
if (name != null) {
superName = name.name;
}
@@ -665,12 +640,12 @@
} else if (initializer is RedirectingConstructorInvocation) {
// This is a redirecting constructor, so just evaluate the constructor
// it redirects to.
- ConstructorElement constructor = initializer.staticElement;
+ var constructor = initializer.staticElement;
if (constructor != null && constructor.isConst) {
// Instantiate the constructor with the in-scope type arguments.
constructor = ConstructorMember.from(constructor, definingType);
- DartObjectImpl result = evaluateConstructorCall(
+ var result = evaluateConstructorCall(
library,
node,
initializer.argumentList.arguments,
@@ -685,12 +660,8 @@
return result;
}
} else if (initializer is AssertInitializer) {
- Expression condition = initializer.condition;
- if (condition == null) {
- errorReporter.reportErrorForNode(
- CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, node);
- }
- DartObjectImpl evaluationResult = condition.accept(initializerVisitor);
+ var condition = initializer.condition;
+ var evaluationResult = condition.accept(initializerVisitor);
if (evaluationResult == null ||
!evaluationResult.isBool ||
evaluationResult.toBoolValue() == false) {
@@ -701,15 +672,16 @@
}
}
// Evaluate explicit or implicit call to super().
- InterfaceType superclass = definingType.superclass;
+ var superclass = definingType.superclass;
if (superclass != null && !superclass.isDartCoreObject) {
- ConstructorElement superConstructor =
+ var superConstructor =
superclass.lookUpConstructor(superName, constructor.library);
if (superConstructor != null) {
- superArguments ??= astFactory.nodeList<Expression>(null);
+ superArguments ??= astFactory.nodeList<Expression>(node);
if (constructor is ConstructorMember && constructor.isLegacy) {
- superConstructor = Member.legacy(superConstructor);
+ superConstructor =
+ Member.legacy(superConstructor) as ConstructorElement;
}
evaluateSuperConstructorCall(library, node, fieldMap, superConstructor,
@@ -731,12 +703,12 @@
LibraryElementImpl library,
AstNode node,
Map<String, DartObjectImpl> fieldMap,
- ConstructorElement superConstructor,
+ ConstructorElement? superConstructor,
List<Expression> superArguments,
ConstantVisitor initializerVisitor,
ErrorReporter errorReporter) {
if (superConstructor != null && superConstructor.isConst) {
- DartObjectImpl evaluationResult = evaluateConstructorCall(library, node,
+ var evaluationResult = evaluateConstructorCall(library, node,
superArguments, superConstructor, initializerVisitor, errorReporter);
if (evaluationResult != null) {
fieldMap[GenericState.SUPERCLASS_FIELD] = evaluationResult;
@@ -752,18 +724,15 @@
/// possible and then a const factory constructor will be returned.
ConstructorElement followConstantRedirectionChain(
ConstructorElement constructor) {
- HashSet<ConstructorElement> constructorsVisited =
- HashSet<ConstructorElement>();
+ var constructorsVisited = <ConstructorElement>{};
while (true) {
- ConstructorElement redirectedConstructor =
- getConstRedirectedConstructor(constructor);
+ var redirectedConstructor = getConstRedirectedConstructor(constructor);
if (redirectedConstructor == null) {
break;
} else {
- ConstructorElement constructorBase = constructor?.declaration;
+ var constructorBase = constructor.declaration;
constructorsVisited.add(constructorBase);
- ConstructorElement redirectedConstructorBase =
- redirectedConstructor?.declaration;
+ var redirectedConstructorBase = redirectedConstructor.declaration;
if (constructorsVisited.contains(redirectedConstructorBase)) {
// Cycle in redirecting factory constructors--this is not allowed
// and is checked elsewhere--see
@@ -788,8 +757,8 @@
RecordingErrorListener errorListener = RecordingErrorListener();
ErrorReporter errorReporter = ErrorReporter(
errorListener,
- constant.source,
- isNonNullableByDefault: constant.library.isNonNullableByDefault,
+ constant.source!,
+ isNonNullableByDefault: constant.library!.isNonNullableByDefault,
);
// TODO(paulberry): It would be really nice if we could extract enough
// information from the 'cycle' argument to provide the user with a
@@ -813,7 +782,7 @@
/// If [constructor] redirects to another const constructor, return the
/// const constructor it redirects to. Otherwise return `null`.
- ConstructorElement getConstRedirectedConstructor(
+ ConstructorElement? getConstRedirectedConstructor(
ConstructorElement constructor) {
if (!constructor.isFactory) {
return null;
@@ -827,8 +796,7 @@
// let [evaluateInstanceCreationExpression] handle it specially.
return null;
}
- ConstructorElement redirectedConstructor =
- constructor.redirectedConstructor;
+ var redirectedConstructor = constructor.redirectedConstructor;
if (redirectedConstructor == null) {
// This can happen if constructor is an external factory constructor.
return null;
@@ -881,7 +849,7 @@
bool get isConstantEvaluated;
/// The library with this constant.
- LibraryElement get library;
+ LibraryElement? get library;
}
/// Interface used by unit tests to verify correct dependency analysis during
@@ -941,17 +909,17 @@
final ConstantEvaluationEngine evaluationEngine;
/// The library that contains the constant expression being evaluated.
- final LibraryElement _library;
+ final LibraryElementImpl _library;
- final Map<String, DartObjectImpl> _lexicalEnvironment;
- final Substitution _substitution;
+ final Map<String, DartObjectImpl>? _lexicalEnvironment;
+ final Substitution? _substitution;
/// Error reporter that we use to report errors accumulated while computing
/// the constant.
final ErrorReporter _errorReporter;
/// Helper class used to compute constant values.
- DartObjectComputer _dartObjectComputer;
+ late final DartObjectComputer _dartObjectComputer;
/// Initialize a newly created constant visitor. The [evaluationEngine] is
/// used to evaluate instance creation expressions. The [lexicalEnvironment]
@@ -965,8 +933,8 @@
this.evaluationEngine,
this._library,
this._errorReporter, {
- Map<String, DartObjectImpl> lexicalEnvironment,
- Substitution substitution,
+ Map<String, DartObjectImpl>? lexicalEnvironment,
+ Substitution? substitution,
}) : _lexicalEnvironment = lexicalEnvironment,
_substitution = substitution {
_dartObjectComputer = DartObjectComputer(
@@ -985,8 +953,8 @@
TypeProvider get _typeProvider => _library.typeProvider;
@override
- DartObjectImpl visitAdjacentStrings(AdjacentStrings node) {
- DartObjectImpl result;
+ DartObjectImpl? visitAdjacentStrings(AdjacentStrings node) {
+ DartObjectImpl? result;
for (StringLiteral string in node.strings) {
if (result == null) {
result = string.accept(this);
@@ -999,16 +967,16 @@
}
@override
- DartObjectImpl visitAsExpression(AsExpression node) {
- DartObjectImpl expressionResult = node.expression.accept(this);
- DartObjectImpl typeResult = node.type.accept(this);
+ DartObjectImpl? visitAsExpression(AsExpression node) {
+ var expressionResult = node.expression.accept(this);
+ var typeResult = node.type.accept(this);
return _dartObjectComputer.castToType(node, expressionResult, typeResult);
}
@override
- DartObjectImpl visitBinaryExpression(BinaryExpression node) {
+ DartObjectImpl? visitBinaryExpression(BinaryExpression node) {
TokenType operatorType = node.operator.type;
- DartObjectImpl leftResult = node.leftOperand.accept(this);
+ var leftResult = node.leftOperand.accept(this);
// evaluate lazy operators
if (operatorType == TokenType.AMPERSAND_AMPERSAND) {
return _dartObjectComputer.lazyAnd(
@@ -1021,7 +989,7 @@
node, leftResult, () => node.rightOperand.accept(this));
}
// evaluate eager operators
- DartObjectImpl rightResult = node.rightOperand.accept(this);
+ var rightResult = node.rightOperand.accept(this);
if (operatorType == TokenType.AMPERSAND) {
return _dartObjectComputer.eagerAnd(node, leftResult, rightResult);
} else if (operatorType == TokenType.BANG_EQ) {
@@ -1077,9 +1045,9 @@
}
@override
- DartObjectImpl visitConditionalExpression(ConditionalExpression node) {
- Expression condition = node.condition;
- DartObjectImpl conditionResult = condition.accept(this);
+ DartObjectImpl? visitConditionalExpression(ConditionalExpression node) {
+ var condition = node.condition;
+ var conditionResult = condition.accept(this);
if (conditionResult == null) {
return conditionResult;
@@ -1118,14 +1086,14 @@
}
@override
- DartObjectImpl visitInstanceCreationExpression(
+ DartObjectImpl? visitInstanceCreationExpression(
InstanceCreationExpression node) {
if (!node.isConst) {
// TODO(brianwilkerson) Figure out which error to report.
_error(node, null);
return null;
}
- ConstructorElement constructor = node.constructorName.staticElement;
+ var constructor = node.constructorName.staticElement;
if (constructor == null) {
// Couldn't resolve the constructor so we can't compute a value. No
// problem - the error has already been reported.
@@ -1153,8 +1121,8 @@
}
@override
- DartObjectImpl visitInterpolationExpression(InterpolationExpression node) {
- DartObjectImpl result = node.expression.accept(this);
+ DartObjectImpl? visitInterpolationExpression(InterpolationExpression node) {
+ var result = node.expression.accept(this);
if (result != null && !result.isBoolNumStringOrNull) {
_error(node, CompileTimeErrorCode.CONST_EVAL_TYPE_BOOL_NUM_STRING);
return null;
@@ -1172,14 +1140,14 @@
}
@override
- DartObjectImpl visitIsExpression(IsExpression node) {
- DartObjectImpl expressionResult = node.expression.accept(this);
- DartObjectImpl typeResult = node.type.accept(this);
+ DartObjectImpl? visitIsExpression(IsExpression node) {
+ var expressionResult = node.expression.accept(this);
+ var typeResult = node.type.accept(this);
return _dartObjectComputer.typeTest(node, expressionResult, typeResult);
}
@override
- DartObjectImpl visitListLiteral(ListLiteral node) {
+ DartObjectImpl? visitListLiteral(ListLiteral node) {
if (!node.isConst) {
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.MISSING_CONST_IN_LIST_LITERAL, node);
@@ -1193,7 +1161,7 @@
if (errorOccurred) {
return null;
}
- DartType nodeType = node.staticType;
+ var nodeType = node.staticType;
DartType elementType =
nodeType is InterfaceType && nodeType.typeArguments.isNotEmpty
? nodeType.typeArguments[0]
@@ -1203,18 +1171,18 @@
}
@override
- DartObjectImpl visitMethodInvocation(MethodInvocation node) {
- Element element = node.methodName.staticElement;
+ DartObjectImpl? visitMethodInvocation(MethodInvocation node) {
+ var element = node.methodName.staticElement;
if (element is FunctionElement) {
if (element.name == "identical") {
NodeList<Expression> arguments = node.argumentList.arguments;
if (arguments.length == 2) {
- Element enclosingElement = element.enclosingElement;
+ var enclosingElement = element.enclosingElement;
if (enclosingElement is CompilationUnitElement) {
LibraryElement library = enclosingElement.library;
if (library.isDartCore) {
- DartObjectImpl leftArgument = arguments[0].accept(this);
- DartObjectImpl rightArgument = arguments[1].accept(this);
+ var leftArgument = arguments[0].accept(this);
+ var rightArgument = arguments[1].accept(this);
return _dartObjectComputer.isIdentical(
node, leftArgument, rightArgument);
}
@@ -1228,11 +1196,11 @@
}
@override
- DartObjectImpl visitNamedExpression(NamedExpression node) =>
+ DartObjectImpl? visitNamedExpression(NamedExpression node) =>
node.expression.accept(this);
@override
- DartObjectImpl visitNode(AstNode node) {
+ DartObjectImpl? visitNode(AstNode node) {
// TODO(brianwilkerson) Figure out which error to report.
_error(node, null);
return null;
@@ -1244,25 +1212,26 @@
}
@override
- DartObjectImpl visitParenthesizedExpression(ParenthesizedExpression node) =>
+ DartObjectImpl? visitParenthesizedExpression(ParenthesizedExpression node) =>
node.expression.accept(this);
@override
- DartObjectImpl visitPrefixedIdentifier(PrefixedIdentifier node) {
+ DartObjectImpl? visitPrefixedIdentifier(PrefixedIdentifier node) {
SimpleIdentifier prefixNode = node.prefix;
- Element prefixElement = prefixNode.staticElement;
+ var prefixElement = prefixNode.staticElement;
// String.length
if (prefixElement is! PrefixElement &&
prefixElement is! ClassElement &&
prefixElement is! ExtensionElement) {
- DartObjectImpl prefixResult = prefixNode.accept(this);
- if (_isStringLength(prefixResult, node.identifier)) {
+ var prefixResult = prefixNode.accept(this);
+ if (prefixResult != null &&
+ _isStringLength(prefixResult, node.identifier)) {
return prefixResult.stringLength(typeSystem);
}
}
// importPrefix.CONST
if (prefixElement is! PrefixElement && prefixElement is! ExtensionElement) {
- DartObjectImpl prefixResult = prefixNode.accept(this);
+ var prefixResult = prefixNode.accept(this);
if (prefixResult == null) {
// The error has already been reported.
return null;
@@ -1273,8 +1242,8 @@
}
@override
- DartObjectImpl visitPrefixExpression(PrefixExpression node) {
- DartObjectImpl operand = node.operand.accept(this);
+ DartObjectImpl? visitPrefixExpression(PrefixExpression node) {
+ var operand = node.operand.accept(this);
if (operand != null && operand.isNull) {
_error(node, CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION);
return null;
@@ -1293,10 +1262,12 @@
}
@override
- DartObjectImpl visitPropertyAccess(PropertyAccess node) {
- if (node.target != null) {
- DartObjectImpl prefixResult = node.target.accept(this);
- if (_isStringLength(prefixResult, node.propertyName)) {
+ DartObjectImpl? visitPropertyAccess(PropertyAccess node) {
+ var target = node.target;
+ if (target != null) {
+ var prefixResult = target.accept(this);
+ if (prefixResult != null &&
+ _isStringLength(prefixResult, node.propertyName)) {
return prefixResult.stringLength(typeSystem);
}
}
@@ -1304,7 +1275,7 @@
}
@override
- DartObjectImpl visitSetOrMapLiteral(SetOrMapLiteral node) {
+ DartObjectImpl? visitSetOrMapLiteral(SetOrMapLiteral node) {
// Note: due to dartbug.com/33441, it's possible that a set/map literal
// resynthesized from a summary will have neither its `isSet` or `isMap`
// boolean set to `true`. We work around the problem by assuming such
@@ -1328,7 +1299,7 @@
}
DartType keyType = _typeProvider.dynamicType;
DartType valueType = _typeProvider.dynamicType;
- DartType nodeType = node.staticType;
+ var nodeType = node.staticType;
if (nodeType is InterfaceType) {
var typeArguments = nodeType.typeArguments;
if (typeArguments.length >= 2) {
@@ -1352,7 +1323,7 @@
if (errorOccurred) {
return null;
}
- DartType nodeType = node.staticType;
+ var nodeType = node.staticType;
DartType elementType =
nodeType is InterfaceType && nodeType.typeArguments.isNotEmpty
? nodeType.typeArguments[0]
@@ -1363,10 +1334,10 @@
}
@override
- DartObjectImpl visitSimpleIdentifier(SimpleIdentifier node) {
+ DartObjectImpl? visitSimpleIdentifier(SimpleIdentifier node) {
if (_lexicalEnvironment != null &&
- _lexicalEnvironment.containsKey(node.name)) {
- return _lexicalEnvironment[node.name];
+ _lexicalEnvironment!.containsKey(node.name)) {
+ return _lexicalEnvironment![node.name];
}
return _getConstantValue(node, node.staticElement);
}
@@ -1381,8 +1352,8 @@
}
@override
- DartObjectImpl visitStringInterpolation(StringInterpolation node) {
- DartObjectImpl result;
+ DartObjectImpl? visitStringInterpolation(StringInterpolation node) {
+ DartObjectImpl? result;
bool first = true;
for (InterpolationElement element in node.elements) {
if (first) {
@@ -1414,14 +1385,19 @@
}
@override
- DartObjectImpl visitTypeName(TypeName node) {
+ DartObjectImpl? visitTypeName(TypeName node) {
var type = node.type;
+
+ if (type == null) {
+ return null;
+ }
+
if (!_isNonNullableByDefault && hasTypeParameterReference(type)) {
return super.visitTypeName(node);
}
if (_substitution != null) {
- type = _substitution.substituteType(type);
+ type = _substitution!.substituteType(type);
}
return DartObjectImpl(
@@ -1438,25 +1414,25 @@
if (element is ForElement) {
_error(element, null);
} else if (element is IfElement) {
- bool conditionValue = _evaluateCondition(element.condition);
+ var conditionValue = _evaluateCondition(element.condition);
if (conditionValue == null) {
return true;
} else if (conditionValue) {
return _addElementsToList(list, element.thenElement);
} else if (element.elseElement != null) {
- return _addElementsToList(list, element.elseElement);
+ return _addElementsToList(list, element.elseElement!);
}
return false;
} else if (element is Expression) {
- DartObjectImpl value = element.accept(this);
+ var value = element.accept(this);
if (value == null) {
return true;
}
list.add(value);
return false;
} else if (element is SpreadElement) {
- DartObjectImpl elementResult = element.expression.accept(this);
- List<DartObject> value = elementResult?.toListValue();
+ var elementResult = element.expression.accept(this);
+ var value = elementResult?.toListValue();
if (value == null) {
return true;
}
@@ -1475,26 +1451,26 @@
if (element is ForElement) {
_error(element, null);
} else if (element is IfElement) {
- bool conditionValue = _evaluateCondition(element.condition);
+ var conditionValue = _evaluateCondition(element.condition);
if (conditionValue == null) {
return true;
} else if (conditionValue) {
return _addElementsToMap(map, element.thenElement);
} else if (element.elseElement != null) {
- return _addElementsToMap(map, element.elseElement);
+ return _addElementsToMap(map, element.elseElement!);
}
return false;
} else if (element is MapLiteralEntry) {
- DartObjectImpl keyResult = element.key.accept(this);
- DartObjectImpl valueResult = element.value.accept(this);
+ var keyResult = element.key.accept(this);
+ var valueResult = element.value.accept(this);
if (keyResult == null || valueResult == null) {
return true;
}
map[keyResult] = valueResult;
return false;
} else if (element is SpreadElement) {
- DartObjectImpl elementResult = element.expression.accept(this);
- Map<DartObjectImpl, DartObjectImpl> value = elementResult?.toMapValue();
+ var elementResult = element.expression.accept(this);
+ var value = elementResult?.toMapValue();
if (value == null) {
return true;
}
@@ -1512,25 +1488,25 @@
if (element is ForElement) {
_error(element, null);
} else if (element is IfElement) {
- bool conditionValue = _evaluateCondition(element.condition);
+ var conditionValue = _evaluateCondition(element.condition);
if (conditionValue == null) {
return true;
} else if (conditionValue) {
return _addElementsToSet(set, element.thenElement);
} else if (element.elseElement != null) {
- return _addElementsToSet(set, element.elseElement);
+ return _addElementsToSet(set, element.elseElement!);
}
return false;
} else if (element is Expression) {
- DartObjectImpl value = element.accept(this);
+ var value = element.accept(this);
if (value == null) {
return true;
}
set.add(value);
return false;
} else if (element is SpreadElement) {
- DartObjectImpl elementResult = element.expression.accept(this);
- Set<DartObject> value = elementResult?.toSetValue();
+ var elementResult = element.expression.accept(this);
+ var value = elementResult?.toSetValue();
if (value == null) {
return true;
}
@@ -1543,9 +1519,9 @@
/// Create an error associated with the given [node]. The error will have the
/// given error [code].
- void _error(AstNode node, ErrorCode code) {
+ void _error(AstNode node, ErrorCode? code) {
if (code == null) {
- var parent = node?.parent;
+ var parent = node.parent;
var parent2 = parent?.parent;
if (parent is ArgumentList &&
parent2 is InstanceCreationExpression &&
@@ -1555,19 +1531,18 @@
code = CompileTimeErrorCode.INVALID_CONSTANT;
}
}
- _errorReporter.reportErrorForNode(
- code ?? CompileTimeErrorCode.INVALID_CONSTANT, node);
+ _errorReporter.reportErrorForNode(code, node);
}
/// Evaluate the given [condition] with the assumption that it must be a
/// `bool`.
- bool _evaluateCondition(Expression condition) {
- DartObjectImpl conditionResult = condition.accept(this);
- bool conditionValue = conditionResult?.toBoolValue();
+ bool? _evaluateCondition(Expression condition) {
+ var conditionResult = condition.accept(this);
+ var conditionValue = conditionResult?.toBoolValue();
if (conditionValue == null) {
if (conditionResult?.type != _typeProvider.boolType) {
// TODO(brianwilkerson) Figure out why the static type is sometimes null.
- DartType staticType = condition.staticType;
+ var staticType = condition.staticType;
if (staticType == null ||
typeSystem.isAssignableTo2(staticType, _typeProvider.boolType)) {
// If the static type is not assignable, then we will have already
@@ -1584,9 +1559,9 @@
/// Return the constant value of the static constant represented by the given
/// [element]. The [node] is the node to be used if an error needs to be
/// reported.
- DartObjectImpl _getConstantValue(Expression node, Element element) {
+ DartObjectImpl? _getConstantValue(Expression node, Element? element) {
element = element?.declaration;
- Element variableElement =
+ var variableElement =
element is PropertyAccessorElement ? element.variable : element;
if (node is SimpleIdentifier &&
@@ -1601,7 +1576,7 @@
// and errors for other constant expressions. In either case we have
// already computed values of all dependencies first (or detect a cycle),
// so the value has already been computed and we can just return it.
- EvaluationResultImpl value = variableElement.evaluationResult;
+ var value = variableElement.evaluationResult;
if (variableElement.isConst && value != null) {
return value.value;
}
@@ -1664,7 +1639,7 @@
/// [identifier] is "length".
bool _isStringLength(
DartObjectImpl targetResult, SimpleIdentifier identifier) {
- if (targetResult?.type?.element != _typeProvider.stringElement) {
+ if (targetResult.type.element != _typeProvider.stringElement) {
return false;
}
return identifier.name == 'length' &&
@@ -1689,7 +1664,7 @@
/// Return the value of the given [expression], or a representation of 'null'
/// if the expression cannot be evaluated.
DartObjectImpl _valueOf(Expression expression) {
- DartObjectImpl expressionValue = expression.accept(this);
+ var expressionValue = expression.accept(this);
if (expressionValue != null) {
return expressionValue;
}
@@ -1707,8 +1682,8 @@
DartObjectComputer(this._typeSystem, this._errorReporter);
- DartObjectImpl add(BinaryExpression node, DartObjectImpl leftOperand,
- DartObjectImpl rightOperand) {
+ DartObjectImpl? add(BinaryExpression node, DartObjectImpl? leftOperand,
+ DartObjectImpl? rightOperand) {
if (leftOperand != null && rightOperand != null) {
try {
return leftOperand.add(_typeSystem, rightOperand);
@@ -1723,8 +1698,8 @@
/// Return the result of applying boolean conversion to the
/// [evaluationResult]. The [node] is the node against which errors should be
/// reported.
- DartObjectImpl applyBooleanConversion(
- AstNode node, DartObjectImpl evaluationResult) {
+ DartObjectImpl? applyBooleanConversion(
+ AstNode node, DartObjectImpl? evaluationResult) {
if (evaluationResult != null) {
try {
return evaluationResult.convertToBool(_typeSystem);
@@ -1735,7 +1710,7 @@
return null;
}
- DartObjectImpl bitNot(Expression node, DartObjectImpl evaluationResult) {
+ DartObjectImpl? bitNot(Expression node, DartObjectImpl? evaluationResult) {
if (evaluationResult != null) {
try {
return evaluationResult.bitNot(_typeSystem);
@@ -1746,8 +1721,8 @@
return null;
}
- DartObjectImpl castToType(
- AsExpression node, DartObjectImpl expression, DartObjectImpl type) {
+ DartObjectImpl? castToType(
+ AsExpression node, DartObjectImpl? expression, DartObjectImpl? type) {
if (expression != null && type != null) {
try {
return expression.castToType(_typeSystem, type);
@@ -1758,8 +1733,8 @@
return null;
}
- DartObjectImpl concatenate(Expression node, DartObjectImpl leftOperand,
- DartObjectImpl rightOperand) {
+ DartObjectImpl? concatenate(Expression node, DartObjectImpl? leftOperand,
+ DartObjectImpl? rightOperand) {
if (leftOperand != null && rightOperand != null) {
try {
return leftOperand.concatenate(_typeSystem, rightOperand);
@@ -1770,8 +1745,8 @@
return null;
}
- DartObjectImpl divide(BinaryExpression node, DartObjectImpl leftOperand,
- DartObjectImpl rightOperand) {
+ DartObjectImpl? divide(BinaryExpression node, DartObjectImpl? leftOperand,
+ DartObjectImpl? rightOperand) {
if (leftOperand != null && rightOperand != null) {
try {
return leftOperand.divide(_typeSystem, rightOperand);
@@ -1782,8 +1757,8 @@
return null;
}
- DartObjectImpl eagerAnd(BinaryExpression node, DartObjectImpl leftOperand,
- DartObjectImpl rightOperand) {
+ DartObjectImpl? eagerAnd(BinaryExpression node, DartObjectImpl? leftOperand,
+ DartObjectImpl? rightOperand) {
if (leftOperand != null && rightOperand != null) {
try {
return leftOperand.eagerAnd(_typeSystem, rightOperand);
@@ -1794,8 +1769,8 @@
return null;
}
- DartObjectImpl eagerOr(BinaryExpression node, DartObjectImpl leftOperand,
- DartObjectImpl rightOperand) {
+ DartObjectImpl? eagerOr(BinaryExpression node, DartObjectImpl? leftOperand,
+ DartObjectImpl? rightOperand) {
if (leftOperand != null && rightOperand != null) {
try {
return leftOperand.eagerOr(_typeSystem, rightOperand);
@@ -1806,8 +1781,8 @@
return null;
}
- DartObjectImpl eagerQuestionQuestion(Expression node,
- DartObjectImpl leftOperand, DartObjectImpl rightOperand) {
+ DartObjectImpl? eagerQuestionQuestion(Expression node,
+ DartObjectImpl? leftOperand, DartObjectImpl? rightOperand) {
if (leftOperand != null && rightOperand != null) {
if (leftOperand.isNull) {
return rightOperand;
@@ -1817,8 +1792,8 @@
return null;
}
- DartObjectImpl eagerXor(BinaryExpression node, DartObjectImpl leftOperand,
- DartObjectImpl rightOperand) {
+ DartObjectImpl? eagerXor(BinaryExpression node, DartObjectImpl? leftOperand,
+ DartObjectImpl? rightOperand) {
if (leftOperand != null && rightOperand != null) {
try {
return leftOperand.eagerXor(_typeSystem, rightOperand);
@@ -1829,8 +1804,8 @@
return null;
}
- DartObjectImpl equalEqual(Expression node, DartObjectImpl leftOperand,
- DartObjectImpl rightOperand) {
+ DartObjectImpl? equalEqual(Expression node, DartObjectImpl? leftOperand,
+ DartObjectImpl? rightOperand) {
if (leftOperand != null && rightOperand != null) {
try {
return leftOperand.equalEqual(_typeSystem, rightOperand);
@@ -1841,8 +1816,8 @@
return null;
}
- DartObjectImpl greaterThan(BinaryExpression node, DartObjectImpl leftOperand,
- DartObjectImpl rightOperand) {
+ DartObjectImpl? greaterThan(BinaryExpression node,
+ DartObjectImpl? leftOperand, DartObjectImpl? rightOperand) {
if (leftOperand != null && rightOperand != null) {
try {
return leftOperand.greaterThan(_typeSystem, rightOperand);
@@ -1853,8 +1828,8 @@
return null;
}
- DartObjectImpl greaterThanOrEqual(BinaryExpression node,
- DartObjectImpl leftOperand, DartObjectImpl rightOperand) {
+ DartObjectImpl? greaterThanOrEqual(BinaryExpression node,
+ DartObjectImpl? leftOperand, DartObjectImpl? rightOperand) {
if (leftOperand != null && rightOperand != null) {
try {
return leftOperand.greaterThanOrEqual(_typeSystem, rightOperand);
@@ -1865,8 +1840,8 @@
return null;
}
- DartObjectImpl integerDivide(BinaryExpression node,
- DartObjectImpl leftOperand, DartObjectImpl rightOperand) {
+ DartObjectImpl? integerDivide(BinaryExpression node,
+ DartObjectImpl? leftOperand, DartObjectImpl? rightOperand) {
if (leftOperand != null && rightOperand != null) {
try {
return leftOperand.integerDivide(_typeSystem, rightOperand);
@@ -1877,8 +1852,8 @@
return null;
}
- DartObjectImpl isIdentical(Expression node, DartObjectImpl leftOperand,
- DartObjectImpl rightOperand) {
+ DartObjectImpl? isIdentical(Expression node, DartObjectImpl? leftOperand,
+ DartObjectImpl? rightOperand) {
if (leftOperand != null && rightOperand != null) {
try {
return leftOperand.isIdentical2(_typeSystem, rightOperand);
@@ -1889,8 +1864,8 @@
return null;
}
- DartObjectImpl lazyAnd(BinaryExpression node, DartObjectImpl leftOperand,
- DartObjectImpl Function() rightOperandComputer) {
+ DartObjectImpl? lazyAnd(BinaryExpression node, DartObjectImpl? leftOperand,
+ DartObjectImpl? Function() rightOperandComputer) {
if (leftOperand != null) {
try {
return leftOperand.lazyAnd(_typeSystem, rightOperandComputer);
@@ -1901,8 +1876,8 @@
return null;
}
- DartObjectImpl lazyEqualEqual(Expression node, DartObjectImpl leftOperand,
- DartObjectImpl rightOperand) {
+ DartObjectImpl? lazyEqualEqual(Expression node, DartObjectImpl? leftOperand,
+ DartObjectImpl? rightOperand) {
if (leftOperand != null && rightOperand != null) {
try {
return leftOperand.lazyEqualEqual(_typeSystem, rightOperand);
@@ -1913,8 +1888,8 @@
return null;
}
- DartObjectImpl lazyOr(BinaryExpression node, DartObjectImpl leftOperand,
- DartObjectImpl Function() rightOperandComputer) {
+ DartObjectImpl? lazyOr(BinaryExpression node, DartObjectImpl? leftOperand,
+ DartObjectImpl? Function() rightOperandComputer) {
if (leftOperand != null) {
try {
return leftOperand.lazyOr(_typeSystem, rightOperandComputer);
@@ -1925,10 +1900,10 @@
return null;
}
- DartObjectImpl lazyQuestionQuestion(
+ DartObjectImpl? lazyQuestionQuestion(
Expression node,
- DartObjectImpl leftOperand,
- DartObjectImpl Function() rightOperandComputer) {
+ DartObjectImpl? leftOperand,
+ DartObjectImpl? Function() rightOperandComputer) {
if (leftOperand != null) {
if (leftOperand.isNull) {
return rightOperandComputer();
@@ -1938,8 +1913,8 @@
return null;
}
- DartObjectImpl lessThan(BinaryExpression node, DartObjectImpl leftOperand,
- DartObjectImpl rightOperand) {
+ DartObjectImpl? lessThan(BinaryExpression node, DartObjectImpl? leftOperand,
+ DartObjectImpl? rightOperand) {
if (leftOperand != null && rightOperand != null) {
try {
return leftOperand.lessThan(_typeSystem, rightOperand);
@@ -1950,8 +1925,8 @@
return null;
}
- DartObjectImpl lessThanOrEqual(BinaryExpression node,
- DartObjectImpl leftOperand, DartObjectImpl rightOperand) {
+ DartObjectImpl? lessThanOrEqual(BinaryExpression node,
+ DartObjectImpl? leftOperand, DartObjectImpl? rightOperand) {
if (leftOperand != null && rightOperand != null) {
try {
return leftOperand.lessThanOrEqual(_typeSystem, rightOperand);
@@ -1962,7 +1937,8 @@
return null;
}
- DartObjectImpl logicalNot(Expression node, DartObjectImpl evaluationResult) {
+ DartObjectImpl? logicalNot(
+ Expression node, DartObjectImpl? evaluationResult) {
if (evaluationResult != null) {
try {
return evaluationResult.logicalNot(_typeSystem);
@@ -1973,8 +1949,8 @@
return null;
}
- DartObjectImpl logicalShiftRight(BinaryExpression node,
- DartObjectImpl leftOperand, DartObjectImpl rightOperand) {
+ DartObjectImpl? logicalShiftRight(BinaryExpression node,
+ DartObjectImpl? leftOperand, DartObjectImpl? rightOperand) {
if (leftOperand != null && rightOperand != null) {
try {
return leftOperand.logicalShiftRight(_typeSystem, rightOperand);
@@ -1985,8 +1961,8 @@
return null;
}
- DartObjectImpl minus(BinaryExpression node, DartObjectImpl leftOperand,
- DartObjectImpl rightOperand) {
+ DartObjectImpl? minus(BinaryExpression node, DartObjectImpl? leftOperand,
+ DartObjectImpl? rightOperand) {
if (leftOperand != null && rightOperand != null) {
try {
return leftOperand.minus(_typeSystem, rightOperand);
@@ -1997,7 +1973,7 @@
return null;
}
- DartObjectImpl negated(Expression node, DartObjectImpl evaluationResult) {
+ DartObjectImpl? negated(Expression node, DartObjectImpl? evaluationResult) {
if (evaluationResult != null) {
try {
return evaluationResult.negated(_typeSystem);
@@ -2008,8 +1984,8 @@
return null;
}
- DartObjectImpl notEqual(BinaryExpression node, DartObjectImpl leftOperand,
- DartObjectImpl rightOperand) {
+ DartObjectImpl? notEqual(BinaryExpression node, DartObjectImpl? leftOperand,
+ DartObjectImpl? rightOperand) {
if (leftOperand != null && rightOperand != null) {
try {
return leftOperand.notEqual(_typeSystem, rightOperand);
@@ -2020,8 +1996,8 @@
return null;
}
- DartObjectImpl performToString(
- AstNode node, DartObjectImpl evaluationResult) {
+ DartObjectImpl? performToString(
+ AstNode node, DartObjectImpl? evaluationResult) {
if (evaluationResult != null) {
try {
return evaluationResult.performToString(_typeSystem);
@@ -2032,8 +2008,8 @@
return null;
}
- DartObjectImpl remainder(BinaryExpression node, DartObjectImpl leftOperand,
- DartObjectImpl rightOperand) {
+ DartObjectImpl? remainder(BinaryExpression node, DartObjectImpl? leftOperand,
+ DartObjectImpl? rightOperand) {
if (leftOperand != null && rightOperand != null) {
try {
return leftOperand.remainder(_typeSystem, rightOperand);
@@ -2044,8 +2020,8 @@
return null;
}
- DartObjectImpl shiftLeft(BinaryExpression node, DartObjectImpl leftOperand,
- DartObjectImpl rightOperand) {
+ DartObjectImpl? shiftLeft(BinaryExpression node, DartObjectImpl? leftOperand,
+ DartObjectImpl? rightOperand) {
if (leftOperand != null && rightOperand != null) {
try {
return leftOperand.shiftLeft(_typeSystem, rightOperand);
@@ -2056,8 +2032,8 @@
return null;
}
- DartObjectImpl shiftRight(BinaryExpression node, DartObjectImpl leftOperand,
- DartObjectImpl rightOperand) {
+ DartObjectImpl? shiftRight(BinaryExpression node, DartObjectImpl? leftOperand,
+ DartObjectImpl? rightOperand) {
if (leftOperand != null && rightOperand != null) {
try {
return leftOperand.shiftRight(_typeSystem, rightOperand);
@@ -2071,12 +2047,12 @@
/// Return the result of invoking the 'length' getter on the
/// [evaluationResult]. The [node] is the node against which errors should be
/// reported.
- EvaluationResultImpl stringLength(
+ EvaluationResultImpl? stringLength(
Expression node, EvaluationResultImpl evaluationResult) {
- if (evaluationResult.value != null) {
+ var value = evaluationResult.value;
+ if (value != null) {
try {
- return EvaluationResultImpl(
- evaluationResult.value.stringLength(_typeSystem));
+ return EvaluationResultImpl(value.stringLength(_typeSystem));
} on EvaluationException catch (exception) {
_errorReporter.reportErrorForNode(exception.errorCode, node);
}
@@ -2084,8 +2060,8 @@
return EvaluationResultImpl(null);
}
- DartObjectImpl times(BinaryExpression node, DartObjectImpl leftOperand,
- DartObjectImpl rightOperand) {
+ DartObjectImpl? times(BinaryExpression node, DartObjectImpl? leftOperand,
+ DartObjectImpl? rightOperand) {
if (leftOperand != null && rightOperand != null) {
try {
return leftOperand.times(_typeSystem, rightOperand);
@@ -2096,8 +2072,8 @@
return null;
}
- DartObjectImpl typeTest(
- IsExpression node, DartObjectImpl expression, DartObjectImpl type) {
+ DartObjectImpl? typeTest(
+ IsExpression node, DartObjectImpl? expression, DartObjectImpl? type) {
if (expression != null && type != null) {
try {
DartObjectImpl result = expression.hasType(_typeSystem, type);
@@ -2117,11 +2093,11 @@
class EvaluationResult {
// TODO(brianwilkerson) Merge with EvaluationResultImpl
/// The value of the expression.
- final DartObject value;
+ final DartObject? value;
/// The errors that should be reported for the expression(s) that were
/// evaluated.
- final List<AnalysisError> _errors;
+ final List<AnalysisError>? _errors;
/// Initialize a newly created result object with the given [value] and set of
/// [_errors]. Clients should use one of the factory methods: [forErrors] and
@@ -2157,13 +2133,13 @@
/// The errors encountered while trying to evaluate the compile time constant.
/// These errors may or may not have prevented the expression from being a
/// valid compile time constant.
- List<AnalysisError> _errors;
+ late final List<AnalysisError> _errors;
/// The value of the expression, or `null` if the value couldn't be computed
/// due to errors.
- final DartObjectImpl value;
+ final DartObjectImpl? value;
- EvaluationResultImpl(this.value, [List<AnalysisError> errors]) {
+ EvaluationResultImpl(this.value, [List<AnalysisError>? errors]) {
_errors = errors ?? <AnalysisError>[];
}
diff --git a/pkg/analyzer/lib/src/dart/constant/from_environment_evaluator.dart b/pkg/analyzer/lib/src/dart/constant/from_environment_evaluator.dart
index c1260a8..022dc2b 100644
--- a/pkg/analyzer/lib/src/dart/constant/from_environment_evaluator.dart
+++ b/pkg/analyzer/lib/src/dart/constant/from_environment_evaluator.dart
@@ -22,12 +22,12 @@
/// parsed as a boolean, return the default value from [namedValues]. If no
/// default value, return the default value of the default value from
/// the [constructor], possibly a [DartObject] representing 'null'.
- DartObject getBool2(
- String name,
+ DartObjectImpl getBool2(
+ String? name,
Map<String, DartObjectImpl> namedValues,
ConstructorElement constructor,
) {
- var str = _declaredVariables.get(name);
+ var str = name != null ? _declaredVariables.get(name) : null;
if (str == 'true') {
return DartObjectImpl(
_typeSystem,
@@ -44,7 +44,7 @@
}
if (namedValues.containsKey(_defaultValue)) {
- return namedValues[_defaultValue];
+ return namedValues[_defaultValue]!;
}
return _defaultValueDefaultValue(constructor);
@@ -55,12 +55,12 @@
/// parsed as an integer, return the default value from [namedValues]. If no
/// default value, return the default value of the default value from
/// the [constructor], possibly a [DartObject] representing 'null'.
- DartObject getInt2(
- String name,
+ DartObjectImpl getInt2(
+ String? name,
Map<String, DartObjectImpl> namedValues,
ConstructorElement constructor,
) {
- var str = _declaredVariables.get(name);
+ var str = name != null ? _declaredVariables.get(name) : null;
if (str != null) {
try {
var value = int.parse(str);
@@ -75,7 +75,7 @@
}
if (namedValues.containsKey(_defaultValue)) {
- return namedValues[_defaultValue];
+ return namedValues[_defaultValue]!;
}
var defaultDefault = _defaultValueDefaultValue(constructor);
@@ -97,12 +97,12 @@
/// parsed as a boolean, return the default value from [namedValues]. If no
/// default value, return the default value of the default value from
/// the [constructor], possibly a [DartObject] representing 'null'.
- DartObject getString2(
- String name,
+ DartObjectImpl getString2(
+ String? name,
Map<String, DartObjectImpl> namedValues,
ConstructorElement constructor,
) {
- String str = _declaredVariables.get(name);
+ var str = name != null ? _declaredVariables.get(name) : null;
if (str != null) {
return DartObjectImpl(
_typeSystem,
@@ -112,7 +112,7 @@
}
if (namedValues.containsKey(_defaultValue)) {
- return namedValues[_defaultValue];
+ return namedValues[_defaultValue]!;
}
var defaultDefault = _defaultValueDefaultValue(constructor);
@@ -129,8 +129,8 @@
return defaultDefault;
}
- DartObject hasEnvironment(String name) {
- var value = _declaredVariables.get(name) != null;
+ DartObjectImpl hasEnvironment(String? name) {
+ var value = name != null && _declaredVariables.get(name) != null;
return DartObjectImpl(
_typeSystem,
_typeSystem.typeProvider.boolType,
@@ -138,9 +138,10 @@
);
}
- static DartObject _defaultValueDefaultValue(ConstructorElement constructor) {
+ static DartObjectImpl _defaultValueDefaultValue(
+ ConstructorElement constructor) {
return constructor.parameters
.singleWhere((parameter) => parameter.name == _defaultValue)
- .computeConstantValue();
+ .computeConstantValue() as DartObjectImpl;
}
}
diff --git a/pkg/analyzer/lib/src/dart/constant/potentially_constant.dart b/pkg/analyzer/lib/src/dart/constant/potentially_constant.dart
index 8149a3b..d1e6db7 100644
--- a/pkg/analyzer/lib/src/dart/constant/potentially_constant.dart
+++ b/pkg/analyzer/lib/src/dart/constant/potentially_constant.dart
@@ -7,7 +7,6 @@
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/src/dart/element/type.dart';
-import 'package:meta/meta.dart';
/// Some [ConstructorElement]s can be temporary marked as "const" to check
/// if doing this is valid.
@@ -18,7 +17,7 @@
/// Return the list of nodes that are not potentially constant.
List<AstNode> getNotPotentiallyConstants(
AstNode node, {
- @required bool isNonNullableByDefault,
+ required bool isNonNullableByDefault,
}) {
var collector = _Collector(
isNonNullableByDefault: isNonNullableByDefault,
@@ -54,7 +53,7 @@
final bool isNonNullableByDefault;
final List<AstNode> nodes = [];
- _Collector({@required this.isNonNullableByDefault});
+ _Collector({required this.isNonNullableByDefault});
void collect(AstNode node) {
if (node is BooleanLiteral ||
@@ -182,7 +181,7 @@
collect(node.condition);
collect(node.thenElement);
if (node.elseElement != null) {
- collect(node.elseElement);
+ collect(node.elseElement!);
}
return;
}
@@ -248,9 +247,9 @@
}
void _methodInvocation(MethodInvocation node) {
- var arguments = node.argumentList?.arguments;
- if (arguments?.length == 2 && node.methodName.name == 'identical') {
- var library = node.methodName?.staticElement?.library;
+ var arguments = node.argumentList.arguments;
+ if (arguments.length == 2 && node.methodName.name == 'identical') {
+ var library = node.methodName.staticElement?.library;
if (library?.isDartCore == true) {
collect(arguments[0]);
collect(arguments[1]);
@@ -261,12 +260,14 @@
}
void _propertyAccess(PropertyAccess node) {
+ // CascadeExpression is not a constant, so the target is never null.
+ var target = node.target!;
+
if (node.propertyName.name == 'length') {
- collect(node.target);
+ collect(target);
return;
}
- var target = node.target;
if (target is PrefixedIdentifier) {
if (target.isDeferred) {
nodes.add(node);
@@ -294,7 +295,7 @@
if (node is ListLiteral) {
var typeArguments = node.typeArguments?.arguments;
- if (typeArguments?.length == 1) {
+ if (typeArguments != null && typeArguments.length == 1) {
var elementType = typeArguments[0];
if (!isConstantTypeExpression(elementType)) {
nodes.add(elementType);
@@ -309,14 +310,14 @@
if (node is SetOrMapLiteral) {
var typeArguments = node.typeArguments?.arguments;
- if (typeArguments?.length == 1) {
+ if (typeArguments != null && typeArguments.length == 1) {
var elementType = typeArguments[0];
if (!isConstantTypeExpression(elementType)) {
nodes.add(elementType);
}
}
- if (typeArguments?.length == 2) {
+ if (typeArguments != null && typeArguments.length == 2) {
var keyType = typeArguments[0];
var valueType = typeArguments[1];
if (!isConstantTypeExpression(keyType)) {
@@ -342,10 +343,10 @@
class _ConstantTypeChecker {
final bool potentially;
- _ConstantTypeChecker({@required this.potentially});
+ _ConstantTypeChecker({required this.potentially});
/// Return `true` if the [node] is a constant type expression.
- bool check(TypeAnnotation node) {
+ bool check(TypeAnnotation? node) {
if (potentially) {
if (node is TypeName) {
var element = node.name.staticElement;
@@ -394,13 +395,11 @@
}
}
- var formalParameters = node.parameters?.parameters;
- if (formalParameters != null) {
- for (var parameter in formalParameters) {
- if (parameter is SimpleFormalParameter) {
- if (!check(parameter.type)) {
- return false;
- }
+ var formalParameters = node.parameters.parameters;
+ for (var parameter in formalParameters) {
+ if (parameter is SimpleFormalParameter) {
+ if (!check(parameter.type)) {
+ return false;
}
}
}
diff --git a/pkg/analyzer/lib/src/dart/constant/utilities.dart b/pkg/analyzer/lib/src/dart/constant/utilities.dart
index 077ccf5..4325063 100644
--- a/pkg/analyzer/lib/src/dart/constant/utilities.dart
+++ b/pkg/analyzer/lib/src/dart/constant/utilities.dart
@@ -38,7 +38,8 @@
@override
FunctionExpression visitFunctionExpression(FunctionExpression node) {
- FunctionExpressionImpl expression = super.visitFunctionExpression(node);
+ var expression =
+ super.visitFunctionExpression(node) as FunctionExpressionImpl;
expression.declaredElement = node.declaredElement;
return expression;
}
@@ -77,14 +78,14 @@
@override
PrefixedIdentifier visitPrefixedIdentifier(PrefixedIdentifier node) {
- PrefixedIdentifierImpl copy = super.visitPrefixedIdentifier(node);
+ var copy = super.visitPrefixedIdentifier(node) as PrefixedIdentifierImpl;
copy.staticType = node.staticType;
return copy;
}
@override
PropertyAccess visitPropertyAccess(PropertyAccess node) {
- PropertyAccessImpl copy = super.visitPropertyAccess(node);
+ var copy = super.visitPropertyAccess(node) as PropertyAccessImpl;
copy.staticType = node.staticType;
return copy;
}
@@ -110,7 +111,7 @@
@override
SimpleIdentifier visitSimpleIdentifier(SimpleIdentifier node) {
- SimpleIdentifierImpl copy = super.visitSimpleIdentifier(node);
+ var copy = super.visitSimpleIdentifier(node) as SimpleIdentifierImpl;
copy.staticElement = node.staticElement;
copy.staticType = node.staticType;
copy.tearOffTypeArgumentTypes = node.tearOffTypeArgumentTypes;
@@ -190,10 +191,8 @@
/// Add dependencies of a [CollectionElement] or [Expression] (which is a type
/// of [CollectionElement]).
void _find(CollectionElement node) {
- if (node != null) {
- ReferenceFinder referenceFinder = ReferenceFinder(dependencies.add);
- node.accept(referenceFinder);
- }
+ ReferenceFinder referenceFinder = ReferenceFinder(dependencies.add);
+ node.accept(referenceFinder);
}
}
@@ -213,7 +212,7 @@
@override
void visitAnnotation(Annotation node) {
super.visitAnnotation(node);
- ElementAnnotation elementAnnotation = node.elementAnnotation;
+ var elementAnnotation = node.elementAnnotation;
if (elementAnnotation == null) {
// Analyzer ignores annotations on "part of" directives and on enum
// constant declarations.
@@ -228,7 +227,7 @@
@override
void visitClassDeclaration(ClassDeclaration node) {
bool prevTreatFinalInstanceVarAsConst = treatFinalInstanceVarAsConst;
- if (node.declaredElement.constructors
+ if (node.declaredElement!.constructors
.any((ConstructorElement e) => e.isConst)) {
// Instance vars marked "final" need to be included in the dependency
// graph, since constant constructors implicitly use the values in their
@@ -246,7 +245,7 @@
void visitConstructorDeclaration(ConstructorDeclaration node) {
super.visitConstructorDeclaration(node);
if (node.constKeyword != null) {
- ConstructorElement element = node.declaredElement;
+ var element = node.declaredElement;
if (element != null) {
constantsToCompute.add(element);
constantsToCompute.addAll(element.parameters);
@@ -257,26 +256,24 @@
@override
void visitDefaultFormalParameter(DefaultFormalParameter node) {
super.visitDefaultFormalParameter(node);
- Expression defaultValue = node.defaultValue;
+ var defaultValue = node.defaultValue;
if (defaultValue != null && node.declaredElement != null) {
- constantsToCompute.add(node.declaredElement);
+ constantsToCompute.add(node.declaredElement!);
}
}
@override
void visitVariableDeclaration(VariableDeclaration node) {
super.visitVariableDeclaration(node);
- Expression initializer = node.initializer;
- VariableElement element = node.declaredElement;
+ var initializer = node.initializer;
+ var element = node.declaredElement!;
if (initializer != null &&
(node.isConst ||
treatFinalInstanceVarAsConst &&
element is FieldElement &&
node.isFinal &&
!element.isStatic)) {
- if (element != null) {
- constantsToCompute.add(element);
- }
+ constantsToCompute.add(element);
}
}
}
@@ -296,8 +293,7 @@
@override
void visitInstanceCreationExpression(InstanceCreationExpression node) {
if (node.isConst) {
- ConstructorElement constructor =
- node.constructorName.staticElement?.declaration;
+ var constructor = node.constructorName.staticElement?.declaration;
if (constructor != null) {
_callback(constructor);
}
@@ -318,7 +314,7 @@
void visitRedirectingConstructorInvocation(
RedirectingConstructorInvocation node) {
super.visitRedirectingConstructorInvocation(node);
- ConstructorElement target = node.staticElement?.declaration;
+ var target = node.staticElement?.declaration;
if (target != null) {
_callback(target);
}
@@ -326,8 +322,8 @@
@override
void visitSimpleIdentifier(SimpleIdentifier node) {
- Element staticElement = node.staticElement;
- Element element = staticElement is PropertyAccessorElement
+ var staticElement = node.staticElement;
+ var element = staticElement is PropertyAccessorElement
? staticElement.variable
: staticElement;
if (element is VariableElement && element.isConst) {
@@ -338,7 +334,7 @@
@override
void visitSuperConstructorInvocation(SuperConstructorInvocation node) {
super.visitSuperConstructorInvocation(node);
- ConstructorElement constructor = node.staticElement?.declaration;
+ var constructor = node.staticElement?.declaration;
if (constructor != null) {
_callback(constructor);
}
diff --git a/pkg/analyzer/lib/src/dart/constant/value.dart b/pkg/analyzer/lib/src/dart/constant/value.dart
index af14481..19cc0a5 100644
--- a/pkg/analyzer/lib/src/dart/constant/value.dart
+++ b/pkg/analyzer/lib/src/dart/constant/value.dart
@@ -27,13 +27,13 @@
static BoolState UNKNOWN_VALUE = BoolState(null);
/// The value of this instance.
- final bool value;
+ final bool? value;
/// Initialize a newly created state to represent the given [value].
BoolState(this.value);
@override
- int get hashCode => value == null ? 0 : (value ? 2 : 3);
+ int get hashCode => value == null ? 0 : (value! ? 2 : 3);
@override
bool get isBool => true;
@@ -59,7 +59,7 @@
if (value == null) {
return StringState.UNKNOWN_VALUE;
}
- return StringState(value ? "true" : "false");
+ return StringState(value! ? "true" : "false");
}
@override
@@ -74,7 +74,7 @@
return UNKNOWN_VALUE;
}
if (rightOperand is BoolState) {
- bool rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return UNKNOWN_VALUE;
}
@@ -84,23 +84,23 @@
}
@override
- BoolState lazyAnd(InstanceState Function() rightOperandComputer) {
+ BoolState lazyAnd(InstanceState? Function() rightOperandComputer) {
if (value == false) {
return FALSE_STATE;
}
- InstanceState rightOperand = rightOperandComputer();
+ var rightOperand = rightOperandComputer();
assertBool(rightOperand);
- return value == null ? UNKNOWN_VALUE : rightOperand.convertToBool();
+ return value == null ? UNKNOWN_VALUE : rightOperand!.convertToBool();
}
@override
- BoolState lazyOr(InstanceState Function() rightOperandComputer) {
+ BoolState lazyOr(InstanceState? Function() rightOperandComputer) {
if (value == true) {
return TRUE_STATE;
}
- InstanceState rightOperand = rightOperandComputer();
+ var rightOperand = rightOperandComputer();
assertBool(rightOperand);
- return value == null ? UNKNOWN_VALUE : rightOperand.convertToBool();
+ return value == null ? UNKNOWN_VALUE : rightOperand!.convertToBool();
}
@override
@@ -108,11 +108,12 @@
if (value == null) {
return UNKNOWN_VALUE;
}
- return value ? FALSE_STATE : TRUE_STATE;
+ return value! ? FALSE_STATE : TRUE_STATE;
}
@override
- String toString() => value == null ? "-unknown-" : (value ? "true" : "false");
+ String toString() =>
+ value == null ? "-unknown-" : (value! ? "true" : "false");
/// Return the boolean state representing the given boolean [value].
static BoolState from(bool value) =>
@@ -126,7 +127,7 @@
/// Values of specified arguments, actual values for positional, and `null`
/// for named (which are provided as [namedArguments]).
- final List<DartObjectImpl> _argumentValues;
+ final List<DartObjectImpl?> _argumentValues;
/// The named arguments passed to the constructor.
final Map<String, DartObjectImpl> namedArguments;
@@ -136,7 +137,15 @@
/// The positional arguments passed to the constructor.
List<DartObjectImpl> get positionalArguments {
- return _argumentValues.takeWhile((v) => v != null).toList();
+ var result = <DartObjectImpl>[];
+ for (var argument in _argumentValues) {
+ if (argument != null) {
+ result.add(argument);
+ } else {
+ break;
+ }
+ }
+ return result;
}
}
@@ -158,7 +167,7 @@
TypeSystemImpl typeSystem,
ParameterizedType type,
) {
- if (type.element.library.isDartCore) {
+ if (type.element!.library!.isDartCore) {
if (type.isDartCoreBool) {
return DartObjectImpl(typeSystem, type, BoolState.UNKNOWN_VALUE);
} else if (type.isDartCoreDouble) {
@@ -172,7 +181,7 @@
return DartObjectImpl(typeSystem, type, GenericState.UNKNOWN_VALUE);
}
- Map<String, DartObjectImpl> get fields => _state.fields;
+ Map<String, DartObjectImpl>? get fields => _state.fields;
@override
int get hashCode => JenkinsSmiHash.hash2(type.hashCode, _state.hashCode);
@@ -257,6 +266,11 @@
_assertType(castType);
var resultType = (castType._state as TypeState)._type;
+ // If we don't know the type, we cannot prove that the cast will fail.
+ if (resultType == null) {
+ return this;
+ }
+
// We don't know the actual value of a type parameter.
// So, the object type might be a subtype of the result type.
if (hasTypeParameterReference(resultType)) {
@@ -418,7 +432,7 @@
}
@override
- DartObject getField(String name) {
+ DartObject? getField(String name) {
InstanceState state = _state;
if (state is GenericState) {
return state.fields[name];
@@ -428,7 +442,7 @@
/// Gets the constructor that was called to create this value, if this is a
/// const constructor invocation. Otherwise returns null.
- ConstructorInvocation getInvocation() {
+ ConstructorInvocation? getInvocation() {
InstanceState state = _state;
if (state is GenericState) {
return state.invocation;
@@ -468,7 +482,7 @@
/// [testedType].
DartObjectImpl hasType(TypeSystemImpl typeSystem, DartObjectImpl testedType) {
_assertType(testedType);
- DartType typeType = (testedType._state as TypeState)._type;
+ var typeType = (testedType._state as TypeState)._type;
BoolState state;
if (isNull) {
if (typeType == typeSystem.typeProvider.objectType ||
@@ -478,6 +492,8 @@
} else {
state = BoolState.FALSE_STATE;
}
+ } else if (typeType == null) {
+ state = BoolState.TRUE_STATE;
} else {
state = BoolState.from(typeSystem.isSubtypeOf2(type, typeType));
}
@@ -549,7 +565,7 @@
/// Throws an [EvaluationException] if the operator is not appropriate for an
/// object of this kind.
DartObjectImpl lazyAnd(TypeSystemImpl typeSystem,
- DartObjectImpl Function() rightOperandComputer) {
+ DartObjectImpl? Function() rightOperandComputer) {
return DartObjectImpl(
typeSystem,
typeSystem.typeProvider.boolType,
@@ -590,7 +606,7 @@
/// Throws an [EvaluationException] if the operator is not appropriate for an
/// object of this kind.
DartObjectImpl lazyOr(TypeSystemImpl typeSystem,
- DartObjectImpl Function() rightOperandComputer) =>
+ DartObjectImpl? Function() rightOperandComputer) =>
DartObjectImpl(
typeSystem,
typeSystem.typeProvider.boolType,
@@ -810,7 +826,7 @@
}
@override
- bool toBoolValue() {
+ bool? toBoolValue() {
InstanceState state = _state;
if (state is BoolState) {
return state.value;
@@ -819,7 +835,7 @@
}
@override
- double toDoubleValue() {
+ double? toDoubleValue() {
InstanceState state = _state;
if (state is DoubleState) {
return state.value;
@@ -828,13 +844,13 @@
}
@override
- ExecutableElement toFunctionValue() {
+ ExecutableElement? toFunctionValue() {
InstanceState state = _state;
return state is FunctionState ? state._element : null;
}
@override
- int toIntValue() {
+ int? toIntValue() {
InstanceState state = _state;
if (state is IntState) {
return state.value;
@@ -843,7 +859,7 @@
}
@override
- List<DartObject> toListValue() {
+ List<DartObject>? toListValue() {
InstanceState state = _state;
if (state is ListState) {
return state._elements;
@@ -852,7 +868,7 @@
}
@override
- Map<DartObject, DartObject> toMapValue() {
+ Map<DartObjectImpl, DartObjectImpl>? toMapValue() {
InstanceState state = _state;
if (state is MapState) {
return state._entries;
@@ -861,7 +877,7 @@
}
@override
- Set<DartObject> toSetValue() {
+ Set<DartObject>? toSetValue() {
InstanceState state = _state;
if (state is SetState) {
return state._elements;
@@ -875,7 +891,7 @@
}
@override
- String toStringValue() {
+ String? toStringValue() {
InstanceState state = _state;
if (state is StringState) {
return state.value;
@@ -884,7 +900,7 @@
}
@override
- String toSymbolValue() {
+ String? toSymbolValue() {
InstanceState state = _state;
if (state is SymbolState) {
return state.value;
@@ -893,7 +909,7 @@
}
@override
- DartType toTypeValue() {
+ DartType? toTypeValue() {
InstanceState state = _state;
if (state is TypeState) {
return state._type;
@@ -916,7 +932,7 @@
static DoubleState UNKNOWN_VALUE = DoubleState(null);
/// The value of this instance.
- final double value;
+ final double? value;
/// Initialize a newly created state to represent a double with the given
/// [value].
@@ -942,17 +958,17 @@
return UNKNOWN_VALUE;
}
if (rightOperand is IntState) {
- int rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return UNKNOWN_VALUE;
}
- return DoubleState(value + rightValue.toDouble());
+ return DoubleState(value! + rightValue.toDouble());
} else if (rightOperand is DoubleState) {
- double rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return UNKNOWN_VALUE;
}
- return DoubleState(value + rightValue);
+ return DoubleState(value! + rightValue);
}
throw EvaluationException(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION);
}
@@ -972,17 +988,17 @@
return UNKNOWN_VALUE;
}
if (rightOperand is IntState) {
- int rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return UNKNOWN_VALUE;
}
- return DoubleState(value / rightValue.toDouble());
+ return DoubleState(value! / rightValue.toDouble());
} else if (rightOperand is DoubleState) {
- double rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return UNKNOWN_VALUE;
}
- return DoubleState(value / rightValue);
+ return DoubleState(value! / rightValue);
}
throw EvaluationException(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION);
}
@@ -994,17 +1010,17 @@
return BoolState.UNKNOWN_VALUE;
}
if (rightOperand is IntState) {
- int rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return BoolState.UNKNOWN_VALUE;
}
- return BoolState.from(value > rightValue.toDouble());
+ return BoolState.from(value! > rightValue.toDouble());
} else if (rightOperand is DoubleState) {
- double rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return BoolState.UNKNOWN_VALUE;
}
- return BoolState.from(value > rightValue);
+ return BoolState.from(value! > rightValue);
}
throw EvaluationException(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION);
}
@@ -1016,17 +1032,17 @@
return BoolState.UNKNOWN_VALUE;
}
if (rightOperand is IntState) {
- int rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return BoolState.UNKNOWN_VALUE;
}
- return BoolState.from(value >= rightValue.toDouble());
+ return BoolState.from(value! >= rightValue.toDouble());
} else if (rightOperand is DoubleState) {
- double rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return BoolState.UNKNOWN_VALUE;
}
- return BoolState.from(value >= rightValue);
+ return BoolState.from(value! >= rightValue);
}
throw EvaluationException(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION);
}
@@ -1038,20 +1054,20 @@
return IntState.UNKNOWN_VALUE;
}
if (rightOperand is IntState) {
- int rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return IntState.UNKNOWN_VALUE;
}
- double result = value / rightValue.toDouble();
+ var result = value! / rightValue.toDouble();
if (result.isFinite) {
return IntState(result.toInt());
}
} else if (rightOperand is DoubleState) {
- double rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return IntState.UNKNOWN_VALUE;
}
- double result = value / rightValue;
+ double result = value! / rightValue;
if (result.isFinite) {
return IntState(result.toInt());
}
@@ -1065,13 +1081,13 @@
return BoolState.UNKNOWN_VALUE;
}
if (rightOperand is DoubleState) {
- double rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return BoolState.UNKNOWN_VALUE;
}
return BoolState.from(value == rightValue);
} else if (rightOperand is IntState) {
- int rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return BoolState.UNKNOWN_VALUE;
}
@@ -1087,17 +1103,17 @@
return BoolState.UNKNOWN_VALUE;
}
if (rightOperand is IntState) {
- int rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return BoolState.UNKNOWN_VALUE;
}
- return BoolState.from(value < rightValue.toDouble());
+ return BoolState.from(value! < rightValue.toDouble());
} else if (rightOperand is DoubleState) {
- double rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return BoolState.UNKNOWN_VALUE;
}
- return BoolState.from(value < rightValue);
+ return BoolState.from(value! < rightValue);
}
throw EvaluationException(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION);
}
@@ -1109,17 +1125,17 @@
return BoolState.UNKNOWN_VALUE;
}
if (rightOperand is IntState) {
- int rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return BoolState.UNKNOWN_VALUE;
}
- return BoolState.from(value <= rightValue.toDouble());
+ return BoolState.from(value! <= rightValue.toDouble());
} else if (rightOperand is DoubleState) {
- double rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return BoolState.UNKNOWN_VALUE;
}
- return BoolState.from(value <= rightValue);
+ return BoolState.from(value! <= rightValue);
}
throw EvaluationException(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION);
}
@@ -1131,17 +1147,17 @@
return UNKNOWN_VALUE;
}
if (rightOperand is IntState) {
- int rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return UNKNOWN_VALUE;
}
- return DoubleState(value - rightValue.toDouble());
+ return DoubleState(value! - rightValue.toDouble());
} else if (rightOperand is DoubleState) {
- double rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return UNKNOWN_VALUE;
}
- return DoubleState(value - rightValue);
+ return DoubleState(value! - rightValue);
}
throw EvaluationException(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION);
}
@@ -1151,7 +1167,7 @@
if (value == null) {
return UNKNOWN_VALUE;
}
- return DoubleState(-value);
+ return DoubleState(-value!);
}
@override
@@ -1161,17 +1177,17 @@
return UNKNOWN_VALUE;
}
if (rightOperand is IntState) {
- int rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return UNKNOWN_VALUE;
}
- return DoubleState(value % rightValue.toDouble());
+ return DoubleState(value! % rightValue.toDouble());
} else if (rightOperand is DoubleState) {
- double rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return UNKNOWN_VALUE;
}
- return DoubleState(value % rightValue);
+ return DoubleState(value! % rightValue);
}
throw EvaluationException(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION);
}
@@ -1183,17 +1199,17 @@
return UNKNOWN_VALUE;
}
if (rightOperand is IntState) {
- int rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return UNKNOWN_VALUE;
}
- return DoubleState(value * rightValue.toDouble());
+ return DoubleState(value! * rightValue.toDouble());
} else if (rightOperand is DoubleState) {
- double rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return UNKNOWN_VALUE;
}
- return DoubleState(value * rightValue);
+ return DoubleState(value! * rightValue);
}
throw EvaluationException(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION);
}
@@ -1214,7 +1230,7 @@
/// The state of an object representing a function.
class FunctionState extends InstanceState {
/// The element representing the function being modeled.
- final ExecutableElement _element;
+ final ExecutableElement? _element;
/// Initialize a newly created state to represent the function with the given
/// [element].
@@ -1235,7 +1251,7 @@
if (_element == null) {
return StringState.UNKNOWN_VALUE;
}
- return StringState(_element.name);
+ return StringState(_element!.name);
}
@override
@@ -1249,7 +1265,7 @@
return BoolState.UNKNOWN_VALUE;
}
if (rightOperand is FunctionState) {
- ExecutableElement rightElement = rightOperand._element;
+ var rightElement = rightOperand._element;
if (rightElement == null) {
return BoolState.UNKNOWN_VALUE;
}
@@ -1259,7 +1275,7 @@
}
@override
- String toString() => _element == null ? "-unknown-" : _element.name;
+ String toString() => _element?.name ?? "-unknown-";
}
/// The state of an object representing a Dart object for which there is no more
@@ -1276,7 +1292,7 @@
final Map<String, DartObjectImpl> _fieldMap;
/// Information about the constructor invoked to generate this instance.
- final ConstructorInvocation invocation;
+ final ConstructorInvocation? invocation;
/// Initialize a newly created state to represent a newly created object. The
/// [fieldMap] contains the values of the fields of the instance.
@@ -1359,7 +1375,7 @@
abstract class InstanceState {
/// If this represents a generic dart object, return a map from its field
/// names to their values. Otherwise return null.
- Map<String, DartObjectImpl> get fields => null;
+ Map<String, DartObjectImpl>? get fields => null;
/// Return `true` if this object represents an object whose type is 'bool'.
bool get isBool => false;
@@ -1395,7 +1411,7 @@
}
/// Throw an exception if the given [state] does not represent a boolean value.
- void assertBool(InstanceState state) {
+ void assertBool(InstanceState? state) {
if (state is! BoolState) {
throw EvaluationException(CompileTimeErrorCode.CONST_EVAL_TYPE_BOOL);
}
@@ -1560,14 +1576,14 @@
///
/// Throws an [EvaluationException] if the operator is not appropriate for an
/// object of this kind.
- BoolState lazyAnd(InstanceState Function() rightOperandComputer) {
+ BoolState lazyAnd(InstanceState? Function() rightOperandComputer) {
assertBool(this);
if (convertToBool() == BoolState.FALSE_STATE) {
- return this;
+ return this as BoolState;
}
- InstanceState rightOperand = rightOperandComputer();
+ var rightOperand = rightOperandComputer();
assertBool(rightOperand);
- return rightOperand.convertToBool();
+ return rightOperand!.convertToBool();
}
/// Return the result of invoking the '==' operator on this object with the
@@ -1587,14 +1603,14 @@
///
/// Throws an [EvaluationException] if the operator is not appropriate for an
/// object of this kind.
- BoolState lazyOr(InstanceState Function() rightOperandComputer) {
+ BoolState lazyOr(InstanceState? Function() rightOperandComputer) {
assertBool(this);
if (convertToBool() == BoolState.TRUE_STATE) {
- return this;
+ return this as BoolState;
}
- InstanceState rightOperand = rightOperandComputer();
+ var rightOperand = rightOperandComputer();
assertBool(rightOperand);
- return rightOperand.convertToBool();
+ return rightOperand!.convertToBool();
}
/// Return the result of invoking the '<' operator on this object with the
@@ -1627,8 +1643,8 @@
BoolState logicalAnd(InstanceState rightOperand) {
assertBool(this);
assertBool(rightOperand);
- bool leftValue = convertToBool().value;
- bool rightValue = rightOperand.convertToBool().value;
+ var leftValue = convertToBool().value;
+ var rightValue = rightOperand.convertToBool().value;
if (leftValue == null || rightValue == null) {
return BoolState.UNKNOWN_VALUE;
}
@@ -1652,8 +1668,8 @@
BoolState logicalOr(InstanceState rightOperand) {
assertBool(this);
assertBool(rightOperand);
- bool leftValue = convertToBool().value;
- bool rightValue = rightOperand.convertToBool().value;
+ var leftValue = convertToBool().value;
+ var rightValue = rightOperand.convertToBool().value;
if (leftValue == null || rightValue == null) {
return BoolState.UNKNOWN_VALUE;
}
@@ -1679,8 +1695,8 @@
BoolState logicalXor(InstanceState rightOperand) {
assertBool(this);
assertBool(rightOperand);
- bool leftValue = convertToBool().value;
- bool rightValue = rightOperand.convertToBool().value;
+ var leftValue = convertToBool().value;
+ var rightValue = rightOperand.convertToBool().value;
if (leftValue == null || rightValue == null) {
return BoolState.UNKNOWN_VALUE;
}
@@ -1767,7 +1783,7 @@
static IntState UNKNOWN_VALUE = IntState(null);
/// The value of this instance.
- final int value;
+ final int? value;
/// Initialize a newly created state to represent an int with the given
/// [value].
@@ -1799,17 +1815,17 @@
return UNKNOWN_VALUE;
}
if (rightOperand is IntState) {
- int rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return UNKNOWN_VALUE;
}
- return IntState(value + rightValue);
+ return IntState(value! + rightValue);
} else if (rightOperand is DoubleState) {
- double rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return DoubleState.UNKNOWN_VALUE;
}
- return DoubleState(value.toDouble() + rightValue);
+ return DoubleState(value!.toDouble() + rightValue);
}
throw EvaluationException(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION);
}
@@ -1821,11 +1837,11 @@
return UNKNOWN_VALUE;
}
if (rightOperand is IntState) {
- int rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return UNKNOWN_VALUE;
}
- return IntState(value & rightValue);
+ return IntState(value! & rightValue);
}
throw EvaluationException(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION);
}
@@ -1835,7 +1851,7 @@
if (value == null) {
return UNKNOWN_VALUE;
}
- return IntState(~value);
+ return IntState(~value!);
}
@override
@@ -1845,11 +1861,11 @@
return UNKNOWN_VALUE;
}
if (rightOperand is IntState) {
- int rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return UNKNOWN_VALUE;
}
- return IntState(value | rightValue);
+ return IntState(value! | rightValue);
}
throw EvaluationException(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION);
}
@@ -1861,11 +1877,11 @@
return UNKNOWN_VALUE;
}
if (rightOperand is IntState) {
- int rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return UNKNOWN_VALUE;
}
- return IntState(value ^ rightValue);
+ return IntState(value! ^ rightValue);
}
throw EvaluationException(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION);
}
@@ -1885,18 +1901,18 @@
return DoubleState.UNKNOWN_VALUE;
}
if (rightOperand is IntState) {
- int rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return DoubleState.UNKNOWN_VALUE;
} else {
- return DoubleState(value.toDouble() / rightValue.toDouble());
+ return DoubleState(value!.toDouble() / rightValue.toDouble());
}
} else if (rightOperand is DoubleState) {
- double rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return DoubleState.UNKNOWN_VALUE;
}
- return DoubleState(value.toDouble() / rightValue);
+ return DoubleState(value!.toDouble() / rightValue);
}
throw EvaluationException(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION);
}
@@ -1908,17 +1924,17 @@
return BoolState.UNKNOWN_VALUE;
}
if (rightOperand is IntState) {
- int rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return BoolState.UNKNOWN_VALUE;
}
- return BoolState.from(value.compareTo(rightValue) > 0);
+ return BoolState.from(value!.compareTo(rightValue) > 0);
} else if (rightOperand is DoubleState) {
- double rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return BoolState.UNKNOWN_VALUE;
}
- return BoolState.from(value.toDouble() > rightValue);
+ return BoolState.from(value!.toDouble() > rightValue);
}
throw EvaluationException(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION);
}
@@ -1930,17 +1946,17 @@
return BoolState.UNKNOWN_VALUE;
}
if (rightOperand is IntState) {
- int rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return BoolState.UNKNOWN_VALUE;
}
- return BoolState.from(value.compareTo(rightValue) >= 0);
+ return BoolState.from(value!.compareTo(rightValue) >= 0);
} else if (rightOperand is DoubleState) {
- double rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return BoolState.UNKNOWN_VALUE;
}
- return BoolState.from(value.toDouble() >= rightValue);
+ return BoolState.from(value!.toDouble() >= rightValue);
}
throw EvaluationException(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION);
}
@@ -1952,19 +1968,19 @@
return UNKNOWN_VALUE;
}
if (rightOperand is IntState) {
- int rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return UNKNOWN_VALUE;
} else if (rightValue == 0) {
throw EvaluationException(CompileTimeErrorCode.CONST_EVAL_THROWS_IDBZE);
}
- return IntState(value ~/ rightValue);
+ return IntState(value! ~/ rightValue);
} else if (rightOperand is DoubleState) {
- double rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return UNKNOWN_VALUE;
}
- double result = value.toDouble() / rightValue;
+ double result = value!.toDouble() / rightValue;
if (result.isFinite) {
return IntState(result.toInt());
}
@@ -1978,17 +1994,17 @@
return BoolState.UNKNOWN_VALUE;
}
if (rightOperand is IntState) {
- int rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return BoolState.UNKNOWN_VALUE;
}
return BoolState.from(value == rightValue);
} else if (rightOperand is DoubleState) {
- double rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return BoolState.UNKNOWN_VALUE;
}
- return BoolState.from(rightValue == value.toDouble());
+ return BoolState.from(rightValue == value!.toDouble());
}
return BoolState.FALSE_STATE;
}
@@ -2000,17 +2016,17 @@
return BoolState.UNKNOWN_VALUE;
}
if (rightOperand is IntState) {
- int rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return BoolState.UNKNOWN_VALUE;
}
- return BoolState.from(value.compareTo(rightValue) < 0);
+ return BoolState.from(value!.compareTo(rightValue) < 0);
} else if (rightOperand is DoubleState) {
- double rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return BoolState.UNKNOWN_VALUE;
}
- return BoolState.from(value.toDouble() < rightValue);
+ return BoolState.from(value!.toDouble() < rightValue);
}
throw EvaluationException(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION);
}
@@ -2022,17 +2038,17 @@
return BoolState.UNKNOWN_VALUE;
}
if (rightOperand is IntState) {
- int rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return BoolState.UNKNOWN_VALUE;
}
- return BoolState.from(value.compareTo(rightValue) <= 0);
+ return BoolState.from(value!.compareTo(rightValue) <= 0);
} else if (rightOperand is DoubleState) {
- double rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return BoolState.UNKNOWN_VALUE;
}
- return BoolState.from(value.toDouble() <= rightValue);
+ return BoolState.from(value!.toDouble() <= rightValue);
}
throw EvaluationException(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION);
}
@@ -2044,7 +2060,7 @@
return UNKNOWN_VALUE;
}
if (rightOperand is IntState) {
- int rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return UNKNOWN_VALUE;
} else if (rightValue.bitLength > 31) {
@@ -2061,7 +2077,7 @@
// in the left operand to be shifted out of the value.
return IntState(0);
}
- return IntState(value ~/ divisor);
+ return IntState(value! ~/ divisor);
}
}
throw EvaluationException(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION);
@@ -2077,17 +2093,17 @@
return UNKNOWN_VALUE;
}
if (rightOperand is IntState) {
- int rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return UNKNOWN_VALUE;
}
- return IntState(value - rightValue);
+ return IntState(value! - rightValue);
} else if (rightOperand is DoubleState) {
- double rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return DoubleState.UNKNOWN_VALUE;
}
- return DoubleState(value.toDouble() - rightValue);
+ return DoubleState(value!.toDouble() - rightValue);
}
throw EvaluationException(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION);
}
@@ -2097,7 +2113,7 @@
if (value == null) {
return UNKNOWN_VALUE;
}
- return IntState(-value);
+ return IntState(-value!);
}
@override
@@ -2110,19 +2126,19 @@
return UNKNOWN_VALUE;
}
if (rightOperand is IntState) {
- int rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return UNKNOWN_VALUE;
}
if (rightValue != 0) {
- return IntState(value % rightValue);
+ return IntState(value! % rightValue);
}
} else if (rightOperand is DoubleState) {
- double rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return DoubleState.UNKNOWN_VALUE;
}
- return DoubleState(value.toDouble() % rightValue);
+ return DoubleState(value!.toDouble() % rightValue);
}
throw EvaluationException(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION);
}
@@ -2134,14 +2150,14 @@
return UNKNOWN_VALUE;
}
if (rightOperand is IntState) {
- int rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return UNKNOWN_VALUE;
} else if (rightValue.bitLength > 31) {
return UNKNOWN_VALUE;
}
if (rightValue >= 0) {
- return IntState(value << rightValue);
+ return IntState(value! << rightValue);
}
}
throw EvaluationException(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION);
@@ -2154,14 +2170,14 @@
return UNKNOWN_VALUE;
}
if (rightOperand is IntState) {
- int rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return UNKNOWN_VALUE;
} else if (rightValue.bitLength > 31) {
return UNKNOWN_VALUE;
}
if (rightValue >= 0) {
- return IntState(value >> rightValue);
+ return IntState(value! >> rightValue);
}
}
throw EvaluationException(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION);
@@ -2177,17 +2193,17 @@
return UNKNOWN_VALUE;
}
if (rightOperand is IntState) {
- int rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return UNKNOWN_VALUE;
}
- return IntState(value * rightValue);
+ return IntState(value! * rightValue);
} else if (rightOperand is DoubleState) {
- double rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return DoubleState.UNKNOWN_VALUE;
}
- return DoubleState(value.toDouble() * rightValue);
+ return DoubleState(value!.toDouble() * rightValue);
}
throw EvaluationException(CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION);
}
@@ -2302,8 +2318,8 @@
return true;
}
for (DartObjectImpl key in _entries.keys) {
- DartObjectImpl value = _entries[key];
- DartObjectImpl otherValue = otherElements[key];
+ var value = _entries[key];
+ var otherValue = otherElements[key];
if (value != otherValue) {
return false;
}
@@ -2487,7 +2503,7 @@
static StringState UNKNOWN_VALUE = StringState(null);
/// The value of this instance.
- final String value;
+ final String? value;
/// Initialize a newly created state to represent the given [value].
StringState(this.value);
@@ -2514,7 +2530,7 @@
return UNKNOWN_VALUE;
}
if (rightOperand is StringState) {
- String rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return UNKNOWN_VALUE;
}
@@ -2538,7 +2554,7 @@
return BoolState.UNKNOWN_VALUE;
}
if (rightOperand is StringState) {
- String rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return BoolState.UNKNOWN_VALUE;
}
@@ -2552,7 +2568,7 @@
if (value == null) {
return IntState.UNKNOWN_VALUE;
}
- return IntState(value.length);
+ return IntState(value!.length);
}
@override
@@ -2562,7 +2578,7 @@
/// The state of an object representing a symbol.
class SymbolState extends InstanceState {
/// The value of this instance.
- final String value;
+ final String? value;
/// Initialize a newly created state to represent the given [value].
SymbolState(this.value);
@@ -2597,7 +2613,7 @@
return BoolState.UNKNOWN_VALUE;
}
if (rightOperand is SymbolState) {
- String rightValue = rightOperand.value;
+ var rightValue = rightOperand.value;
if (rightValue == null) {
return BoolState.UNKNOWN_VALUE;
}
@@ -2613,7 +2629,7 @@
/// The state of an object representing a type.
class TypeState extends InstanceState {
/// The element representing the type being modeled.
- final DartType _type;
+ final DartType? _type;
/// Initialize a newly created state to represent the given [value].
TypeState(this._type);
@@ -2633,7 +2649,7 @@
if (_type == null) {
return StringState.UNKNOWN_VALUE;
}
- return StringState(_type.getDisplayString(withNullability: false));
+ return StringState(_type!.getDisplayString(withNullability: false));
}
@override
@@ -2648,13 +2664,13 @@
return BoolState.UNKNOWN_VALUE;
}
if (rightOperand is TypeState) {
- DartType rightType = rightOperand._type;
+ var rightType = rightOperand._type;
if (rightType == null) {
return BoolState.UNKNOWN_VALUE;
}
return BoolState.from(
- typeSystem.runtimeTypesEqual(_type, rightType),
+ typeSystem.runtimeTypesEqual(_type!, rightType),
);
}
return BoolState.FALSE_STATE;
diff --git a/pkg/analyzer/lib/src/dart/element/class_hierarchy.dart b/pkg/analyzer/lib/src/dart/element/class_hierarchy.dart
index 7559fa2..0a44e08 100644
--- a/pkg/analyzer/lib/src/dart/element/class_hierarchy.dart
+++ b/pkg/analyzer/lib/src/dart/element/class_hierarchy.dart
@@ -7,7 +7,6 @@
import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/dart/element/type_algebra.dart';
import 'package:analyzer/src/dart/element/type_system.dart';
-import 'package:meta/meta.dart';
class ClassHierarchy {
final Map<ClassElement, _Hierarchy> _map = {};
@@ -49,7 +48,7 @@
var typeSystem = library.typeSystem;
var interfacesMerger = InterfacesMerger(typeSystem);
- void append(InterfaceType type) {
+ void append(InterfaceType? type) {
if (type == null) {
return;
}
@@ -59,8 +58,10 @@
var substitution = Substitution.fromInterfaceType(type);
var rawInterfaces = implementedInterfaces(type.element);
for (var rawInterface in rawInterfaces) {
- var newInterface = substitution.substituteType(rawInterface);
- newInterface = library.toLegacyTypeIfOptOut(newInterface);
+ var newInterface =
+ substitution.substituteType(rawInterface) as InterfaceType;
+ newInterface =
+ library.toLegacyTypeIfOptOut(newInterface) as InterfaceType;
interfacesMerger.add(newInterface);
}
}
@@ -79,8 +80,9 @@
var errors = <ClassHierarchyError>[];
var interfaces = <InterfaceType>[];
for (var collector in interfacesMerger._map.values) {
- if (collector._error != null) {
- errors.add(collector._error);
+ var error = collector._error;
+ if (error != null) {
+ errors.add(error);
}
interfaces.add(collector.type);
}
@@ -131,7 +133,7 @@
classResult.update(type);
}
- void addWithSupertypes(InterfaceType type) {
+ void addWithSupertypes(InterfaceType? type) {
if (type != null) {
for (var superType in type.allSupertypes) {
add(superType);
@@ -144,14 +146,14 @@
class _ClassInterfaceType {
final TypeSystemImpl _typeSystem;
- ClassHierarchyError _error;
+ ClassHierarchyError? _error;
- InterfaceType _singleType;
- InterfaceType _currentResult;
+ InterfaceType? _singleType;
+ InterfaceType? _currentResult;
_ClassInterfaceType(this._typeSystem);
- InterfaceType get type => _currentResult ?? _singleType;
+ InterfaceType get type => (_currentResult ?? _singleType)!;
void update(InterfaceType type) {
if (_error != null) {
@@ -166,27 +168,28 @@
} else if (type == _singleType) {
return;
} else {
- _currentResult = _typeSystem.normalize(_singleType);
+ _currentResult = _typeSystem.normalize(_singleType!) as InterfaceType;
}
}
var normType = _typeSystem.normalize(type);
try {
- _currentResult = _typeSystem.topMerge(_currentResult, normType);
+ _currentResult =
+ _typeSystem.topMerge(_currentResult!, normType) as InterfaceType;
} catch (e) {
_error = IncompatibleInterfacesClassHierarchyError(
- _currentResult,
+ _currentResult!,
type,
);
}
} else {
- var legacyType = _typeSystem.toLegacyType(type);
+ var legacyType = _typeSystem.toLegacyType(type) as InterfaceType;
if (_currentResult == null) {
_currentResult = legacyType;
} else {
if (legacyType != _currentResult) {
_error = IncompatibleInterfacesClassHierarchyError(
- _currentResult,
+ _currentResult!,
legacyType,
);
}
@@ -200,7 +203,7 @@
List<InterfaceType> interfaces;
_Hierarchy({
- @required this.errors,
- @required this.interfaces,
+ required this.errors,
+ required this.interfaces,
});
}
diff --git a/pkg/analyzer/lib/src/dart/element/display_string_builder.dart b/pkg/analyzer/lib/src/dart/element/display_string_builder.dart
index 20affb1..c5adcb6 100644
--- a/pkg/analyzer/lib/src/dart/element/display_string_builder.dart
+++ b/pkg/analyzer/lib/src/dart/element/display_string_builder.dart
@@ -10,7 +10,6 @@
import 'package:analyzer/src/dart/element/type_algebra.dart';
import 'package:analyzer/src/dart/resolver/variance.dart';
import 'package:analyzer/src/generated/element_type_provider.dart';
-import 'package:meta/meta.dart';
class ElementDisplayStringBuilder {
final StringBuffer _buffer = StringBuffer();
@@ -19,8 +18,8 @@
final bool withNullability;
ElementDisplayStringBuilder({
- @required this.skipAllDynamicArguments,
- @required this.withNullability,
+ required this.skipAllDynamicArguments,
+ required this.withNullability,
});
@override
@@ -29,11 +28,7 @@
}
void writeAbstractElement(ElementImpl element) {
- if (element.name != null) {
- _write(element.name);
- } else {
- _write('<unnamed $runtimeType>');
- }
+ _write(element.name ?? '<unnamed $runtimeType>');
}
void writeClassElement(ClassElementImpl element) {
@@ -52,8 +47,8 @@
}
void writeCompilationUnitElement(CompilationUnitElementImpl element) {
- var path = element.source?.fullName;
- _write(path ?? '{compilation unit}');
+ var path = element.source.fullName;
+ _write(path);
}
void writeConstructorElement(ConstructorElement element) {
@@ -97,9 +92,10 @@
void writeExtensionElement(ExtensionElementImpl element) {
_write('extension ');
- _write(element.displayName ?? '(unnamed)');
+ _write(element.displayName);
_writeTypeParameters(element.typeParameters);
- _writeTypeIfNotNull(' on ', element.extendedType);
+ _write(' on ');
+ _writeType(element.extendedType);
}
void writeFormalParameter(ParameterElement element) {
@@ -187,9 +183,10 @@
_write(element.displayName);
- if (element.bound != null) {
+ var bound = element.bound;
+ if (bound != null) {
_write(' extends ');
- _writeType(element.bound);
+ _writeType(bound);
}
}
@@ -197,9 +194,10 @@
_write(type.element.displayName);
_writeNullability(type.nullabilitySuffix);
- if (type.promotedBound != null) {
+ var promotedBound = type.promotedBound;
+ if (promotedBound != null) {
_write(' & ');
- _writeType(type.promotedBound);
+ _writeType(promotedBound);
}
}
@@ -223,7 +221,7 @@
void _writeFormalParameters(
List<ParameterElement> parameters, {
- @required bool forElement,
+ required bool forElement,
}) {
_write('(');
@@ -299,14 +297,7 @@
_write('>');
}
- void _writeTypeIfNotNull(String prefix, DartType type) {
- if (type != null) {
- _write(prefix);
- _writeType(type);
- }
- }
-
- void _writeTypeIfNotObject(String prefix, DartType type) {
+ void _writeTypeIfNotObject(String prefix, DartType? type) {
if (type != null && !type.isDartCoreObject) {
_write(prefix);
_writeType(type);
@@ -344,7 +335,7 @@
void _writeWithoutDelimiters(
ParameterElement element, {
- @required bool forElement,
+ required bool forElement,
}) {
if (element.isRequiredNamed) {
_write('required ');
@@ -357,9 +348,12 @@
_write(element.displayName);
}
- if (forElement && element.defaultValueCode != null) {
- _write(' = ');
- _write(element.defaultValueCode);
+ if (forElement) {
+ var defaultValueCode = element.defaultValueCode;
+ if (defaultValueCode != null) {
+ _write(' = ');
+ _write(defaultValueCode);
+ }
}
}
@@ -370,7 +364,7 @@
var referencedTypeParameters = <TypeParameterElement>{};
- void collectTypeParameters(DartType type) {
+ void collectTypeParameters(DartType? type) {
if (type is TypeParameterType) {
referencedTypeParameters.add(type.element);
} else if (type is FunctionType) {
@@ -417,7 +411,7 @@
.freshTypeParameterCreated(newTypeParameter, typeParameter);
}
- return replaceTypeParameters(type, newTypeParameters);
+ return replaceTypeParameters(type as FunctionTypeImpl, newTypeParameters);
}
}
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index 146592c..54a847a 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -45,23 +45,22 @@
import 'package:analyzer/src/summary2/reference.dart';
import 'package:analyzer/src/task/inference_error.dart';
import 'package:analyzer/src/util/comment.dart';
-import 'package:meta/meta.dart';
/// A concrete implementation of a [ClassElement].
-abstract class AbstractClassElementImpl extends ElementImpl
+abstract class AbstractClassElementImpl extends _ExistingElementImpl
implements ClassElement {
/// The type defined by the class.
- InterfaceType _thisType;
+ InterfaceType? _thisType;
/// A list containing all of the accessors (getters and setters) contained in
/// this class.
- List<PropertyAccessorElement> _accessors;
+ List<PropertyAccessorElement>? _accessors;
/// A list containing all of the fields contained in this class.
- List<FieldElement> _fields;
+ List<FieldElement>? _fields;
/// A list containing all of the methods contained in this class.
- List<MethodElement> _methods;
+ List<MethodElement>? _methods;
/// Initialize a newly created class element to have the given [name] at the
/// given [offset] in the file that contains the declaration of this element.
@@ -93,6 +92,11 @@
String get displayName => name;
@override
+ CompilationUnitElementImpl get enclosingElement {
+ return _enclosingElement as CompilationUnitElementImpl;
+ }
+
+ @override
List<FieldElement> get fields => _fields ?? const <FieldElement>[];
/// Set the fields contained in this class to the given [fields].
@@ -131,14 +135,14 @@
nullabilitySuffix: _noneOrStarSuffix,
);
}
- return _thisType;
+ return _thisType!;
}
@override
- T accept<T>(ElementVisitor<T> visitor) => visitor.visitClassElement(this);
+ T? accept<T>(ElementVisitor<T> visitor) => visitor.visitClassElement(this);
@override
- FieldElement getField(String name) {
+ FieldElement? getField(String name) {
for (FieldElement fieldElement in fields) {
if (name == fieldElement.name) {
return fieldElement;
@@ -148,7 +152,7 @@
}
@override
- PropertyAccessorElement getGetter(String getterName) {
+ PropertyAccessorElement? getGetter(String getterName) {
int length = accessors.length;
for (int i = 0; i < length; i++) {
PropertyAccessorElement accessor = accessors[i];
@@ -160,7 +164,7 @@
}
@override
- MethodElement getMethod(String methodName) {
+ MethodElement? getMethod(String methodName) {
int length = methods.length;
for (int i = 0; i < length; i++) {
MethodElement method = methods[i];
@@ -172,14 +176,14 @@
}
@override
- PropertyAccessorElement getSetter(String setterName) {
+ PropertyAccessorElement? getSetter(String setterName) {
return getSetterFromAccessors(setterName, accessors);
}
@override
InterfaceType instantiate({
- @required List<DartType> typeArguments,
- @required NullabilitySuffix nullabilitySuffix,
+ required List<DartType> typeArguments,
+ required NullabilitySuffix nullabilitySuffix,
}) {
if (typeArguments.length != typeParameters.length) {
var ta = 'typeArguments.length (${typeArguments.length})';
@@ -194,20 +198,20 @@
}
@override
- MethodElement lookUpConcreteMethod(
+ MethodElement? lookUpConcreteMethod(
String methodName, LibraryElement library) =>
_first(_implementationsOfMethod(methodName).where(
(MethodElement method) =>
!method.isAbstract && method.isAccessibleIn(library)));
@override
- PropertyAccessorElement lookUpGetter(
+ PropertyAccessorElement? lookUpGetter(
String getterName, LibraryElement library) =>
_first(_implementationsOfGetter(getterName).where(
(PropertyAccessorElement getter) => getter.isAccessibleIn(library)));
@override
- PropertyAccessorElement lookUpInheritedConcreteGetter(
+ PropertyAccessorElement? lookUpInheritedConcreteGetter(
String getterName, LibraryElement library) =>
_first(_implementationsOfGetter(getterName).where(
(PropertyAccessorElement getter) =>
@@ -215,7 +219,7 @@
getter.isAccessibleIn(library) &&
getter.enclosingElement != this));
- ExecutableElement lookUpInheritedConcreteMember(
+ ExecutableElement? lookUpInheritedConcreteMember(
String name, LibraryElement library) {
if (name.endsWith('=')) {
return lookUpInheritedConcreteSetter(name, library);
@@ -226,7 +230,7 @@
}
@override
- MethodElement lookUpInheritedConcreteMethod(
+ MethodElement? lookUpInheritedConcreteMethod(
String methodName, LibraryElement library) =>
_first(_implementationsOfMethod(methodName).where(
(MethodElement method) =>
@@ -235,7 +239,7 @@
method.enclosingElement != this));
@override
- PropertyAccessorElement lookUpInheritedConcreteSetter(
+ PropertyAccessorElement? lookUpInheritedConcreteSetter(
String setterName, LibraryElement library) =>
_first(_implementationsOfSetter(setterName).where(
(PropertyAccessorElement setter) =>
@@ -244,7 +248,7 @@
setter.enclosingElement != this));
@override
- MethodElement lookUpInheritedMethod(
+ MethodElement? lookUpInheritedMethod(
String methodName, LibraryElement library) =>
_first(_implementationsOfMethod(methodName).where(
(MethodElement method) =>
@@ -252,12 +256,12 @@
method.enclosingElement != this));
@override
- MethodElement lookUpMethod(String methodName, LibraryElement library) =>
+ MethodElement? lookUpMethod(String methodName, LibraryElement library) =>
_first(_implementationsOfMethod(methodName)
.where((MethodElement method) => method.isAccessibleIn(library)));
@override
- PropertyAccessorElement lookUpSetter(
+ PropertyAccessorElement? lookUpSetter(
String setterName, LibraryElement library) =>
_first(_implementationsOfSetter(setterName).where(
(PropertyAccessorElement setter) => setter.isAccessibleIn(library)));
@@ -267,7 +271,7 @@
/// This method should be used only for error recovery during analysis,
/// when instance access to a static class member, defined in this class,
/// or a superclass.
- PropertyAccessorElement lookupStaticGetter(
+ PropertyAccessorElement? lookupStaticGetter(
String name, LibraryElement library) {
return _first(_implementationsOfGetter(name).where((element) {
return element.isStatic && element.isAccessibleIn(library);
@@ -279,7 +283,7 @@
/// This method should be used only for error recovery during analysis,
/// when instance access to a static class member, defined in this class,
/// or a superclass.
- MethodElement lookupStaticMethod(String name, LibraryElement library) {
+ MethodElement? lookupStaticMethod(String name, LibraryElement library) {
return _first(_implementationsOfMethod(name).where((element) {
return element.isStatic && element.isAccessibleIn(library);
}));
@@ -290,7 +294,7 @@
/// This method should be used only for error recovery during analysis,
/// when instance access to a static class member, defined in this class,
/// or a superclass.
- PropertyAccessorElement lookupStaticSetter(
+ PropertyAccessorElement? lookupStaticSetter(
String name, LibraryElement library) {
return _first(_implementationsOfSetter(name).where((element) {
return element.isStatic && element.isAccessibleIn(library);
@@ -317,15 +321,15 @@
/// Object contains a definition of the getter it will occur last.
Iterable<PropertyAccessorElement> _implementationsOfGetter(
String getterName) sync* {
- ClassElement classElement = this;
+ ClassElement? classElement = this;
HashSet<ClassElement> visitedClasses = HashSet<ClassElement>();
while (classElement != null && visitedClasses.add(classElement)) {
- PropertyAccessorElement getter = classElement.getGetter(getterName);
+ var getter = classElement.getGetter(getterName);
if (getter != null) {
yield getter;
}
for (InterfaceType mixin in classElement.mixins.reversed) {
- getter = mixin.element?.getGetter(getterName);
+ getter = mixin.element.getGetter(getterName);
if (getter != null) {
yield getter;
}
@@ -346,15 +350,15 @@
/// this class contains a definition of the method it will occur first, if
/// Object contains a definition of the method it will occur last.
Iterable<MethodElement> _implementationsOfMethod(String methodName) sync* {
- ClassElement classElement = this;
+ ClassElement? classElement = this;
HashSet<ClassElement> visitedClasses = HashSet<ClassElement>();
while (classElement != null && visitedClasses.add(classElement)) {
- MethodElement method = classElement.getMethod(methodName);
+ var method = classElement.getMethod(methodName);
if (method != null) {
yield method;
}
for (InterfaceType mixin in classElement.mixins.reversed) {
- method = mixin.element?.getMethod(methodName);
+ method = mixin.element.getMethod(methodName);
if (method != null) {
yield method;
}
@@ -376,15 +380,15 @@
/// Object contains a definition of the setter it will occur last.
Iterable<PropertyAccessorElement> _implementationsOfSetter(
String setterName) sync* {
- ClassElement classElement = this;
+ ClassElement? classElement = this;
HashSet<ClassElement> visitedClasses = HashSet<ClassElement>();
while (classElement != null && visitedClasses.add(classElement)) {
- PropertyAccessorElement setter = classElement.getSetter(setterName);
+ var setter = classElement.getSetter(setterName);
if (setter != null) {
yield setter;
}
for (InterfaceType mixin in classElement.mixins.reversed) {
- setter = mixin.element?.getSetter(setterName);
+ setter = mixin.element.getSetter(setterName);
if (setter != null) {
yield setter;
}
@@ -393,7 +397,7 @@
}
}
- static PropertyAccessorElement getSetterFromAccessors(
+ static PropertyAccessorElement? getSetterFromAccessors(
String setterName, List<PropertyAccessorElement> accessors) {
// TODO (jwren) revisit- should we append '=' here or require clients to
// include it?
@@ -411,7 +415,7 @@
/// Return the first element from the given [iterable], or `null` if the
/// iterable is empty.
- static E _first<E>(Iterable<E> iterable) {
+ static E? _first<E>(Iterable<E> iterable) {
if (iterable.isEmpty) {
return null;
}
@@ -423,15 +427,15 @@
class ClassElementImpl extends AbstractClassElementImpl
with TypeParameterizedElementMixin {
/// The superclass of the class, or `null` for [Object].
- InterfaceType _supertype;
+ InterfaceType? _supertype;
/// A list containing all of the mixins that are applied to the class being
/// extended in order to derive the superclass of this class.
- List<InterfaceType> _mixins;
+ List<InterfaceType>? _mixins;
/// A list containing all of the interfaces that are implemented by this
/// class.
- List<InterfaceType> _interfaces;
+ List<InterfaceType>? _interfaces;
/// For classes which are not mixin applications, a list containing all of the
/// constructors contained in this class, or `null` if the list of
@@ -440,14 +444,14 @@
/// For classes which are mixin applications, the list of constructors is
/// computed on the fly by the [constructors] getter, and this field is
/// `null`.
- List<ConstructorElement> _constructors;
+ List<ConstructorElement>? _constructors;
/// A flag indicating whether the types associated with the instance members
/// of this class have been inferred.
bool hasBeenInferred = false;
/// This callback is set during mixins inference to handle reentrant calls.
- List<InterfaceType> Function(ClassElementImpl) linkedMixinInferenceCallback;
+ List<InterfaceType>? Function(ClassElementImpl)? linkedMixinInferenceCallback;
/// TODO(scheglov) implement as modifier
bool _isSimplyBounded = true;
@@ -464,18 +468,18 @@
} else if (linkedNode is ClassTypeAlias) {
linkedNode.name.staticElement = this;
}
- hasBeenInferred = !linkedContext.isLinking;
+ hasBeenInferred = !linkedContext!.isLinking;
}
@override
List<PropertyAccessorElement> get accessors {
- if (_accessors != null) return _accessors;
+ if (_accessors != null) return _accessors!;
if (linkedNode != null) {
if (linkedNode is ClassOrMixinDeclaration) {
_createPropertiesAndAccessors();
assert(_accessors != null);
- return _accessors;
+ return _accessors!;
} else {
return _accessors = const [];
}
@@ -491,17 +495,17 @@
}
@override
- int get codeLength {
+ int? get codeLength {
if (linkedNode != null) {
- return linkedContext.getCodeLength(linkedNode);
+ return linkedContext!.getCodeLength(linkedNode!);
}
return super.codeLength;
}
@override
- int get codeOffset {
+ int? get codeOffset {
if (linkedNode != null) {
- return linkedContext.getCodeOffset(linkedNode);
+ return linkedContext!.getCodeOffset(linkedNode!);
}
return super.codeOffset;
}
@@ -509,7 +513,7 @@
@override
List<ConstructorElement> get constructors {
if (_constructors != null) {
- return _constructors;
+ return _constructors!;
}
if (isMixinApplication) {
@@ -517,10 +521,10 @@
}
if (linkedNode != null) {
- linkedContext.applyResolution(linkedNode);
- var context = enclosingUnit.linkedContext;
- var containerRef = reference.getChild('@constructor');
- _constructors = context.getConstructors(linkedNode).map((node) {
+ linkedContext!.applyResolution(linkedNode!);
+ var context = enclosingUnit.linkedContext!;
+ var containerRef = reference!.getChild('@constructor');
+ _constructors = context.getConstructors(linkedNode!).map((node) {
var name = node.name?.name ?? '';
var reference = containerRef.getChild(name);
var element = node.declaredElement;
@@ -528,7 +532,7 @@
return element;
}).toList();
- if (_constructors.isEmpty) {
+ if (_constructors!.isEmpty) {
return _constructors = [
ConstructorElementImpl.forLinkedNode(
this,
@@ -537,19 +541,20 @@
)
..isSynthetic = true
..name = ''
- ..nameOffset = -1,
+ ..nameOffset = -1
+ .._constantInitializers = const [],
];
}
}
- if (_constructors.isEmpty) {
+ if (_constructors!.isEmpty) {
var constructor = ConstructorElementImpl('', -1);
constructor.isSynthetic = true;
constructor.enclosingElement = this;
_constructors = <ConstructorElement>[constructor];
}
- return _constructors;
+ return _constructors!;
}
/// Set the constructors contained in this class to the given [constructors].
@@ -564,10 +569,10 @@
}
@override
- String get documentationComment {
+ String? get documentationComment {
if (linkedNode != null) {
- var context = enclosingUnit.linkedContext;
- var comment = context.getDocumentationComment(linkedNode);
+ var context = enclosingUnit.linkedContext!;
+ var comment = context.getDocumentationComment(linkedNode!);
return getCommentNodeRawText(comment);
}
return super.documentationComment;
@@ -575,14 +580,14 @@
@override
List<FieldElement> get fields {
- if (_fields != null) return _fields;
+ if (_fields != null) return _fields!;
if (linkedNode != null) {
if (linkedNode is ClassOrMixinDeclaration) {
- linkedContext.applyResolution(linkedNode);
+ linkedContext!.applyResolution(linkedNode!);
_createPropertiesAndAccessors();
assert(_fields != null);
- return _fields;
+ return _fields!;
} else {
_fields = const [];
}
@@ -614,12 +619,9 @@
classesToVisit.add(mixinElement);
}
// check super
- InterfaceType supertype = currentElement.supertype;
+ InterfaceType? supertype = currentElement.supertype;
if (supertype != null) {
- ClassElement superElement = supertype.element;
- if (superElement != null) {
- classesToVisit.add(superElement);
- }
+ classesToVisit.add(supertype.element);
}
}
}
@@ -631,9 +633,9 @@
/// from the one declared in class `Object`, as per the Dart Language
/// Specification (section 10.4).
bool get hasNoSuchMethod {
- MethodElement method = lookUpConcreteMethod(
+ MethodElement? method = lookUpConcreteMethod(
FunctionElement.NO_SUCH_METHOD_METHOD_NAME, library);
- var definingClass = method?.enclosingElement as ClassElement;
+ var definingClass = method?.enclosingElement as ClassElement?;
return definingClass != null && !definingClass.isDartCoreObject;
}
@@ -662,13 +664,13 @@
List<InterfaceType> get interfacesInternal {
if (_interfaces != null) {
- return _interfaces;
+ return _interfaces!;
}
if (linkedNode != null) {
- linkedContext.applyResolution(linkedNode);
- var context = enclosingUnit.linkedContext;
- var implementsClause = context.getImplementsClause(linkedNode);
+ linkedContext!.applyResolution(linkedNode!);
+ var context = enclosingUnit.linkedContext!;
+ var implementsClause = context.getImplementsClause(linkedNode!);
if (implementsClause != null) {
return _interfaces = implementsClause.interfaces
.map((node) => node.type)
@@ -685,7 +687,7 @@
@override
bool get isAbstract {
if (linkedNode != null) {
- return enclosingUnit.linkedContext.isAbstract(linkedNode);
+ return enclosingUnit.linkedContext!.isAbstract(linkedNode!);
}
return hasModifier(Modifier.ABSTRACT);
}
@@ -715,7 +717,7 @@
@override
bool get isSimplyBounded {
if (linkedNode != null) {
- linkedContext.applyResolution(linkedNode);
+ linkedContext!.applyResolution(linkedNode!);
}
return _isSimplyBounded;
}
@@ -727,7 +729,8 @@
@override
bool get isValidMixin {
- if (!supertype.isDartCoreObject) {
+ var supertype = this.supertype;
+ if (supertype != null && !supertype.isDartCoreObject) {
return false;
}
for (ConstructorElement constructor in constructors) {
@@ -744,20 +747,20 @@
@override
List<MethodElement> get methods {
if (_methods != null) {
- return _methods;
+ return _methods!;
}
if (linkedNode != null) {
- linkedContext.applyResolution(linkedNode);
- var context = enclosingUnit.linkedContext;
- var containerRef = reference.getChild('@method');
+ linkedContext!.applyResolution(linkedNode!);
+ var context = enclosingUnit.linkedContext!;
+ var containerRef = reference!.getChild('@method');
return _methods = context
- .getMethods(linkedNode)
+ .getMethods(linkedNode as CompilationUnitMember)
.where((node) => node.propertyKeyword == null)
.map((node) {
var name = node.name.name;
var reference = containerRef.getChild(name);
- var element = node.declaredElement as MethodElement;
+ var element = node.declaredElement as MethodElement?;
element ??= MethodElementImpl.forLinkedNode(this, reference, node);
return element;
}).toList();
@@ -777,17 +780,17 @@
@override
List<InterfaceType> get mixins {
if (linkedMixinInferenceCallback != null) {
- _mixins = linkedMixinInferenceCallback(this);
+ _mixins = linkedMixinInferenceCallback!(this);
}
if (_mixins != null) {
- return _mixins;
+ return _mixins!;
}
if (linkedNode != null) {
- linkedContext.applyResolution(linkedNode);
- var context = enclosingUnit.linkedContext;
- var withClause = context.getWithClause(linkedNode);
+ linkedContext!.applyResolution(linkedNode!);
+ var context = enclosingUnit.linkedContext!;
+ var withClause = context.getWithClause(linkedNode!);
if (withClause != null) {
return _mixins = withClause.mixinTypes
.map((node) => node.type)
@@ -808,15 +811,15 @@
@override
String get name {
if (linkedNode != null) {
- return reference.name;
+ return reference!.name;
}
- return super.name;
+ return super.name!;
}
@override
int get nameOffset {
if (linkedNode != null) {
- return enclosingUnit.linkedContext.getNameOffset(linkedNode);
+ return enclosingUnit.linkedContext!.getNameOffset(linkedNode!);
}
return super.nameOffset;
}
@@ -827,18 +830,18 @@
List<String> get superInvokedNames => const <String>[];
@override
- InterfaceType get supertype {
- if (_supertype != null) return _supertype;
+ InterfaceType? get supertype {
+ if (_supertype != null) return _supertype!;
if (hasModifier(Modifier.DART_CORE_OBJECT)) {
return null;
}
if (linkedNode != null) {
- linkedContext.applyResolution(linkedNode);
- var type = linkedContext.getSuperclass(linkedNode)?.type;
+ linkedContext!.applyResolution(linkedNode!);
+ var type = linkedContext!.getSuperclass(linkedNode!)?.type;
if (_isInterfaceTypeClass(type)) {
- return _supertype = type;
+ return _supertype = type as InterfaceType;
}
if (library.isDartCore && name == 'Object') {
setModifier(Modifier.DART_CORE_OBJECT, true);
@@ -849,7 +852,7 @@
return _supertype;
}
- set supertype(InterfaceType supertype) {
+ set supertype(InterfaceType? supertype) {
_supertype = supertype;
}
@@ -863,10 +866,9 @@
}
@override
- ConstructorElement get unnamedConstructor {
+ ConstructorElement? get unnamedConstructor {
for (ConstructorElement element in constructors) {
- String name = element.displayName;
- if (name == null || name.isEmpty) {
+ if (element.name.isEmpty) {
return element;
}
}
@@ -879,7 +881,7 @@
}
@override
- ConstructorElement getNamedConstructor(String name) =>
+ ConstructorElement? getNamedConstructor(String name) =>
getNamedConstructorFromList(name, constructors);
@override
@@ -895,7 +897,7 @@
/// application classes which have been visited on the way to reaching this
/// one (this is used to detect cycles).
List<ConstructorElement> _computeMixinAppConstructors(
- [List<ClassElementImpl> visitedClasses]) {
+ [List<ClassElementImpl>? visitedClasses]) {
if (supertype == null) {
// Shouldn't ever happen, since the only classes with no supertype are
// Object and mixins, and they aren't a mixin application. But for
@@ -904,7 +906,7 @@
return <ConstructorElement>[];
}
- var superElement = supertype.element as ClassElementImpl;
+ var superElement = supertype!.element as ClassElementImpl;
// First get the list of constructors of the superclass which need to be
// forwarded to this class.
@@ -940,11 +942,11 @@
var superClassParameters = superElement.typeParameters;
List<DartType> argumentTypes = List<DartType>.filled(
superClassParameters.length, DynamicTypeImpl.instance);
- for (int i = 0; i < supertype.typeArguments.length; i++) {
+ for (int i = 0; i < supertype!.typeArguments.length; i++) {
if (i >= argumentTypes.length) {
break;
}
- argumentTypes[i] = supertype.typeArguments[i];
+ argumentTypes[i] = supertype!.typeArguments[i];
}
var substitution =
Substitution.fromPairs(superClassParameters, argumentTypes);
@@ -956,13 +958,14 @@
// substituting type parameters as appropriate.
return constructorsToForward
.map((ConstructorElement superclassConstructor) {
- var containerRef = reference.getChild('@constructor');
+ var containerRef = reference!.getChild('@constructor');
var name = superclassConstructor.name;
var implicitConstructor = ConstructorElementImpl.forLinkedNode(
this, containerRef.getChild(name), null);
implicitConstructor.isSynthetic = true;
implicitConstructor.name = name;
implicitConstructor.nameOffset = -1;
+ implicitConstructor._constantInitializers = const [];
implicitConstructor.redirectedConstructor = superclassConstructor;
var hasMixinWithInstanceVariables = mixins.any(typeHasInstanceVariables);
implicitConstructor.isConst =
@@ -970,8 +973,7 @@
List<ParameterElement> superParameters = superclassConstructor.parameters;
int count = superParameters.length;
if (count > 0) {
- List<ParameterElement> implicitParameters =
- List<ParameterElement>.filled(count, null);
+ var implicitParameters = <ParameterElement>[];
for (int i = 0; i < count; i++) {
ParameterElement superParameter = superParameters[i];
ParameterElementImpl implicitParameter;
@@ -989,7 +991,7 @@
implicitParameter.isSynthetic = true;
implicitParameter.type =
substitution.substituteType(superParameter.type);
- implicitParameters[i] = implicitParameter;
+ implicitParameters.add(implicitParameter);
}
implicitConstructor.parameters = implicitParameters;
}
@@ -1006,21 +1008,21 @@
var accessorList = <PropertyAccessorElement>[];
var fieldList = <FieldElement>[];
- var fields = context.getFields(linkedNode);
+ var fields = context!.getFields(linkedNode as CompilationUnitMember);
for (var field in fields) {
var name = field.name.name;
- var fieldElement = field.declaredElement as FieldElementImpl;
+ var fieldElement = field.declaredElement as FieldElementImpl?;
fieldElement ??= FieldElementImpl.forLinkedNodeFactory(
- this, reference.getChild('@field').getChild(name), field);
+ this, reference!.getChild('@field').getChild(name), field);
fieldList.add(fieldElement);
- accessorList.add(fieldElement.getter);
+ accessorList.add(fieldElement.getter!);
if (fieldElement.setter != null) {
- accessorList.add(fieldElement.setter);
+ accessorList.add(fieldElement.setter!);
}
}
- var methods = context.getMethods(linkedNode);
+ var methods = context.getMethods(linkedNode as CompilationUnitMember);
for (var method in methods) {
var isGetter = method.isGetter;
var isSetter = method.isSetter;
@@ -1028,17 +1030,17 @@
var name = method.name.name;
var containerRef = isGetter
- ? reference.getChild('@getter')
- : reference.getChild('@setter');
+ ? reference!.getChild('@getter')
+ : reference!.getChild('@setter');
var accessorElement =
- method.declaredElement as PropertyAccessorElementImpl;
+ method.declaredElement as PropertyAccessorElementImpl?;
accessorElement ??= PropertyAccessorElementImpl.forLinkedNode(
this, containerRef.getChild(name), method);
accessorList.add(accessorElement);
- var fieldRef = reference.getChild('@field').getChild(name);
- FieldElementImpl field = fieldRef.element;
+ var fieldRef = reference!.getChild('@field').getChild(name);
+ var field = fieldRef.element as FieldElementImpl?;
if (field == null) {
field = FieldElementImpl(name, -1);
fieldRef.element = field;
@@ -1065,7 +1067,7 @@
/// Return `true` if the given [type] is an [InterfaceType] that can be used
/// as a class.
- bool _isInterfaceTypeClass(DartType type) {
+ bool _isInterfaceTypeClass(DartType? type) {
if (type is InterfaceType) {
var element = type.element;
if (element.isEnum || element.isMixin) {
@@ -1100,11 +1102,10 @@
return false;
}
- static ConstructorElement getNamedConstructorFromList(
+ static ConstructorElement? getNamedConstructorFromList(
String name, List<ConstructorElement> constructors) {
for (ConstructorElement element in constructors) {
- String elementName = element.name;
- if (elementName != null && elementName == name) {
+ if (element.name == name) {
return element;
}
}
@@ -1116,14 +1117,14 @@
class CompilationUnitElementImpl extends UriReferencedElementImpl
implements CompilationUnitElement {
@override
- final LinkedUnitContext linkedContext;
+ final LinkedUnitContext? linkedContext;
/// The source that corresponds to this compilation unit.
@override
- Source source;
+ late Source source;
@override
- LineInfo lineInfo;
+ LineInfo? lineInfo;
/// The source of the library containing this compilation unit.
///
@@ -1131,40 +1132,40 @@
/// except that it does not require the containing [LibraryElement] to be
/// computed.
@override
- Source librarySource;
+ late Source librarySource;
/// A list containing all of the top-level accessors (getters and setters)
/// contained in this compilation unit.
- List<PropertyAccessorElement> _accessors;
+ List<PropertyAccessorElement>? _accessors;
/// A list containing all of the enums contained in this compilation unit.
- List<ClassElement> _enums;
+ List<ClassElement>? _enums;
/// A list containing all of the extensions contained in this compilation
/// unit.
- List<ExtensionElement> _extensions;
+ List<ExtensionElement>? _extensions;
/// A list containing all of the top-level functions contained in this
/// compilation unit.
- List<FunctionElement> _functions;
+ List<FunctionElement>? _functions;
/// A list containing all of the mixins contained in this compilation unit.
- List<ClassElement> _mixins;
+ List<ClassElement>? _mixins;
/// A list containing all of the function type aliases contained in this
/// compilation unit.
@Deprecated('Use typeAliases instead')
- List<FunctionTypeAliasElement> _functionTypeAliases;
+ List<FunctionTypeAliasElement>? _functionTypeAliases;
/// A list containing all of the type aliases contained in this compilation
/// unit.
- List<TypeAliasElement> _typeAliases;
+ List<TypeAliasElement>? _typeAliases;
/// A list containing all of the classes contained in this compilation unit.
- List<ClassElement> _types;
+ List<ClassElement>? _types;
/// A list containing all of the variables contained in this compilation unit.
- List<TopLevelVariableElement> _variables;
+ List<TopLevelVariableElement>? _variables;
/// Initialize a newly created compilation unit element to have the given
/// [name].
@@ -1181,12 +1182,12 @@
@override
List<PropertyAccessorElement> get accessors {
- if (_accessors != null) return _accessors;
+ if (_accessors != null) return _accessors!;
if (linkedNode != null) {
_createPropertiesAndAccessors(this);
assert(_accessors != null);
- return _accessors;
+ return _accessors!;
}
return _accessors ?? const <PropertyAccessorElement>[];
@@ -1204,17 +1205,17 @@
@override
int get codeLength {
if (linkedNode != null) {
- return linkedContext.getCodeLength(linkedNode);
+ return linkedContext!.getCodeLength(linkedNode!);
}
- return super.codeLength;
+ return super.codeLength!;
}
@override
int get codeOffset {
if (linkedNode != null) {
- return linkedContext.getCodeOffset(linkedNode);
+ return linkedContext!.getCodeOffset(linkedNode!);
}
- return super.codeOffset;
+ return super.codeOffset!;
}
@override
@@ -1228,11 +1229,11 @@
@override
List<ClassElement> get enums {
- if (_enums != null) return _enums;
+ if (_enums != null) return _enums!;
if (linkedNode != null) {
- var containerRef = reference.getChild('@enum');
- CompilationUnit linkedNode = this.linkedNode;
+ var containerRef = reference!.getChild('@enum');
+ var linkedNode = this.linkedNode as CompilationUnit;
_enums = linkedNode.declarations.whereType<EnumDeclaration>().map((node) {
var name = node.name.name;
var reference = containerRef.getChild(name);
@@ -1256,16 +1257,17 @@
@override
List<ExtensionElement> get extensions {
if (_extensions != null) {
- return _extensions;
+ /// TODO(migration): use empty sentinel value instead of null
+ return _extensions!;
}
if (linkedNode != null) {
- CompilationUnit linkedNode = this.linkedNode;
- var containerRef = reference.getChild('@extension');
+ var linkedNode = this.linkedNode as CompilationUnit;
+ var containerRef = reference!.getChild('@extension');
_extensions = <ExtensionElement>[];
var nextUnnamedExtensionId = 0;
for (var node in linkedNode.declarations) {
- if (node is ExtensionDeclaration) {
+ if (node is ExtensionDeclarationImpl) {
var nameIdentifier = node.name;
var refName = nameIdentifier != null
? nameIdentifier.name
@@ -1273,10 +1275,10 @@
var reference = containerRef.getChild(refName);
var element = node.declaredElement;
element ??= ExtensionElementImpl.forLinkedNode(this, reference, node);
- _extensions.add(element);
+ _extensions!.add(element);
}
}
- return _extensions;
+ return _extensions!;
}
return _extensions ?? const <ExtensionElement>[];
}
@@ -1292,17 +1294,17 @@
@override
List<FunctionElement> get functions {
- if (_functions != null) return _functions;
+ if (_functions != null) return _functions!;
if (linkedNode != null) {
- var containerRef = reference.getChild('@function');
- return _functions = linkedContext.unit_withDeclarations.declarations
+ var containerRef = reference!.getChild('@function');
+ return _functions = linkedContext!.unit_withDeclarations.declarations
.whereType<FunctionDeclaration>()
.where((node) => !node.isGetter && !node.isSetter)
.map((node) {
var name = node.name.name;
var reference = containerRef.getChild(name);
- var element = node.declaredElement as FunctionElement;
+ var element = node.declaredElement as FunctionElement?;
element ??= FunctionElementImpl.forLinkedNode(this, reference, node);
return element;
}).toList();
@@ -1346,7 +1348,7 @@
@override
bool get isSynthetic {
if (linkedContext != null) {
- return linkedContext.isSynthetic;
+ return linkedContext!.isSynthetic;
}
return super.isSynthetic;
}
@@ -1356,16 +1358,16 @@
@override
List<ClassElement> get mixins {
- if (_mixins != null) return _mixins;
+ if (_mixins != null) return _mixins!;
if (linkedNode != null) {
- CompilationUnit linkedNode = this.linkedNode;
- var containerRef = reference.getChild('@mixin');
+ var linkedNode = this.linkedNode as CompilationUnit;
+ var containerRef = reference!.getChild('@mixin');
var declarations = linkedNode.declarations;
return _mixins = declarations.whereType<MixinDeclaration>().map((node) {
var name = node.name.name;
var reference = containerRef.getChild(name);
- var element = node.declaredElement as MixinElementImpl;
+ var element = node.declaredElement as MixinElementImpl?;
element ??= MixinElementImpl.forLinkedNode(this, reference, node);
return element;
}).toList();
@@ -1376,20 +1378,20 @@
/// Set the mixins contained in this compilation unit to the given [mixins].
set mixins(List<ClassElement> mixins) {
- for (MixinElementImpl type in mixins) {
- type.enclosingElement = this;
+ for (var type in mixins) {
+ (type as MixinElementImpl).enclosingElement = this;
}
_mixins = mixins;
}
@override
List<TopLevelVariableElement> get topLevelVariables {
- if (_variables != null) return _variables;
+ if (_variables != null) return _variables!;
if (linkedNode != null) {
_createPropertiesAndAccessors(this);
assert(_variables != null);
- return _variables;
+ return _variables!;
}
return _variables ?? const <TopLevelVariableElement>[];
@@ -1406,12 +1408,12 @@
@override
List<TypeAliasElement> get typeAliases {
- if (_typeAliases != null) return _typeAliases;
+ if (_typeAliases != null) return _typeAliases!;
if (linkedNode != null) {
- var containerRef = reference.getChild('@typeAlias');
+ var containerRef = reference!.getChild('@typeAlias');
_typeAliases = <TypeAliasElement>[];
- for (var node in linkedContext.unit_withDeclarations.declarations) {
+ for (var node in linkedContext!.unit_withDeclarations.declarations) {
String name;
if (node is FunctionTypeAlias) {
name = node.name.name;
@@ -1422,10 +1424,10 @@
}
var reference = containerRef.getChild(name);
- var element = node.declaredElement as TypeAliasElement;
- element ??=
- TypeAliasElementImpl.forLinkedNodeFactory(this, reference, node);
- _typeAliases.add(element);
+ var element = node.declaredElement as TypeAliasElement?;
+ element ??= TypeAliasElementImpl.forLinkedNodeFactory(
+ this, reference, node as TypeAlias);
+ _typeAliases!.add(element);
}
}
@@ -1434,38 +1436,38 @@
/// Set the type aliases contained in this compilation unit to [typeAliases].
set typeAliases(List<TypeAliasElement> typeAliases) {
- for (TypeAliasElement typeAlias in typeAliases) {
+ for (var typeAlias in typeAliases) {
(typeAlias as ElementImpl).enclosingElement = this;
}
_typeAliases = typeAliases;
}
@override
- TypeParameterizedElementMixin get typeParameterContext => null;
+ TypeParameterizedElementMixin? get typeParameterContext => null;
@override
List<ClassElement> get types {
- if (_types != null) return _types;
+ if (_types != null) return _types!;
if (linkedNode != null) {
- var containerRef = reference.getChild('@class');
+ var containerRef = reference!.getChild('@class');
_types = <ClassElement>[];
- for (var node in linkedContext.unit_withDeclarations.declarations) {
+ for (var node in linkedContext!.unit_withDeclarations.declarations) {
if (node is ClassDeclaration) {
var name = node.name.name;
var reference = containerRef.getChild(name);
var element = node.declaredElement;
element ??= ClassElementImpl.forLinkedNode(this, reference, node);
- _types.add(element);
+ _types!.add(element);
} else if (node is ClassTypeAlias) {
var name = node.name.name;
var reference = containerRef.getChild(name);
var element = node.declaredElement;
element ??= ClassElementImpl.forLinkedNode(this, reference, node);
- _types.add(element);
+ _types!.add(element);
}
}
- return _types;
+ return _types!;
}
return _types ?? const <ClassElement>[];
@@ -1490,7 +1492,7 @@
object is CompilationUnitElementImpl && source == object.source;
@override
- T accept<T>(ElementVisitor<T> visitor) =>
+ T? accept<T>(ElementVisitor<T> visitor) =>
visitor.visitCompilationUnitElement(this);
@override
@@ -1499,7 +1501,7 @@
}
@override
- ClassElement getEnum(String enumName) {
+ ClassElement? getEnum(String enumName) {
for (ClassElement enumDeclaration in enums) {
if (enumDeclaration.name == enumName) {
return enumDeclaration;
@@ -1509,7 +1511,7 @@
}
@override
- ClassElement getType(String className) {
+ ClassElement? getType(String className) {
for (ClassElement type in types) {
if (type.name == className) {
return type;
@@ -1541,14 +1543,15 @@
<CompilationUnitElementImpl, List<TopLevelVariableElement>>{};
var units = unit.library.units;
- for (CompilationUnitElementImpl unit in units) {
- var context = unit.linkedContext;
+ for (var unit in units) {
+ var unitImpl = unit as CompilationUnitElementImpl;
+ var context = unitImpl.linkedContext!;
var accessorList = <PropertyAccessorElement>[];
- accessorMap[unit] = accessorList;
+ accessorMap[unitImpl] = accessorList;
var variableList = <TopLevelVariableElement>[];
- variableMap[unit] = variableList;
+ variableMap[unitImpl] = variableList;
// TODO(scheglov) Bad, we want to read only functions / variables.
var unitNode = context.unit_withDeclarations;
@@ -1557,18 +1560,19 @@
var variables = context.topLevelVariables(unitNode);
for (var variable in variables) {
var variableElement =
- variable.declaredElement as TopLevelVariableElementImpl;
+ variable.declaredElement as TopLevelVariableElementImpl?;
if (variableElement == null) {
var name = variable.name.name;
- var reference = unit.reference.getChild('@variable').getChild(name);
+ var reference =
+ unitImpl.reference!.getChild('@variable').getChild(name);
variableElement = TopLevelVariableElementImpl.forLinkedNodeFactory(
- unit, reference, variable);
+ unitImpl, reference, variable);
}
variableList.add(variableElement);
- accessorList.add(variableElement.getter);
+ accessorList.add(variableElement.getter!);
if (variableElement.setter != null) {
- accessorList.add(variableElement.setter);
+ accessorList.add(variableElement.setter!);
}
}
@@ -1580,21 +1584,22 @@
var name = node.name.name;
var containerRef = isGetter
- ? unit.reference.getChild('@getter')
- : unit.reference.getChild('@setter');
+ ? unitImpl.reference!.getChild('@getter')
+ : unitImpl.reference!.getChild('@setter');
var accessorElement =
- node.declaredElement as PropertyAccessorElementImpl;
+ node.declaredElement as PropertyAccessorElementImpl?;
accessorElement ??= PropertyAccessorElementImpl.forLinkedNode(
- unit, containerRef.getChild(name), node);
+ unitImpl, containerRef.getChild(name), node);
accessorList.add(accessorElement);
- var fieldRef = unit.reference.getChild('@variable').getChild(name);
- TopLevelVariableElementImpl field = fieldRef.element;
+ var fieldRef =
+ unitImpl.reference!.getChild('@variable').getChild(name);
+ var field = fieldRef.element as TopLevelVariableElementImpl?;
if (field == null) {
field = TopLevelVariableElementImpl(name, -1);
fieldRef.element = field;
- field.enclosingElement = unit;
+ field.enclosingElement = unitImpl;
field.isSynthetic = true;
field.isFinal = isGetter;
variableList.add(field);
@@ -1612,9 +1617,10 @@
}
}
- for (CompilationUnitElementImpl unit in units) {
- unit._accessors = accessorMap[unit];
- unit._variables = variableMap[unit];
+ for (var unit in units) {
+ var unitImpl = unit as CompilationUnitElementImpl;
+ unitImpl._accessors = accessorMap[unit];
+ unitImpl._variables = variableMap[unit];
}
}
}
@@ -1641,28 +1647,29 @@
class ConstFieldElementImpl_EnumValue extends ConstFieldElementImpl_ofEnum {
final int _index;
- ConstFieldElementImpl_EnumValue(EnumElementImpl enumElement, this._index)
- : super(enumElement);
+ ConstFieldElementImpl_EnumValue(
+ EnumElementImpl enumElement, String name, this._index)
+ : super(enumElement, name);
ConstFieldElementImpl_EnumValue.forLinkedNode(EnumElementImpl enumElement,
Reference reference, AstNode linkedNode, this._index)
: super.forLinkedNode(enumElement, reference, linkedNode);
@override
- Expression get constantInitializer => null;
+ Expression? get constantInitializer => null;
@override
- String get documentationComment {
+ String? get documentationComment {
if (linkedNode != null) {
- var context = enclosingUnit.linkedContext;
- var comment = context.getDocumentationComment(linkedNode);
+ var context = enclosingUnit.linkedContext!;
+ var comment = context.getDocumentationComment(linkedNode!);
return getCommentNodeRawText(comment);
}
return super.documentationComment;
}
@override
- EvaluationResultImpl get evaluationResult {
+ EvaluationResultImpl? get evaluationResult {
if (_evaluationResult == null) {
Map<String, DartObjectImpl> fieldMap = <String, DartObjectImpl>{
'index': DartObjectImpl(
@@ -1697,7 +1704,7 @@
@override
String get name {
if (linkedNode != null) {
- return reference.name;
+ return reference!.name;
}
return super.name;
}
@@ -1705,13 +1712,14 @@
@override
int get nameOffset {
if (linkedNode != null) {
- return enclosingUnit.linkedContext.getNameOffset(linkedNode);
+ return enclosingUnit.linkedContext!.getNameOffset(linkedNode!);
}
return super.nameOffset;
}
@override
- InterfaceType get type => ElementTypeProvider.current.getFieldType(this);
+ InterfaceType get type =>
+ ElementTypeProvider.current.getFieldType(this) as InterfaceType;
@override
InterfaceType get typeInternal => _enum.thisType;
@@ -1720,17 +1728,17 @@
/// The synthetic `values` field of an enum.
class ConstFieldElementImpl_EnumValues extends ConstFieldElementImpl_ofEnum {
ConstFieldElementImpl_EnumValues(EnumElementImpl enumElement)
- : super(enumElement) {
+ : super(enumElement, 'values') {
isSynthetic = true;
}
@override
EvaluationResultImpl get evaluationResult {
if (_evaluationResult == null) {
- List<DartObjectImpl> constantValues = <DartObjectImpl>[];
+ var constantValues = <DartObjectImpl>[];
for (FieldElement field in _enum.fields) {
if (field is ConstFieldElementImpl_EnumValue) {
- constantValues.add(field.evaluationResult.value);
+ constantValues.add(field.evaluationResult!.value!);
}
}
_evaluationResult = EvaluationResultImpl(
@@ -1741,21 +1749,22 @@
),
);
}
- return _evaluationResult;
+ return _evaluationResult!;
}
@override
String get name => 'values';
@override
- InterfaceType get type => ElementTypeProvider.current.getFieldType(this);
+ InterfaceType get type =>
+ ElementTypeProvider.current.getFieldType(this) as InterfaceType;
@override
InterfaceType get typeInternal {
if (_type == null) {
return _type = library.typeProvider.listType2(_enum.thisType);
}
- return _type;
+ return _type as InterfaceType;
}
}
@@ -1763,7 +1772,7 @@
abstract class ConstFieldElementImpl_ofEnum extends ConstFieldElementImpl {
final EnumElementImpl _enum;
- ConstFieldElementImpl_ofEnum(this._enum) : super(null, -1) {
+ ConstFieldElementImpl_ofEnum(this._enum, String name) : super(name, -1) {
enclosingElement = _enum;
}
@@ -1820,18 +1829,18 @@
with ConstructorElementMixin
implements ConstructorElement {
/// The constructor to which this constructor is redirecting.
- ConstructorElement _redirectedConstructor;
+ ConstructorElement? _redirectedConstructor;
/// The initializers for this constructor (used for evaluating constant
/// instance creation expressions).
- List<ConstructorInitializer> _constantInitializers;
+ List<ConstructorInitializer>? _constantInitializers;
/// The offset of the `.` before this constructor name or `null` if not named.
- int _periodOffset;
+ int? _periodOffset;
/// Return the offset of the character immediately following the last
/// character of this constructor's name, or `null` if not named.
- int _nameEnd;
+ int? _nameEnd;
/// For every constructor we initially set this flag to `true`, and then
/// set it to `false` during computing constant values if we detect that it
@@ -1846,7 +1855,7 @@
ConstructorElementImpl(String name, int offset) : super(name, offset);
ConstructorElementImpl.forLinkedNode(ClassElementImpl enclosingClass,
- Reference reference, ConstructorDeclarationImpl linkedNode)
+ Reference reference, ConstructorDeclarationImpl? linkedNode)
: super.forLinkedNode(enclosingClass, reference, linkedNode) {
linkedNode?.declaredElement = this;
}
@@ -1854,16 +1863,16 @@
/// Return the constant initializers for this element, which will be empty if
/// there are no initializers, or `null` if there was an error in the source.
List<ConstructorInitializer> get constantInitializers {
- if (_constantInitializers != null) return _constantInitializers;
+ if (_constantInitializers != null) return _constantInitializers!;
if (linkedNode != null) {
- linkedContext.applyResolution(linkedNode);
- return _constantInitializers = linkedContext.getConstructorInitializers(
- linkedNode,
+ linkedContext!.applyResolution(linkedNode!);
+ return _constantInitializers = linkedContext!.getConstructorInitializers(
+ linkedNode as ConstructorDeclaration,
);
}
- return _constantInitializers;
+ return _constantInitializers!;
}
set constantInitializers(List<ConstructorInitializer> constantInitializers) {
@@ -1876,7 +1885,7 @@
@override
String get displayName {
if (linkedNode != null) {
- return reference.name;
+ return reference!.name;
}
return super.displayName;
}
@@ -1888,7 +1897,7 @@
@override
bool get isConst {
if (linkedNode != null) {
- ConstructorDeclaration linkedNode = this.linkedNode;
+ var linkedNode = this.linkedNode as ConstructorDeclaration;
return linkedNode.constKeyword != null;
}
return hasModifier(Modifier.CONST);
@@ -1912,7 +1921,7 @@
@override
bool get isFactory {
if (linkedNode != null) {
- ConstructorDeclaration linkedNode = this.linkedNode;
+ var linkedNode = this.linkedNode as ConstructorDeclaration;
return linkedNode.factoryKeyword != null;
}
return hasModifier(Modifier.FACTORY);
@@ -1930,19 +1939,11 @@
ElementKind get kind => ElementKind.CONSTRUCTOR;
@override
- String get name {
- if (linkedNode != null) {
- return reference.name;
- }
- return super.name;
- }
-
- @override
- int get nameEnd {
+ int? get nameEnd {
if (linkedNode != null) {
var node = linkedNode as ConstructorDeclaration;
if (node.name != null) {
- return node.name.end;
+ return node.name!.end;
} else {
return node.returnType.end;
}
@@ -1951,12 +1952,12 @@
return _nameEnd;
}
- set nameEnd(int nameEnd) {
+ set nameEnd(int? nameEnd) {
_nameEnd = nameEnd;
}
@override
- int get periodOffset {
+ int? get periodOffset {
if (linkedNode != null) {
var node = linkedNode as ConstructorDeclaration;
return node.period?.offset;
@@ -1965,22 +1966,24 @@
return _periodOffset;
}
- set periodOffset(int periodOffset) {
+ set periodOffset(int? periodOffset) {
_periodOffset = periodOffset;
}
@override
- ConstructorElement get redirectedConstructor {
+ ConstructorElement? get redirectedConstructor {
if (_redirectedConstructor != null) return _redirectedConstructor;
if (linkedNode != null) {
- linkedContext.applyResolution(linkedNode);
- var context = enclosingUnit.linkedContext;
+ linkedContext!.applyResolution(linkedNode!);
+ var context = enclosingUnit.linkedContext!;
if (isFactory) {
- var node = context.getConstructorRedirected(linkedNode);
+ var node = context
+ .getConstructorRedirected(linkedNode as ConstructorDeclaration);
return _redirectedConstructor = node?.staticElement;
} else {
- var initializers = context.getConstructorInitializers(linkedNode);
+ var initializers = context
+ .getConstructorInitializers(linkedNode as ConstructorDeclaration);
for (var initializer in initializers) {
if (initializer is RedirectingConstructorInvocation) {
return _redirectedConstructor = initializer.staticElement;
@@ -1993,13 +1996,14 @@
return _redirectedConstructor;
}
- set redirectedConstructor(ConstructorElement redirectedConstructor) {
+ set redirectedConstructor(ConstructorElement? redirectedConstructor) {
_redirectedConstructor = redirectedConstructor;
}
@override
InterfaceType get returnType =>
- ElementTypeProvider.current.getExecutableReturnType(this);
+ ElementTypeProvider.current.getExecutableReturnType(this)
+ as InterfaceType;
@override
set returnType(DartType returnType) {
@@ -2008,7 +2012,7 @@
@override
InterfaceType get returnTypeInternal {
- return _returnType ??= enclosingElement.thisType;
+ return (_returnType ??= enclosingElement.thisType) as InterfaceType;
}
@override
@@ -2031,7 +2035,7 @@
}
@override
- T accept<T>(ElementVisitor<T> visitor) =>
+ T? accept<T>(ElementVisitor<T> visitor) =>
visitor.visitConstructorElement(this);
@override
@@ -2043,7 +2047,7 @@
/// of formal parameters, are evaluated.
void computeConstantDependencies() {
if (!isConstantEvaluated) {
- AnalysisOptionsImpl analysisOptions = context.analysisOptions;
+ var analysisOptions = context.analysisOptions as AnalysisOptionsImpl;
computeConstants(library.typeProvider, library.typeSystem,
context.declaredVariables, [this], analysisOptions.experimentStatus);
}
@@ -2055,8 +2059,7 @@
@override
bool get isDefaultConstructor {
// unnamed
- var name = this.name;
- if (name != null && name.isNotEmpty) {
+ if (name.isNotEmpty) {
return false;
}
// no required parameters
@@ -2101,28 +2104,28 @@
/// initializers. However, analyzer also needs to handle incorrect Dart code,
/// in which case there might be some constant variables that lack
/// initializers.
- Expression _constantInitializer;
+ Expression? _constantInitializer;
- EvaluationResultImpl _evaluationResult;
+ EvaluationResultImpl? _evaluationResult;
- Expression get constantInitializer {
- if (_constantInitializer != null) return _constantInitializer;
+ Expression? get constantInitializer {
+ if (_constantInitializer != null) return _constantInitializer!;
if (linkedNode != null) {
- linkedContext.applyResolution(linkedNode);
- return _constantInitializer = linkedContext.getInitializer(linkedNode);
+ linkedContext!.applyResolution(linkedNode!);
+ return _constantInitializer = linkedContext!.getInitializer(linkedNode!);
}
return _constantInitializer;
}
- set constantInitializer(Expression constantInitializer) {
+ set constantInitializer(Expression? constantInitializer) {
_constantInitializer = constantInitializer;
}
- EvaluationResultImpl get evaluationResult => _evaluationResult;
+ EvaluationResultImpl? get evaluationResult => _evaluationResult;
- set evaluationResult(EvaluationResultImpl evaluationResult) {
+ set evaluationResult(EvaluationResultImpl? evaluationResult) {
_evaluationResult = evaluationResult;
}
@@ -2133,10 +2136,10 @@
/// to be computed if it had not previously been computed, or `null` if either
/// this variable was not declared with the 'const' modifier or if the value
/// of this variable could not be computed because of errors.
- DartObject computeConstantValue() {
+ DartObject? computeConstantValue() {
if (evaluationResult == null) {
- AnalysisOptionsImpl analysisOptions = context.analysisOptions;
- computeConstants(library.typeProvider, library.typeSystem,
+ var analysisOptions = context.analysisOptions as AnalysisOptionsImpl;
+ computeConstants(library!.typeProvider, library!.typeSystem,
context.declaredVariables, [this], analysisOptions.experimentStatus);
}
return evaluationResult?.value;
@@ -2152,7 +2155,7 @@
: super(name, nameOffset);
DefaultFieldFormalParameterElementImpl.forLinkedNode(
- ElementImpl enclosing, Reference reference, AstNode linkedNode)
+ ElementImpl enclosing, Reference? reference, FormalParameter linkedNode)
: super.forLinkedNode(enclosing, reference, linkedNode);
}
@@ -2161,11 +2164,11 @@
with ConstVariableElement {
/// Initialize a newly created parameter element to have the given [name] and
/// [nameOffset].
- DefaultParameterElementImpl(String name, int nameOffset)
+ DefaultParameterElementImpl(String? name, int nameOffset)
: super(name, nameOffset);
DefaultParameterElementImpl.forLinkedNode(
- ElementImpl enclosing, Reference reference, AstNode linkedNode)
+ ElementImpl enclosing, Reference? reference, FormalParameter linkedNode)
: super.forLinkedNode(enclosing, reference, linkedNode);
}
@@ -2187,7 +2190,7 @@
ElementKind get kind => ElementKind.DYNAMIC;
@override
- T accept<T>(ElementVisitor<T> visitor) => null;
+ T? accept<T>(ElementVisitor<T> visitor) => null;
}
/// A concrete implementation of an [ElementAnnotation].
@@ -2295,19 +2298,19 @@
static const String _VISIBLE_FOR_TESTING_VARIABLE_NAME = "visibleForTesting";
@override
- Element element;
+ Element? element;
/// The compilation unit in which this annotation appears.
CompilationUnitElementImpl compilationUnit;
/// The AST of the annotation itself, cloned from the resolved AST for the
/// source code.
- Annotation annotationAst;
+ late Annotation annotationAst;
/// The result of evaluating this annotation as a compile-time constant
/// expression, or `null` if the compilation unit containing the variable has
/// not been resolved.
- EvaluationResultImpl evaluationResult;
+ EvaluationResultImpl? evaluationResult;
/// Initialize a newly created annotation. The given [compilationUnit] is the
/// compilation unit in which the annotation appears.
@@ -2323,19 +2326,19 @@
@override
bool get isAlwaysThrows =>
element is PropertyAccessorElement &&
- element.name == _ALWAYS_THROWS_VARIABLE_NAME &&
- element.library?.name == _META_LIB_NAME;
+ element!.name == _ALWAYS_THROWS_VARIABLE_NAME &&
+ element!.library!.name == _META_LIB_NAME;
@override
bool get isConstantEvaluated => evaluationResult != null;
@override
bool get isDeprecated {
- if (element?.library?.isDartCore == true) {
+ if (element?.library!.isDartCore == true) {
if (element is ConstructorElement) {
- return element.enclosingElement.name == _DEPRECATED_CLASS_NAME;
+ return element!.enclosingElement!.name == _DEPRECATED_CLASS_NAME;
} else if (element is PropertyAccessorElement) {
- return element.name == _DEPRECATED_VARIABLE_NAME;
+ return element!.name == _DEPRECATED_VARIABLE_NAME;
}
}
return false;
@@ -2344,119 +2347,119 @@
@override
bool get isDoNotStore =>
element is PropertyAccessorElement &&
- element.name == _DO_NOT_STORE_VARIABLE_NAME &&
- element.library?.name == _META_LIB_NAME;
+ element!.name == _DO_NOT_STORE_VARIABLE_NAME &&
+ element!.library!.name == _META_LIB_NAME;
@override
bool get isFactory =>
element is PropertyAccessorElement &&
- element.name == _FACTORY_VARIABLE_NAME &&
- element.library?.name == _META_LIB_NAME;
+ element!.name == _FACTORY_VARIABLE_NAME &&
+ element!.library!.name == _META_LIB_NAME;
@override
bool get isImmutable =>
element is PropertyAccessorElement &&
- element.name == _IMMUTABLE_VARIABLE_NAME &&
- element.library?.name == _META_LIB_NAME;
+ element!.name == _IMMUTABLE_VARIABLE_NAME &&
+ element!.library!.name == _META_LIB_NAME;
@override
bool get isInternal =>
element is PropertyAccessorElement &&
- element.name == _INTERNAL_VARIABLE_NAME &&
- element.library?.name == _META_LIB_NAME;
+ element!.name == _INTERNAL_VARIABLE_NAME &&
+ element!.library!.name == _META_LIB_NAME;
@override
bool get isIsTest =>
element is PropertyAccessorElement &&
- element.name == _IS_TEST_VARIABLE_NAME &&
- element.library?.name == _META_LIB_NAME;
+ element!.name == _IS_TEST_VARIABLE_NAME &&
+ element!.library!.name == _META_LIB_NAME;
@override
bool get isIsTestGroup =>
element is PropertyAccessorElement &&
- element.name == _IS_TEST_GROUP_VARIABLE_NAME &&
- element.library?.name == _META_LIB_NAME;
+ element!.name == _IS_TEST_GROUP_VARIABLE_NAME &&
+ element!.library!.name == _META_LIB_NAME;
@override
bool get isJS =>
element is ConstructorElement &&
- element.enclosingElement.name == _JS_CLASS_NAME &&
- element.library?.name == _JS_LIB_NAME;
+ element!.enclosingElement!.name == _JS_CLASS_NAME &&
+ element!.library!.name == _JS_LIB_NAME;
@override
bool get isLiteral =>
element is PropertyAccessorElement &&
- element.name == _LITERAL_VARIABLE_NAME &&
- element.library?.name == _META_LIB_NAME;
+ element!.name == _LITERAL_VARIABLE_NAME &&
+ element!.library!.name == _META_LIB_NAME;
@override
bool get isMustCallSuper =>
element is PropertyAccessorElement &&
- element.name == _MUST_CALL_SUPER_VARIABLE_NAME &&
- element.library?.name == _META_LIB_NAME;
+ element!.name == _MUST_CALL_SUPER_VARIABLE_NAME &&
+ element!.library!.name == _META_LIB_NAME;
@override
bool get isNonVirtual =>
element is PropertyAccessorElement &&
- element.name == _NON_VIRTUAL_VARIABLE_NAME &&
- element.library?.name == _META_LIB_NAME;
+ element!.name == _NON_VIRTUAL_VARIABLE_NAME &&
+ element!.library!.name == _META_LIB_NAME;
@override
bool get isOptionalTypeArgs =>
element is PropertyAccessorElement &&
- element.name == _OPTIONAL_TYPE_ARGS_VARIABLE_NAME &&
- element.library?.name == _META_LIB_NAME;
+ element!.name == _OPTIONAL_TYPE_ARGS_VARIABLE_NAME &&
+ element!.library!.name == _META_LIB_NAME;
@override
bool get isOverride =>
element is PropertyAccessorElement &&
- element.name == _OVERRIDE_VARIABLE_NAME &&
- element.library?.isDartCore == true;
+ element!.name == _OVERRIDE_VARIABLE_NAME &&
+ element!.library!.isDartCore == true;
@override
bool get isProtected =>
element is PropertyAccessorElement &&
- element.name == _PROTECTED_VARIABLE_NAME &&
- element.library?.name == _META_LIB_NAME;
+ element!.name == _PROTECTED_VARIABLE_NAME &&
+ element!.library!.name == _META_LIB_NAME;
@override
bool get isProxy =>
element is PropertyAccessorElement &&
- element.name == PROXY_VARIABLE_NAME &&
- element.library?.isDartCore == true;
+ element!.name == PROXY_VARIABLE_NAME &&
+ element!.library!.isDartCore == true;
@override
bool get isRequired =>
element is ConstructorElement &&
- element.enclosingElement.name == _REQUIRED_CLASS_NAME &&
- element.library?.name == _META_LIB_NAME ||
+ element!.enclosingElement!.name == _REQUIRED_CLASS_NAME &&
+ element!.library!.name == _META_LIB_NAME ||
element is PropertyAccessorElement &&
- element.name == _REQUIRED_VARIABLE_NAME &&
- element.library?.name == _META_LIB_NAME;
+ element!.name == _REQUIRED_VARIABLE_NAME &&
+ element!.library!.name == _META_LIB_NAME;
@override
bool get isSealed =>
element is PropertyAccessorElement &&
- element.name == _SEALED_VARIABLE_NAME &&
- element.library?.name == _META_LIB_NAME;
+ element!.name == _SEALED_VARIABLE_NAME &&
+ element!.library!.name == _META_LIB_NAME;
@override
bool get isTarget =>
element is ConstructorElement &&
- element.enclosingElement.name == _TARGET_CLASS_NAME &&
- element.library?.name == _META_META_LIB_NAME;
+ element!.enclosingElement!.name == _TARGET_CLASS_NAME &&
+ element!.library!.name == _META_META_LIB_NAME;
@override
bool get isVisibleForTemplate =>
element is PropertyAccessorElement &&
- element.name == _VISIBLE_FOR_TEMPLATE_VARIABLE_NAME &&
- element.library?.name == _NG_META_LIB_NAME;
+ element!.name == _VISIBLE_FOR_TEMPLATE_VARIABLE_NAME &&
+ element!.library!.name == _NG_META_LIB_NAME;
@override
bool get isVisibleForTesting =>
element is PropertyAccessorElement &&
- element.name == _VISIBLE_FOR_TESTING_VARIABLE_NAME &&
- element.library?.name == _META_LIB_NAME;
+ element!.name == _VISIBLE_FOR_TESTING_VARIABLE_NAME &&
+ element!.library!.name == _META_LIB_NAME;
@override
LibraryElement get library => compilationUnit.library;
@@ -2469,10 +2472,10 @@
Source get source => compilationUnit.source;
@override
- DartObject computeConstantValue() {
+ DartObject? computeConstantValue() {
if (evaluationResult == null) {
- AnalysisOptionsImpl analysisOptions = context.analysisOptions;
- LibraryElement library = compilationUnit.library;
+ var analysisOptions = context.analysisOptions as AnalysisOptionsImpl;
+ var library = compilationUnit.library;
computeConstants(library.typeProvider, library.typeSystem,
context.declaredVariables, [this], analysisOptions.experimentStatus);
}
@@ -2499,13 +2502,13 @@
/// The enclosing element of this element, or `null` if this element is at the
/// root of the element structure.
- ElementImpl _enclosingElement;
+ ElementImpl? _enclosingElement;
- Reference reference;
- final AstNode linkedNode;
+ Reference? reference;
+ final AstNode? linkedNode;
/// The name of this element.
- String _name;
+ String? _name;
/// The offset of the name of this element in the file that contains the
/// declaration of this element.
@@ -2515,32 +2518,32 @@
int _modifiers = 0;
/// A list containing all of the metadata associated with this element.
- List<ElementAnnotation> _metadata;
+ List<ElementAnnotation>? _metadata;
/// A cached copy of the calculated hashCode for this element.
- int _cachedHashCode;
+ int? _cachedHashCode;
/// A cached copy of the calculated location for this element.
- ElementLocation _cachedLocation;
+ ElementLocation? _cachedLocation;
/// The documentation comment for this element.
- String _docComment;
+ String? _docComment;
/// The offset of the beginning of the element's code in the file that
/// contains the element, or `null` if the element is synthetic.
- int _codeOffset;
+ int? _codeOffset;
/// The length of the element's code, or `null` if the element is synthetic.
- int _codeLength;
+ int? _codeLength;
/// The language version for the library.
- LibraryLanguageVersion _languageVersion;
+ LibraryLanguageVersion? _languageVersion;
/// Initialize a newly created element to have the given [name] at the given
/// [_nameOffset].
- ElementImpl(String name, this._nameOffset, {this.reference})
+ ElementImpl(String? name, this._nameOffset, {this.reference})
: linkedNode = null {
- _name = StringUtilities.intern(name);
+ _name = name != null ? StringUtilities.intern(name) : null;
reference?.element = this;
}
@@ -2556,46 +2559,43 @@
linkedNode = null;
/// The length of the element's code, or `null` if the element is synthetic.
- int get codeLength => _codeLength;
+ int? get codeLength => _codeLength;
/// The offset of the beginning of the element's code in the file that
/// contains the element, or `null` if the element is synthetic.
- int get codeOffset => _codeOffset;
+ int? get codeOffset => _codeOffset;
@override
AnalysisContext get context {
- if (_enclosingElement == null) {
- return null;
- }
- return _enclosingElement.context;
+ return _enclosingElement!.context;
}
@override
Element get declaration => this;
@override
- String get displayName => _name;
+ String get displayName => _name ?? '';
@override
- String get documentationComment => _docComment;
+ String? get documentationComment => _docComment;
/// The documentation comment source for this element.
- set documentationComment(String doc) {
+ set documentationComment(String? doc) {
_docComment = doc?.replaceAll('\r\n', '\n');
}
@override
- Element get enclosingElement => _enclosingElement;
+ Element? get enclosingElement => _enclosingElement;
/// Set the enclosing element of this element to the given [element].
- set enclosingElement(Element element) {
- _enclosingElement = element as ElementImpl;
+ set enclosingElement(Element? element) {
+ _enclosingElement = element as ElementImpl?;
}
/// Return the enclosing unit element (which might be the same as `this`), or
/// `null` if this element is not contained in any compilation unit.
CompilationUnitElementImpl get enclosingUnit {
- return _enclosingElement?.enclosingUnit;
+ return _enclosingElement!.enclosingUnit;
}
@override
@@ -2823,10 +2823,10 @@
/// Return an identifier that uniquely identifies this element among the
/// children of this element's parent.
- String get identifier => name;
+ String get identifier => name!;
bool get isNonFunctionTypeAliasesEnabled {
- return library.featureSet.isEnabled(Feature.nonfunction_type_aliases);
+ return library!.featureSet.isEnabled(Feature.nonfunction_type_aliases);
}
@override
@@ -2844,7 +2844,7 @@
@override
bool get isSynthetic {
if (linkedNode != null) {
- return linkedNode.isSynthetic;
+ return linkedNode!.isSynthetic;
}
return hasModifier(Modifier.SYNTHETIC);
}
@@ -2855,33 +2855,27 @@
}
@override
- LibraryElement get library => thisOrAncestorOfType();
+ LibraryElementImpl? get library => thisOrAncestorOfType();
@override
- Source get librarySource => library?.source;
+ Source? get librarySource => library?.source;
- LinkedUnitContext get linkedContext {
- return _enclosingElement.linkedContext;
+ LinkedUnitContext? get linkedContext {
+ return (enclosingElement as ElementImpl).linkedContext;
}
@override
ElementLocation get location {
- if (_cachedLocation == null) {
- if (library == null) {
- return ElementLocationImpl.con1(this);
- }
- _cachedLocation = ElementLocationImpl.con1(this);
- }
- return _cachedLocation;
+ return _cachedLocation ??= ElementLocationImpl.con1(this);
}
@override
List<ElementAnnotation> get metadata {
- if (_metadata != null) return _metadata;
+ if (_metadata != null) return _metadata!;
if (linkedNode != null) {
- linkedContext.applyResolution(linkedNode);
- var metadata = linkedContext.getMetadata(linkedNode);
+ linkedContext!.applyResolution(linkedNode!);
+ var metadata = linkedContext!.getMetadata(linkedNode!);
return _metadata = _buildAnnotations2(enclosingUnit, metadata);
}
@@ -2893,15 +2887,15 @@
}
@override
- String get name => _name;
+ String? get name => _name;
/// Changes the name of this element.
- set name(String name) {
+ set name(String? name) {
_name = name;
}
@override
- int get nameLength => displayName != null ? displayName.length : 0;
+ int get nameLength => displayName.length;
@override
int get nameOffset => _nameOffset;
@@ -2914,26 +2908,23 @@
@override
AnalysisSession get session {
- return _enclosingElement?.session;
+ return _enclosingElement!.session;
}
@override
- Source get source {
- if (_enclosingElement == null) {
- return null;
- }
- return _enclosingElement.source;
+ Source? get source {
+ return enclosingElement?.source;
}
/// Return the context to resolve type parameters in, or `null` if neither
/// this element nor any of its ancestors is of a kind that can declare type
/// parameters.
- TypeParameterizedElementMixin get typeParameterContext {
+ TypeParameterizedElementMixin? get typeParameterContext {
return _enclosingElement?.typeParameterContext;
}
NullabilitySuffix get _noneOrStarSuffix {
- return library?.isNonNullableByDefault == true
+ return library!.isNonNullableByDefault == true
? NullabilitySuffix.none
: NullabilitySuffix.star;
}
@@ -2966,7 +2957,7 @@
}
@override
- String getDisplayString({@required bool withNullability}) {
+ String getDisplayString({required bool withNullability}) {
var builder = ElementDisplayStringBuilder(
skipAllDynamicArguments: false,
withNullability: withNullability,
@@ -2976,13 +2967,10 @@
}
@override
- String getExtendedDisplayName(String shortName) {
+ String getExtendedDisplayName(String? shortName) {
shortName ??= displayName;
- Source source = this.source;
- if (source != null) {
- return "$shortName (${source.fullName})";
- }
- return shortName;
+ var source = this.source;
+ return "$shortName (${source?.fullName})";
}
/// Return `true` if this element has the given [modifier] associated with it.
@@ -2990,8 +2978,8 @@
BooleanArray.get(_modifiers, modifier.ordinal);
@override
- bool isAccessibleIn(LibraryElement library) {
- if (Identifier.isPrivateName(name)) {
+ bool isAccessibleIn(LibraryElement? library) {
+ if (Identifier.isPrivateName(name!)) {
return library == this.library;
}
return true;
@@ -2999,10 +2987,8 @@
/// Use the given [visitor] to visit all of the [children] in the given array.
void safelyVisitChildren(List<Element> children, ElementVisitor visitor) {
- if (children != null) {
- for (Element child in children) {
- child.accept(visitor);
- }
+ for (Element child in children) {
+ child.accept(visitor);
}
}
@@ -3020,7 +3006,7 @@
@override
E thisOrAncestorMatching<E extends Element>(Predicate<Element> predicate) {
- Element element = this;
+ Element? element = this;
while (element != null && !predicate(element)) {
element = element.enclosingElement;
}
@@ -3028,12 +3014,12 @@
}
@override
- E thisOrAncestorOfType<E extends Element>() {
- Element element = this;
+ E? thisOrAncestorOfType<E extends Element>() {
+ Element? element = this;
while (element != null && element is! E) {
element = element.enclosingElement;
}
- return element as E;
+ return element as E?;
}
@override
@@ -3054,12 +3040,12 @@
return const <ElementAnnotation>[];
}
- var annotations = List<ElementAnnotation>.filled(length, null);
+ var annotations = <ElementAnnotation>[];
for (int i = 0; i < length; i++) {
var ast = nodeList[i];
- annotations[i] = ElementAnnotationImpl(unit)
+ annotations.add(ElementAnnotationImpl(unit)
..annotationAst = ast
- ..element = ast.element;
+ ..element = ast.element);
}
return annotations;
}
@@ -3067,8 +3053,8 @@
/// If the given [type] is a generic function type, then the element
/// associated with the type is implicitly a child of this element and should
/// be visited by the given [visitor].
- void _safelyVisitPossibleChild(DartType type, ElementVisitor visitor) {
- Element element = type?.element;
+ void _safelyVisitPossibleChild(DartType? type, ElementVisitor visitor) {
+ var element = type?.element;
if (element is GenericFunctionTypeElementImpl &&
element.enclosingElement is! FunctionTypeAliasElement) {
element.accept(visitor);
@@ -3098,21 +3084,21 @@
static const int _SEPARATOR_CHAR = 0x3B;
/// The path to the element whose location is represented by this object.
- List<String> _components;
+ late final List<String> _components;
/// The object managing [indexKeyId] and [indexLocationId].
- Object indexOwner;
+ Object? indexOwner;
/// A cached id of this location in index.
- int indexKeyId;
+ int? indexKeyId;
/// A cached id of this location in index.
- int indexLocationId;
+ int? indexLocationId;
/// Initialize a newly created location to represent the given [element].
ElementLocationImpl.con1(Element element) {
List<String> components = <String>[];
- Element ancestor = element;
+ Element? ancestor = element;
while (ancestor != null) {
components.insert(0, (ancestor as ElementImpl).identifier);
ancestor = ancestor.enclosingElement;
@@ -3247,17 +3233,17 @@
List<InterfaceType> get allSupertypes => <InterfaceType>[supertype];
@override
- int get codeLength {
+ int? get codeLength {
if (linkedNode != null) {
- return linkedContext.getCodeLength(linkedNode);
+ return linkedContext!.getCodeLength(linkedNode!);
}
return super.codeLength;
}
@override
- int get codeOffset {
+ int? get codeOffset {
if (linkedNode != null) {
- return linkedContext.getCodeOffset(linkedNode);
+ return linkedContext!.getCodeOffset(linkedNode!);
}
return super.codeOffset;
}
@@ -3276,10 +3262,10 @@
}
@override
- String get documentationComment {
+ String? get documentationComment {
if (linkedNode != null) {
- var context = enclosingUnit.linkedContext;
- var comment = context.getDocumentationComment(linkedNode);
+ var context = enclosingUnit.linkedContext!;
+ var comment = context.getDocumentationComment(linkedNode!);
return getCommentNodeRawText(comment);
}
return super.documentationComment;
@@ -3338,15 +3324,15 @@
@override
String get name {
if (linkedNode != null) {
- return reference.name;
+ return reference!.name;
}
- return super.name;
+ return super.name!;
}
@override
int get nameOffset {
if (linkedNode != null) {
- return enclosingUnit.linkedContext.getNameOffset(linkedNode);
+ return enclosingUnit.linkedContext!.getNameOffset(linkedNode!);
}
return super.nameOffset;
@@ -3360,7 +3346,7 @@
const <TypeParameterElement>[];
@override
- ConstructorElement get unnamedConstructor => null;
+ ConstructorElement? get unnamedConstructor => null;
@override
void appendTo(ElementDisplayStringBuilder builder) {
@@ -3374,13 +3360,13 @@
method.enclosingElement = this;
if (linkedNode != null) {
method.returnType = library.typeProvider.stringType;
- method.reference = reference.getChild('@method').getChild('toString');
+ method.reference = reference!.getChild('@method').getChild('toString');
}
_methods = <MethodElement>[method];
}
@override
- ConstructorElement getNamedConstructor(String name) => null;
+ ConstructorElement? getNamedConstructor(String name) => null;
void _resynthesizeMembers2() {
var fields = <FieldElementImpl>[];
@@ -3395,7 +3381,7 @@
..type = library.typeProvider.intType;
fields.add(field);
getters.add(PropertyAccessorElementImpl_ImplicitGetter(field,
- reference: reference.getChild('@getter').getChild('index'))
+ reference: reference!.getChild('@getter').getChild('index'))
..enclosingElement = this);
}
@@ -3404,12 +3390,12 @@
var field = ConstFieldElementImpl_EnumValues(this);
fields.add(field);
getters.add(PropertyAccessorElementImpl_ImplicitGetter(field,
- reference: reference.getChild('@getter').getChild('values'))
+ reference: reference!.getChild('@getter').getChild('values'))
..enclosingElement = this);
}
// Build fields for all enum constants.
- var containerRef = reference.getChild('@constant');
+ var containerRef = reference!.getChild('@constant');
var constants = (linkedNode as EnumDeclaration).constants;
for (var i = 0; i < constants.length; ++i) {
var constant = constants[i];
@@ -3418,7 +3404,7 @@
var field = ConstFieldElementImpl_EnumValue.forLinkedNode(
this, reference, constant, i);
fields.add(field);
- getters.add(field.getter);
+ getters.add(field.getter as PropertyAccessorElementImpl);
}
_fields = fields;
@@ -3428,27 +3414,27 @@
}
/// A base class for concrete implementations of an [ExecutableElement].
-abstract class ExecutableElementImpl extends ElementImpl
+abstract class ExecutableElementImpl extends _ExistingElementImpl
with TypeParameterizedElementMixin
implements ExecutableElement, ElementImplWithFunctionType {
/// A list containing all of the parameters defined by this executable
/// element.
- List<ParameterElement> _parameters;
+ List<ParameterElement>? _parameters;
/// The inferred return type of this executable element.
- DartType _returnType;
+ DartType? _returnType;
/// The type of function defined by this executable element.
- FunctionType _type;
+ FunctionType? _type;
/// Initialize a newly created executable element to have the given [name] and
/// [offset].
- ExecutableElementImpl(String name, int offset, {Reference reference})
+ ExecutableElementImpl(String name, int offset, {Reference? reference})
: super(name, offset, reference: reference);
/// Initialize using the given linked node.
ExecutableElementImpl.forLinkedNode(
- ElementImpl enclosing, Reference reference, AstNode linkedNode)
+ ElementImpl enclosing, Reference reference, AstNode? linkedNode)
: super.forLinkedNode(enclosing, reference, linkedNode) {
if (linkedNode is MethodDeclaration) {
linkedNode.name.staticElement = this;
@@ -3458,17 +3444,17 @@
}
@override
- int get codeLength {
+ int? get codeLength {
if (linkedNode != null) {
- return linkedContext.getCodeLength(linkedNode);
+ return linkedContext!.getCodeLength(linkedNode!);
}
return super.codeLength;
}
@override
- int get codeOffset {
+ int? get codeOffset {
if (linkedNode != null) {
- return linkedContext.getCodeOffset(linkedNode);
+ return linkedContext!.getCodeOffset(linkedNode!);
}
return super.codeOffset;
}
@@ -3476,25 +3462,28 @@
@override
String get displayName {
if (linkedNode != null) {
- return reference.name;
+ return reference!.name;
}
return super.displayName;
}
@override
- String get documentationComment {
+ String? get documentationComment {
if (linkedNode != null) {
- var context = enclosingUnit.linkedContext;
- var comment = context.getDocumentationComment(linkedNode);
+ var context = enclosingUnit.linkedContext!;
+ var comment = context.getDocumentationComment(linkedNode!);
return getCommentNodeRawText(comment);
}
return super.documentationComment;
}
@override
+ Element get enclosingElement => super.enclosingElement!;
+
+ @override
bool get hasImplicitReturnType {
if (linkedNode != null) {
- return linkedContext.hasImplicitReturnType(linkedNode);
+ return linkedContext!.hasImplicitReturnType(linkedNode!);
}
return hasModifier(Modifier.IMPLICIT_TYPE);
}
@@ -3507,7 +3496,8 @@
@override
bool get isAbstract {
if (linkedNode != null) {
- return !isExternal && enclosingUnit.linkedContext.isAbstract(linkedNode);
+ return !isExternal &&
+ enclosingUnit.linkedContext!.isAbstract(linkedNode!);
}
return hasModifier(Modifier.ABSTRACT);
}
@@ -3515,7 +3505,7 @@
@override
bool get isAsynchronous {
if (linkedNode != null) {
- return enclosingUnit.linkedContext.isAsynchronous(linkedNode);
+ return enclosingUnit.linkedContext!.isAsynchronous(linkedNode!);
}
return hasModifier(Modifier.ASYNCHRONOUS);
}
@@ -3528,7 +3518,7 @@
@override
bool get isExternal {
if (linkedNode != null) {
- return enclosingUnit.linkedContext.isExternal(linkedNode);
+ return enclosingUnit.linkedContext!.isExternal(linkedNode!);
}
return hasModifier(Modifier.EXTERNAL);
}
@@ -3541,7 +3531,7 @@
@override
bool get isGenerator {
if (linkedNode != null) {
- return enclosingUnit.linkedContext.isGenerator(linkedNode);
+ return enclosingUnit.linkedContext!.isGenerator(linkedNode!);
}
return hasModifier(Modifier.GENERATOR);
}
@@ -3560,15 +3550,15 @@
@override
String get name {
if (linkedNode != null) {
- return reference.name;
+ return reference!.name;
}
- return super.name;
+ return super.name!;
}
@override
int get nameOffset {
if (linkedNode != null) {
- return enclosingUnit.linkedContext.getNameOffset(linkedNode);
+ return enclosingUnit.linkedContext!.getNameOffset(linkedNode!);
}
return super.nameOffset;
@@ -3592,13 +3582,13 @@
///
/// In most cases, the [parameters] getter should be used instead.
List<ParameterElement> get parametersInternal {
- if (_parameters != null) return _parameters;
+ if (_parameters != null) return _parameters!;
if (linkedNode != null) {
- linkedContext.applyResolution(linkedNode);
- var context = enclosingUnit.linkedContext;
- var containerRef = reference.getChild('@parameter');
- var formalParameters = context.getFormalParameters(linkedNode);
+ linkedContext!.applyResolution(linkedNode!);
+ var context = enclosingUnit.linkedContext!;
+ var containerRef = reference!.getChild('@parameter');
+ var formalParameters = context.getFormalParameters(linkedNode!);
_parameters = ParameterElementImpl.forLinkedNodeList(
this,
context,
@@ -3628,13 +3618,13 @@
@override
DartType get returnTypeInternal {
- if (_returnType != null) return _returnType;
+ if (_returnType != null) return _returnType!;
if (linkedNode != null) {
- linkedContext.applyResolution(linkedNode);
- return _returnType;
+ linkedContext!.applyResolution(linkedNode!);
+ return _returnType!;
}
- return _returnType;
+ return _returnType!;
}
@override
@@ -3646,7 +3636,7 @@
@override
FunctionType get typeInternal {
- if (_type != null) return _type;
+ if (_type != null) return _type!;
return _type = FunctionTypeImpl(
typeFormals: typeParameters,
@@ -3684,11 +3674,11 @@
class ExportElementImpl extends UriReferencedElementImpl
implements ExportElement {
/// The library that is exported from this library by this export directive.
- LibraryElement _exportedLibrary;
+ LibraryElement? _exportedLibrary;
/// The combinators that were specified as part of the export directive in the
/// order in which they were specified.
- List<NamespaceCombinator> _combinators;
+ List<NamespaceCombinator>? _combinators;
/// Initialize a newly created export element at the given [offset].
ExportElementImpl(int offset) : super(null, offset);
@@ -3701,12 +3691,12 @@
@override
List<NamespaceCombinator> get combinators {
- if (_combinators != null) return _combinators;
+ if (_combinators != null) return _combinators!;
if (linkedNode != null) {
- ExportDirective node = linkedNode;
+ var node = linkedNode as ExportDirective;
return _combinators = ImportElementImpl._buildCombinators2(
- enclosingUnit.linkedContext,
+ enclosingUnit.linkedContext!,
node.combinators,
);
}
@@ -3720,27 +3710,27 @@
@override
CompilationUnitElementImpl get enclosingUnit {
- LibraryElementImpl enclosingLibrary = enclosingElement;
+ var enclosingLibrary = enclosingElement as LibraryElementImpl;
return enclosingLibrary._definingCompilationUnit;
}
@override
- LibraryElement get exportedLibrary {
+ LibraryElement? get exportedLibrary {
if (_exportedLibrary != null) return _exportedLibrary;
if (linkedNode != null) {
- linkedContext.applyResolution(linkedNode);
+ linkedContext!.applyResolution(linkedNode!);
}
return _exportedLibrary;
}
- set exportedLibrary(LibraryElement exportedLibrary) {
+ set exportedLibrary(LibraryElement? exportedLibrary) {
_exportedLibrary = exportedLibrary;
}
@override
- String get identifier => exportedLibrary.name;
+ String get identifier => exportedLibrary!.name!;
@override
ElementKind get kind => ElementKind.EXPORT;
@@ -3748,16 +3738,16 @@
@override
int get nameOffset {
if (linkedNode != null) {
- return linkedContext.getDirectiveOffset(linkedNode);
+ return linkedContext!.getDirectiveOffset(linkedNode as Directive);
}
return super.nameOffset;
}
@override
- String get uri {
+ String? get uri {
if (linkedNode != null) {
- ExportDirective node = linkedNode;
+ var node = linkedNode as ExportDirective;
return node.uri.stringValue;
}
@@ -3765,7 +3755,7 @@
}
@override
- T accept<T>(ElementVisitor<T> visitor) => visitor.visitExportElement(this);
+ T? accept<T>(ElementVisitor<T> visitor) => visitor.visitExportElement(this);
@override
void appendTo(ElementDisplayStringBuilder builder) {
@@ -3774,21 +3764,21 @@
}
/// A concrete implementation of an [ExtensionElement].
-class ExtensionElementImpl extends ElementImpl
+class ExtensionElementImpl extends _ExistingElementImpl
with TypeParameterizedElementMixin
implements ExtensionElement {
/// The type being extended.
- DartType _extendedType;
+ DartType? _extendedType;
/// A list containing all of the accessors (getters and setters) contained in
/// this extension.
- List<PropertyAccessorElement> _accessors;
+ List<PropertyAccessorElement>? _accessors;
/// A list containing all of the fields contained in this extension.
- List<FieldElement> _fields;
+ List<FieldElement>? _fields;
/// A list containing all of the methods contained in this extension.
- List<MethodElement> _methods;
+ List<MethodElement>? _methods;
/// Initialize a newly created extension element to have the given [name] at
/// the given [offset] in the file that contains the declaration of this
@@ -3805,14 +3795,14 @@
@override
List<PropertyAccessorElement> get accessors {
if (_accessors != null) {
- return _accessors;
+ return _accessors!;
}
if (linkedNode != null) {
if (linkedNode is ExtensionDeclaration) {
_createPropertiesAndAccessors();
assert(_accessors != null);
- return _accessors;
+ return _accessors!;
} else {
return _accessors = const [];
}
@@ -3829,17 +3819,17 @@
}
@override
- int get codeLength {
+ int? get codeLength {
if (linkedNode != null) {
- return linkedContext.getCodeLength(linkedNode);
+ return linkedContext!.getCodeLength(linkedNode!);
}
return super.codeLength;
}
@override
- int get codeOffset {
+ int? get codeOffset {
if (linkedNode != null) {
- return linkedContext.getCodeOffset(linkedNode);
+ return linkedContext!.getCodeOffset(linkedNode!);
}
return super.codeOffset;
}
@@ -3848,16 +3838,21 @@
String get displayName => name ?? '';
@override
- String get documentationComment {
+ String? get documentationComment {
if (linkedNode != null) {
- var context = enclosingUnit.linkedContext;
- var comment = context.getDocumentationComment(linkedNode);
+ var context = enclosingUnit.linkedContext!;
+ var comment = context.getDocumentationComment(linkedNode!);
return getCommentNodeRawText(comment);
}
return super.documentationComment;
}
@override
+ CompilationUnitElementImpl get enclosingElement {
+ return _enclosingElement as CompilationUnitElementImpl;
+ }
+
+ @override
DartType get extendedType =>
ElementTypeProvider.current.getExtendedType(this);
@@ -3866,27 +3861,28 @@
}
DartType get extendedTypeInternal {
- if (_extendedType != null) return _extendedType;
+ if (_extendedType != null) return _extendedType!;
if (linkedNode != null) {
var linkedNode = this.linkedNode as ExtensionDeclaration;
- return _extendedType = linkedNode.extendedType.type;
+ linkedContext!.applyResolution(linkedNode);
+ return _extendedType = linkedNode.extendedType.type!;
}
- return _extendedType;
+ return _extendedType!;
}
@override
List<FieldElement> get fields {
if (_fields != null) {
- return _fields;
+ return _fields!;
}
if (linkedNode != null) {
if (linkedNode is ExtensionDeclaration) {
_createPropertiesAndAccessors();
assert(_fields != null);
- return _fields;
+ return _fields!;
} else {
return _fields = const [];
}
@@ -3905,7 +3901,7 @@
@override
String get identifier {
if (linkedNode != null) {
- return reference.name;
+ return reference!.name;
}
return super.identifier;
}
@@ -3919,19 +3915,19 @@
@override
List<MethodElement> get methods {
if (_methods != null) {
- return _methods;
+ return _methods!;
}
if (linkedNode != null) {
- var context = enclosingUnit.linkedContext;
- var containerRef = reference.getChild('@method');
+ var context = enclosingUnit.linkedContext!;
+ var containerRef = reference!.getChild('@method');
return _methods = context
- .getMethods(linkedNode)
+ .getMethods(linkedNode as CompilationUnitMember)
.where((node) => node.propertyKeyword == null)
.map((node) {
var name = node.name.name;
var reference = containerRef.getChild(name);
- var element = node.declaredElement as MethodElement;
+ var element = node.declaredElement as MethodElement?;
element ??= MethodElementImpl.forLinkedNode(this, reference, node);
return element;
}).toList();
@@ -3948,7 +3944,7 @@
}
@override
- String get name {
+ String? get name {
if (linkedNode != null) {
return (linkedNode as ExtensionDeclaration).name?.name;
}
@@ -3958,7 +3954,7 @@
@override
int get nameOffset {
if (linkedNode != null) {
- return enclosingUnit.linkedContext.getNameOffset(linkedNode);
+ return enclosingUnit.linkedContext!.getNameOffset(linkedNode!);
}
return super.nameOffset;
@@ -3974,7 +3970,7 @@
}
@override
- T accept<T>(ElementVisitor<T> visitor) {
+ T? accept<T>(ElementVisitor<T> visitor) {
return visitor.visitExtensionElement(this);
}
@@ -3984,7 +3980,7 @@
}
@override
- PropertyAccessorElement getGetter(String getterName) {
+ PropertyAccessorElement? getGetter(String getterName) {
int length = accessors.length;
for (int i = 0; i < length; i++) {
PropertyAccessorElement accessor = accessors[i];
@@ -3996,7 +3992,7 @@
}
@override
- MethodElement getMethod(String methodName) {
+ MethodElement? getMethod(String methodName) {
int length = methods.length;
for (int i = 0; i < length; i++) {
MethodElement method = methods[i];
@@ -4008,7 +4004,7 @@
}
@override
- PropertyAccessorElement getSetter(String setterName) {
+ PropertyAccessorElement? getSetter(String setterName) {
return AbstractClassElementImpl.getSetterFromAccessors(
setterName, accessors);
}
@@ -4027,25 +4023,25 @@
assert(_accessors == null);
assert(_fields == null);
- var context = enclosingUnit.linkedContext;
+ var context = enclosingUnit.linkedContext!;
var accessorList = <PropertyAccessorElement>[];
var fieldList = <FieldElement>[];
- var fields = context.getFields(linkedNode);
+ var fields = context.getFields(linkedNode as CompilationUnitMember);
for (var field in fields) {
var name = field.name.name;
- var fieldElement = field.declaredElement as FieldElementImpl;
+ var fieldElement = field.declaredElement as FieldElementImpl?;
fieldElement ??= FieldElementImpl.forLinkedNodeFactory(
- this, reference.getChild('@field').getChild(name), field);
+ this, reference!.getChild('@field').getChild(name), field);
fieldList.add(fieldElement);
- accessorList.add(fieldElement.getter);
+ accessorList.add(fieldElement.getter!);
if (fieldElement.setter != null) {
- accessorList.add(fieldElement.setter);
+ accessorList.add(fieldElement.setter!);
}
}
- var methods = context.getMethods(linkedNode);
+ var methods = context.getMethods(linkedNode as CompilationUnitMember);
for (var method in methods) {
var isGetter = method.isGetter;
var isSetter = method.isSetter;
@@ -4053,17 +4049,17 @@
var name = method.name.name;
var containerRef = isGetter
- ? reference.getChild('@getter')
- : reference.getChild('@setter');
+ ? reference!.getChild('@getter')
+ : reference!.getChild('@setter');
var accessorElement =
- method.declaredElement as PropertyAccessorElementImpl;
+ method.declaredElement as PropertyAccessorElementImpl?;
accessorElement ??= PropertyAccessorElementImpl.forLinkedNode(
this, containerRef.getChild(name), method);
accessorList.add(accessorElement);
- var fieldRef = reference.getChild('@field').getChild(name);
- FieldElementImpl field = fieldRef.element;
+ var fieldRef = reference!.getChild('@field').getChild(name);
+ var field = fieldRef.element as FieldElementImpl?;
if (field == null) {
field = FieldElementImpl(name, -1);
fieldRef.element = field;
@@ -4109,7 +4105,7 @@
linkedNode.name.staticElement = this;
}
if (!linkedNode.isSynthetic) {
- var enclosingRef = enclosing.reference;
+ var enclosingRef = enclosing.reference!;
getter = PropertyAccessorElementImpl_ImplicitGetter(
this,
@@ -4127,7 +4123,7 @@
factory FieldElementImpl.forLinkedNodeFactory(
ElementImpl enclosing, Reference reference, AstNode linkedNode) {
- var context = enclosing.enclosingUnit.linkedContext;
+ var context = enclosing.enclosingUnit.linkedContext!;
if (context.shouldBeConstFieldElement(linkedNode)) {
return ConstFieldElementImpl.forLinkedNode(
enclosing,
@@ -4144,7 +4140,7 @@
@override
bool get isAbstract {
if (linkedNode != null) {
- return enclosingUnit.linkedContext.isAbstract(linkedNode);
+ return enclosingUnit.linkedContext!.isAbstract(linkedNode!);
}
return hasModifier(Modifier.ABSTRACT);
}
@@ -4152,7 +4148,7 @@
@override
bool get isCovariant {
if (linkedNode != null) {
- return linkedContext.isExplicitlyCovariant(linkedNode);
+ return linkedContext!.isExplicitlyCovariant(linkedNode!);
}
return hasModifier(Modifier.COVARIANT);
@@ -4172,7 +4168,7 @@
@override
bool get isExternal {
if (linkedNode != null) {
- return enclosingUnit.linkedContext.isExternal(linkedNode);
+ return enclosingUnit.linkedContext!.isExternal(linkedNode!);
}
return hasModifier(Modifier.EXTERNAL);
}
@@ -4180,7 +4176,7 @@
@override
bool get isStatic {
if (linkedNode != null) {
- return enclosingUnit.linkedContext.isStatic(linkedNode);
+ return enclosingUnit.linkedContext!.isStatic(linkedNode!);
}
return hasModifier(Modifier.STATIC);
}
@@ -4194,7 +4190,7 @@
ElementKind get kind => ElementKind.FIELD;
@override
- T accept<T>(ElementVisitor<T> visitor) => visitor.visitFieldElement(this);
+ T? accept<T>(ElementVisitor<T> visitor) => visitor.visitFieldElement(this);
}
/// A [ParameterElementImpl] that has the additional information of the
@@ -4202,7 +4198,7 @@
class FieldFormalParameterElementImpl extends ParameterElementImpl
implements FieldFormalParameterElement {
/// The field associated with this field formal parameter.
- FieldElement _field;
+ FieldElement? _field;
/// Initialize a newly created parameter element to have the given [name] and
/// [nameOffset].
@@ -4210,22 +4206,22 @@
: super(name, nameOffset);
FieldFormalParameterElementImpl.forLinkedNode(
- ElementImpl enclosing, Reference reference, AstNode linkedNode)
+ ElementImpl enclosing, Reference? reference, FormalParameter linkedNode)
: super.forLinkedNode(enclosing, reference, linkedNode);
@override
- FieldElement get field {
+ FieldElement? get field {
if (_field == null) {
- String fieldName;
+ String? fieldName;
if (linkedNode != null) {
- fieldName = linkedContext.getFieldFormalParameterName(linkedNode);
+ fieldName = linkedContext!.getFieldFormalParameterName(linkedNode!);
}
if (fieldName != null) {
- Element enclosingConstructor = enclosingElement;
+ Element enclosingConstructor = enclosingElement!;
if (enclosingConstructor is ConstructorElement) {
Element enclosingClass = enclosingConstructor.enclosingElement;
if (enclosingClass is ClassElement) {
- FieldElement field = enclosingClass.getField(fieldName);
+ var field = enclosingClass.getField(fieldName);
if (field != null && !field.isSynthetic) {
_field = field;
}
@@ -4236,7 +4232,7 @@
return _field;
}
- set field(FieldElement field) {
+ set field(FieldElement? field) {
_field = field;
}
@@ -4249,7 +4245,7 @@
}
@override
- T accept<T>(ElementVisitor<T> visitor) =>
+ T? accept<T>(ElementVisitor<T> visitor) =>
visitor.visitFieldFormalParameterElement(this);
}
@@ -4286,7 +4282,7 @@
@override
String get displayName {
if (linkedNode != null) {
- return reference.name;
+ return reference!.name;
}
return super.displayName;
}
@@ -4294,7 +4290,7 @@
@override
String get identifier {
String identifier = super.identifier;
- Element enclosing = enclosingElement;
+ Element? enclosing = enclosingElement;
if (enclosing is ExecutableElement || enclosing is VariableElement) {
identifier += "@$nameOffset";
}
@@ -4313,15 +4309,7 @@
ElementKind get kind => ElementKind.FUNCTION;
@override
- String get name {
- if (linkedNode != null) {
- return reference.name;
- }
- return super.name;
- }
-
- @override
- T accept<T>(ElementVisitor<T> visitor) => visitor.visitFunctionElement(this);
+ T? accept<T>(ElementVisitor<T> visitor) => visitor.visitFunctionElement(this);
}
class FunctionTypeAliasElementImpl extends TypeAliasElementImpl
@@ -4338,14 +4326,14 @@
}
@override
- T accept<T>(ElementVisitor<T> visitor) {
+ T? accept<T>(ElementVisitor<T> visitor) {
return visitor.visitFunctionTypeAliasElement(this);
}
@override
FunctionType instantiate({
- List<DartType> typeArguments,
- NullabilitySuffix nullabilitySuffix,
+ required List<DartType> typeArguments,
+ required NullabilitySuffix nullabilitySuffix,
}) {
var type = super.instantiate(
typeArguments: typeArguments,
@@ -4363,33 +4351,33 @@
///
/// Clients may not extend, implement or mix-in this class.
abstract class FunctionTypedElementImpl
- implements ElementImpl, FunctionTypedElement {
+ implements _ExistingElementImpl, FunctionTypedElement {
set returnType(DartType returnType);
}
/// The element used for a generic function type.
///
/// Clients may not extend, implement or mix-in this class.
-class GenericFunctionTypeElementImpl extends ElementImpl
+class GenericFunctionTypeElementImpl extends _ExistingElementImpl
with TypeParameterizedElementMixin
implements
GenericFunctionTypeElement,
FunctionTypedElementImpl,
ElementImplWithFunctionType {
/// The declared return type of the function.
- DartType _returnType;
+ DartType? _returnType;
/// The elements representing the parameters of the function.
- List<ParameterElement> _parameters;
+ List<ParameterElement>? _parameters;
/// Is `true` if the type has the question mark, so is nullable.
bool _isNullable = false;
/// The type defined by this element.
- FunctionType _type;
+ FunctionType? _type;
GenericFunctionTypeElementImpl.forLinkedNode(
- ElementImpl enclosingElement, Reference reference, AstNode linkedNode)
+ ElementImpl enclosingElement, Reference? reference, AstNode linkedNode)
: super.forLinkedNode(enclosingElement, reference, linkedNode) {
if (linkedNode is GenericFunctionTypeImpl) {
linkedNode.declaredElement = this;
@@ -4427,12 +4415,12 @@
List<ParameterElement> get parameters {
if (_parameters == null) {
if (linkedNode != null) {
- var context = enclosingUnit.linkedContext;
+ var context = enclosingUnit.linkedContext!;
return _parameters = ParameterElementImpl.forLinkedNodeList(
this,
context,
null,
- context.getFormalParameters(linkedNode),
+ context.getFormalParameters(linkedNode!),
);
}
}
@@ -4463,11 +4451,11 @@
DartType get returnTypeInternal {
if (_returnType == null) {
if (linkedNode != null) {
- var context = enclosingUnit.linkedContext;
- return _returnType = context.getReturnType(linkedNode);
+ var context = enclosingUnit.linkedContext!;
+ return _returnType = context.getReturnType(linkedNode!);
}
}
- return _returnType;
+ return _returnType!;
}
@override
@@ -4481,7 +4469,7 @@
@override
FunctionType get typeInternal {
- if (_type != null) return _type;
+ if (_type != null) return _type!;
return _type = FunctionTypeImpl(
typeFormals: typeParameters,
@@ -4513,7 +4501,7 @@
}
@override
- T accept<T>(ElementVisitor<T> visitor) {
+ T? accept<T>(ElementVisitor<T> visitor) {
return visitor.visitGenericFunctionTypeElement(this);
}
@@ -4533,12 +4521,12 @@
/// A concrete implementation of a [HideElementCombinator].
class HideElementCombinatorImpl implements HideElementCombinator {
- final LinkedUnitContext linkedContext;
- final HideCombinator linkedNode;
+ final LinkedUnitContext? linkedContext;
+ final HideCombinator? linkedNode;
/// The names that are not to be made visible in the importing library even if
/// they are defined in the imported library.
- List<String> _hiddenNames;
+ List<String>? _hiddenNames;
HideElementCombinatorImpl()
: linkedContext = null,
@@ -4548,10 +4536,10 @@
@override
List<String> get hiddenNames {
- if (_hiddenNames != null) return _hiddenNames;
+ if (_hiddenNames != null) return _hiddenNames!;
if (linkedNode != null) {
- return _hiddenNames = linkedNode.hiddenNames.map((i) => i.name).toList();
+ return _hiddenNames = linkedNode!.hiddenNames.map((i) => i.name).toList();
}
return _hiddenNames ?? const <String>[];
@@ -4584,18 +4572,18 @@
int _prefixOffset = 0;
/// The library that is imported into this library by this import directive.
- LibraryElement _importedLibrary;
+ LibraryElement? _importedLibrary;
/// The combinators that were specified as part of the import directive in the
/// order in which they were specified.
- List<NamespaceCombinator> _combinators;
+ List<NamespaceCombinator>? _combinators;
/// The prefix that was specified as part of the import directive, or `null
///` if there was no prefix specified.
- PrefixElement _prefix;
+ PrefixElement? _prefix;
/// The cached value of [namespace].
- Namespace _namespace;
+ Namespace? _namespace;
/// Initialize a newly created import element at the given [offset].
/// The offset may be `-1` if the import is synthetic.
@@ -4609,12 +4597,12 @@
@override
List<NamespaceCombinator> get combinators {
- if (_combinators != null) return _combinators;
+ if (_combinators != null) return _combinators!;
if (linkedNode != null) {
- ImportDirective node = linkedNode;
+ var node = linkedNode as ImportDirective;
return _combinators = ImportElementImpl._buildCombinators2(
- enclosingUnit.linkedContext,
+ enclosingUnit.linkedContext!,
node.combinators,
);
}
@@ -4628,32 +4616,32 @@
@override
CompilationUnitElementImpl get enclosingUnit {
- LibraryElementImpl enclosingLibrary = enclosingElement;
+ var enclosingLibrary = enclosingElement as LibraryElementImpl;
return enclosingLibrary._definingCompilationUnit;
}
@override
- String get identifier => "${importedLibrary.identifier}@$nameOffset";
+ String get identifier => "${importedLibrary?.identifier}@$nameOffset";
@override
- LibraryElement get importedLibrary {
+ LibraryElement? get importedLibrary {
if (_importedLibrary != null) return _importedLibrary;
if (linkedNode != null) {
- linkedContext.applyResolution(linkedNode);
+ linkedContext!.applyResolution(linkedNode!);
}
return _importedLibrary;
}
- set importedLibrary(LibraryElement importedLibrary) {
+ set importedLibrary(LibraryElement? importedLibrary) {
_importedLibrary = importedLibrary;
}
@override
bool get isDeferred {
if (linkedNode != null) {
- ImportDirective linkedNode = this.linkedNode;
+ var linkedNode = this.linkedNode as ImportDirective;
return linkedNode.deferredKeyword != null;
}
return hasModifier(Modifier.DEFERRED);
@@ -4670,7 +4658,7 @@
@override
int get nameOffset {
if (linkedNode != null) {
- return linkedContext.getDirectiveOffset(linkedNode);
+ return linkedContext!.getDirectiveOffset(linkedNode as Directive);
}
return super.nameOffset;
@@ -4683,18 +4671,18 @@
}
@override
- PrefixElement get prefix {
+ PrefixElement? get prefix {
if (_prefix != null) return _prefix;
if (linkedNode != null) {
- ImportDirective linkedNode = this.linkedNode;
+ var linkedNode = this.linkedNode as ImportDirective;
var prefix = linkedNode.prefix;
if (prefix != null) {
var name = prefix.name;
var library = enclosingElement as LibraryElementImpl;
_prefix = PrefixElementImpl.forLinkedNode(
library,
- library.reference.getChild('@prefix').getChild(name),
+ library.reference!.getChild('@prefix').getChild(name),
prefix,
);
}
@@ -4703,14 +4691,14 @@
return _prefix;
}
- set prefix(PrefixElement prefix) {
+ set prefix(PrefixElement? prefix) {
_prefix = prefix;
}
@override
int get prefixOffset {
if (linkedNode != null) {
- ImportDirective node = linkedNode;
+ var node = linkedNode as ImportDirective;
return node.prefix?.offset ?? -1;
}
return _prefixOffset;
@@ -4721,9 +4709,9 @@
}
@override
- String get uri {
+ String? get uri {
if (linkedNode != null) {
- ImportDirective node = linkedNode;
+ var node = linkedNode as ImportDirective;
return node.uri.stringValue;
}
@@ -4731,7 +4719,7 @@
}
@override
- T accept<T>(ElementVisitor<T> visitor) => visitor.visitImportElement(this);
+ T? accept<T>(ElementVisitor<T> visitor) => visitor.visitImportElement(this);
@override
void appendTo(ElementDisplayStringBuilder builder) {
@@ -4796,11 +4784,15 @@
ElementKind get kind => ElementKind.LABEL;
@override
- T accept<T>(ElementVisitor<T> visitor) => visitor.visitLabelElement(this);
+ String get name => super.name!;
+
+ @override
+ T? accept<T>(ElementVisitor<T> visitor) => visitor.visitLabelElement(this);
}
/// A concrete implementation of a [LibraryElement].
-class LibraryElementImpl extends ElementImpl implements LibraryElement {
+class LibraryElementImpl extends _ExistingElementImpl
+ implements LibraryElement {
/// The analysis context in which this library is defined.
@override
final AnalysisContext context;
@@ -4808,33 +4800,35 @@
@override
final AnalysisSession session;
- @override
- TypeProviderImpl typeProvider;
+ bool hasTypeProviderSystemSet = false;
@override
- TypeSystemImpl typeSystem;
+ late TypeProviderImpl typeProvider;
+
+ @override
+ late TypeSystemImpl typeSystem;
/// The context of the defining unit.
@override
- final LinkedUnitContext linkedContext;
+ final LinkedUnitContext? linkedContext;
@override
final FeatureSet featureSet;
/// The compilation unit that defines this library.
- CompilationUnitElement _definingCompilationUnit;
+ late CompilationUnitElementImpl _definingCompilationUnit;
/// The entry point for this library, or `null` if this library does not have
/// an entry point.
- FunctionElement _entryPoint;
+ FunctionElement? _entryPoint;
/// A list containing specifications of all of the imports defined in this
/// library.
- List<ImportElement> _imports;
+ List<ImportElement>? _imports;
/// A list containing specifications of all of the exports defined in this
/// library.
- List<ExportElement> _exports;
+ List<ExportElement>? _exports;
/// A list containing all of the compilation units that are included in this
/// library using a `part` directive.
@@ -4843,24 +4837,24 @@
/// The element representing the synthetic function `loadLibrary` that is
/// defined for this library, or `null` if the element has not yet been
/// created.
- FunctionElement _loadLibraryFunction;
+ late FunctionElement _loadLibraryFunction;
@override
final int nameLength;
/// The export [Namespace] of this library, `null` if it has not been
/// computed yet.
- Namespace _exportNamespace;
+ Namespace? _exportNamespace;
/// The public [Namespace] of this library, `null` if it has not been
/// computed yet.
- Namespace _publicNamespace;
+ Namespace? _publicNamespace;
/// The cached list of prefixes.
- List<PrefixElement> _prefixes;
+ List<PrefixElement>? _prefixes;
/// The scope of this library, `null` if it has not been created yet.
- LibraryScope _scope;
+ LibraryScope? _scope;
/// Initialize a newly created library element in the given [context] to have
/// the given [name] and [offset].
@@ -4886,20 +4880,12 @@
@override
int get codeLength {
- CompilationUnitElement unit = _definingCompilationUnit;
- if (unit is CompilationUnitElementImpl) {
- return unit.codeLength;
- }
- return null;
+ return _definingCompilationUnit.codeLength;
}
@override
int get codeOffset {
- CompilationUnitElement unit = _definingCompilationUnit;
- if (unit is CompilationUnitElementImpl) {
- return unit.codeOffset;
- }
- return null;
+ return _definingCompilationUnit.codeOffset;
}
@override
@@ -4915,17 +4901,22 @@
}
@override
- String get documentationComment {
+ String? get documentationComment {
if (linkedNode != null) {
- var comment = linkedContext.getLibraryDocumentationComment();
+ var comment = linkedContext!.getLibraryDocumentationComment();
return getCommentNodeRawText(comment);
}
return super.documentationComment;
}
@override
- FunctionElement get entryPoint {
- if (_entryPoint != null) return _entryPoint;
+ CompilationUnitElementImpl get enclosingUnit {
+ return _definingCompilationUnit;
+ }
+
+ @override
+ FunctionElement? get entryPoint {
+ if (_entryPoint != null) return _entryPoint!;
if (linkedContext != null) {
var namespace = library.exportNamespace;
@@ -4939,7 +4930,7 @@
return _entryPoint;
}
- set entryPoint(FunctionElement entryPoint) {
+ set entryPoint(FunctionElement? entryPoint) {
_entryPoint = entryPoint;
}
@@ -4947,7 +4938,7 @@
List<LibraryElement> get exportedLibraries {
HashSet<LibraryElement> libraries = HashSet<LibraryElement>();
for (ExportElement element in exports) {
- LibraryElement library = element.exportedLibrary;
+ var library = element.exportedLibrary;
if (library != null) {
libraries.add(library);
}
@@ -4957,14 +4948,14 @@
@override
Namespace get exportNamespace {
- if (_exportNamespace != null) return _exportNamespace;
+ if (_exportNamespace != null) return _exportNamespace!;
if (linkedNode != null) {
- var elements = linkedContext.elementFactory;
+ var elements = linkedContext!.elementFactory;
return _exportNamespace = elements.buildExportNamespace(source.uri);
}
- return _exportNamespace;
+ return _exportNamespace!;
}
set exportNamespace(Namespace exportNamespace) {
@@ -4973,13 +4964,13 @@
@override
List<ExportElement> get exports {
- if (_exports != null) return _exports;
+ if (_exports != null) return _exports!;
if (linkedNode != null) {
- var unit = linkedContext.unit_withDirectives;
+ var unit = linkedContext!.unit_withDirectives;
return _exports = unit.directives
.whereType<ExportDirective>()
- .map((node) => node.element)
+ .map((node) => node.element!)
.toList();
}
@@ -4998,7 +4989,7 @@
@override
bool get hasExtUri {
if (linkedNode != null) {
- var unit = linkedContext.unit_withDirectives;
+ var unit = linkedContext!.unit_withDirectives;
for (var import in unit.directives) {
if (import is ImportDirective) {
var uriLiteral = import.uri;
@@ -5023,11 +5014,8 @@
@override
bool get hasLoadLibraryFunction {
- if (_definingCompilationUnit.hasLoadLibraryFunction) {
- return true;
- }
- for (int i = 0; i < _parts.length; i++) {
- if (_parts[i].hasLoadLibraryFunction) {
+ for (int i = 0; i < units.length; i++) {
+ if (units[i].hasLoadLibraryFunction) {
return true;
}
}
@@ -5041,7 +5029,7 @@
List<LibraryElement> get importedLibraries {
HashSet<LibraryElement> libraries = HashSet<LibraryElement>();
for (ImportElement element in imports) {
- LibraryElement library = element.importedLibrary;
+ var library = element.importedLibrary;
if (library != null) {
libraries.add(library);
}
@@ -5051,27 +5039,27 @@
@override
List<ImportElement> get imports {
- if (_imports != null) return _imports;
+ if (_imports != null) return _imports!;
if (linkedNode != null) {
- var unit = linkedContext.unit_withDirectives;
+ var unit = linkedContext!.unit_withDirectives;
_imports = unit.directives
.whereType<ImportDirective>()
- .map((node) => node.element)
+ .map((node) => node.element!)
.toList();
- var hasCore = _imports.any((import) {
+ var hasCore = _imports!.any((import) {
return import.importedLibrary?.isDartCore ?? false;
});
if (!hasCore) {
- var elements = linkedContext.elementFactory;
- _imports.add(
+ var elements = linkedContext!.elementFactory;
+ _imports!.add(
ImportElementImpl(-1)
- ..importedLibrary = elements.libraryOfUri('dart:core')
+ ..importedLibrary = elements.libraryOfUri2('dart:core')
..isSynthetic = true
..uri = 'dart:core',
);
}
- return _imports;
+ return _imports!;
}
return _imports ??= const <ImportElement>[];
@@ -5082,7 +5070,7 @@
set imports(List<ImportElement> imports) {
for (ImportElement importElement in imports) {
(importElement as ImportElementImpl).enclosingElement = this;
- PrefixElementImpl prefix = importElement.prefix as PrefixElementImpl;
+ var prefix = importElement.prefix as PrefixElementImpl?;
if (prefix != null) {
prefix.enclosingElement = this;
}
@@ -5103,11 +5091,8 @@
@override
bool get isInSdk {
- Uri uri = definingCompilationUnit.source?.uri;
- if (uri != null) {
- return DartUriResolver.isDartUri(uri);
- }
- return false;
+ var uri = definingCompilationUnit.source.uri;
+ return DartUriResolver.isDartUri(uri);
}
@override
@@ -5122,11 +5107,11 @@
/// 'dart:html' libraries.
bool get isOrImportsBrowserLibrary {
List<LibraryElement> visited = <LibraryElement>[];
- Source htmlLibSource = context.sourceFactory.forUri(DartSdk.DART_HTML);
+ var htmlLibSource = context.sourceFactory.forUri(DartSdk.DART_HTML);
visited.add(this);
for (int index = 0; index < visited.length; index++) {
LibraryElement library = visited[index];
- Source source = library.definingCompilationUnit.source;
+ var source = library.definingCompilationUnit.source;
if (source == htmlLibSource) {
return true;
}
@@ -5147,7 +5132,7 @@
@override
bool get isSynthetic {
if (linkedNode != null) {
- return linkedContext.isSynthetic;
+ return linkedContext!.isSynthetic;
}
return super.isSynthetic;
}
@@ -5157,36 +5142,36 @@
@override
LibraryLanguageVersion get languageVersion {
- if (_languageVersion != null) return _languageVersion;
+ if (_languageVersion != null) return _languageVersion!;
if (linkedNode != null) {
- _languageVersion = linkedContext.getLanguageVersion(linkedNode);
- return _languageVersion;
+ _languageVersion =
+ linkedContext!.getLanguageVersion(linkedNode as CompilationUnit);
+ return _languageVersion!;
}
_languageVersion = LibraryLanguageVersion(
package: ExperimentStatus.currentVersion,
override: null,
);
- return _languageVersion;
+ return _languageVersion!;
}
@override
- LibraryElement get library => this;
+ LibraryElementImpl get library => this;
@override
FunctionElement get loadLibraryFunction {
- assert(_loadLibraryFunction != null);
return _loadLibraryFunction;
}
@override
List<ElementAnnotation> get metadata {
- if (_metadata != null) return _metadata;
+ if (_metadata != null) return _metadata!;
if (linkedNode != null) {
- var metadata = linkedContext.getLibraryMetadata();
- return _metadata = _buildAnnotations2(definingCompilationUnit, metadata);
+ var metadata = linkedContext!.getLibraryMetadata();
+ return _metadata = _buildAnnotations2(_definingCompilationUnit, metadata);
}
return super.metadata;
@@ -5212,14 +5197,14 @@
@override
Namespace get publicNamespace {
- if (_publicNamespace != null) return _publicNamespace;
+ if (_publicNamespace != null) return _publicNamespace!;
if (linkedNode != null) {
return _publicNamespace =
NamespaceBuilder().createPublicNamespaceForLibrary(this);
}
- return _publicNamespace;
+ return _publicNamespace!;
}
set publicNamespace(Namespace publicNamespace) {
@@ -5233,9 +5218,6 @@
@override
Source get source {
- if (_definingCompilationUnit == null) {
- return null;
- }
return _definingCompilationUnit.source;
}
@@ -5262,7 +5244,7 @@
}
@override
- T accept<T>(ElementVisitor<T> visitor) => visitor.visitLibraryElement(this);
+ T? accept<T>(ElementVisitor<T> visitor) => visitor.visitLibraryElement(this);
/// Create the [FunctionElement] to be returned by [loadLibraryFunction].
/// The [typeProvider] must be already set.
@@ -5274,8 +5256,8 @@
..returnType = typeProvider.futureDynamicType;
}
- ClassElement getEnum(String name) {
- ClassElement element = _definingCompilationUnit.getEnum(name);
+ ClassElement? getEnum(String name) {
+ var element = _definingCompilationUnit.getEnum(name);
if (element != null) {
return element;
}
@@ -5294,14 +5276,14 @@
}
@override
- ClassElement getType(String className) {
+ ClassElement? getType(String className) {
return getTypeFromParts(className, _definingCompilationUnit, _parts);
}
@override
T toLegacyElementIfOptOut<T extends Element>(T element) {
if (isNonNullableByDefault) return element;
- return Member.legacy(element);
+ return Member.legacy(element) as T;
}
@override
@@ -5313,7 +5295,7 @@
@override
void visitChildren(ElementVisitor visitor) {
super.visitChildren(visitor);
- _definingCompilationUnit?.accept(visitor);
+ _definingCompilationUnit.accept(visitor);
safelyVisitChildren(exports, visitor);
safelyVisitChildren(imports, visitor);
safelyVisitChildren(_parts, visitor);
@@ -5323,7 +5305,7 @@
List<ImportElement> imports) {
HashSet<PrefixElement> prefixes = HashSet<PrefixElement>();
for (ImportElement element in imports) {
- PrefixElement prefix = element.prefix;
+ var prefix = element.prefix;
if (prefix != null) {
prefixes.add(prefix);
}
@@ -5343,11 +5325,11 @@
return importList;
}
- static ClassElement getTypeFromParts(
+ static ClassElement? getTypeFromParts(
String className,
CompilationUnitElement definingCompilationUnit,
List<CompilationUnitElement> parts) {
- ClassElement type = definingCompilationUnit.getType(className);
+ var type = definingCompilationUnit.getType(className);
if (type != null) {
return type;
}
@@ -5365,7 +5347,7 @@
class LocalVariableElementImpl extends NonParameterVariableElementImpl
implements LocalVariableElement {
@override
- bool hasInitializer;
+ late bool hasInitializer;
/// Initialize a newly created method element to have the given [name] and
/// [offset].
@@ -5390,7 +5372,7 @@
ElementKind get kind => ElementKind.LOCAL_VARIABLE;
@override
- T accept<T>(ElementVisitor<T> visitor) =>
+ T? accept<T>(ElementVisitor<T> visitor) =>
visitor.visitLocalVariableElement(this);
}
@@ -5403,7 +5385,7 @@
/// The error reported during type inference for this variable, or `null` if
/// this variable is not a subject of type inference, or there was no error.
- TopLevelInferenceError typeInferenceError;
+ TopLevelInferenceError? typeInferenceError;
/// Initialize a newly created method element to have the given [name] at the
/// given [offset].
@@ -5448,7 +5430,7 @@
@override
bool get isStatic {
if (linkedNode != null) {
- return enclosingUnit.linkedContext.isStatic(linkedNode);
+ return enclosingUnit.linkedContext!.isStatic(linkedNode!);
}
return hasModifier(Modifier.STATIC);
}
@@ -5467,11 +5449,11 @@
if (name == '-' && parametersInternal.isEmpty) {
return 'unary-';
}
- return super.name;
+ return name;
}
@override
- T accept<T>(ElementVisitor<T> visitor) => visitor.visitMethodElement(this);
+ T? accept<T>(ElementVisitor<T> visitor) => visitor.visitMethodElement(this);
}
/// A [ClassElementImpl] representing a mixin declaration.
@@ -5482,10 +5464,10 @@
/// A list containing all of the superclass constraints that are defined for
/// the mixin.
- List<InterfaceType> _superclassConstraints;
+ List<InterfaceType>? _superclassConstraints;
@override
- List<String> superInvokedNames;
+ late List<String> superInvokedNames;
/// Initialize a newly created class element to have the given [name] at the
/// given [offset] in the file that contains the declaration of this element.
@@ -5508,12 +5490,12 @@
@override
List<InterfaceType> get superclassConstraints {
- if (_superclassConstraints != null) return _superclassConstraints;
+ if (_superclassConstraints != null) return _superclassConstraints!;
var linkedNode = this.linkedNode;
if (linkedNode is MixinDeclaration) {
- linkedContext.applyResolution(linkedNode);
- List<InterfaceType> constraints;
+ linkedContext!.applyResolution(linkedNode);
+ List<InterfaceType>? constraints;
var onClause = linkedNode.onClause;
if (onClause != null) {
constraints = onClause.superclassConstraints
@@ -5536,10 +5518,10 @@
}
@override
- InterfaceType get supertype => null;
+ InterfaceType? get supertype => null;
@override
- set supertype(InterfaceType supertype) {
+ set supertype(InterfaceType? supertype) {
throw StateError('Attempt to set a supertype for a mixin declaratio.');
}
@@ -5686,16 +5668,16 @@
this.context, this.session, this.name, this.conflictingElements);
@override
- Element get declaration => null;
+ Element? get declaration => null;
@override
String get displayName => name;
@override
- String get documentationComment => null;
+ String? get documentationComment => null;
@override
- Element get enclosingElement => null;
+ Element? get enclosingElement => null;
@override
bool get hasAlwaysThrows => false;
@@ -5753,11 +5735,7 @@
@override
bool get isPrivate {
- String name = displayName;
- if (name == null) {
- return false;
- }
- return Identifier.isPrivateName(name);
+ throw UnimplementedError();
}
@override
@@ -5772,32 +5750,32 @@
ElementKind get kind => ElementKind.ERROR;
@override
- LibraryElement get library => null;
+ LibraryElement? get library => null;
@override
- Source get librarySource => null;
+ Source? get librarySource => null;
@override
- ElementLocation get location => null;
+ ElementLocation? get location => null;
@override
List<ElementAnnotation> get metadata => const <ElementAnnotation>[];
@override
- int get nameLength => displayName != null ? displayName.length : 0;
+ int get nameLength => 0;
@override
int get nameOffset => -1;
@override
- Source get source => null;
+ Source? get source => null;
@override
- T accept<T>(ElementVisitor<T> visitor) =>
+ T? accept<T>(ElementVisitor<T> visitor) =>
visitor.visitMultiplyDefinedElement(this);
@override
- String getDisplayString({@required bool withNullability}) {
+ String getDisplayString({required bool withNullability}) {
var elementsStr = conflictingElements.map((e) {
return e.getDisplayString(
withNullability: withNullability,
@@ -5807,7 +5785,7 @@
}
@override
- String getExtendedDisplayName(String shortName) {
+ String getExtendedDisplayName(String? shortName) {
if (shortName != null) {
return shortName;
}
@@ -5815,7 +5793,7 @@
}
@override
- bool isAccessibleIn(LibraryElement library) {
+ bool isAccessibleIn(LibraryElement? library) {
for (Element element in conflictingElements) {
if (element.isAccessibleIn(library)) {
return true;
@@ -5825,11 +5803,11 @@
}
@override
- E thisOrAncestorMatching<E extends Element>(Predicate<Element> predicate) =>
+ E? thisOrAncestorMatching<E extends Element>(Predicate<Element> predicate) =>
null;
@override
- E thisOrAncestorOfType<E extends Element>() => null;
+ E? thisOrAncestorOfType<E extends Element>() => null;
@override
String toString() {
@@ -5863,8 +5841,7 @@
/// The synthetic element representing the declaration of the type `Never`.
class NeverElementImpl extends ElementImpl implements TypeDefiningElement {
/// Return the unique instance of this class.
- static NeverElementImpl get instance =>
- NeverTypeImpl.instance.element as NeverElementImpl;
+ static NeverElementImpl get instance => NeverTypeImpl.instance.element;
/// Initialize a newly created instance of this class. Instances of this class
/// should <b>not</b> be created except as part of creating the type
@@ -5878,10 +5855,10 @@
ElementKind get kind => ElementKind.NEVER;
@override
- T accept<T>(ElementVisitor<T> visitor) => null;
+ T? accept<T>(ElementVisitor<T> visitor) => null;
DartType instantiate({
- @required NullabilitySuffix nullabilitySuffix,
+ required NullabilitySuffix nullabilitySuffix,
}) {
switch (nullabilitySuffix) {
case NullabilitySuffix.question:
@@ -5891,12 +5868,12 @@
case NullabilitySuffix.none:
return NeverTypeImpl.instance;
}
- throw StateError('Unsupported nullability: $nullabilitySuffix');
}
}
/// A [VariableElementImpl], which is not a parameter.
-abstract class NonParameterVariableElementImpl extends VariableElementImpl {
+abstract class NonParameterVariableElementImpl extends VariableElementImpl
+ with _HasLibraryMixin {
/// Initialize a newly created variable element to have the given [name] and
/// [offset].
NonParameterVariableElementImpl(String name, int offset)
@@ -5907,47 +5884,51 @@
: super.forLinkedNode(enclosing, reference, linkedNode);
@override
- int get codeLength {
+ int? get codeLength {
if (linkedNode != null) {
- return linkedContext.getCodeLength(linkedNode);
+ return linkedContext!.getCodeLength(linkedNode!);
}
return super.codeLength;
}
@override
- int get codeOffset {
+ int? get codeOffset {
if (linkedNode != null) {
- return linkedContext.getCodeOffset(linkedNode);
+ return linkedContext!.getCodeOffset(linkedNode!);
}
return super.codeOffset;
}
@override
- String get documentationComment {
+ String? get documentationComment {
if (linkedNode != null) {
- var context = enclosingUnit.linkedContext;
- var comment = context.getDocumentationComment(linkedNode);
+ var context = enclosingUnit.linkedContext!;
+ var comment = context.getDocumentationComment(linkedNode!);
return getCommentNodeRawText(comment);
}
return super.documentationComment;
}
@override
+ Element get enclosingElement => super.enclosingElement!;
+
+ @override
bool get hasImplicitType {
if (linkedNode != null) {
- return linkedContext.hasImplicitType(linkedNode);
+ return linkedContext!.hasImplicitType(linkedNode!);
}
return super.hasImplicitType;
}
bool get hasInitializer {
- return linkedNode != null && linkedContext.hasInitializer(linkedNode);
+ return linkedNode != null &&
+ linkedContext!.hasInitializer(linkedNode as VariableDeclarationImpl);
}
@override
String get name {
if (linkedNode != null) {
- return reference.name;
+ return reference!.name;
}
return super.name;
}
@@ -5955,7 +5936,7 @@
@override
int get nameOffset {
if (linkedNode != null) {
- return enclosingUnit.linkedContext.getNameOffset(linkedNode);
+ return enclosingUnit.linkedContext!.getNameOffset(linkedNode!);
}
return super.nameOffset;
@@ -5977,18 +5958,18 @@
/// A list containing all of the parameters defined by this parameter element.
/// There will only be parameters if this parameter is a function typed
/// parameter.
- List<ParameterElement> _parameters;
+ List<ParameterElement>? _parameters;
/// A list containing all of the type parameters defined for this parameter
/// element. There will only be parameters if this parameter is a function
/// typed parameter.
- List<TypeParameterElement> _typeParameters;
+ List<TypeParameterElement>? _typeParameters;
/// The kind of this parameter.
- ParameterKind _parameterKind;
+ ParameterKind? _parameterKind;
/// The Dart code of the default value.
- String _defaultValueCode;
+ String? _defaultValueCode;
/// True if this parameter inherits from a covariant parameter. This happens
/// when it overrides a method in a supertype that has a corresponding
@@ -5997,17 +5978,17 @@
/// Initialize a newly created parameter element to have the given [name] and
/// [nameOffset].
- ParameterElementImpl(String name, int nameOffset) : super(name, nameOffset);
+ ParameterElementImpl(String? name, int nameOffset) : super(name, nameOffset);
ParameterElementImpl.forLinkedNode(
- ElementImpl enclosing, Reference reference, FormalParameter linkedNode)
+ ElementImpl enclosing, Reference? reference, FormalParameter linkedNode)
: super.forLinkedNode(enclosing, reference, linkedNode) {
assert(linkedNode.isNamed || reference == null);
FormalParameterImpl.setDeclaredElement(linkedNode, this);
}
factory ParameterElementImpl.forLinkedNodeFactory(
- ElementImpl enclosing, Reference reference, FormalParameter node) {
+ ElementImpl enclosing, Reference? reference, FormalParameter node) {
if (node is FieldFormalParameter) {
return FieldFormalParameterElementImpl.forLinkedNode(
enclosing,
@@ -6024,7 +6005,7 @@
/// Creates a synthetic parameter with [name], [type] and [kind].
factory ParameterElementImpl.synthetic(
- String name, DartType type, ParameterKind kind) {
+ String? name, DartType type, ParameterKind kind) {
ParameterElementImpl element = ParameterElementImpl(name, -1);
element.type = type;
element.isSynthetic = true;
@@ -6036,7 +6017,7 @@
ParameterElement get declaration => this;
@override
- String get defaultValueCode {
+ String? get defaultValueCode {
var linkedNode = this.linkedNode;
if (linkedNode is DefaultFormalParameter) {
return linkedNode.defaultValue?.toSource();
@@ -6046,8 +6027,10 @@
}
/// Set Dart code of the default value.
- set defaultValueCode(String defaultValueCode) {
- _defaultValueCode = StringUtilities.intern(defaultValueCode);
+ set defaultValueCode(String? defaultValueCode) {
+ _defaultValueCode = defaultValueCode != null
+ ? StringUtilities.intern(defaultValueCode)
+ : null;
}
@override
@@ -6058,7 +6041,7 @@
@override
bool get hasImplicitType {
if (linkedNode != null) {
- return linkedContext.hasImplicitType(linkedNode);
+ return linkedContext!.hasImplicitType(linkedNode!);
}
return super.hasImplicitType;
}
@@ -6074,7 +6057,7 @@
/// Return true if this parameter is explicitly marked as being covariant.
bool get isExplicitlyCovariant {
if (linkedNode != null) {
- return linkedContext.isExplicitlyCovariant(linkedNode);
+ return linkedContext!.isExplicitlyCovariant(linkedNode!);
}
return hasModifier(Modifier.COVARIANT);
}
@@ -6088,7 +6071,7 @@
@override
bool get isFinal {
if (linkedNode != null) {
- FormalParameter linkedNode = this.linkedNode;
+ var linkedNode = this.linkedNode as FormalParameter;
return linkedNode.isFinal;
}
return super.isFinal;
@@ -6106,7 +6089,8 @@
@override
String get name {
if (linkedNode != null) {
- return linkedContext.getFormalParameterName(linkedNode);
+ return linkedContext!
+ .getFormalParameterName(linkedNode as FormalParameter);
}
return super.name;
}
@@ -6114,7 +6098,7 @@
@override
int get nameOffset {
if (linkedNode != null) {
- return enclosingUnit.linkedContext.getNameOffset(linkedNode);
+ return enclosingUnit.linkedContext!.getNameOffset(linkedNode!);
}
return super.nameOffset;
@@ -6122,13 +6106,15 @@
@override
ParameterKind get parameterKind {
- if (_parameterKind != null) return _parameterKind;
+ if (_parameterKind != null) return _parameterKind!;
if (linkedNode != null) {
var linkedNode = this.linkedNode as FormalParameterImpl;
return linkedNode.kind;
}
- return _parameterKind;
+
+ // TODO(migration): Make it impossible by construction.
+ throw StateError('The kind must set.');
}
set parameterKind(ParameterKind parameterKind) {
@@ -6137,11 +6123,11 @@
@override
List<ParameterElement> get parameters {
- if (_parameters != null) return _parameters;
+ if (_parameters != null) return _parameters!;
if (linkedNode != null) {
- var context = enclosingUnit.linkedContext;
- var formalParameters = context.getFormalParameters(linkedNode);
+ var context = enclosingUnit.linkedContext!;
+ var formalParameters = context.getFormalParameters(linkedNode!);
if (formalParameters != null) {
return _parameters = ParameterElementImpl.forLinkedNodeList(
this,
@@ -6168,10 +6154,10 @@
@override
List<TypeParameterElement> get typeParameters {
- if (_typeParameters != null) return _typeParameters;
+ if (_typeParameters != null) return _typeParameters!;
if (linkedNode != null) {
- var typeParameters = linkedContext.getTypeParameters2(linkedNode);
+ var typeParameters = linkedContext!.getTypeParameters2(linkedNode!);
if (typeParameters == null) {
return _typeParameters = const [];
}
@@ -6196,7 +6182,8 @@
}
@override
- T accept<T>(ElementVisitor<T> visitor) => visitor.visitParameterElement(this);
+ T? accept<T>(ElementVisitor<T> visitor) =>
+ visitor.visitParameterElement(this);
@override
void appendTo(ElementDisplayStringBuilder builder) {
@@ -6215,8 +6202,8 @@
static List<ParameterElement> forLinkedNodeList(
ElementImpl enclosing,
LinkedUnitContext context,
- Reference containerRef,
- List<FormalParameter> formalParameters) {
+ Reference? containerRef,
+ List<FormalParameter>? formalParameters) {
if (formalParameters == null) {
return const [];
}
@@ -6229,7 +6216,7 @@
if (node is DefaultFormalParameter) {
NormalFormalParameter parameterNode = node.parameter;
- Reference reference;
+ Reference? reference;
if (node.isNamed) {
var name = parameterNode.identifier?.name ?? '';
reference = containerRef?.getChild(name);
@@ -6270,7 +6257,7 @@
@override
bool get inheritsCovariant {
- PropertyInducingElement variable = setter.variable;
+ var variable = setter.variable;
if (variable is FieldElementImpl) {
return variable.inheritsCovariant;
}
@@ -6279,7 +6266,7 @@
@override
set inheritsCovariant(bool value) {
- PropertyInducingElement variable = setter.variable;
+ var variable = setter.variable;
if (variable is FieldElementImpl) {
variable.inheritsCovariant = value;
}
@@ -6295,7 +6282,7 @@
@override
bool get isExplicitlyCovariant {
- PropertyInducingElement variable = setter.variable;
+ var variable = setter.variable;
if (variable is FieldElementImpl) {
return variable.isCovariant;
}
@@ -6365,9 +6352,9 @@
}
/// A concrete implementation of a [PrefixElement].
-class PrefixElementImpl extends ElementImpl implements PrefixElement {
+class PrefixElementImpl extends _ExistingElementImpl implements PrefixElement {
/// The scope of this prefix, `null` if it has not been created yet.
- PrefixScope _scope;
+ PrefixScope? _scope;
/// Initialize a newly created method element to have the given [name] and
/// [nameOffset].
@@ -6390,9 +6377,9 @@
@override
String get name {
if (linkedNode != null) {
- return reference.name;
+ return reference!.name;
}
- return super.name;
+ return super.name!;
}
@override
@@ -6407,7 +6394,7 @@
Scope get scope => _scope ??= PrefixScope(enclosingElement, this);
@override
- T accept<T>(ElementVisitor<T> visitor) => visitor.visitPrefixElement(this);
+ T? accept<T>(ElementVisitor<T> visitor) => visitor.visitPrefixElement(this);
@override
void appendTo(ElementDisplayStringBuilder builder) {
@@ -6420,7 +6407,7 @@
implements PropertyAccessorElement {
/// The variable associated with this accessor.
@override
- PropertyInducingElement variable;
+ late PropertyInducingElement variable;
/// Initialize a newly created property accessor element to have the given
/// [name] and [offset].
@@ -6433,7 +6420,7 @@
/// Initialize a newly created synthetic property accessor element to be
/// associated with the given [variable].
PropertyAccessorElementImpl.forVariable(PropertyInducingElementImpl variable,
- {Reference reference})
+ {Reference? reference})
: super(variable.name, variable.nameOffset, reference: reference) {
this.variable = variable;
isAbstract = variable is FieldElementImpl && variable.isAbstract;
@@ -6442,16 +6429,16 @@
}
@override
- PropertyAccessorElement get correspondingGetter {
- if (isGetter || variable == null) {
+ PropertyAccessorElement? get correspondingGetter {
+ if (isGetter) {
return null;
}
return variable.getter;
}
@override
- PropertyAccessorElement get correspondingSetter {
- if (isSetter || variable == null) {
+ PropertyAccessorElement? get correspondingSetter {
+ if (isSetter) {
return null;
}
return variable.setter;
@@ -6475,7 +6462,7 @@
@override
bool get isGetter {
if (linkedNode != null) {
- return enclosingUnit.linkedContext.isGetter(linkedNode);
+ return enclosingUnit.linkedContext!.isGetter(linkedNode!);
}
return hasModifier(Modifier.GETTER);
}
@@ -6488,7 +6475,7 @@
@override
bool get isSetter {
if (linkedNode != null) {
- return enclosingUnit.linkedContext.isSetter(linkedNode);
+ return enclosingUnit.linkedContext!.isSetter(linkedNode!);
}
return hasModifier(Modifier.SETTER);
}
@@ -6501,7 +6488,7 @@
@override
bool get isStatic {
if (linkedNode != null) {
- return enclosingUnit.linkedContext.isStatic(linkedNode);
+ return enclosingUnit.linkedContext!.isStatic(linkedNode!);
}
return hasModifier(Modifier.STATIC);
}
@@ -6522,7 +6509,7 @@
@override
String get name {
if (linkedNode != null) {
- var name = reference.name;
+ var name = reference!.name;
if (isSetter) {
return '$name=';
}
@@ -6535,7 +6522,7 @@
}
@override
- T accept<T>(ElementVisitor<T> visitor) =>
+ T? accept<T>(ElementVisitor<T> visitor) =>
visitor.visitPropertyAccessorElement(this);
@override
@@ -6553,14 +6540,16 @@
/// Create the implicit getter and bind it to the [property].
PropertyAccessorElementImpl_ImplicitGetter(
PropertyInducingElementImpl property,
- {Reference reference})
+ {Reference? reference})
: super.forVariable(property, reference: reference) {
property.getter = this;
- enclosingElement = property.enclosingElement;
reference?.element = this;
}
@override
+ Element get enclosingElement => variable.enclosingElement!;
+
+ @override
bool get hasImplicitReturnType => variable.hasImplicitType;
@override
@@ -6588,7 +6577,7 @@
@override
FunctionType get typeInternal {
- if (_type != null) return _type;
+ if (_type != null) return _type!;
var type = FunctionTypeImpl(
typeFormals: const <TypeParameterElement>[],
@@ -6599,9 +6588,7 @@
);
// Don't cache, because types change during top-level inference.
- if (enclosingElement != null &&
- linkedContext != null &&
- !linkedContext.isLinking) {
+ if (linkedContext != null && !linkedContext!.isLinking) {
_type = type;
}
@@ -6615,13 +6602,15 @@
/// Create the implicit setter and bind it to the [property].
PropertyAccessorElementImpl_ImplicitSetter(
PropertyInducingElementImpl property,
- {Reference reference})
+ {Reference? reference})
: super.forVariable(property, reference: reference) {
property.setter = this;
- enclosingElement = property.enclosingElement;
}
@override
+ Element get enclosingElement => variable.enclosingElement!;
+
+ @override
bool get isSetter => true;
@override
@@ -6657,7 +6646,7 @@
@override
FunctionType get typeInternal {
- if (_type != null) return _type;
+ if (_type != null) return _type!;
var type = FunctionTypeImpl(
typeFormals: const <TypeParameterElement>[],
@@ -6668,9 +6657,7 @@
);
// Don't cache, because types change during top-level inference.
- if (enclosingElement != null &&
- linkedContext != null &&
- !linkedContext.isLinking) {
+ if (linkedContext != null && !linkedContext!.isLinking) {
_type = type;
}
@@ -6683,21 +6670,21 @@
extends NonParameterVariableElementImpl implements PropertyInducingElement {
/// The getter associated with this element.
@override
- PropertyAccessorElement getter;
+ PropertyAccessorElement? getter;
/// The setter associated with this element, or `null` if the element is
/// effectively `final` and therefore does not have a setter associated with
/// it.
@override
- PropertyAccessorElement setter;
+ PropertyAccessorElement? setter;
/// This field is set during linking, and performs type inference for
/// this property. After linking this field is always `null`.
- PropertyInducingElementTypeInference typeInference;
+ PropertyInducingElementTypeInference? typeInference;
/// The error reported during type inference for this variable, or `null` if
/// this variable is not a subject of type inference, or there was no error.
- TopLevelInferenceError typeInferenceError;
+ TopLevelInferenceError? typeInferenceError;
/// Initialize a newly created synthetic element to have the given [name] and
/// [offset].
@@ -6715,7 +6702,7 @@
@override
bool get isLate {
if (linkedNode != null) {
- return enclosingUnit.linkedContext.isLate(linkedNode);
+ return enclosingUnit.linkedContext!.isLate(linkedNode!);
}
return hasModifier(Modifier.LATE);
}
@@ -6725,10 +6712,10 @@
@override
DartType get typeInternal {
- if (_type != null) return _type;
+ if (_type != null) return _type!;
if (linkedNode != null) {
- linkedContext.applyResolution(linkedNode);
+ linkedContext!.applyResolution(linkedNode!);
// While performing inference during linking, the first step is to collect
// dependencies. During this step we resolve the expression, but we might
@@ -6736,17 +6723,17 @@
// we give some type. A better solution would be to infer recursively, but
// we are not doing this yet.
if (_type == null) {
- assert(linkedContext.isLinking);
+ assert(linkedContext!.isLinking);
return DynamicTypeImpl.instance;
}
- return _type;
+ return _type!;
}
if (isSynthetic && _type == null) {
if (getter != null) {
- _type = getter.returnType;
+ _type = getter!.returnType;
} else if (setter != null) {
- List<ParameterElement> parameters = setter.parameters;
+ List<ParameterElement> parameters = setter!.parameters;
_type = parameters.isNotEmpty
? parameters[0].type
: DynamicTypeImpl.instance;
@@ -6779,12 +6766,12 @@
/// A concrete implementation of a [ShowElementCombinator].
class ShowElementCombinatorImpl implements ShowElementCombinator {
- final LinkedUnitContext linkedContext;
- final ShowCombinator linkedNode;
+ final LinkedUnitContext? linkedContext;
+ final ShowCombinator? linkedNode;
/// The names that are to be made visible in the importing library if they are
/// defined in the imported library.
- List<String> _shownNames;
+ List<String>? _shownNames;
/// The offset of the character immediately following the last character of
/// this node.
@@ -6802,7 +6789,7 @@
@override
int get end {
if (linkedNode != null) {
- return linkedNode.end;
+ return linkedNode!.end;
}
return _end;
}
@@ -6814,7 +6801,7 @@
@override
int get offset {
if (linkedNode != null) {
- return linkedNode.keyword.offset;
+ return linkedNode!.keyword.offset;
}
return _offset;
}
@@ -6825,10 +6812,10 @@
@override
List<String> get shownNames {
- if (_shownNames != null) return _shownNames;
+ if (_shownNames != null) return _shownNames!;
if (linkedNode != null) {
- return _shownNames = linkedNode.shownNames.map((i) => i.name).toList();
+ return _shownNames = linkedNode!.shownNames.map((i) => i.name).toList();
}
return _shownNames ?? const <String>[];
@@ -6867,7 +6854,7 @@
linkedNode.name.staticElement = this;
}
if (!linkedNode.isSynthetic) {
- var enclosingRef = enclosing.reference;
+ var enclosingRef = enclosing.reference!;
getter = PropertyAccessorElementImpl_ImplicitGetter(
this,
@@ -6885,7 +6872,7 @@
factory TopLevelVariableElementImpl.forLinkedNodeFactory(
ElementImpl enclosing, Reference reference, AstNode linkedNode) {
- if (enclosing.enclosingUnit.linkedContext.isConst(linkedNode)) {
+ if (enclosing.enclosingUnit.linkedContext!.isConst(linkedNode)) {
return ConstTopLevelVariableElementImpl.forLinkedNode(
enclosing,
reference,
@@ -6905,7 +6892,7 @@
@override
bool get isExternal {
if (linkedNode != null) {
- return enclosingUnit.linkedContext.isExternal(linkedNode);
+ return enclosingUnit.linkedContext!.isExternal(linkedNode!);
}
return hasModifier(Modifier.EXTERNAL);
}
@@ -6917,14 +6904,14 @@
ElementKind get kind => ElementKind.TOP_LEVEL_VARIABLE;
@override
- T accept<T>(ElementVisitor<T> visitor) =>
+ T? accept<T>(ElementVisitor<T> visitor) =>
visitor.visitTopLevelVariableElement(this);
}
/// An element that represents [GenericTypeAlias].
///
/// Clients may not extend, implement or mix-in this class.
-class TypeAliasElementImpl extends ElementImpl
+class TypeAliasElementImpl extends _ExistingElementImpl
with TypeParameterizedElementMixin
implements TypeAliasElement {
/// TODO(scheglov) implement as modifier
@@ -6936,8 +6923,8 @@
bool hasSelfReference = false;
bool _isAliasedElementReady = false;
- ElementImpl _aliasedElement;
- DartType _aliasedType;
+ ElementImpl? _aliasedElement;
+ DartType? _aliasedType;
TypeAliasElementImpl(String name, int nameOffset) : super(name, nameOffset);
@@ -6974,14 +6961,14 @@
}
@override
- ElementImpl get aliasedElement {
+ ElementImpl? get aliasedElement {
_ensureAliasedElement();
return _aliasedElement;
}
@override
DartType get aliasedType {
- if (_aliasedType != null) return _aliasedType;
+ if (_aliasedType != null) return _aliasedType!;
_ensureAliasedElement();
@@ -7001,7 +6988,7 @@
_aliasedType = (_aliasedElement as GenericFunctionTypeElementImpl).type;
}
- return _aliasedType;
+ return _aliasedType!;
}
set aliasedType(DartType rawType) {
@@ -7011,27 +6998,27 @@
@override
int get codeLength {
if (linkedNode != null) {
- return linkedContext.getCodeLength(linkedNode);
+ return linkedContext!.getCodeLength(linkedNode!);
}
- return super.codeLength;
+ return super.codeLength!;
}
@override
int get codeOffset {
if (linkedNode != null) {
- return linkedContext.getCodeOffset(linkedNode);
+ return linkedContext!.getCodeOffset(linkedNode!);
}
- return super.codeOffset;
+ return super.codeOffset!;
}
@override
String get displayName => name;
@override
- String get documentationComment {
+ String? get documentationComment {
if (linkedNode != null) {
- var context = enclosingUnit.linkedContext;
- var comment = context.getDocumentationComment(linkedNode);
+ var context = enclosingUnit.linkedContext!;
+ var comment = context.getDocumentationComment(linkedNode!);
return getCommentNodeRawText(comment);
}
return super.documentationComment;
@@ -7053,15 +7040,15 @@
@override
String get name {
if (linkedNode != null) {
- return reference.name;
+ return reference!.name;
}
- return super.name;
+ return super.name!;
}
@override
int get nameOffset {
if (linkedNode != null) {
- return enclosingUnit.linkedContext.getNameOffset(linkedNode);
+ return enclosingUnit.linkedContext!.getNameOffset(linkedNode!);
}
return super.nameOffset;
@@ -7077,7 +7064,7 @@
}
@override
- T accept<T>(ElementVisitor<T> visitor) {
+ T? accept<T>(ElementVisitor<T> visitor) {
return visitor.visitTypeAliasElement(this);
}
@@ -7088,8 +7075,8 @@
@override
DartType instantiate({
- List<DartType> typeArguments,
- NullabilitySuffix nullabilitySuffix,
+ required List<DartType> typeArguments,
+ required NullabilitySuffix nullabilitySuffix,
}) {
if (hasSelfReference) {
if (isNonFunctionTypeAliasesEnabled) {
@@ -7138,19 +7125,20 @@
var type = linkedNode.type;
if (type is GenericFunctionTypeImpl) {
_aliasedElement =
- type.declaredElement as GenericFunctionTypeElementImpl;
+ type.declaredElement as GenericFunctionTypeElementImpl?;
// TODO(scheglov) Do we need this?
// We probably should set it when linking and when applying.
- // TODO(scheglov) And remove the reference.
+ // TODO(scheglov) And remove the reference!.
_aliasedElement ??= GenericFunctionTypeElementImpl.forLinkedNode(
this,
- reference.getChild('@function'),
+ reference!.getChild('@function'),
type,
);
} else if (isNonFunctionTypeAliasesEnabled) {
// No element for `typedef A<T> = List<T>;`
} else {
_aliasedElement = GenericFunctionTypeElementImpl.forOffset(-1)
+ ..enclosingElement = this
..typeParameters = const <TypeParameterElement>[]
..parameters = const <ParameterElement>[]
..returnType = DynamicTypeImpl.instance;
@@ -7159,11 +7147,11 @@
// TODO(scheglov) Same as above (both).
_aliasedElement = GenericFunctionTypeElementImpl.forLinkedNode(
this,
- reference.getChild('@function'),
+ reference!.getChild('@function'),
linkedNode,
);
}
- linkedContext.applyResolution(linkedNode);
+ linkedContext!.applyResolution(linkedNode);
}
}
@@ -7183,15 +7171,15 @@
/// The default value of the type parameter. It is used to provide the
/// corresponding missing type argument in type annotations and as the
/// fall-back type value in type inference.
- DartType defaultType;
+ DartType? defaultType;
/// The type representing the bound associated with this parameter, or `null`
/// if this parameter does not have an explicit bound.
- DartType _bound;
+ DartType? _bound;
/// The value representing the variance modifier keyword, or `null` if
/// there is no explicit variance modifier, meaning legacy covariance.
- Variance _variance;
+ Variance? _variance;
/// Initialize a newly created method element to have the given [name] and
/// [offset].
@@ -7210,13 +7198,14 @@
}
@override
- DartType get bound => ElementTypeProvider.current.getTypeParameterBound(this);
+ DartType? get bound =>
+ ElementTypeProvider.current.getTypeParameterBound(this);
- set bound(DartType bound) {
+ set bound(DartType? bound) {
_bound = bound;
}
- DartType get boundInternal {
+ DartType? get boundInternal {
if (_bound != null) return _bound;
var linkedNode = this.linkedNode;
@@ -7230,17 +7219,17 @@
@override
int get codeLength {
if (linkedNode != null) {
- return linkedContext.getCodeLength(linkedNode);
+ return linkedContext!.getCodeLength(linkedNode!);
}
- return super.codeLength;
+ return super.codeLength!;
}
@override
int get codeOffset {
if (linkedNode != null) {
- return linkedContext.getCodeOffset(linkedNode);
+ return linkedContext!.getCodeOffset(linkedNode!);
}
- return super.codeOffset;
+ return super.codeOffset!;
}
@override
@@ -7262,13 +7251,13 @@
var node = linkedNode as TypeParameter;
return node.name.name;
}
- return super.name;
+ return super.name!;
}
@override
int get nameOffset {
if (linkedNode != null) {
- return enclosingUnit.linkedContext.getNameOffset(linkedNode);
+ return enclosingUnit.linkedContext!.getNameOffset(linkedNode!);
}
return super.nameOffset;
@@ -7278,7 +7267,7 @@
return _variance ?? Variance.covariant;
}
- set variance(Variance newVariance) => _variance = newVariance;
+ set variance(Variance? newVariance) => _variance = newVariance;
@override
bool operator ==(Object other) {
@@ -7295,7 +7284,7 @@
}
@override
- T accept<T>(ElementVisitor<T> visitor) =>
+ T? accept<T>(ElementVisitor<T> visitor) =>
visitor.visitTypeParameterElement(this);
@override
@@ -7305,7 +7294,7 @@
@override
TypeParameterType instantiate({
- @required NullabilitySuffix nullabilitySuffix,
+ required NullabilitySuffix nullabilitySuffix,
}) {
return TypeParameterTypeImpl(
element: this,
@@ -7316,22 +7305,22 @@
/// Mixin representing an element which can have type parameters.
mixin TypeParameterizedElementMixin
- implements TypeParameterizedElement, ElementImpl {
+ implements _ExistingElementImpl, TypeParameterizedElement {
/// A cached list containing the type parameters declared by this element
/// directly, or `null` if the elements have not been created yet. This does
/// not include type parameters that are declared by any enclosing elements.
- List<TypeParameterElement> _typeParameterElements;
+ List<TypeParameterElement>? _typeParameterElements;
@override
bool get isSimplyBounded => true;
@override
List<TypeParameterElement> get typeParameters {
- if (_typeParameterElements != null) return _typeParameterElements;
+ if (_typeParameterElements != null) return _typeParameterElements!;
if (linkedNode != null) {
- linkedContext.applyResolution(linkedNode);
- var typeParameters = linkedContext.getTypeParameters2(linkedNode);
+ linkedContext!.applyResolution(linkedNode!);
+ var typeParameters = linkedContext!.getTypeParameters2(linkedNode!);
if (typeParameters == null) {
return _typeParameterElements = const [];
}
@@ -7348,7 +7337,7 @@
}
/// A concrete implementation of a [UriReferencedElement].
-abstract class UriReferencedElementImpl extends ElementImpl
+abstract class UriReferencedElementImpl extends _ExistingElementImpl
implements UriReferencedElement {
/// The offset of the URI in the file, or `-1` if this node is synthetic.
int _uriOffset = -1;
@@ -7358,14 +7347,14 @@
int _uriEnd = -1;
/// The URI that is specified by this directive.
- String _uri;
+ String? _uri;
/// Initialize a newly created import element to have the given [name] and
/// [offset]. The offset may be `-1` if the element is synthetic.
- UriReferencedElementImpl(String name, int offset) : super(name, offset);
+ UriReferencedElementImpl(String? name, int offset) : super(name, offset);
UriReferencedElementImpl.forLinkedNode(
- ElementImpl enclosing, Reference reference, AstNode linkedNode)
+ ElementImpl enclosing, Reference? reference, AstNode linkedNode)
: super.forLinkedNode(enclosing, reference, linkedNode);
/// Initialize using the given serialized information.
@@ -7374,10 +7363,10 @@
/// Return the URI that is specified by this directive.
@override
- String get uri => _uri;
+ String? get uri => _uri;
/// Set the URI that is specified by this directive to be the given [uri].
- set uri(String uri) {
+ set uri(String? uri) {
_uri = uri;
}
@@ -7407,14 +7396,14 @@
abstract class VariableElementImpl extends ElementImpl
implements VariableElement {
/// The type of this variable.
- DartType _type;
+ DartType? _type;
/// Initialize a newly created variable element to have the given [name] and
/// [offset].
- VariableElementImpl(String name, int offset) : super(name, offset);
+ VariableElementImpl(String? name, int offset) : super(name, offset);
VariableElementImpl.forLinkedNode(
- ElementImpl enclosing, Reference reference, AstNode linkedNode)
+ ElementImpl enclosing, Reference? reference, AstNode linkedNode)
: super.forLinkedNode(enclosing, reference, linkedNode);
/// Initialize using the given serialized information.
@@ -7428,7 +7417,7 @@
/// initializers. However, analyzer also needs to handle incorrect Dart code,
/// in which case there might be some constant variables that lack
/// initializers.
- Expression get constantInitializer => null;
+ Expression? get constantInitializer => null;
@override
VariableElement get declaration => this;
@@ -7440,11 +7429,11 @@
/// compile-time constant expression, or `null` if this variable is not a
/// 'const' variable, if it does not have an initializer, or if the
/// compilation unit containing the variable has not been resolved.
- EvaluationResultImpl get evaluationResult => null;
+ EvaluationResultImpl? get evaluationResult => null;
/// Set the result of evaluating this variable's initializer as a compile-time
/// constant expression to the given [result].
- set evaluationResult(EvaluationResultImpl result) {
+ set evaluationResult(EvaluationResultImpl? result) {
throw StateError("Invalid attempt to set a compile-time constant result");
}
@@ -7461,7 +7450,7 @@
@override
bool get isConst {
if (linkedNode != null) {
- return enclosingUnit.linkedContext.isConst(linkedNode);
+ return enclosingUnit.linkedContext!.isConst(linkedNode!);
}
return hasModifier(Modifier.CONST);
}
@@ -7477,7 +7466,7 @@
@override
bool get isFinal {
if (linkedNode != null) {
- return enclosingUnit.linkedContext.isFinal(linkedNode);
+ return enclosingUnit.linkedContext!.isFinal(linkedNode!);
}
return hasModifier(Modifier.FINAL);
}
@@ -7491,6 +7480,9 @@
bool get isStatic => hasModifier(Modifier.STATIC);
@override
+ String get name => super.name!;
+
+ @override
DartType get type => ElementTypeProvider.current.getVariableType(this);
set type(DartType type) {
@@ -7501,7 +7493,7 @@
/// [ElementTypeProvider].
///
/// In most cases, the element's `returnType` getter should be used instead.
- DartType get typeInternal => _type;
+ DartType get typeInternal => _type!;
@override
void appendTo(ElementDisplayStringBuilder builder) {
@@ -7509,5 +7501,29 @@
}
@override
- DartObject computeConstantValue() => null;
+ DartObject? computeConstantValue() => null;
+}
+
+abstract class _ExistingElementImpl extends ElementImpl with _HasLibraryMixin {
+ _ExistingElementImpl(String? name, int offset, {Reference? reference})
+ : super(name, offset, reference: reference);
+
+ _ExistingElementImpl.forLinkedNode(
+ ElementImpl? enclosingElement, Reference? reference, AstNode? linkedNode)
+ : super.forLinkedNode(enclosingElement, reference, linkedNode);
+
+ /// Initialize using the given serialized information.
+ _ExistingElementImpl.forSerialized(ElementImpl enclosingUnit)
+ : super.forSerialized(enclosingUnit);
+}
+
+mixin _HasLibraryMixin on ElementImpl {
+ @override
+ LibraryElementImpl get library => thisOrAncestorOfType()!;
+
+ @override
+ Source get librarySource => library.source;
+
+ @override
+ Source get source => enclosingElement!.source!;
}
diff --git a/pkg/analyzer/lib/src/dart/element/extensions.dart b/pkg/analyzer/lib/src/dart/element/extensions.dart
index 1fccef8..f600bd9 100644
--- a/pkg/analyzer/lib/src/dart/element/extensions.dart
+++ b/pkg/analyzer/lib/src/dart/element/extensions.dart
@@ -34,7 +34,7 @@
}
var ancestor = enclosingElement;
if (ancestor is ClassElement || ancestor is ExtensionElement) {
- if (ancestor.hasDoNotStore) {
+ if (ancestor!.hasDoNotStore) {
return true;
}
ancestor = ancestor.enclosingElement;
@@ -46,7 +46,7 @@
extension ParameterElementExtensions on ParameterElement {
/// Return [ParameterElement] with the specified properties replaced.
- ParameterElement copyWith({DartType type, ParameterKind kind}) {
+ ParameterElement copyWith({DartType? type, ParameterKind? kind}) {
return ParameterElementImpl.synthetic(
name,
type ?? this.type,
diff --git a/pkg/analyzer/lib/src/dart/element/generic_inferrer.dart b/pkg/analyzer/lib/src/dart/element/generic_inferrer.dart
index 43bd5eb..56c791f 100644
--- a/pkg/analyzer/lib/src/dart/element/generic_inferrer.dart
+++ b/pkg/analyzer/lib/src/dart/element/generic_inferrer.dart
@@ -7,13 +7,13 @@
import 'package:analyzer/dart/ast/ast.dart' show AstNode, ConstructorName;
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/type.dart';
-import 'package:analyzer/dart/element/type_provider.dart';
import 'package:analyzer/error/listener.dart' show ErrorReporter;
import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/dart/element/nullability_eliminator.dart';
import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/dart/element/type_algebra.dart';
import 'package:analyzer/src/dart/element/type_constraint_gatherer.dart';
+import 'package:analyzer/src/dart/element/type_provider.dart';
import 'package:analyzer/src/dart/element/type_schema.dart';
import 'package:analyzer/src/dart/element/type_system.dart';
import 'package:analyzer/src/error/codes.dart'
@@ -60,13 +60,13 @@
bool get isNonNullableByDefault => _typeSystem.isNonNullableByDefault;
- TypeProvider get typeProvider => _typeSystem.typeProvider;
+ TypeProviderImpl get typeProvider => _typeSystem.typeProvider;
/// Apply an argument constraint, which asserts that the [argument] staticType
/// is a subtype of the [parameterType].
void constrainArgument(
DartType argumentType, DartType parameterType, String parameterName,
- {ClassElement genericClass}) {
+ {ClassElement? genericClass}) {
var origin = _TypeConstraintFromArgument(
argumentType,
parameterType,
@@ -118,10 +118,10 @@
/// `_` to precisely represent an unknown type. If [downwardsInferPhase] is
/// false, we are on our final inference pass, have all available information
/// including argument types, and must not conclude `_` for any type formal.
- List<DartType> infer(List<TypeParameterElement> typeFormals,
+ List<DartType>? infer(List<TypeParameterElement> typeFormals,
{bool considerExtendsClause = true,
- ErrorReporter errorReporter,
- AstNode errorNode,
+ ErrorReporter? errorReporter,
+ AstNode? errorNode,
bool failAtError = false,
bool downwardsInferPhase = false}) {
// Initialize the inferred type array.
@@ -134,22 +134,23 @@
for (int i = 0; i < typeFormals.length; i++) {
// TODO (kallentu) : Clean up TypeParameterElementImpl casting once
// variance is added to the interface.
- TypeParameterElementImpl typeParam = typeFormals[i];
- _TypeConstraint extendsClause;
- if (considerExtendsClause && typeParam.bound != null) {
+ var typeParam = typeFormals[i] as TypeParameterElementImpl;
+ _TypeConstraint? extendsClause;
+ var bound = typeParam.bound;
+ if (considerExtendsClause && bound != null) {
extendsClause = _TypeConstraint.fromExtends(
typeParam,
Substitution.fromPairs(typeFormals, inferredTypes)
- .substituteType(typeParam.bound),
+ .substituteType(bound),
isNonNullableByDefault: isNonNullableByDefault,
);
}
+ var constraints = _constraints[typeParam]!;
inferredTypes[i] = downwardsInferPhase
- ? _inferTypeParameterFromContext(
- _constraints[typeParam], extendsClause,
+ ? _inferTypeParameterFromContext(constraints, extendsClause,
isContravariant: typeParam.variance.isContravariant)
- : _inferTypeParameterFromAll(_constraints[typeParam], extendsClause,
+ : _inferTypeParameterFromAll(constraints, extendsClause,
isContravariant: typeParam.variance.isContravariant,
preferUpwardsInference: !typeParam.isLegacyCovariant);
}
@@ -164,7 +165,7 @@
var knownTypes = <TypeParameterElement, DartType>{};
for (int i = 0; i < typeFormals.length; i++) {
TypeParameterElement typeParam = typeFormals[i];
- var constraints = _constraints[typeParam];
+ var constraints = _constraints[typeParam]!;
var typeParamBound = typeParam.bound;
if (typeParamBound != null) {
@@ -193,7 +194,7 @@
if (failAtError) return null;
errorReporter?.reportErrorForNode(
CompileTimeErrorCode.COULD_NOT_INFER,
- errorNode,
+ errorNode!,
[typeParam.name, _formatError(typeParam, inferred, constraints)]);
// Heuristic: even if we failed, keep the erroneous type.
@@ -204,10 +205,10 @@
if (inferred is FunctionType && inferred.typeFormals.isNotEmpty) {
if (failAtError) return null;
- var typeFormals = (inferred as FunctionType).typeFormals;
+ var typeFormals = inferred.typeFormals;
var typeFormalsStr = typeFormals.map(_elementStr).join(', ');
errorReporter?.reportErrorForNode(
- CompileTimeErrorCode.COULD_NOT_INFER, errorNode, [
+ CompileTimeErrorCode.COULD_NOT_INFER, errorNode!, [
typeParam.name,
' Inferred candidate type ${_typeStr(inferred)} has type parameters'
' [$typeFormalsStr], but a function with'
@@ -259,7 +260,7 @@
.substituteType(typeParam.bound ?? typeProvider.objectType);
// TODO(jmesserly): improve this error message.
errorReporter?.reportErrorForNode(
- CompileTimeErrorCode.COULD_NOT_INFER, errorNode, [
+ CompileTimeErrorCode.COULD_NOT_INFER, errorNode!, [
typeParam.name,
"\nRecursive bound cannot be instantiated: '$typeParamBound'."
"\nConsider passing explicit type argument(s) "
@@ -278,7 +279,7 @@
/// unsuccessful, any constraints that were accumulated during the match
/// attempt have been rewound (see [_rewindConstraints]).
bool tryMatchSubtypeOf(DartType t1, DartType t2, _TypeConstraintOrigin origin,
- {@required bool covariant}) {
+ {required bool covariant}) {
var gatherer = TypeConstraintGatherer(
typeSystem: _typeSystem,
typeParameters: _typeParameters,
@@ -288,7 +289,8 @@
var constraints = gatherer.computeConstraints();
for (var entry in constraints.entries) {
if (!entry.value.isEmpty) {
- _constraints[entry.key].add(
+ var constraint = _constraints[entry.key]!;
+ constraint.add(
_TypeConstraint(
origin,
entry.key,
@@ -329,7 +331,7 @@
/// type parameter which means we choose the upper bound rather than the
/// lower bound for normally covariant type parameters.
DartType _chooseTypeFromConstraints(Iterable<_TypeConstraint> constraints,
- {bool toKnownType = false, @required bool isContravariant}) {
+ {bool toKnownType = false, required bool isContravariant}) {
DartType lower = UnknownInferredType.instance;
DartType upper = UnknownInferredType.instance;
for (var constraint in constraints) {
@@ -425,8 +427,8 @@
}
DartType _inferTypeParameterFromAll(
- List<_TypeConstraint> constraints, _TypeConstraint extendsClause,
- {@required bool isContravariant, @required bool preferUpwardsInference}) {
+ List<_TypeConstraint> constraints, _TypeConstraint? extendsClause,
+ {required bool isContravariant, required bool preferUpwardsInference}) {
// See if we already fixed this type from downwards inference.
// If so, then we aren't allowed to change it based on argument types unless
// [preferUpwardsInference] is true.
@@ -450,8 +452,8 @@
}
DartType _inferTypeParameterFromContext(
- Iterable<_TypeConstraint> constraints, _TypeConstraint extendsClause,
- {@required bool isContravariant}) {
+ Iterable<_TypeConstraint> constraints, _TypeConstraint? extendsClause,
+ {required bool isContravariant}) {
DartType t = _chooseTypeFromConstraints(constraints,
isContravariant: isContravariant);
if (UnknownInferredType.isUnknown(t)) {
@@ -532,12 +534,12 @@
final _TypeConstraintOrigin origin;
_TypeConstraint(this.origin, this.typeParameter,
- {DartType upper, DartType lower})
+ {DartType? upper, DartType? lower})
: super(upper: upper, lower: lower);
_TypeConstraint.fromExtends(
TypeParameterElement element, DartType extendsType,
- {@required bool isNonNullableByDefault})
+ {required bool isNonNullableByDefault})
: this(
_TypeConstraintFromExtendsClause(
element,
@@ -565,11 +567,11 @@
final DartType argumentType;
final DartType parameterType;
final String parameterName;
- final ClassElement genericClass;
+ final ClassElement? genericClass;
_TypeConstraintFromArgument(
this.argumentType, this.parameterType, this.parameterName,
- {this.genericClass, @required bool isNonNullableByDefault})
+ {this.genericClass, required bool isNonNullableByDefault})
: super(isNonNullableByDefault: isNonNullableByDefault);
@override
@@ -579,13 +581,13 @@
// available.
String prefix;
if (genericClass != null &&
- (genericClass.name == "List" || genericClass.name == "Map") &&
- genericClass.library.isDartCore == true) {
+ (genericClass!.name == "List" || genericClass!.name == "Map") &&
+ genericClass!.library.isDartCore == true) {
// This will become:
// "List element"
// "Map key"
// "Map value"
- prefix = "${genericClass.name} $parameterName";
+ prefix = "${genericClass!.name} $parameterName";
} else {
prefix = "Parameter '$parameterName'";
}
@@ -603,7 +605,7 @@
final DartType extendsType;
_TypeConstraintFromExtendsClause(this.typeParam, this.extendsType,
- {@required bool isNonNullableByDefault})
+ {required bool isNonNullableByDefault})
: super(isNonNullableByDefault: isNonNullableByDefault);
@override
@@ -620,7 +622,7 @@
final DartType functionType;
_TypeConstraintFromFunctionContext(this.functionType, this.contextType,
- {@required bool isNonNullableByDefault})
+ {required bool isNonNullableByDefault})
: super(isNonNullableByDefault: isNonNullableByDefault);
@override
@@ -638,7 +640,7 @@
final DartType declaredType;
_TypeConstraintFromReturnType(this.declaredType, this.contextType,
- {@required bool isNonNullableByDefault})
+ {required bool isNonNullableByDefault})
: super(isNonNullableByDefault: isNonNullableByDefault);
@override
@@ -657,7 +659,7 @@
abstract class _TypeConstraintOrigin {
final bool isNonNullableByDefault;
- _TypeConstraintOrigin({@required this.isNonNullableByDefault});
+ _TypeConstraintOrigin({required this.isNonNullableByDefault});
List<String> formatError();
@@ -709,7 +711,7 @@
/// offer the most constrained (strongest) result type.
final DartType lowerBound;
- _TypeRange({DartType lower, DartType upper})
+ _TypeRange({DartType? lower, DartType? upper})
: lowerBound = lower ?? UnknownInferredType.instance,
upperBound = upper ?? UnknownInferredType.instance;
@@ -718,7 +720,7 @@
/// For example, if [typeName] is 'T' and the range has bounds int and Object
/// respectively, the returned string will be 'int <: T <: Object'.
@visibleForTesting
- String format(String typeName, {@required bool withNullability}) {
+ String format(String typeName, {required bool withNullability}) {
String typeStr(DartType type) {
return type.getDisplayString(withNullability: withNullability);
}
diff --git a/pkg/analyzer/lib/src/dart/element/greatest_lower_bound.dart b/pkg/analyzer/lib/src/dart/element/greatest_lower_bound.dart
index 6998a82..1e9aebf 100644
--- a/pkg/analyzer/lib/src/dart/element/greatest_lower_bound.dart
+++ b/pkg/analyzer/lib/src/dart/element/greatest_lower_bound.dart
@@ -204,7 +204,7 @@
assert(T1_nullability == NullabilitySuffix.none);
assert(T2_nullability == NullabilitySuffix.none);
- if (T1 is FunctionType && T2 is FunctionType) {
+ if (T1 is FunctionTypeImpl && T2 is FunctionTypeImpl) {
return _functionType(T1, T2);
}
@@ -219,18 +219,18 @@
}
// FutureOr<S1>
- if (T1 is InterfaceType && T1.isDartAsyncFutureOr) {
+ if (T1 is InterfaceTypeImpl && T1.isDartAsyncFutureOr) {
var S1 = T1.typeArguments[0];
// DOWN(FutureOr<S1>, FutureOr<S2>) = FutureOr(S)
// S = DOWN(S1, S2)
- if (T2 is InterfaceType && T2.isDartAsyncFutureOr) {
+ if (T2 is InterfaceTypeImpl && T2.isDartAsyncFutureOr) {
var S2 = T2.typeArguments[0];
var S = getGreatestLowerBound(S1, S2);
return _typeProvider.futureOrType2(S);
}
// DOWN(FutureOr<S1>, Future<S2>) = Future(S)
// S = DOWN(S1, S2)
- if (T2 is InterfaceType && T2.isDartAsyncFuture) {
+ if (T2 is InterfaceTypeImpl && T2.isDartAsyncFuture) {
var S2 = T2.typeArguments[0];
var S = getGreatestLowerBound(S1, S2);
return _typeProvider.futureType2(S);
@@ -240,11 +240,11 @@
}
// FutureOr<S2>
- if (T2 is InterfaceType && T2.isDartAsyncFutureOr) {
+ if (T2 is InterfaceTypeImpl && T2.isDartAsyncFutureOr) {
var S2 = T2.typeArguments[0];
// DOWN(Future<S1>, FutureOr<S2>) = Future<S>
// S = DOWN(S1, S2)
- if (T1 is InterfaceType && T1.isDartAsyncFuture) {
+ if (T1 is InterfaceTypeImpl && T1.isDartAsyncFuture) {
var S1 = T1.typeArguments[0];
var S = getGreatestLowerBound(S1, S2);
return _typeProvider.futureType2(S);
diff --git a/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart b/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart
index a2b00e9..8d44190 100644
--- a/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart
+++ b/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart
@@ -10,7 +10,6 @@
import 'package:analyzer/src/dart/element/type_system.dart';
import 'package:analyzer/src/error/correct_override.dart';
import 'package:analyzer/src/generated/utilities_general.dart';
-import 'package:meta/meta.dart';
/// Failure because of there is no most specific signature in [candidates].
class CandidatesConflict extends Conflict {
@@ -18,8 +17,8 @@
final List<ExecutableElement> candidates;
CandidatesConflict({
- @required Name name,
- @required this.candidates,
+ required Name name,
+ required this.candidates,
}) : super(name);
}
@@ -37,9 +36,9 @@
final ExecutableElement method;
GetterMethodConflict({
- @required Name name,
- @required this.getter,
- @required this.method,
+ required Name name,
+ required this.getter,
+ required this.method,
}) : super(name);
}
@@ -58,12 +57,12 @@
///
/// If such signature does not exist, return `null`, and if [conflicts] is
/// not `null`, add a new [Conflict] to it.
- ExecutableElement combineSignatures({
- @required ClassElement targetClass,
- @required List<ExecutableElement> candidates,
- @required bool doTopMerge,
- @required Name name,
- List<Conflict> conflicts,
+ ExecutableElement? combineSignatures({
+ required ClassElement targetClass,
+ required List<ExecutableElement> candidates,
+ required bool doTopMerge,
+ required Name name,
+ List<Conflict>? conflicts,
}) {
// If just one candidate, it is always valid.
if (candidates.length == 1) {
@@ -79,9 +78,9 @@
var validOverrides = <ExecutableElement>[];
for (var i = 0; i < candidates.length; i++) {
- var validOverride = candidates[i];
+ ExecutableElement? validOverride = candidates[i];
var overrideHelper = CorrectOverrideHelper(
- library: targetClass.library,
+ library: targetClass.library as LibraryElementImpl,
thisMember: validOverride,
);
for (var j = 0; j < candidates.length; j++) {
@@ -107,7 +106,7 @@
}
if (doTopMerge) {
- var typeSystem = targetClass.library.typeSystem;
+ var typeSystem = targetClass.library.typeSystem as TypeSystemImpl;
return _topMerge(typeSystem, targetClass, validOverrides);
} else {
return validOverrides.first;
@@ -115,7 +114,7 @@
}
/// Return the result of [getInherited2] with [type] substitution.
- ExecutableElement getInherited(InterfaceType type, Name name) {
+ ExecutableElement? getInherited(InterfaceType type, Name name) {
var rawElement = getInherited2(type.element, name);
if (rawElement == null) {
return null;
@@ -133,7 +132,7 @@
/// at all, or because there is no the most specific signature.
///
/// This is equivalent to `getInheritedMap2(type)[name]`.
- ExecutableElement getInherited2(ClassElement element, Name name) {
+ ExecutableElement? getInherited2(ClassElement element, Name name) {
return getInheritedMap2(element)[name];
}
@@ -192,21 +191,17 @@
interface._inheritedMap = {};
_findMostSpecificFromNamedCandidates(
element,
- interface._inheritedMap,
+ interface._inheritedMap!,
interface._overridden,
doTopMerge: false,
);
}
- return interface._inheritedMap;
+ return interface._inheritedMap!;
}
/// Return the interface of the given [element]. It might include
/// private members, not necessary accessible in all libraries.
Interface getInterface(ClassElement element) {
- if (element == null) {
- return Interface._empty;
- }
-
var result = _interfaces[element];
if (result != null) {
return result;
@@ -232,7 +227,7 @@
}
/// Return the result of [getMember2] with [type] substitution.
- ExecutableElement getMember(
+ ExecutableElement? getMember(
InterfaceType type,
Name name, {
bool concrete = false,
@@ -265,7 +260,7 @@
/// If [forMixinIndex] is specified, only the nominal superclass, and the
/// given number of mixins after it are considered. For example for `1` in
/// `class C extends S with M1, M2, M3`, only `S` and `M1` are considered.
- ExecutableElement getMember2(
+ ExecutableElement? getMember2(
ClassElement element,
Name name, {
bool concrete = false,
@@ -295,14 +290,14 @@
/// with the given [name], defined in the [type], would override; or `null`
/// if no members would be overridden.
@Deprecated('Use getOverridden2')
- List<ExecutableElement> getOverridden(InterfaceType type, Name name) {
+ List<ExecutableElement>? getOverridden(InterfaceType type, Name name) {
return getOverridden2(type.element, name);
}
/// Return all members of mixins, superclasses, and interfaces that a member
/// with the given [name], defined in the [element], would override; or `null`
/// if no members would be overridden.
- List<ExecutableElement> getOverridden2(ClassElement element, Name name) {
+ List<ExecutableElement>? getOverridden2(ClassElement element, Name name) {
var interface = getInterface(element);
return interface._overridden[name];
}
@@ -316,19 +311,20 @@
}
void _addCandidates({
- @required Map<Name, List<ExecutableElement>> namedCandidates,
- @required Substitution substitution,
- @required Interface interface,
- @required bool isNonNullableByDefault,
+ required Map<Name, List<ExecutableElement>> namedCandidates,
+ required MapSubstitution substitution,
+ required Interface interface,
+ required bool isNonNullableByDefault,
}) {
var map = interface.map;
- for (var name in map.keys) {
- var candidate = map[name];
+ for (var entry in map.entries) {
+ var name = entry.key;
+ var candidate = entry.value;
candidate = ExecutableMember.from2(candidate, substitution);
if (!isNonNullableByDefault) {
- candidate = Member.legacy(candidate);
+ candidate = Member.legacy(candidate) as ExecutableElement;
}
var candidates = namedCandidates[name];
@@ -359,10 +355,10 @@
}
void _addMixinMembers({
- @required Map<Name, ExecutableElement> implemented,
- @required Substitution substitution,
- @required Interface mixin,
- @required bool isNonNullableByDefault,
+ required Map<Name, ExecutableElement> implemented,
+ required MapSubstitution substitution,
+ required Interface mixin,
+ required bool isNonNullableByDefault,
}) {
for (var entry in mixin.implemented.entries) {
var executable = entry.value;
@@ -378,7 +374,7 @@
executable = ExecutableMember.from2(executable, substitution);
if (!isNonNullableByDefault) {
- executable = Member.legacy(executable);
+ executable = Member.legacy(executable) as ExecutableElement;
}
implemented[entry.key] = executable;
@@ -388,7 +384,7 @@
/// Check that all [candidates] for the given [name] have the same kind, all
/// getters, all methods, or all setter. If a conflict found, return the
/// new [Conflict] instance that describes it.
- Conflict _checkForGetterMethodConflict(
+ Conflict? _checkForGetterMethodConflict(
Name name, List<ExecutableElement> candidates) {
assert(candidates.length > 1);
@@ -412,8 +408,8 @@
return null;
}
- ExecutableElement getter;
- ExecutableElement method;
+ ExecutableElement? getter;
+ ExecutableElement? method;
for (var candidate in candidates) {
var kind = candidate.kind;
if (kind == ElementKind.GETTER) {
@@ -423,7 +419,7 @@
method ??= candidate;
}
}
- return GetterMethodConflict(name: name, getter: getter, method: method);
+ return GetterMethodConflict(name: name, getter: getter!, method: method!);
}
/// The given [namedCandidates] maps names to candidates from direct
@@ -435,16 +431,17 @@
ClassElement targetClass,
Map<Name, ExecutableElement> map,
Map<Name, List<ExecutableElement>> namedCandidates, {
- @required bool doTopMerge,
+ required bool doTopMerge,
}) {
var conflicts = <Conflict>[];
- for (var name in namedCandidates.keys) {
+ for (var entry in namedCandidates.entries) {
+ var name = entry.key;
if (map.containsKey(name)) {
continue;
}
- var candidates = namedCandidates[name];
+ var candidates = entry.value;
var combinedSignature = combineSignatures(
targetClass: targetClass,
@@ -471,7 +468,7 @@
var superImplemented = <Map<Name, ExecutableElement>>[];
var implemented = <Name, ExecutableElement>{};
- Interface superTypeInterface;
+ Interface? superTypeInterface;
var superType = element.supertype;
if (superType != null) {
var substitution = Substitution.fromInterfaceType(superType);
@@ -487,7 +484,7 @@
var executable = entry.value;
executable = ExecutableMember.from2(executable, substitution);
if (!isNonNullableByDefault) {
- executable = Member.legacy(executable);
+ executable = Member.legacy(executable) as ExecutableElement;
}
implemented[entry.key] = executable;
}
@@ -520,14 +517,16 @@
var mixinConflicts = <Conflict>[];
for (var name in mixinInterface.map.keys) {
var candidate = ExecutableMember.from2(
- mixinInterface.map[name],
+ mixinInterface.map[name]!,
substitution,
);
var currentList = namedCandidates[name];
if (currentList == null) {
namedCandidates[name] = [
- isNonNullableByDefault ? candidate : Member.legacy(candidate),
+ isNonNullableByDefault
+ ? candidate
+ : Member.legacy(candidate) as ExecutableElement,
];
continue;
}
@@ -535,7 +534,9 @@
var current = currentList.single;
if (candidate.enclosingElement == mixinElement) {
namedCandidates[name] = [
- isNonNullableByDefault ? candidate : Member.legacy(candidate),
+ isNonNullableByDefault
+ ? candidate
+ : Member.legacy(candidate) as ExecutableElement,
];
if (current.kind != candidate.kind) {
var currentIsGetter = current.kind == ElementKind.GETTER;
@@ -563,7 +564,9 @@
);
for (var entry in map.entries) {
namedCandidates[entry.key] = [
- isNonNullableByDefault ? entry.value : Member.legacy(entry.value),
+ isNonNullableByDefault
+ ? entry.value
+ : Member.legacy(entry.value) as ExecutableElement,
];
}
}
@@ -620,10 +623,11 @@
var noSuchMethod = implemented[_noSuchMethodName];
if (noSuchMethod != null && !_isDeclaredInObject(noSuchMethod)) {
var superForwarders = superTypeInterface?._noSuchMethodForwarders;
- for (var name in interface.keys) {
+ for (var entry in interface.entries) {
+ var name = entry.key;
if (!implemented.containsKey(name) ||
superForwarders != null && superForwarders.contains(name)) {
- implemented[name] = interface[name];
+ implemented[name] = entry.value;
noSuchMethodForwarders.add(name);
}
}
@@ -634,7 +638,6 @@
/// the corresponding mixins applied in the class.
for (var mixinConflicts in mixinsConflicts) {
if (mixinConflicts.isNotEmpty) {
- conflicts ??= [];
conflicts.addAll(mixinConflicts);
}
}
@@ -646,7 +649,7 @@
noSuchMethodForwarders,
namedCandidates,
superImplemented,
- conflicts ?? const [],
+ conflicts,
);
}
@@ -706,7 +709,7 @@
{},
interfaceCandidates,
[superInterface],
- <Conflict>[...?superConflicts, ...?interfaceConflicts],
+ <Conflict>[...superConflicts, ...interfaceConflicts],
);
}
@@ -740,16 +743,18 @@
return first;
}
- FunctionType resultType;
+ FunctionType? resultType;
for (var executable in validOverrides) {
var type = executable.type;
var normalizedType = typeSystem.normalize(type) as FunctionType;
if (resultType == null) {
resultType = normalizedType;
} else {
- resultType = typeSystem.topMerge(resultType, normalizedType);
+ resultType =
+ typeSystem.topMerge(resultType, normalizedType) as FunctionType;
}
}
+ resultType!;
for (var executable in validOverrides) {
if (executable.type == resultType) {
@@ -850,7 +855,7 @@
/// The map of names to the most specific signatures from the mixins,
/// superclasses, or interfaces.
- Map<Name, ExecutableElement> _inheritedMap;
+ Map<Name, ExecutableElement>? _inheritedMap;
Interface._(
this.map,
@@ -872,7 +877,7 @@
class Name {
/// If the name is private, the URI of the defining library.
/// Otherwise, it is `null`.
- final Uri libraryUri;
+ final Uri? libraryUri;
/// The name of this name object.
/// If the name starts with `_`, then the name is private.
@@ -886,7 +891,7 @@
@override
final int hashCode;
- factory Name(Uri libraryUri, String name) {
+ factory Name(Uri? libraryUri, String name) {
if (name.startsWith('_')) {
var hashCode = JenkinsSmiHash.hash2(libraryUri.hashCode, name.hashCode);
return Name._internal(libraryUri, name, false, hashCode);
diff --git a/pkg/analyzer/lib/src/dart/element/least_greatest_closure.dart b/pkg/analyzer/lib/src/dart/element/least_greatest_closure.dart
index c800909..0d4ee9a 100644
--- a/pkg/analyzer/lib/src/dart/element/least_greatest_closure.dart
+++ b/pkg/analyzer/lib/src/dart/element/least_greatest_closure.dart
@@ -8,7 +8,6 @@
import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/dart/element/type_algebra.dart';
import 'package:analyzer/src/dart/element/type_system.dart';
-import 'package:meta/meta.dart';
class LeastGreatestClosureHelper extends ReplacementVisitor {
final TypeSystemImpl typeSystem;
@@ -17,15 +16,15 @@
final DartType bottomType;
final Set<TypeParameterElement> eliminationTargets;
- bool _isLeastClosure;
+ late final bool _isLeastClosure;
bool _isCovariant = true;
LeastGreatestClosureHelper({
- @required this.typeSystem,
- @required this.topType,
- @required this.topFunctionType,
- @required this.bottomType,
- @required this.eliminationTargets,
+ required this.typeSystem,
+ required this.topType,
+ required this.topFunctionType,
+ required this.bottomType,
+ required this.eliminationTargets,
});
DartType get _functionReplacement {
@@ -62,7 +61,7 @@
}
@override
- DartType visitFunctionType(FunctionType node) {
+ DartType? visitFunctionType(FunctionType node) {
// - if `S` is
// `T Function<X0 extends B0, ...., Xk extends Bk>(T0 x0, ...., Tn xn,
// [Tn+1 xn+1, ..., Tm xm])`
@@ -82,7 +81,7 @@
}
@override
- DartType visitTypeParameterType(TypeParameterType node) {
+ DartType? visitTypeParameterType(TypeParameterType node) {
if (eliminationTargets.contains(node.element)) {
var replacement = _typeParameterReplacement as TypeImpl;
return replacement.withNullability(
diff --git a/pkg/analyzer/lib/src/dart/element/least_upper_bound.dart b/pkg/analyzer/lib/src/dart/element/least_upper_bound.dart
index 7a031c7..325bdc0 100644
--- a/pkg/analyzer/lib/src/dart/element/least_upper_bound.dart
+++ b/pkg/analyzer/lib/src/dart/element/least_upper_bound.dart
@@ -69,11 +69,11 @@
/// Return the superclass of this type, or `null` if this type represents
/// the class 'Object'.
- InstantiatedClass get superclass {
+ InstantiatedClass? get superclass {
var supertype = element.supertype;
if (supertype == null) return null;
- supertype = _substitution.substituteType(supertype);
+ supertype = _substitution.substituteType(supertype) as InterfaceType;
return InstantiatedClass.of(supertype);
}
@@ -124,7 +124,7 @@
return buffer.toString();
}
- InterfaceType withNullability(NullabilitySuffix nullability) {
+ InterfaceTypeImpl withNullability(NullabilitySuffix nullability) {
return InterfaceTypeImpl(
element: element,
typeArguments: arguments,
@@ -135,11 +135,12 @@
List<InstantiatedClass> _toInstantiatedClasses(
List<InterfaceType> interfaces,
) {
- var result = List<InstantiatedClass>.filled(interfaces.length, null);
+ var result = <InstantiatedClass>[];
for (var i = 0; i < interfaces.length; i++) {
var interface = interfaces[i];
- var substituted = _substitution.substituteType(interface);
- result[i] = InstantiatedClass.of(substituted);
+ var substituted =
+ _substitution.substituteType(interface) as InterfaceType;
+ result.add(InstantiatedClass.of(substituted));
}
return result;
@@ -196,19 +197,19 @@
assert(args1.length == args2.length);
assert(args1.length == params.length);
- var args = List<DartType>.filled(args1.length, null);
+ var args = <DartType>[];
for (int i = 0; i < args1.length; i++) {
// TODO (kallentu) : Clean up TypeParameterElementImpl casting once
// variance is added to the interface.
Variance parameterVariance =
(params[i] as TypeParameterElementImpl).variance;
if (parameterVariance.isCovariant) {
- args[i] = typeSystem.getLeastUpperBound(args1[i], args2[i]);
+ args.add(typeSystem.getLeastUpperBound(args1[i], args2[i]));
} else if (parameterVariance.isContravariant) {
if (typeSystem is TypeSystemImpl) {
- args[i] = typeSystem.getGreatestLowerBound(args1[i], args2[i]);
+ args.add(typeSystem.getGreatestLowerBound(args1[i], args2[i]));
} else {
- args[i] = typeSystem.getLeastUpperBound(args1[i], args2[i]);
+ args.add(typeSystem.getLeastUpperBound(args1[i], args2[i]));
}
} else if (parameterVariance.isInvariant) {
if (!typeSystem.isSubtypeOf2(args1[i], args2[i]) ||
@@ -221,7 +222,7 @@
}
// TODO (kallentu) : Fix asymmetric bounds behavior for invariant type
// parameters.
- args[i] = args1[i];
+ args.add(args1[i]);
} else {
throw StateError('Type parameter ${params[i]} has unknown '
'variance $parameterVariance for bounds calculation.');
@@ -426,8 +427,7 @@
}
// Should be impossible--there should always be exactly one type with the
// maximum depth.
- assert(false);
- return null;
+ throw StateError('Empty path: $types');
}
/// Return the intersection of the [first] and [second] sets of types, where
@@ -682,7 +682,7 @@
// UP(T Function<...>(...), S Function<...>(...)) = Function
// And other, more interesting variants.
- if (T1 is FunctionType && T2 is FunctionType) {
+ if (T1 is FunctionTypeImpl && T2 is FunctionTypeImpl) {
return _functionType(T1, T2);
}
@@ -705,7 +705,10 @@
// UP(T1, T2) = T1 if T2 <: T1
// And other, more complex variants of interface types.
var helper = InterfaceLeastUpperBoundHelper(_typeSystem);
- return helper.compute(T1, T2);
+ return helper.compute(
+ T1 as InterfaceTypeImpl,
+ T2 as InterfaceTypeImpl,
+ );
}
/// Compute the least upper bound of function types [f] and [g].
@@ -830,7 +833,7 @@
);
}
- DartType _futureOr(DartType T1, DartType T2) {
+ DartType? _futureOr(DartType T1, DartType T2) {
var T1_futureOr = T1 is InterfaceType && T1.isDartAsyncFutureOr
? T1.typeArguments[0]
: null;
diff --git a/pkg/analyzer/lib/src/dart/element/member.dart b/pkg/analyzer/lib/src/dart/element/member.dart
index 20ebc91..011fa49 100644
--- a/pkg/analyzer/lib/src/dart/element/member.dart
+++ b/pkg/analyzer/lib/src/dart/element/member.dart
@@ -16,7 +16,6 @@
import 'package:analyzer/src/generated/java_engine.dart';
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/generated/utilities_dart.dart';
-import 'package:meta/meta.dart';
/// A constructor element defined in a parameterized type where the values of
/// the type parameters are known.
@@ -37,6 +36,9 @@
ConstructorElement get declaration => super.declaration as ConstructorElement;
@override
+ String get displayName => declaration.displayName;
+
+ @override
ClassElement get enclosingElement => declaration.enclosingElement;
@override
@@ -49,13 +51,16 @@
bool get isFactory => declaration.isFactory;
@override
- int get nameEnd => declaration.nameEnd;
+ String get name => declaration.name;
@override
- int get periodOffset => declaration.periodOffset;
+ int? get nameEnd => declaration.nameEnd;
@override
- ConstructorElement get redirectedConstructor {
+ int? get periodOffset => declaration.periodOffset;
+
+ @override
+ ConstructorElement? get redirectedConstructor {
var element = this.declaration.redirectedConstructor;
if (element == null) {
return null;
@@ -64,11 +69,11 @@
ConstructorElement declaration;
MapSubstitution substitution;
if (element is ConstructorMember) {
- declaration = element._declaration;
+ declaration = element._declaration as ConstructorElement;
var map = <TypeParameterElement, DartType>{};
var elementMap = element._substitution.map;
for (var typeParameter in elementMap.keys) {
- var type = elementMap[typeParameter];
+ var type = elementMap[typeParameter]!;
map[typeParameter] = _substitution.substituteType(type);
}
substitution = Substitution.fromMap(map);
@@ -84,7 +89,7 @@
InterfaceType get returnType => type.returnType as InterfaceType;
@override
- T accept<T>(ElementVisitor<T> visitor) =>
+ T? accept<T>(ElementVisitor<T> visitor) =>
visitor.visitConstructorElement(this);
@override
@@ -99,24 +104,18 @@
/// the original constructor if no member was created.
static ConstructorElement from(
ConstructorElement constructor, InterfaceType definingType) {
- if (constructor == null || definingType.typeArguments.isEmpty) {
- return constructor;
- }
-
- FunctionType baseType = constructor.type;
- if (baseType == null) {
- // TODO(brianwilkerson) We need to understand when this can happen.
+ if (definingType.typeArguments.isEmpty) {
return constructor;
}
var isLegacy = false;
if (constructor is ConstructorMember) {
- isLegacy = (constructor as ConstructorMember).isLegacy;
+ isLegacy = constructor.isLegacy;
constructor = constructor.declaration;
}
return ConstructorMember(
- constructor.library.typeProvider,
+ constructor.library.typeProvider as TypeProviderImpl,
constructor,
Substitution.fromInterfaceType(definingType),
isLegacy,
@@ -130,7 +129,7 @@
@override
final List<TypeParameterElement> typeParameters;
- FunctionType _type;
+ FunctionType? _type;
/// Initialize a newly created element to represent a callable element (like a
/// method or function or property), based on the [declaration], and applied
@@ -151,6 +150,9 @@
ExecutableElement get declaration => super.declaration as ExecutableElement;
@override
+ String get displayName => declaration.displayName;
+
+ @override
bool get hasImplicitReturnType => declaration.hasImplicitReturnType;
@override
@@ -193,11 +195,11 @@
@override
FunctionType get type {
- if (_type != null) return _type;
+ if (_type != null) return _type!;
- _type = _substitution.substituteType(declaration.type);
- _type = _toLegacyType(_type);
- return _type;
+ _type = _substitution.substituteType(declaration.type) as FunctionType;
+ _type = _toLegacyType(_type!) as FunctionType;
+ return _type!;
}
@override
@@ -215,10 +217,6 @@
ExecutableElement element,
MapSubstitution substitution,
) {
- if (element == null) {
- return null;
- }
-
TypeProviderImpl typeProvider;
var isLegacy = false;
var combined = substitution;
@@ -293,7 +291,7 @@
);
@override
- FieldElement get field {
+ FieldElement? get field {
var field = (declaration as FieldFormalParameterElement).field;
if (field == null) {
return null;
@@ -309,7 +307,7 @@
bool get isCovariant => declaration.isCovariant;
@override
- T accept<T>(ElementVisitor<T> visitor) =>
+ T? accept<T>(ElementVisitor<T> visitor) =>
visitor.visitFieldFormalParameterElement(this);
}
@@ -329,10 +327,13 @@
FieldElement get declaration => super.declaration as FieldElement;
@override
+ String get displayName => declaration.displayName;
+
+ @override
Element get enclosingElement => declaration.enclosingElement;
@override
- PropertyAccessorElement get getter {
+ PropertyAccessorElement? get getter {
var baseGetter = declaration.getter;
if (baseGetter == null) {
return null;
@@ -357,7 +358,10 @@
bool get isExternal => declaration.isExternal;
@override
- PropertyAccessorElement get setter {
+ String get name => declaration.name;
+
+ @override
+ PropertyAccessorElement? get setter {
var baseSetter = declaration.setter;
if (baseSetter == null) {
return null;
@@ -367,7 +371,7 @@
}
@override
- T accept<T>(ElementVisitor<T> visitor) => visitor.visitFieldElement(this);
+ T? accept<T>(ElementVisitor<T> visitor) => visitor.visitFieldElement(this);
/// If the given [field]'s type is different when any type parameters from the
/// defining type's declaration are replaced with the actual type arguments
@@ -375,11 +379,11 @@
/// field. Return the member that was created, or the base field if no member
/// was created.
static FieldElement from(FieldElement field, InterfaceType definingType) {
- if (field == null || definingType.typeArguments.isEmpty) {
+ if (definingType.typeArguments.isEmpty) {
return field;
}
return FieldMember(
- field.library.typeProvider,
+ field.library.typeProvider as TypeProviderImpl,
field,
Substitution.fromInterfaceType(definingType),
false,
@@ -393,7 +397,7 @@
if (substitution.map.isEmpty) {
return element;
}
- var typeProvider = element.library.typeProvider;
+ var typeProvider = element.library.typeProvider as TypeProviderImpl;
return FieldMember(typeProvider, element, substitution, false);
}
}
@@ -410,13 +414,19 @@
);
@override
- FunctionElement get declaration => super.declaration;
+ FunctionElement get declaration => super.declaration as FunctionElement;
+
+ @override
+ Element get enclosingElement => declaration.enclosingElement;
@override
bool get isEntryPoint => declaration.isEntryPoint;
@override
- T accept<T>(ElementVisitor<T> visitor) {
+ String get name => declaration.name;
+
+ @override
+ T? accept<T>(ElementVisitor<T> visitor) {
return visitor.visitFunctionElement(this);
}
}
@@ -455,10 +465,10 @@
String get displayName => _declaration.displayName;
@override
- String get documentationComment => _declaration.documentationComment;
+ String? get documentationComment => _declaration.documentationComment;
@override
- Element get enclosingElement => _declaration.enclosingElement;
+ Element? get enclosingElement => _declaration.enclosingElement;
@override
bool get hasAlwaysThrows => _declaration.hasAlwaysThrows;
@@ -530,19 +540,19 @@
ElementKind get kind => _declaration.kind;
@override
- LibraryElement get library => _declaration.library;
+ LibraryElement get library => _declaration.library!;
@override
- Source get librarySource => _declaration.librarySource;
+ Source get librarySource => _declaration.librarySource!;
@override
- ElementLocation get location => _declaration.location;
+ ElementLocation get location => _declaration.location!;
@override
List<ElementAnnotation> get metadata => _declaration.metadata;
@override
- String get name => _declaration.name;
+ String? get name => _declaration.name;
@override
int get nameLength => _declaration.nameLength;
@@ -554,7 +564,7 @@
AnalysisSession get session => _declaration.session;
@override
- Source get source => _declaration.source;
+ Source get source => _declaration.source!;
/// The substitution for type parameters referenced in the base element.
MapSubstitution get substitution => _substitution;
@@ -563,7 +573,7 @@
void appendTo(ElementDisplayStringBuilder builder);
@override
- String getDisplayString({@required bool withNullability}) {
+ String getDisplayString({required bool withNullability}) {
var builder = ElementDisplayStringBuilder(
skipAllDynamicArguments: false,
withNullability: withNullability,
@@ -573,29 +583,27 @@
}
@override
- String getExtendedDisplayName(String shortName) =>
+ String getExtendedDisplayName(String? shortName) =>
_declaration.getExtendedDisplayName(shortName);
@override
- bool isAccessibleIn(LibraryElement library) =>
+ bool isAccessibleIn(LibraryElement? library) =>
_declaration.isAccessibleIn(library);
/// Use the given [visitor] to visit all of the [children].
void safelyVisitChildren(List<Element> children, ElementVisitor visitor) {
// TODO(brianwilkerson) Make this private
- if (children != null) {
- for (Element child in children) {
- child.accept(visitor);
- }
+ for (Element child in children) {
+ child.accept(visitor);
}
}
@override
- E thisOrAncestorMatching<E extends Element>(Predicate<Element> predicate) =>
+ E? thisOrAncestorMatching<E extends Element>(Predicate<Element> predicate) =>
declaration.thisOrAncestorMatching(predicate);
@override
- E thisOrAncestorOfType<E extends Element>() =>
+ E? thisOrAncestorOfType<E extends Element>() =>
declaration.thisOrAncestorOfType<E>();
@override
@@ -630,12 +638,12 @@
var member = element as Member;
return ConstructorMember(
member._typeProvider,
- member._declaration,
+ member._declaration as ConstructorElement,
member._substitution,
true,
);
} else {
- var typeProvider = element.library.typeProvider;
+ var typeProvider = element.library.typeProvider as TypeProviderImpl;
return ConstructorMember(
typeProvider, element, Substitution.empty, true);
}
@@ -645,8 +653,9 @@
} else {
var typeProvider = element is Member
? (element as Member)._typeProvider
- : element.library.typeProvider;
- return FunctionMember(typeProvider, element.declaration, true);
+ : element.library.typeProvider as TypeProviderImpl;
+ return FunctionMember(
+ typeProvider, element.declaration as FunctionElement, true);
}
} else if (element is MethodElement) {
if (!element.library.isNonNullableByDefault) {
@@ -655,12 +664,12 @@
var member = element as Member;
return MethodMember(
member._typeProvider,
- member._declaration,
+ member._declaration as MethodElement,
member._substitution,
true,
);
} else {
- var typeProvider = element.library.typeProvider;
+ var typeProvider = element.library.typeProvider as TypeProviderImpl;
return MethodMember(typeProvider, element, Substitution.empty, true);
}
} else if (element is PropertyAccessorElement) {
@@ -670,12 +679,12 @@
var member = element as Member;
return PropertyAccessorMember(
member._typeProvider,
- member._declaration,
+ member._declaration as PropertyAccessorElement,
member._substitution,
true,
);
} else {
- var typeProvider = element.library.typeProvider;
+ var typeProvider = element.library.typeProvider as TypeProviderImpl;
return PropertyAccessorMember(
typeProvider, element, Substitution.empty, true);
}
@@ -722,19 +731,23 @@
Element get enclosingElement => declaration.enclosingElement;
@override
- T accept<T>(ElementVisitor<T> visitor) => visitor.visitMethodElement(this);
+ String get name => declaration.name;
+
+ @override
+ T? accept<T>(ElementVisitor<T> visitor) => visitor.visitMethodElement(this);
/// If the given [method]'s type is different when any type parameters from
/// the defining type's declaration are replaced with the actual type
/// arguments from the [definingType], create a method member representing the
/// given method. Return the member that was created, or the base method if no
/// member was created.
- static MethodElement from(MethodElement method, InterfaceType definingType) {
+ static MethodElement? from(
+ MethodElement? method, InterfaceType definingType) {
if (method == null || definingType.typeArguments.isEmpty) {
return method;
}
- var typeProvider = method.library.typeProvider;
+ var typeProvider = method.library.typeProvider as TypeProviderImpl;
return MethodMember(
typeProvider,
method,
@@ -750,7 +763,7 @@
if (substitution.map.isEmpty) {
return element;
}
- var typeProvider = element.library.typeProvider;
+ var typeProvider = element.library.typeProvider as TypeProviderImpl;
return MethodMember(typeProvider, element, substitution, false);
}
}
@@ -796,10 +809,10 @@
ParameterElement get declaration => super.declaration as ParameterElement;
@override
- String get defaultValueCode => declaration.defaultValueCode;
+ String? get defaultValueCode => declaration.defaultValueCode;
@override
- Element get enclosingElement => declaration.enclosingElement;
+ Element? get enclosingElement => declaration.enclosingElement;
@override
bool get hasDefaultValue => declaration.hasDefaultValue;
@@ -813,6 +826,9 @@
@override
bool get isInitializingFormal => declaration.isInitializingFormal;
+ @override
+ String get name => declaration.name;
+
@deprecated
@override
ParameterKind get parameterKind {
@@ -833,7 +849,8 @@
}
@override
- T accept<T>(ElementVisitor<T> visitor) => visitor.visitParameterElement(this);
+ T? accept<T>(ElementVisitor<T> visitor) =>
+ visitor.visitParameterElement(this);
@override
void appendTo(ElementDisplayStringBuilder builder) {
@@ -879,7 +896,7 @@
) : super(typeProvider, declaration, substitution, isLegacy, typeParameters);
@override
- PropertyAccessorElement get correspondingGetter {
+ PropertyAccessorElement? get correspondingGetter {
var baseGetter = declaration.correspondingGetter;
if (baseGetter == null) {
return null;
@@ -889,7 +906,7 @@
}
@override
- PropertyAccessorElement get correspondingSetter {
+ PropertyAccessorElement? get correspondingSetter {
var baseSetter = declaration.correspondingSetter;
if (baseSetter == null) {
return null;
@@ -912,6 +929,9 @@
bool get isSetter => declaration.isSetter;
@override
+ String get name => declaration.name;
+
+ @override
PropertyInducingElement get variable {
// TODO
PropertyInducingElement variable = declaration.variable;
@@ -925,7 +945,7 @@
}
@override
- T accept<T>(ElementVisitor<T> visitor) =>
+ T? accept<T>(ElementVisitor<T> visitor) =>
visitor.visitPropertyAccessorElement(this);
@override
@@ -941,13 +961,13 @@
/// arguments from the [definingType], create an accessor member representing
/// the given accessor. Return the member that was created, or the base
/// accessor if no member was created.
- static PropertyAccessorElement from(
- PropertyAccessorElement accessor, InterfaceType definingType) {
+ static PropertyAccessorElement? from(
+ PropertyAccessorElement? accessor, InterfaceType definingType) {
if (accessor == null || definingType.typeArguments.isEmpty) {
return accessor;
}
- var typeProvider = accessor.library.typeProvider;
+ var typeProvider = accessor.library.typeProvider as TypeProviderImpl;
return PropertyAccessorMember(
typeProvider,
accessor,
@@ -967,10 +987,14 @@
) : super(typeProvider, declaration, substitution, isLegacy);
@override
- TopLevelVariableElement get declaration => _declaration;
+ TopLevelVariableElement get declaration =>
+ _declaration as TopLevelVariableElement;
@override
- PropertyAccessorElement get getter {
+ String get displayName => declaration.displayName;
+
+ @override
+ PropertyAccessorElement? get getter {
var baseGetter = declaration.getter;
if (baseGetter == null) {
return null;
@@ -986,7 +1010,10 @@
bool get isExternal => declaration.isExternal;
@override
- PropertyAccessorElement get setter {
+ String get name => declaration.name;
+
+ @override
+ PropertyAccessorElement? get setter {
var baseSetter = declaration.setter;
if (baseSetter == null) {
return null;
@@ -996,7 +1023,7 @@
}
@override
- T accept<T>(ElementVisitor<T> visitor) {
+ T? accept<T>(ElementVisitor<T> visitor) {
return visitor.visitTopLevelVariableElement(this);
}
}
@@ -1004,7 +1031,7 @@
/// A variable element defined in a parameterized type where the values of the
/// type parameters are known.
abstract class VariableMember extends Member implements VariableElement {
- DartType _type;
+ DartType? _type;
/// Initialize a newly created element to represent a variable, based on the
/// [declaration], with applied [substitution].
@@ -1038,11 +1065,11 @@
@override
DartType get type {
- if (_type != null) return _type;
+ if (_type != null) return _type!;
_type = _substitution.substituteType(declaration.type);
- _type = _toLegacyType(_type);
- return _type;
+ _type = _toLegacyType(_type!);
+ return _type!;
}
@override
@@ -1051,12 +1078,12 @@
}
@override
- DartObject computeConstantValue() => declaration.computeConstantValue();
+ DartObject? computeConstantValue() => declaration.computeConstantValue();
}
class _SubstitutedTypeParameters {
final List<TypeParameterElement> elements;
- final Substitution substitution;
+ final MapSubstitution substitution;
factory _SubstitutedTypeParameters(
List<TypeParameterElement> elements,
@@ -1068,14 +1095,16 @@
// Create type formals with specialized bounds.
// For example `<U extends T>` where T comes from an outer scope.
- var newElements = List<TypeParameterElement>.filled(elements.length, null);
- var newTypes = List<TypeParameterType>.filled(elements.length, null);
- for (int i = 0; i < newElements.length; i++) {
+ var newElements = <TypeParameterElement>[];
+ var newTypes = <TypeParameterType>[];
+ for (int i = 0; i < elements.length; i++) {
var element = elements[i];
var newElement = TypeParameterElementImpl.synthetic(element.name);
- newElements[i] = newElement;
- newTypes[i] = newElement.instantiate(
- nullabilitySuffix: NullabilitySuffix.none,
+ newElements.add(newElement);
+ newTypes.add(
+ newElement.instantiate(
+ nullabilitySuffix: NullabilitySuffix.none,
+ ),
);
}
diff --git a/pkg/analyzer/lib/src/dart/element/normalize.dart b/pkg/analyzer/lib/src/dart/element/normalize.dart
index 4f00b3f..52f8639 100644
--- a/pkg/analyzer/lib/src/dart/element/normalize.dart
+++ b/pkg/analyzer/lib/src/dart/element/normalize.dart
@@ -35,9 +35,10 @@
FunctionTypeImpl _functionType(FunctionType functionType) {
var fresh = getFreshTypeParameters(functionType.typeFormals);
for (var typeParameter in fresh.freshTypeParameters) {
- if (typeParameter.bound != null) {
+ var bound = typeParameter.bound;
+ if (bound != null) {
var typeParameterImpl = typeParameter as TypeParameterElementImpl;
- typeParameterImpl.bound = _normalize(typeParameter.bound);
+ typeParameterImpl.bound = _normalize(bound);
}
}
@@ -132,7 +133,7 @@
// NORM(X extends T)
// NORM(X & T)
- if (T is TypeParameterType) {
+ if (T is TypeParameterTypeImpl) {
return _typeParameterType(T);
}
@@ -145,13 +146,13 @@
}
// NORM(R Function<X extends B>(S)) = R1 Function(X extends B1>(S1)
- return _functionType(T);
+ return _functionType(T as FunctionType);
}
/// NORM(T?)
- DartType _nullabilityQuestion(TypeImpl T) {
+ DartType _nullabilityQuestion(DartType T) {
// * let S be NORM(T)
- var T_none = T.withNullability(NullabilitySuffix.none);
+ var T_none = (T as TypeImpl).withNullability(NullabilitySuffix.none);
var S = _normalize(T_none);
var S_nullability = S.nullabilitySuffix;
@@ -205,9 +206,9 @@
}
/// NORM(T*)
- DartType _nullabilityStar(TypeImpl T) {
+ DartType _nullabilityStar(DartType T) {
// * let S be NORM(T)
- var T_none = T.withNullability(NullabilitySuffix.none);
+ var T_none = (T as TypeImpl).withNullability(NullabilitySuffix.none);
var S = _normalize(T_none);
var S_nullability = S.nullabilitySuffix;
@@ -237,9 +238,10 @@
var element = T.element;
// NORM(X & T)
- if (T.promotedBound != null) {
+ var promotedBound = T.promotedBound;
+ if (promotedBound != null) {
// let S be NORM(T)
- var S = _normalize(T.promotedBound);
+ var S = _normalize(promotedBound);
return _typeParameterType_promoted(element, S);
}
diff --git a/pkg/analyzer/lib/src/dart/element/nullability_eliminator.dart b/pkg/analyzer/lib/src/dart/element/nullability_eliminator.dart
index 63e7084..c00d3e3 100644
--- a/pkg/analyzer/lib/src/dart/element/nullability_eliminator.dart
+++ b/pkg/analyzer/lib/src/dart/element/nullability_eliminator.dart
@@ -19,7 +19,7 @@
}
@override
- NullabilitySuffix visitNullability(DartType type) {
+ NullabilitySuffix? visitNullability(DartType type) {
if (type.nullabilitySuffix != NullabilitySuffix.star) {
return NullabilitySuffix.star;
}
@@ -27,7 +27,7 @@
}
@override
- ParameterKind visitParameterKind(ParameterKind kind) {
+ ParameterKind? visitParameterKind(ParameterKind kind) {
if (kind == ParameterKind.NAMED_REQUIRED) {
return ParameterKind.NAMED;
}
@@ -38,11 +38,7 @@
/// return a new type with legacy nullability suffixes. Otherwise return the
/// original instance.
static DartType perform(TypeProviderImpl typeProvider, DartType type) {
- if (type == null) {
- return type;
- }
-
var visitor = NullabilityEliminator(typeProvider);
- return type.accept<DartType>(visitor) ?? type;
+ return type.accept(visitor) ?? type;
}
}
diff --git a/pkg/analyzer/lib/src/dart/element/replace_top_bottom_visitor.dart b/pkg/analyzer/lib/src/dart/element/replace_top_bottom_visitor.dart
index 1799c09..1d9c2ca 100644
--- a/pkg/analyzer/lib/src/dart/element/replace_top_bottom_visitor.dart
+++ b/pkg/analyzer/lib/src/dart/element/replace_top_bottom_visitor.dart
@@ -8,7 +8,6 @@
import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/dart/element/type_system.dart';
import 'package:analyzer/src/dart/resolver/variance.dart';
-import 'package:meta/meta.dart';
/// Replace every "top" type in a covariant position with [_bottomType].
/// Replace every "bottom" type in a contravariant position with [_topType].
@@ -107,8 +106,8 @@
}
DartType _typeAliasInstantiation(DartType type, Variance variance) {
- var aliasElement = type.aliasElement;
- var aliasArguments = type.aliasArguments;
+ var aliasElement = type.aliasElement!;
+ var aliasArguments = type.aliasArguments!;
var typeParameters = aliasElement.typeParameters;
assert(typeParameters.length == aliasArguments.length);
@@ -134,10 +133,10 @@
/// resulting type. If the type contains no instances of Top or Bottom, the
/// original type object is returned to avoid unnecessary allocation.
static DartType run({
- @required DartType topType,
- @required DartType bottomType,
- @required TypeSystemImpl typeSystem,
- @required DartType type,
+ required DartType topType,
+ required DartType bottomType,
+ required TypeSystemImpl typeSystem,
+ required DartType type,
}) {
var visitor = ReplaceTopBottomVisitor._(typeSystem, topType, bottomType);
return visitor.process(type, Variance.covariant);
diff --git a/pkg/analyzer/lib/src/dart/element/replacement_visitor.dart b/pkg/analyzer/lib/src/dart/element/replacement_visitor.dart
index c2380d8..8f1d3e5 100644
--- a/pkg/analyzer/lib/src/dart/element/replacement_visitor.dart
+++ b/pkg/analyzer/lib/src/dart/element/replacement_visitor.dart
@@ -15,26 +15,25 @@
import 'package:analyzer/src/generated/utilities_dart.dart';
import 'package:analyzer/src/summary2/function_type_builder.dart';
import 'package:analyzer/src/summary2/named_type_builder.dart';
-import 'package:meta/meta.dart';
/// Helper visitor that clones a type if a nested type is replaced, and
/// otherwise returns `null`.
class ReplacementVisitor
implements
- TypeVisitor<DartType>,
- InferenceTypeVisitor<DartType>,
- LinkingTypeVisitor<DartType> {
+ TypeVisitor<DartType?>,
+ InferenceTypeVisitor<DartType?>,
+ LinkingTypeVisitor<DartType?> {
const ReplacementVisitor();
void changeVariance() {}
- DartType createFunctionType({
- @required FunctionType type,
- @required List<DartType> newAliasArguments,
- @required List<TypeParameterElement> newTypeParameters,
- @required List<ParameterElement> newParameters,
- @required DartType newReturnType,
- @required NullabilitySuffix newNullability,
+ DartType? createFunctionType({
+ required FunctionType type,
+ required List<DartType>? newAliasArguments,
+ required List<TypeParameterElement>? newTypeParameters,
+ required List<ParameterElement>? newParameters,
+ required DartType? newReturnType,
+ required NullabilitySuffix? newNullability,
}) {
if (newNullability == null &&
newReturnType == null &&
@@ -52,12 +51,12 @@
);
}
- DartType createFunctionTypeBuilder({
- @required FunctionTypeBuilder type,
- @required List<TypeParameterElement> newTypeParameters,
- @required List<ParameterElement> newParameters,
- @required DartType newReturnType,
- @required NullabilitySuffix newNullability,
+ DartType? createFunctionTypeBuilder({
+ required FunctionTypeBuilder type,
+ required List<TypeParameterElement>? newTypeParameters,
+ required List<ParameterElement>? newParameters,
+ required DartType? newReturnType,
+ required NullabilitySuffix? newNullability,
}) {
if (newNullability == null &&
newReturnType == null &&
@@ -73,11 +72,11 @@
);
}
- DartType createInterfaceType({
- @required InterfaceType type,
- @required List<DartType> newAliasArguments,
- @required List<DartType> newTypeArguments,
- @required NullabilitySuffix newNullability,
+ DartType? createInterfaceType({
+ required InterfaceType type,
+ required List<DartType>? newAliasArguments,
+ required List<DartType>? newTypeArguments,
+ required NullabilitySuffix? newNullability,
}) {
if (newAliasArguments == null &&
newTypeArguments == null &&
@@ -94,10 +93,10 @@
);
}
- NamedTypeBuilder createNamedTypeBuilder({
- @required NamedTypeBuilder type,
- @required List<DartType> newTypeArguments,
- @required NullabilitySuffix newNullability,
+ NamedTypeBuilder? createNamedTypeBuilder({
+ required NamedTypeBuilder type,
+ required List<DartType>? newTypeArguments,
+ required NullabilitySuffix? newNullability,
}) {
if (newTypeArguments == null && newNullability == null) {
return null;
@@ -111,21 +110,21 @@
);
}
- DartType createNeverType({
- @required NeverTypeImpl type,
- @required NullabilitySuffix newNullability,
+ DartType? createNeverType({
+ required NeverType type,
+ required NullabilitySuffix? newNullability,
}) {
if (newNullability == null) {
return null;
}
- return type.withNullability(newNullability);
+ return (type as TypeImpl).withNullability(newNullability);
}
- DartType createPromotedTypeParameterType({
- @required TypeParameterType type,
- @required NullabilitySuffix newNullability,
- @required DartType newPromotedBound,
+ DartType? createPromotedTypeParameterType({
+ required TypeParameterType type,
+ required NullabilitySuffix? newNullability,
+ required DartType? newPromotedBound,
}) {
if (newNullability == null && newPromotedBound == null) {
return null;
@@ -139,9 +138,9 @@
);
}
- DartType createTypeParameterType({
- @required TypeParameterType type,
- @required NullabilitySuffix newNullability,
+ DartType? createTypeParameterType({
+ required TypeParameterType type,
+ required NullabilitySuffix? newNullability,
}) {
if (newNullability == null) {
return null;
@@ -149,20 +148,20 @@
return TypeParameterTypeImpl(
element: type.element,
- nullabilitySuffix: newNullability ?? type.nullabilitySuffix,
+ nullabilitySuffix: newNullability,
);
}
@override
- DartType visitDynamicType(DynamicType type) {
+ DartType? visitDynamicType(DynamicType type) {
return null;
}
@override
- DartType visitFunctionType(FunctionType node) {
+ DartType? visitFunctionType(FunctionType node) {
var newNullability = visitNullability(node);
- List<TypeParameterElement> newTypeParameters;
+ List<TypeParameterElement>? newTypeParameters;
for (var i = 0; i < node.typeFormals.length; i++) {
var typeParameter = node.typeFormals[i];
var bound = typeParameter.bound;
@@ -177,7 +176,7 @@
}
}
- Substitution substitution;
+ Substitution? substitution;
if (newTypeParameters != null) {
var map = <TypeParameterElement, DartType>{};
for (var i = 0; i < newTypeParameters.length; ++i) {
@@ -200,7 +199,7 @@
}
}
- DartType visitType(DartType type) {
+ DartType? visitType(DartType? type) {
if (type == null) return null;
var result = type.accept(this);
if (substitution != null) {
@@ -211,7 +210,7 @@
var newReturnType = visitType(node.returnType);
- List<DartType> newAliasArguments;
+ List<DartType>? newAliasArguments;
var aliasArguments = node.aliasArguments;
if (aliasArguments != null) {
for (var i = 0; i < aliasArguments.length; i++) {
@@ -225,7 +224,7 @@
changeVariance();
- List<ParameterElement> newParameters;
+ List<ParameterElement>? newParameters;
for (var i = 0; i < node.parameters.length; i++) {
var parameter = node.parameters[i];
@@ -258,10 +257,10 @@
}
@override
- DartType visitFunctionTypeBuilder(FunctionTypeBuilder node) {
+ DartType? visitFunctionTypeBuilder(FunctionTypeBuilder node) {
var newNullability = visitNullability(node);
- List<TypeParameterElement> newTypeParameters;
+ List<TypeParameterElement>? newTypeParameters;
for (var i = 0; i < node.typeFormals.length; i++) {
var typeParameter = node.typeFormals[i];
var bound = typeParameter.bound;
@@ -276,7 +275,7 @@
}
}
- Substitution substitution;
+ Substitution? substitution;
if (newTypeParameters != null) {
var map = <TypeParameterElement, DartType>{};
for (var i = 0; i < newTypeParameters.length; ++i) {
@@ -299,7 +298,7 @@
}
}
- DartType visitType(DartType type) {
+ DartType? visitType(DartType? type) {
if (type == null) return null;
var result = type.accept(this);
if (substitution != null) {
@@ -312,7 +311,7 @@
changeVariance();
- List<ParameterElement> newParameters;
+ List<ParameterElement>? newParameters;
for (var i = 0; i < node.parameters.length; i++) {
var parameter = node.parameters[i];
@@ -344,7 +343,7 @@
}
@override
- DartType visitInterfaceType(InterfaceType type) {
+ DartType? visitInterfaceType(InterfaceType type) {
var newNullability = visitNullability(type);
var aliasElement = type.aliasElement;
@@ -369,7 +368,7 @@
}
@override
- DartType visitNamedTypeBuilder(NamedTypeBuilder type) {
+ DartType? visitNamedTypeBuilder(NamedTypeBuilder type) {
var newNullability = visitNullability(type);
var parameters = const <TypeParameterElement>[];
@@ -389,7 +388,7 @@
}
@override
- DartType visitNeverType(NeverType type) {
+ DartType? visitNeverType(NeverType type) {
var newNullability = visitNullability(type);
return createNeverType(
@@ -398,25 +397,27 @@
);
}
- NullabilitySuffix visitNullability(DartType type) {
+ NullabilitySuffix? visitNullability(DartType type) {
return null;
}
- ParameterKind visitParameterKind(ParameterKind kind) {
+ ParameterKind? visitParameterKind(ParameterKind kind) {
return null;
}
- DartType visitTypeArgument(
- TypeParameterElement parameter, DartType argument) {
+ DartType? visitTypeArgument(
+ TypeParameterElement parameter,
+ DartType argument,
+ ) {
return argument.accept(this);
}
- DartType visitTypeParameterBound(DartType type) {
+ DartType? visitTypeParameterBound(DartType type) {
return type.accept(this);
}
@override
- DartType visitTypeParameterType(TypeParameterType type) {
+ DartType? visitTypeParameterType(TypeParameterType type) {
var newNullability = visitNullability(type);
var promotedBound = (type as TypeParameterTypeImpl).promotedBound;
@@ -436,18 +437,18 @@
}
@override
- DartType visitUnknownInferredType(UnknownInferredType type) {
+ DartType? visitUnknownInferredType(UnknownInferredType type) {
return null;
}
@override
- DartType visitVoidType(VoidType type) {
+ DartType? visitVoidType(VoidType type) {
return null;
}
- List<DartType> _typeArguments(
+ List<DartType>? _typeArguments(
List<TypeParameterElement> parameters,
- List<DartType> arguments,
+ List<DartType>? arguments,
) {
if (arguments == null) {
return null;
@@ -457,7 +458,7 @@
return null;
}
- List<DartType> newArguments;
+ List<DartType>? newArguments;
for (var i = 0; i < arguments.length; i++) {
var substitution = visitTypeArgument(parameters[i], arguments[i]);
if (substitution != null) {
diff --git a/pkg/analyzer/lib/src/dart/element/runtime_type_equality.dart b/pkg/analyzer/lib/src/dart/element/runtime_type_equality.dart
index 07be5ad..319da39 100644
--- a/pkg/analyzer/lib/src/dart/element/runtime_type_equality.dart
+++ b/pkg/analyzer/lib/src/dart/element/runtime_type_equality.dart
@@ -139,7 +139,7 @@
/// Determines if the two lists of type parameters are equal. If they are,
/// returns a [_TypeParametersResult] indicating the substitutions necessary
/// to demonstrate their equality. If they aren't, returns `null`.
- _TypeParametersResult _typeParameters(
+ _TypeParametersResult? _typeParameters(
List<TypeParameterElement> T1_parameters,
List<TypeParameterElement> T2_parameters,
) {
diff --git a/pkg/analyzer/lib/src/dart/element/scope.dart b/pkg/analyzer/lib/src/dart/element/scope.dart
index 2622bd1..e084086 100644
--- a/pkg/analyzer/lib/src/dart/element/scope.dart
+++ b/pkg/analyzer/lib/src/dart/element/scope.dart
@@ -7,7 +7,6 @@
import 'package:analyzer/src/context/source.dart';
import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/dart/resolver/scope.dart' as impl;
-import 'package:meta/meta.dart';
/// The scope defined by a class.
class ClassScope extends EnclosedScope {
@@ -112,8 +111,8 @@
}
bool shouldIgnoreUndefined({
- @required String prefix,
- @required String name,
+ required String? prefix,
+ required String name,
}) {
for (var importElement in _element.imports) {
if (importElement.prefix?.name == prefix &&
@@ -174,9 +173,9 @@
final Map<String, Element> _getters = {};
final Map<String, Element> _setters = {};
final Set<ExtensionElement> _extensions = {};
- LibraryElement _deferredLibrary;
+ LibraryElement? _deferredLibrary;
- PrefixScope(this._library, PrefixElement prefix) {
+ PrefixScope(this._library, PrefixElement? prefix) {
for (var import in _library.imports) {
if (import.prefix == prefix) {
var elements = impl.NamespaceBuilder().getImportedElements(import);
@@ -190,8 +189,9 @@
@override
ScopeLookupResult lookup(String id) {
- if (_deferredLibrary != null && id == FunctionElement.LOAD_LIBRARY_NAME) {
- return ScopeLookupResult(_deferredLibrary.loadLibraryFunction, null);
+ var deferredLibrary = _deferredLibrary;
+ if (deferredLibrary != null && id == FunctionElement.LOAD_LIBRARY_NAME) {
+ return ScopeLookupResult(deferredLibrary.loadLibraryFunction, null);
}
var getter = _getters[id];
@@ -217,8 +217,8 @@
}
void _addTo({
- @required Map<String, Element> map,
- @required Element element,
+ required Map<String, Element> map,
+ required Element element,
}) {
var id = element.displayName;
@@ -249,7 +249,7 @@
return MultiplyDefinedElementImpl(
_library.context,
_library.session,
- conflictingElements.first.name,
+ conflictingElements.first.name!,
conflictingElements.toList(),
);
}
@@ -272,7 +272,7 @@
if (element is MultiplyDefinedElement) {
return false;
}
- return element.library.isInSdk;
+ return element.library!.isInSdk;
}
}
@@ -288,7 +288,7 @@
class _LibraryImportScope implements Scope {
final LibraryElement _library;
final PrefixScope _nullPrefixScope;
- List<ExtensionElement> _extensions;
+ List<ExtensionElement>? _extensions;
_LibraryImportScope(LibraryElement library)
: _library = library,
diff --git a/pkg/analyzer/lib/src/dart/element/subtype.dart b/pkg/analyzer/lib/src/dart/element/subtype.dart
index 80b0c80..85a9387 100644
--- a/pkg/analyzer/lib/src/dart/element/subtype.dart
+++ b/pkg/analyzer/lib/src/dart/element/subtype.dart
@@ -190,12 +190,15 @@
// Right Promoted Variable: if `T1` is a promoted type variable `X1 & S1`:
// * `T0 <: T1` iff `T0 <: X1` and `T0 <: S1`
- if (T1 is TypeParameterTypeImpl && T1.promotedBound != null) {
- var X1 = TypeParameterTypeImpl(
- element: T1.element,
- nullabilitySuffix: T1.nullabilitySuffix,
- );
- return isSubtypeOf(T0, X1) && isSubtypeOf(T0, T1.promotedBound);
+ if (T1 is TypeParameterTypeImpl) {
+ var T1_promotedBound = T1.promotedBound;
+ if (T1_promotedBound != null) {
+ var X1 = TypeParameterTypeImpl(
+ element: T1.element,
+ nullabilitySuffix: T1.nullabilitySuffix,
+ );
+ return isSubtypeOf(T0, X1) && isSubtypeOf(T0, T1_promotedBound);
+ }
}
// Right FutureOr: if `T1` is `FutureOr<S1>` then:
@@ -468,7 +471,8 @@
for (var interface in subElement.allSupertypes) {
if (interface.element == superElement) {
var substitution = Substitution.fromInterfaceType(subType);
- var substitutedInterface = substitution.substituteType(interface);
+ var substitutedInterface =
+ substitution.substituteType(interface) as InterfaceType;
return _interfaceArguments(
superElement,
substitutedInterface,
diff --git a/pkg/analyzer/lib/src/dart/element/top_merge.dart b/pkg/analyzer/lib/src/dart/element/top_merge.dart
index 8fb1327..c79f91b 100644
--- a/pkg/analyzer/lib/src/dart/element/top_merge.dart
+++ b/pkg/analyzer/lib/src/dart/element/top_merge.dart
@@ -137,7 +137,7 @@
var T_none = (T as TypeImpl).withNullability(NullabilitySuffix.none);
var S_none = (S as TypeImpl).withNullability(NullabilitySuffix.none);
var R_none = topMerge(T_none, S_none) as TypeImpl;
- return R_none?.withNullability(resultNullability);
+ return R_none.withNullability(resultNullability);
}
assert(T_nullability == NullabilitySuffix.none);
@@ -178,11 +178,11 @@
}
List<TypeParameterElement> R_typeParameters;
- Substitution T_Substitution;
- Substitution S_Substitution;
+ Substitution? T_Substitution;
+ Substitution? S_Substitution;
DartType mergeTypes(DartType T, DartType S) {
- if (T_Substitution != null) {
+ if (T_Substitution != null && S_Substitution != null) {
T = T_Substitution.substituteType(T);
S = S_Substitution.substituteType(S);
}
@@ -212,7 +212,7 @@
throw _TopMergeStateError(T, S, 'Different number of formal parameters');
}
- var R_parameters = List<ParameterElement>.filled(T_parameters.length, null);
+ var R_parameters = <ParameterElement>[];
for (var i = 0; i < T_parameters.length; i++) {
var T_parameter = T_parameters[i];
var S_parameter = S_parameters[i];
@@ -254,9 +254,11 @@
R_type = mergeTypes(T_parameter.type, S_parameter.type);
}
- R_parameters[i] = T_parameter.copyWith(
- type: R_type,
- kind: R_kind,
+ R_parameters.add(
+ T_parameter.copyWith(
+ type: R_type,
+ kind: R_kind,
+ ),
);
}
@@ -278,10 +280,10 @@
if (T_arguments.isEmpty) {
return T;
} else {
- var arguments = List<DartType>.filled(T_arguments.length, null);
- for (var i = 0; i < T_arguments.length; i++) {
- arguments[i] = topMerge(T_arguments[i], S_arguments[i]);
- }
+ var arguments = List.generate(
+ T_arguments.length,
+ (i) => topMerge(T_arguments[i], S_arguments[i]),
+ );
return T.element.instantiate(
typeArguments: arguments,
nullabilitySuffix: NullabilitySuffix.none,
@@ -289,7 +291,7 @@
}
}
- ParameterKind _parameterKind(
+ ParameterKind? _parameterKind(
ParameterElement T_parameter,
ParameterElement S_parameter,
) {
@@ -314,7 +316,7 @@
return null;
}
- _MergeTypeParametersResult _typeParameters(
+ _MergeTypeParametersResult? _typeParameters(
List<TypeParameterElement> aParameters,
List<TypeParameterElement> bParameters,
) {
diff --git a/pkg/analyzer/lib/src/dart/element/type.dart b/pkg/analyzer/lib/src/dart/element/type.dart
index 88848f7..8cf0fb0 100644
--- a/pkg/analyzer/lib/src/dart/element/type.dart
+++ b/pkg/analyzer/lib/src/dart/element/type.dart
@@ -19,9 +19,7 @@
import 'package:analyzer/src/dart/element/type_algebra.dart';
import 'package:analyzer/src/dart/element/type_system.dart';
import 'package:analyzer/src/generated/element_type_provider.dart';
-import 'package:analyzer/src/generated/engine.dart' show AnalysisEngine;
import 'package:analyzer/src/generated/utilities_dart.dart';
-import 'package:meta/meta.dart';
/// Transforms the given [list] by applying [transform] to all its elements.
///
@@ -108,13 +106,13 @@
final NullabilitySuffix nullabilitySuffix;
FunctionTypeImpl({
- @required List<TypeParameterElement> typeFormals,
- @required List<ParameterElement> parameters,
- @required DartType returnType,
- @required NullabilitySuffix nullabilitySuffix,
- Element element,
- TypeAliasElement aliasElement,
- List<DartType> aliasArguments,
+ required List<TypeParameterElement> typeFormals,
+ required List<ParameterElement> parameters,
+ required DartType returnType,
+ required NullabilitySuffix nullabilitySuffix,
+ Element? element,
+ TypeAliasElement? aliasElement,
+ List<DartType>? aliasArguments,
}) : typeFormals = typeFormals,
parameters = _sortNamedParameters(parameters),
returnType = returnType,
@@ -123,7 +121,7 @@
aliasElement: aliasElement, aliasArguments: aliasArguments);
@override
- FunctionTypedElement get element {
+ FunctionTypedElement? get element {
// TODO(scheglov) https://github.com/dart-lang/sdk/issues/44629
// TODO(scheglov) Can we just construct it with the right element?
var aliasedElement = aliasElement?.aliasedElement;
@@ -164,7 +162,7 @@
@Deprecated('Check element, or use getDisplayString()')
@override
- String get name => null;
+ String? get name => null;
@override
Map<String, DartType> get namedParameterTypes {
@@ -237,7 +235,7 @@
// To test this, we instantiate both types with the same (unique) type
// variables, and see if the result is equal.
if (typeFormals.isNotEmpty) {
- List<DartType> freshVariables = FunctionTypeImpl.relateTypeFormals(
+ var freshVariables = FunctionTypeImpl.relateTypeFormals(
this, other, (t, s, _, __) => t == s);
if (freshVariables == null) {
return false;
@@ -301,7 +299,7 @@
var elementImpl = element as TypeParameterElementImpl;
assert(!parameters.contains(elementImpl));
- var bound = elementImpl.bound as TypeImpl;
+ var bound = elementImpl.bound as TypeImpl?;
if (bound != null && bound.referencesAny(parameters)) {
return true;
}
@@ -358,11 +356,11 @@
///
/// If [boundsRelation] is omitted, uses [returnRelation]. This is for
/// backwards compatibility, and convenience for Dart 1 type system methods.
- static bool relate(FunctionType t, DartType other,
+ static bool relate(FunctionType t, DartType? other,
bool Function(DartType t, DartType s) returnRelation,
- {bool Function(ParameterElement t, ParameterElement s) parameterRelation,
+ {bool Function(ParameterElement t, ParameterElement s)? parameterRelation,
bool Function(DartType bound2, DartType bound1,
- TypeParameterElement formal2, TypeParameterElement formal1)
+ TypeParameterElement formal2, TypeParameterElement formal1)?
boundsRelation}) {
parameterRelation ??= (t, s) => returnRelation(t.type, s.type);
boundsRelation ??= (t, s, _, __) => returnRelation(t, s);
@@ -380,9 +378,9 @@
}
// This type cast is safe, because we checked it above.
- FunctionType s = other as FunctionType;
+ FunctionType s = other;
if (t.typeFormals.isNotEmpty) {
- List<DartType> freshVariables = relateTypeFormals(t, s, boundsRelation);
+ var freshVariables = relateTypeFormals(t, s, boundsRelation);
if (freshVariables == null) {
return false;
}
@@ -469,7 +467,7 @@
if (tParam == null) {
return false;
}
- var sParam = sNamed[key];
+ var sParam = sNamed[key]!;
if (!parameterRelation(tParam, sParam)) {
return false;
}
@@ -516,7 +514,7 @@
/// used to instantiate both function types, allowing further comparison.
/// For example, given `<T>T -> T` and `<U>U -> U` we can instantiate them
/// with `F` to get `F -> F` and `F -> F`, which we can see are equal.
- static List<DartType> relateTypeFormals(
+ static List<TypeParameterType>? relateTypeFormals(
FunctionType f1,
FunctionType f2,
bool Function(DartType bound2, DartType bound1,
@@ -527,7 +525,7 @@
return relateTypeFormals2(params1, params2, relation);
}
- static List<DartType> relateTypeFormals2(
+ static List<TypeParameterType>? relateTypeFormals2(
List<TypeParameterElement> params1,
List<TypeParameterElement> params2,
bool Function(DartType bound2, DartType bound1,
@@ -542,7 +540,7 @@
// {variablesFresh/variables2}
List<TypeParameterElement> variables1 = <TypeParameterElement>[];
List<TypeParameterElement> variables2 = <TypeParameterElement>[];
- List<DartType> variablesFresh = <DartType>[];
+ var variablesFresh = <TypeParameterType>[];
for (int i = 0; i < count; i++) {
TypeParameterElement p1 = params1[i];
TypeParameterElement p2 = params2[i];
@@ -550,7 +548,7 @@
TypeParameterElementImpl.synthetic(p2.name);
ElementTypeProvider.current.freshTypeParameterCreated(pFresh, p2);
- DartType variableFresh = pFresh.instantiate(
+ var variableFresh = pFresh.instantiate(
nullabilitySuffix: NullabilitySuffix.none,
);
@@ -609,7 +607,7 @@
static List<ParameterElement> _sortNamedParameters(
List<ParameterElement> parameters,
) {
- int firstNamedParameterIndex;
+ int? firstNamedParameterIndex;
// Check if already sorted.
var namedParametersAlreadySorted = true;
@@ -632,7 +630,7 @@
// Sort named parameters.
var namedParameters =
- parameters.sublist(firstNamedParameterIndex, parameters.length);
+ parameters.sublist(firstNamedParameterIndex!, parameters.length);
namedParameters.sort((a, b) => a.name.compareTo(b.name));
// Combine into a new list, with sorted named parameters.
@@ -652,20 +650,20 @@
final NullabilitySuffix nullabilitySuffix;
/// Cached [ConstructorElement]s - members or raw elements.
- List<ConstructorElement> _constructors;
+ List<ConstructorElement>? _constructors;
/// Cached [PropertyAccessorElement]s - members or raw elements.
- List<PropertyAccessorElement> _accessors;
+ List<PropertyAccessorElement>? _accessors;
/// Cached [MethodElement]s - members or raw elements.
- List<MethodElement> _methods;
+ List<MethodElement>? _methods;
InterfaceTypeImpl({
- @required ClassElement element,
- @required this.typeArguments,
- @required this.nullabilitySuffix,
- TypeAliasElement aliasElement,
- List<DartType> aliasArguments,
+ required ClassElement element,
+ required this.typeArguments,
+ required this.nullabilitySuffix,
+ TypeAliasElement? aliasElement,
+ List<DartType>? aliasArguments,
}) : super(
element,
aliasElement: aliasElement,
@@ -676,14 +674,13 @@
List<PropertyAccessorElement> get accessors {
if (_accessors == null) {
List<PropertyAccessorElement> accessors = element.accessors;
- List<PropertyAccessorElement> members =
- List<PropertyAccessorElement>.filled(accessors.length, null);
+ var members = <PropertyAccessorElement>[];
for (int i = 0; i < accessors.length; i++) {
- members[i] = PropertyAccessorMember.from(accessors[i], this);
+ members.add(PropertyAccessorMember.from(accessors[i], this)!);
}
_accessors = members;
}
- return _accessors;
+ return _accessors!;
}
@override
@@ -698,18 +695,17 @@
List<ConstructorElement> get constructors {
if (_constructors == null) {
List<ConstructorElement> constructors = element.constructors;
- List<ConstructorElement> members =
- List<ConstructorElement>.filled(constructors.length, null);
+ var members = <ConstructorElement>[];
for (int i = 0; i < constructors.length; i++) {
- members[i] = ConstructorMember.from(constructors[i], this);
+ members.add(ConstructorMember.from(constructors[i], this));
}
_constructors = members;
}
- return _constructors;
+ return _constructors!;
}
@override
- ClassElement get element => super.element;
+ ClassElement get element => super.element as ClassElement;
@override
int get hashCode {
@@ -800,14 +796,13 @@
List<MethodElement> get methods {
if (_methods == null) {
List<MethodElement> methods = element.methods;
- List<MethodElement> members =
- List<MethodElement>.filled(methods.length, null);
+ var members = <MethodElement>[];
for (int i = 0; i < methods.length; i++) {
- members[i] = MethodMember.from(methods[i], this);
+ members.add(MethodMember.from(methods[i], this)!);
}
_methods = members;
}
- return _methods;
+ return _methods!;
}
@override
@@ -821,13 +816,14 @@
String get name => element.name;
@override
- InterfaceType get superclass {
- InterfaceType supertype = element.supertype;
+ InterfaceType? get superclass {
+ var supertype = element.supertype;
if (supertype == null) {
return null;
}
- return Substitution.fromInterfaceType(this).substituteType(supertype);
+ return Substitution.fromInterfaceType(this).substituteType(supertype)
+ as InterfaceType;
}
@override
@@ -875,7 +871,7 @@
}
@override
- InterfaceType asInstanceOf(ClassElement targetElement) {
+ InterfaceType? asInstanceOf(ClassElement targetElement) {
if (element == targetElement) {
return this;
}
@@ -883,7 +879,7 @@
for (var rawInterface in element.allSupertypes) {
if (rawInterface.element == targetElement) {
var substitution = Substitution.fromInterfaceType(this);
- return substitution.substituteType(rawInterface);
+ return substitution.substituteType(rawInterface) as InterfaceType;
}
}
@@ -891,22 +887,22 @@
}
@override
- PropertyAccessorElement getGetter(String getterName) =>
+ PropertyAccessorElement? getGetter(String getterName) =>
PropertyAccessorMember.from(element.getGetter(getterName), this);
@override
- MethodElement getMethod(String methodName) =>
+ MethodElement? getMethod(String methodName) =>
MethodMember.from(element.getMethod(methodName), this);
@override
- PropertyAccessorElement getSetter(String setterName) =>
+ PropertyAccessorElement? getSetter(String setterName) =>
PropertyAccessorMember.from(element.getSetter(setterName), this);
@override
- ConstructorElement lookUpConstructor(
- String constructorName, LibraryElement library) {
+ ConstructorElement? lookUpConstructor(
+ String? constructorName, LibraryElement library) {
// prepare base ConstructorElement
- ConstructorElement constructorElement;
+ ConstructorElement? constructorElement;
if (constructorName == null) {
constructorElement = element.unnamedConstructor;
} else {
@@ -923,9 +919,9 @@
@deprecated
@override
- PropertyAccessorElement lookUpGetter(
- String getterName, LibraryElement library) {
- PropertyAccessorElement element = getGetter(getterName);
+ PropertyAccessorElement? lookUpGetter(
+ String getterName, LibraryElement? library) {
+ var element = getGetter(getterName);
if (element != null && element.isAccessibleIn(library)) {
return element;
}
@@ -933,7 +929,7 @@
}
@override
- PropertyAccessorElement lookUpGetter2(
+ PropertyAccessorElement? lookUpGetter2(
String name,
LibraryElement library, {
bool concrete = false,
@@ -973,26 +969,28 @@
@deprecated
@override
- PropertyAccessorElement lookUpGetterInSuperclass(
- String getterName, LibraryElement library) {
+ PropertyAccessorElement? lookUpGetterInSuperclass(
+ String getterName, LibraryElement? library) {
for (InterfaceType mixin in mixins.reversed) {
- PropertyAccessorElement element = mixin.getGetter(getterName);
+ var element = mixin.getGetter(getterName);
if (element != null && element.isAccessibleIn(library)) {
return element;
}
}
for (InterfaceType constraint in superclassConstraints) {
- PropertyAccessorElement element = constraint.getGetter(getterName);
+ var element = constraint.getGetter(getterName);
if (element != null && element.isAccessibleIn(library)) {
return element;
}
}
HashSet<ClassElement> visitedClasses = HashSet<ClassElement>();
- InterfaceType supertype = superclass;
- ClassElement supertypeElement = supertype?.element;
- while (supertype != null && !visitedClasses.contains(supertypeElement)) {
+ var supertype = superclass;
+ var supertypeElement = supertype?.element;
+ while (supertype != null &&
+ supertypeElement != null &&
+ !visitedClasses.contains(supertypeElement)) {
visitedClasses.add(supertypeElement);
- PropertyAccessorElement element = supertype.getGetter(getterName);
+ var element = supertype.getGetter(getterName);
if (element != null && element.isAccessibleIn(library)) {
return element;
}
@@ -1010,9 +1008,9 @@
@deprecated
@override
- PropertyAccessorElement lookUpInheritedGetter(String name,
- {LibraryElement library, bool thisType = true}) {
- PropertyAccessorElement result;
+ PropertyAccessorElement? lookUpInheritedGetter(String name,
+ {LibraryElement? library, bool thisType = true}) {
+ PropertyAccessorElement? result;
if (thisType) {
result = lookUpGetter(name, library);
} else {
@@ -1027,10 +1025,9 @@
@deprecated
@override
- ExecutableElement lookUpInheritedGetterOrMethod(String name,
- {LibraryElement library}) {
- ExecutableElement result =
- lookUpGetter(name, library) ?? lookUpMethod(name, library);
+ ExecutableElement? lookUpInheritedGetterOrMethod(String name,
+ {LibraryElement? library}) {
+ var result = lookUpGetter(name, library) ?? lookUpMethod(name, library);
if (result != null) {
return result;
@@ -1044,27 +1041,27 @@
}
@deprecated
- ExecutableElement lookUpInheritedMember(String name, LibraryElement library,
+ ExecutableElement? lookUpInheritedMember(String name, LibraryElement library,
{bool concrete = false,
bool forSuperInvocation = false,
- int startMixinIndex,
+ int? startMixinIndex,
bool setter = false,
bool thisType = false}) {
HashSet<ClassElement> visitedClasses = HashSet<ClassElement>();
/// TODO(scheglov) Remove [includeSupers]. It is used only to work around
/// the problem with Flutter code base (using old super-mixins).
- ExecutableElement lookUpImpl(InterfaceTypeImpl type,
+ ExecutableElement? lookUpImpl(InterfaceType? type,
{bool acceptAbstract = false,
bool includeType = true,
bool inMixin = false,
- int startMixinIndex}) {
+ int? startMixinIndex}) {
if (type == null || !visitedClasses.add(type.element)) {
return null;
}
if (includeType) {
- ExecutableElement result;
+ ExecutableElement? result;
if (setter) {
result = type.getSetter(name);
} else {
@@ -1133,9 +1130,9 @@
@deprecated
@override
- MethodElement lookUpInheritedMethod(String name,
- {LibraryElement library, bool thisType = true}) {
- MethodElement result;
+ MethodElement? lookUpInheritedMethod(String name,
+ {LibraryElement? library, bool thisType = true}) {
+ MethodElement? result;
if (thisType) {
result = lookUpMethod(name, library);
} else {
@@ -1150,9 +1147,9 @@
@deprecated
@override
- PropertyAccessorElement lookUpInheritedSetter(String name,
- {LibraryElement library, bool thisType = true}) {
- PropertyAccessorElement result;
+ PropertyAccessorElement? lookUpInheritedSetter(String name,
+ {LibraryElement? library, bool thisType = true}) {
+ PropertyAccessorElement? result;
if (thisType) {
result = lookUpSetter(name, library);
} else {
@@ -1167,8 +1164,8 @@
@deprecated
@override
- MethodElement lookUpMethod(String methodName, LibraryElement library) {
- MethodElement element = getMethod(methodName);
+ MethodElement? lookUpMethod(String methodName, LibraryElement? library) {
+ var element = getMethod(methodName);
if (element != null && element.isAccessibleIn(library)) {
return element;
}
@@ -1176,7 +1173,7 @@
}
@override
- MethodElement lookUpMethod2(
+ MethodElement? lookUpMethod2(
String name,
LibraryElement library, {
bool concrete = false,
@@ -1216,26 +1213,28 @@
@deprecated
@override
- MethodElement lookUpMethodInSuperclass(
- String methodName, LibraryElement library) {
+ MethodElement? lookUpMethodInSuperclass(
+ String methodName, LibraryElement? library) {
for (InterfaceType mixin in mixins.reversed) {
- MethodElement element = mixin.getMethod(methodName);
+ var element = mixin.getMethod(methodName);
if (element != null && element.isAccessibleIn(library)) {
return element;
}
}
for (InterfaceType constraint in superclassConstraints) {
- MethodElement element = constraint.getMethod(methodName);
+ var element = constraint.getMethod(methodName);
if (element != null && element.isAccessibleIn(library)) {
return element;
}
}
HashSet<ClassElement> visitedClasses = HashSet<ClassElement>();
- InterfaceType supertype = superclass;
- ClassElement supertypeElement = supertype?.element;
- while (supertype != null && !visitedClasses.contains(supertypeElement)) {
+ var supertype = superclass;
+ var supertypeElement = supertype?.element;
+ while (supertype != null &&
+ supertypeElement != null &&
+ !visitedClasses.contains(supertypeElement)) {
visitedClasses.add(supertypeElement);
- MethodElement element = supertype.getMethod(methodName);
+ var element = supertype.getMethod(methodName);
if (element != null && element.isAccessibleIn(library)) {
return element;
}
@@ -1253,9 +1252,9 @@
@deprecated
@override
- PropertyAccessorElement lookUpSetter(
- String setterName, LibraryElement library) {
- PropertyAccessorElement element = getSetter(setterName);
+ PropertyAccessorElement? lookUpSetter(
+ String setterName, LibraryElement? library) {
+ var element = getSetter(setterName);
if (element != null && element.isAccessibleIn(library)) {
return element;
}
@@ -1263,7 +1262,7 @@
}
@override
- PropertyAccessorElement lookUpSetter2(
+ PropertyAccessorElement? lookUpSetter2(
String name,
LibraryElement library, {
bool concrete = false,
@@ -1303,26 +1302,28 @@
@deprecated
@override
- PropertyAccessorElement lookUpSetterInSuperclass(
- String setterName, LibraryElement library) {
+ PropertyAccessorElement? lookUpSetterInSuperclass(
+ String setterName, LibraryElement? library) {
for (InterfaceType mixin in mixins.reversed) {
- PropertyAccessorElement element = mixin.getSetter(setterName);
+ var element = mixin.getSetter(setterName);
if (element != null && element.isAccessibleIn(library)) {
return element;
}
}
for (InterfaceType constraint in superclassConstraints) {
- PropertyAccessorElement element = constraint.getSetter(setterName);
+ var element = constraint.getSetter(setterName);
if (element != null && element.isAccessibleIn(library)) {
return element;
}
}
HashSet<ClassElement> visitedClasses = HashSet<ClassElement>();
- InterfaceType supertype = superclass;
- ClassElement supertypeElement = supertype?.element;
- while (supertype != null && !visitedClasses.contains(supertypeElement)) {
+ var supertype = superclass;
+ var supertypeElement = supertype?.element;
+ while (supertype != null &&
+ supertypeElement != null &&
+ !visitedClasses.contains(supertypeElement)) {
visitedClasses.add(supertypeElement);
- PropertyAccessorElement element = supertype.getSetter(setterName);
+ var element = supertype.getSetter(setterName);
if (element != null && element.isAccessibleIn(library)) {
return element;
}
@@ -1364,16 +1365,16 @@
if (typeParameters.isEmpty) return defined;
var substitution = Substitution.fromInterfaceType(this);
- var result = List<InterfaceType>.filled(defined.length, null);
+ var result = <InterfaceType>[];
for (int i = 0; i < defined.length; i++) {
- result[i] = substitution.substituteType(defined[i]);
+ result.add(substitution.substituteType(defined[i]) as InterfaceType);
}
return result;
}
/// If there is a single type which is at least as specific as all of the
/// types in [types], return it. Otherwise return `null`.
- static DartType findMostSpecificType(
+ static DartType? findMostSpecificType(
List<DartType> types, TypeSystemImpl typeSystem) {
// The << relation ("more specific than") is a partial ordering on types,
// so to find the most specific type of a set, we keep a bucket of the most
@@ -1439,8 +1440,8 @@
if (first.element == second.element) {
return _leastUpperBound(first, second);
}
- TypeSystemImpl typeSystem = first.element.library.typeSystem;
- return typeSystem.getLeastUpperBound(first, second);
+ var typeSystem = first.element.library.typeSystem as TypeSystemImpl;
+ return typeSystem.getLeastUpperBound(first, second) as InterfaceType;
}
/// Return the "least upper bound" of the given types under the assumption
@@ -1467,7 +1468,10 @@
if (argumentCount == 0) {
return firstType;
}
- List<DartType> lubArguments = List<DartType>.filled(argumentCount, null);
+ var lubArguments = List<DartType>.filled(
+ argumentCount,
+ DynamicTypeImpl.instance,
+ );
for (int i = 0; i < argumentCount; i++) {
//
// Ideally we would take the least upper bound of the two argument types,
@@ -1477,9 +1481,6 @@
if (firstArguments[i] == secondArguments[i]) {
lubArguments[i] = firstArguments[i];
}
- if (lubArguments[i] == null) {
- lubArguments[i] = DynamicTypeImpl.instance;
- }
}
NullabilitySuffix computeNullability() {
@@ -1509,12 +1510,12 @@
/// search should include the target type. The [visitedInterfaces] is a set
/// containing all of the interfaces that have been examined, used to prevent
/// infinite recursion and to optimize the search.
- static T _lookUpMemberInInterfaces<T extends ExecutableElement>(
+ static T? _lookUpMemberInInterfaces<T extends ExecutableElement>(
InterfaceType targetType,
bool includeTargetType,
- LibraryElement library,
+ LibraryElement? library,
HashSet<ClassElement> visitedInterfaces,
- T Function(InterfaceType type) getMember) {
+ T? Function(InterfaceType type) getMember) {
// TODO(brianwilkerson) This isn't correct. Section 8.1.1 of the
// specification (titled "Inheritance and Overriding" under "Interfaces")
// describes a much more complex scheme for finding the inherited member.
@@ -1524,33 +1525,33 @@
return null;
}
if (includeTargetType) {
- ExecutableElement member = getMember(targetType);
+ var member = getMember(targetType);
if (member != null && member.isAccessibleIn(library)) {
return member;
}
}
for (InterfaceType interfaceType in targetType.interfaces) {
- ExecutableElement member = _lookUpMemberInInterfaces(
+ var member = _lookUpMemberInInterfaces(
interfaceType, true, library, visitedInterfaces, getMember);
if (member != null) {
return member;
}
}
for (InterfaceType constraint in targetType.superclassConstraints) {
- ExecutableElement member = _lookUpMemberInInterfaces(
+ var member = _lookUpMemberInInterfaces(
constraint, true, library, visitedInterfaces, getMember);
if (member != null) {
return member;
}
}
for (InterfaceType mixinType in targetType.mixins.reversed) {
- ExecutableElement member = _lookUpMemberInInterfaces(
+ var member = _lookUpMemberInInterfaces(
mixinType, true, library, visitedInterfaces, getMember);
if (member != null) {
return member;
}
}
- InterfaceType superclass = targetType.superclass;
+ var superclass = targetType.superclass;
if (superclass == null) {
return null;
}
@@ -1591,6 +1592,9 @@
NeverTypeImpl._(this.nullabilitySuffix) : super(NeverElementImpl());
@override
+ NeverElementImpl get element => super.element as NeverElementImpl;
+
+ @override
int get hashCode => 0;
@override
@@ -1637,7 +1641,6 @@
case NullabilitySuffix.none:
return instance;
}
- throw StateError('Unexpected nullabilitySuffix: $nullabilitySuffix');
}
}
@@ -1645,14 +1648,14 @@
/// representing the declared type of elements in the element model.
abstract class TypeImpl implements DartType {
@override
- final List<DartType> aliasArguments;
+ final List<DartType>? aliasArguments;
@override
- final TypeAliasElement aliasElement;
+ final TypeAliasElement? aliasElement;
/// The element representing the declaration of this type, or `null` if the
/// type has not, or cannot, be associated with an element.
- final Element _element;
+ final Element? _element;
/// Initialize a newly created type to be declared by the given [element].
TypeImpl(this._element, {this.aliasElement, this.aliasArguments})
@@ -1669,7 +1672,7 @@
}
@override
- Element get element => _element;
+ Element? get element => _element;
@override
bool get isBottom => false;
@@ -1732,12 +1735,12 @@
void appendTo(ElementDisplayStringBuilder builder);
@override
- InterfaceType asInstanceOf(ClassElement element) => null;
+ InterfaceType? asInstanceOf(ClassElement element) => null;
@override
String getDisplayString({
bool skipAllDynamicArguments = false,
- @required bool withNullability,
+ required bool withNullability,
}) {
var builder = ElementDisplayStringBuilder(
skipAllDynamicArguments: skipAllDynamicArguments,
@@ -1779,15 +1782,6 @@
return false;
}
for (int i = 0; i < first.length; i++) {
- if (first[i] == null) {
- AnalysisEngine.instance.instrumentationService
- .logInfo('Found null type argument in TypeImpl.equalArrays');
- return second[i] == null;
- } else if (second[i] == null) {
- AnalysisEngine.instance.instrumentationService
- .logInfo('Found null type argument in TypeImpl.equalArrays');
- return false;
- }
if (first[i] != second[i]) {
return false;
}
@@ -1805,13 +1799,13 @@
///
/// 'null' indicates that the type parameter's bound has not been promoted and
/// is therefore the same as the bound of [element].
- final DartType promotedBound;
+ final DartType? promotedBound;
/// Initialize a newly created type parameter type to be declared by the given
/// [element] and to have the given name.
TypeParameterTypeImpl({
- @required TypeParameterElement element,
- @required this.nullabilitySuffix,
+ required TypeParameterElement element,
+ required this.nullabilitySuffix,
this.promotedBound,
}) : super(element);
@@ -1820,7 +1814,7 @@
promotedBound ?? element.bound ?? DynamicTypeImpl.instance;
@override
- ElementLocation get definition => element.location;
+ ElementLocation get definition => element.location!;
@override
TypeParameterElement get element => super.element as TypeParameterElement;
@@ -1888,8 +1882,8 @@
}
@override
- InterfaceType asInstanceOf(ClassElement element) {
- return bound?.asInstanceOf(element);
+ InterfaceType? asInstanceOf(ClassElement element) {
+ return bound.asInstanceOf(element);
}
@override
@@ -1900,25 +1894,26 @@
@override
DartType resolveToBound(DartType objectType) {
if (promotedBound != null) {
- return promotedBound;
+ return promotedBound!;
}
- if (element.bound == null) {
+ var bound = element.bound;
+ if (bound == null) {
return objectType;
}
NullabilitySuffix newNullabilitySuffix;
if (nullabilitySuffix == NullabilitySuffix.question ||
- element.bound.nullabilitySuffix == NullabilitySuffix.question) {
+ bound.nullabilitySuffix == NullabilitySuffix.question) {
newNullabilitySuffix = NullabilitySuffix.question;
} else if (nullabilitySuffix == NullabilitySuffix.star ||
- element.bound.nullabilitySuffix == NullabilitySuffix.star) {
+ bound.nullabilitySuffix == NullabilitySuffix.star) {
newNullabilitySuffix = NullabilitySuffix.star;
} else {
newNullabilitySuffix = NullabilitySuffix.none;
}
- return (element.bound.resolveToBound(objectType) as TypeImpl)
+ return (bound.resolveToBound(objectType) as TypeImpl)
.withNullability(newNullabilitySuffix);
}
diff --git a/pkg/analyzer/lib/src/dart/element/type_algebra.dart b/pkg/analyzer/lib/src/dart/element/type_algebra.dart
index a06c562..4d72f96 100644
--- a/pkg/analyzer/lib/src/dart/element/type_algebra.dart
+++ b/pkg/analyzer/lib/src/dart/element/type_algebra.dart
@@ -156,7 +156,7 @@
const Substitution();
- DartType getSubstitute(TypeParameterElement parameter, bool upperBound);
+ DartType? getSubstitute(TypeParameterElement parameter, bool upperBound);
DartType substituteType(DartType type, {bool contravariant = false}) {
var visitor = _TopSubstitutor(this, contravariant);
@@ -240,7 +240,7 @@
_CombinedSubstitution(this.first, this.second);
@override
- DartType getSubstitute(TypeParameterElement parameter, bool upperBound) {
+ DartType? getSubstitute(TypeParameterElement parameter, bool upperBound) {
return first.getSubstitute(parameter, upperBound) ??
second.getSubstitute(parameter, upperBound);
}
@@ -258,14 +258,13 @@
return const <TypeParameterElement>[];
}
- var freshElements =
- List<TypeParameterElement>.filled(elements.length, null);
+ var freshElements = <TypeParameterElement>[];
for (var i = 0; i < elements.length; i++) {
// TODO (kallentu) : Clean up TypeParameterElementImpl casting once
// variance is added to the interface.
var element = elements[i] as TypeParameterElementImpl;
var freshElement = TypeParameterElementImpl(element.name, -1);
- freshElements[i] = freshElement;
+ freshElements.add(freshElement);
var freshType = freshElement.instantiate(
nullabilitySuffix: NullabilitySuffix.none,
);
@@ -278,9 +277,10 @@
for (var i = 0; i < freshElements.length; i++) {
var element = elements[i];
- if (element.bound != null) {
- TypeParameterElementImpl freshElement = freshElements[i];
- freshElement.bound = element.bound.accept(this);
+ var bound = element.bound;
+ if (bound != null) {
+ var freshElement = freshElements[i] as TypeParameterElementImpl;
+ freshElement.bound = bound.accept(this);
}
}
@@ -288,7 +288,7 @@
}
@override
- DartType lookup(TypeParameterElement parameter, bool upperBound) {
+ DartType? lookup(TypeParameterElement parameter, bool upperBound) {
return substitution[parameter];
}
}
@@ -300,7 +300,7 @@
_MapSubstitution(this.map);
@override
- DartType getSubstitute(TypeParameterElement parameter, bool upperBound) {
+ DartType? getSubstitute(TypeParameterElement parameter, bool upperBound) {
return map[parameter];
}
@@ -347,7 +347,7 @@
}
@override
- DartType lookup(TypeParameterElement parameter, bool upperBound) {
+ DartType? lookup(TypeParameterElement parameter, bool upperBound) {
return substitution.getSubstitute(parameter, upperBound);
}
}
@@ -357,7 +357,7 @@
TypeVisitor<DartType>,
InferenceTypeVisitor<DartType>,
LinkingTypeVisitor<DartType> {
- final _TypeSubstitutor outer;
+ final _TypeSubstitutor? outer;
bool covariantContext = true;
/// The number of times a variable from this environment has been used in
@@ -369,14 +369,14 @@
int useCounter = 0;
_TypeSubstitutor(this.outer) {
- covariantContext = outer == null ? true : outer.covariantContext;
+ covariantContext = outer == null ? true : outer!.covariantContext;
}
void bumpCountersUntil(_TypeSubstitutor target) {
var substitutor = this;
while (substitutor != target) {
substitutor.useCounter++;
- substitutor = substitutor.outer;
+ substitutor = substitutor.outer!;
}
target.useCounter++;
}
@@ -384,8 +384,8 @@
List<TypeParameterElement> freshTypeParameters(
List<TypeParameterElement> elements);
- DartType getSubstitute(TypeParameterElement parameter) {
- var environment = this;
+ DartType? getSubstitute(TypeParameterElement parameter) {
+ _TypeSubstitutor? environment = this;
while (environment != null) {
var replacement = environment.lookup(parameter, covariantContext);
if (replacement != null) {
@@ -401,7 +401,7 @@
covariantContext = !covariantContext;
}
- DartType lookup(TypeParameterElement parameter, bool upperBound);
+ DartType? lookup(TypeParameterElement parameter, bool upperBound);
_FreshTypeParametersSubstitutor newInnerEnvironment() {
return _FreshTypeParametersSubstitutor(this);
@@ -443,7 +443,10 @@
inner.invertVariance();
var returnType = type.returnType.accept(inner);
- var aliasArguments = _mapList(type.aliasArguments);
+
+ var aliasArguments = type.aliasArguments;
+ var newAliasArguments =
+ aliasArguments != null ? _mapList(aliasArguments) : null;
if (useCounter == before) return type;
@@ -453,7 +456,7 @@
returnType: returnType,
nullabilitySuffix: type.nullabilitySuffix,
aliasElement: type.aliasElement,
- aliasArguments: aliasArguments,
+ aliasArguments: newAliasArguments,
);
}
@@ -563,7 +566,6 @@
DartType visitVoidType(VoidType type) => type;
List<DartType> _mapList(List<DartType> types) {
- if (types == null) return null;
return types.map((e) => e.accept(this)).toList();
}
}
@@ -575,7 +577,7 @@
_UpperLowerBoundsSubstitution(this.upper, this.lower);
@override
- DartType getSubstitute(TypeParameterElement parameter, bool upperBound) {
+ DartType? getSubstitute(TypeParameterElement parameter, bool upperBound) {
return upperBound ? upper[parameter] : lower[parameter];
}
diff --git a/pkg/analyzer/lib/src/dart/element/type_constraint_gatherer.dart b/pkg/analyzer/lib/src/dart/element/type_constraint_gatherer.dart
index c3040b2..c729106 100644
--- a/pkg/analyzer/lib/src/dart/element/type_constraint_gatherer.dart
+++ b/pkg/analyzer/lib/src/dart/element/type_constraint_gatherer.dart
@@ -10,7 +10,6 @@
import 'package:analyzer/src/dart/element/type_algebra.dart';
import 'package:analyzer/src/dart/element/type_schema.dart';
import 'package:analyzer/src/dart/element/type_system.dart';
-import 'package:meta/meta.dart';
/// A constraint on the type [parameter] that we're inferring.
/// We require that `lower <: parameter <: upper`.
@@ -42,8 +41,8 @@
final List<TypeConstraint> _constraints = [];
TypeConstraintGatherer({
- @required TypeSystemImpl typeSystem,
- @required Iterable<TypeParameterElement> typeParameters,
+ required TypeSystemImpl typeSystem,
+ required Iterable<TypeParameterElement> typeParameters,
}) : _typeSystem = typeSystem {
_typeParameters.addAll(typeParameters);
}
@@ -69,7 +68,7 @@
for (var constraint in _constraints) {
var parameter = constraint.parameter;
- var mergedConstraint = result[parameter];
+ var mergedConstraint = result[parameter]!;
var lower = _typeSystem.getLeastUpperBound(
mergedConstraint.lower,
@@ -560,7 +559,7 @@
if (interface.element == C1) {
var substitution = Substitution.fromInterfaceType(P);
return _interfaceType_arguments(
- substitution.substituteType(interface),
+ substitution.substituteType(interface) as InterfaceType,
Q,
leftSchema,
);
diff --git a/pkg/analyzer/lib/src/dart/element/type_demotion.dart b/pkg/analyzer/lib/src/dart/element/type_demotion.dart
index 9421190..92390a4 100644
--- a/pkg/analyzer/lib/src/dart/element/type_demotion.dart
+++ b/pkg/analyzer/lib/src/dart/element/type_demotion.dart
@@ -6,7 +6,6 @@
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/src/dart/element/replacement_visitor.dart';
import 'package:analyzer/src/dart/element/type.dart';
-import 'package:meta/meta.dart';
/// Visitor that replaces all promoted type variables the type variable itself
/// and/or replaces all legacy types with non-nullable types.
@@ -17,12 +16,12 @@
final bool nonNullifyTypes;
const DemotionNonNullificationVisitor({
- @required this.demoteTypeVariables,
- @required this.nonNullifyTypes,
+ required this.demoteTypeVariables,
+ required this.nonNullifyTypes,
}) : assert(demoteTypeVariables || nonNullifyTypes);
@override
- NullabilitySuffix visitNullability(DartType type) {
+ NullabilitySuffix? visitNullability(DartType type) {
if (nonNullifyTypes && type.nullabilitySuffix == NullabilitySuffix.star) {
return NullabilitySuffix.none;
}
@@ -30,7 +29,7 @@
}
@override
- DartType visitTypeParameterType(TypeParameterType type) {
+ DartType? visitTypeParameterType(TypeParameterType type) {
var newNullability = visitNullability(type);
if (demoteTypeVariables) {
diff --git a/pkg/analyzer/lib/src/dart/element/type_provider.dart b/pkg/analyzer/lib/src/dart/element/type_provider.dart
index 8806048..332009e 100644
--- a/pkg/analyzer/lib/src/dart/element/type_provider.dart
+++ b/pkg/analyzer/lib/src/dart/element/type_provider.dart
@@ -7,14 +7,13 @@
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/dart/element/type_provider.dart';
import 'package:analyzer/src/dart/element/type.dart';
-import 'package:meta/meta.dart';
/// Provide common functionality shared by the various TypeProvider
/// implementations.
abstract class TypeProviderBase implements TypeProvider {
@override
bool isObjectGetter(String id) {
- PropertyAccessorElement element = objectType.element.getGetter(id);
+ var element = objectType.element.getGetter(id);
return element != null && !element.isStatic;
}
@@ -25,7 +24,7 @@
@override
bool isObjectMethod(String id) {
- MethodElement element = objectType.element.getMethod(id);
+ var element = objectType.element.getMethod(id);
return element != null && !element.isStatic;
}
}
@@ -38,56 +37,56 @@
/// If `false`, then legacy types are returned.
final bool isNonNullableByDefault;
- ClassElement _boolElement;
- ClassElement _doubleElement;
- ClassElement _futureElement;
- ClassElement _futureOrElement;
- ClassElement _intElement;
- ClassElement _iterableElement;
- ClassElement _listElement;
- ClassElement _mapElement;
- ClassElement _nullElement;
- ClassElement _numElement;
- ClassElement _objectElement;
- ClassElement _setElement;
- ClassElement _streamElement;
- ClassElement _stringElement;
- ClassElement _symbolElement;
+ ClassElement? _boolElement;
+ ClassElement? _doubleElement;
+ ClassElement? _futureElement;
+ ClassElement? _futureOrElement;
+ ClassElement? _intElement;
+ ClassElement? _iterableElement;
+ ClassElement? _listElement;
+ ClassElement? _mapElement;
+ ClassElement? _nullElement;
+ ClassElement? _numElement;
+ ClassElement? _objectElement;
+ ClassElement? _setElement;
+ ClassElement? _streamElement;
+ ClassElement? _stringElement;
+ ClassElement? _symbolElement;
- InterfaceType _boolType;
- InterfaceType _deprecatedType;
- InterfaceType _doubleType;
- InterfaceType _doubleTypeQuestion;
- InterfaceType _functionType;
- InterfaceType _futureDynamicType;
- InterfaceType _futureNullType;
- InterfaceType _futureOrNullType;
- InterfaceType _intType;
- InterfaceType _intTypeQuestion;
- InterfaceType _iterableDynamicType;
- InterfaceType _iterableObjectType;
- InterfaceType _mapObjectObjectType;
- InterfaceType _nullType;
- InterfaceType _numType;
- InterfaceType _numTypeQuestion;
- InterfaceType _objectType;
- InterfaceType _stackTraceType;
- InterfaceType _streamDynamicType;
- InterfaceType _stringType;
- InterfaceType _symbolType;
- InterfaceType _typeType;
+ InterfaceType? _boolType;
+ InterfaceType? _deprecatedType;
+ InterfaceType? _doubleType;
+ InterfaceType? _doubleTypeQuestion;
+ InterfaceType? _functionType;
+ InterfaceType? _futureDynamicType;
+ InterfaceType? _futureNullType;
+ InterfaceType? _futureOrNullType;
+ InterfaceType? _intType;
+ InterfaceType? _intTypeQuestion;
+ InterfaceType? _iterableDynamicType;
+ InterfaceType? _iterableObjectType;
+ InterfaceType? _mapObjectObjectType;
+ InterfaceType? _nullType;
+ InterfaceType? _numType;
+ InterfaceType? _numTypeQuestion;
+ InterfaceType? _objectType;
+ InterfaceType? _stackTraceType;
+ InterfaceType? _streamDynamicType;
+ InterfaceType? _stringType;
+ InterfaceType? _symbolType;
+ InterfaceType? _typeType;
- InterfaceTypeImpl _nullStar;
+ InterfaceType? _nullStar;
- Set<ClassElement> _nonSubtypableClasses;
+ Set<ClassElement>? _nonSubtypableClasses;
/// Initialize a newly created type provider to provide the types defined in
/// the given [coreLibrary] and [asyncLibrary].
TypeProviderImpl({
- @required LibraryElement coreLibrary,
- @required LibraryElement asyncLibrary,
- @required bool isNonNullableByDefault,
- }) : _coreLibrary = coreLibrary,
+ required LibraryElement coreLibrary,
+ required LibraryElement asyncLibrary,
+ required bool isNonNullableByDefault,
+ }) : _coreLibrary = coreLibrary,
_asyncLibrary = asyncLibrary,
isNonNullableByDefault = isNonNullableByDefault;
@@ -116,14 +115,13 @@
}
@override
- ClassElement /*!*/ get boolElement {
+ ClassElement get boolElement {
return _boolElement ??= _getClassElement(_coreLibrary, 'bool');
}
@override
- InterfaceType /*!*/ get boolType {
- _boolType ??= _getType(_coreLibrary, "bool");
- return _boolType;
+ InterfaceType get boolType {
+ return _boolType ??= _getType(_coreLibrary, "bool");
}
@override
@@ -135,143 +133,132 @@
}
@override
- InterfaceType /*!*/ get deprecatedType {
- _deprecatedType ??= _getType(_coreLibrary, "Deprecated");
- return _deprecatedType;
+ InterfaceType get deprecatedType {
+ return _deprecatedType ??= _getType(_coreLibrary, "Deprecated");
}
@override
- ClassElement /*!*/ get doubleElement {
+ ClassElement get doubleElement {
return _doubleElement ??= _getClassElement(_coreLibrary, "double");
}
@override
- InterfaceType /*!*/ get doubleType {
- _doubleType ??= _getType(_coreLibrary, "double");
- return _doubleType;
+ InterfaceType get doubleType {
+ return _doubleType ??= _getType(_coreLibrary, "double");
}
- InterfaceType /*!*/ get doubleTypeQuestion =>
+ InterfaceType get doubleTypeQuestion =>
_doubleTypeQuestion ??= (doubleType as InterfaceTypeImpl)
.withNullability(NullabilitySuffix.question);
@override
- DartType /*!*/ get dynamicType => DynamicTypeImpl.instance;
+ DartType get dynamicType => DynamicTypeImpl.instance;
@override
- InterfaceType /*!*/ get functionType {
- _functionType ??= _getType(_coreLibrary, "Function");
- return _functionType;
+ InterfaceType get functionType {
+ return _functionType ??= _getType(_coreLibrary, "Function");
}
@override
- InterfaceType /*!*/ get futureDynamicType {
- _futureDynamicType ??= InterfaceTypeImpl(
+ InterfaceType get futureDynamicType {
+ return _futureDynamicType ??= InterfaceTypeImpl(
element: futureElement,
typeArguments: [dynamicType],
nullabilitySuffix: _nullabilitySuffix,
);
- return _futureDynamicType;
}
@override
- ClassElement /*!*/ get futureElement {
+ ClassElement get futureElement {
return _futureElement ??= _getClassElement(_asyncLibrary, 'Future');
}
@override
- InterfaceType /*!*/ get futureNullType {
- _futureNullType ??= InterfaceTypeImpl(
+ InterfaceType get futureNullType {
+ return _futureNullType ??= InterfaceTypeImpl(
element: futureElement,
typeArguments: [nullType],
nullabilitySuffix: _nullabilitySuffix,
);
- return _futureNullType;
}
@override
- ClassElement /*!*/ get futureOrElement {
+ ClassElement get futureOrElement {
return _futureOrElement ??= _getClassElement(_asyncLibrary, 'FutureOr');
}
@override
- InterfaceType /*!*/ get futureOrNullType {
- _futureOrNullType ??= InterfaceTypeImpl(
+ InterfaceType get futureOrNullType {
+ return _futureOrNullType ??= InterfaceTypeImpl(
element: futureOrElement,
typeArguments: [nullType],
nullabilitySuffix: _nullabilitySuffix,
);
- return _futureOrNullType;
}
@override
- ClassElement /*!*/ get intElement {
+ ClassElement get intElement {
return _intElement ??= _getClassElement(_coreLibrary, "int");
}
@override
- InterfaceType /*!*/ get intType {
- _intType ??= _getType(_coreLibrary, "int");
- return _intType;
+ InterfaceType get intType {
+ return _intType ??= _getType(_coreLibrary, "int");
}
- InterfaceType /*!*/ get intTypeQuestion =>
+ InterfaceType get intTypeQuestion =>
_intTypeQuestion ??= (intType as InterfaceTypeImpl)
.withNullability(NullabilitySuffix.question);
@override
- InterfaceType /*!*/ get iterableDynamicType {
- _iterableDynamicType ??= InterfaceTypeImpl(
+ InterfaceType get iterableDynamicType {
+ return _iterableDynamicType ??= InterfaceTypeImpl(
element: iterableElement,
typeArguments: [dynamicType],
nullabilitySuffix: _nullabilitySuffix,
);
- return _iterableDynamicType;
}
@override
- ClassElement /*!*/ get iterableElement {
+ ClassElement get iterableElement {
return _iterableElement ??= _getClassElement(_coreLibrary, 'Iterable');
}
@override
- InterfaceType /*!*/ get iterableObjectType {
- _iterableObjectType ??= InterfaceTypeImpl(
+ InterfaceType get iterableObjectType {
+ return _iterableObjectType ??= InterfaceTypeImpl(
element: iterableElement,
typeArguments: [objectType],
nullabilitySuffix: _nullabilitySuffix,
);
- return _iterableObjectType;
}
@override
- ClassElement /*!*/ get listElement {
+ ClassElement get listElement {
return _listElement ??= _getClassElement(_coreLibrary, 'List');
}
@override
- ClassElement /*!*/ get mapElement {
+ ClassElement get mapElement {
return _mapElement ??= _getClassElement(_coreLibrary, 'Map');
}
@override
- InterfaceType /*!*/ get mapObjectObjectType {
- _mapObjectObjectType ??= InterfaceTypeImpl(
+ InterfaceType get mapObjectObjectType {
+ return _mapObjectObjectType ??= InterfaceTypeImpl(
element: mapElement,
typeArguments: [objectType, objectType],
nullabilitySuffix: _nullabilitySuffix,
);
- return _mapObjectObjectType;
}
@override
- DartType /*!*/ get neverType => isNonNullableByDefault
+ DartType get neverType => isNonNullableByDefault
? NeverTypeImpl.instance
: NeverTypeImpl.instanceLegacy;
@override
- Set<ClassElement> /*!*/ get nonSubtypableClasses =>
- _nonSubtypableClasses ??= {
+ Set<ClassElement> get nonSubtypableClasses => _nonSubtypableClasses ??= {
boolElement,
doubleElement,
futureOrElement,
@@ -282,11 +269,11 @@
};
@override
- ClassElement /*!*/ get nullElement {
+ ClassElement get nullElement {
return _nullElement ??= _getClassElement(_coreLibrary, 'Null');
}
- InterfaceTypeImpl /*!*/ get nullStar {
+ InterfaceType get nullStar {
return _nullStar ??= nullElement.instantiate(
typeArguments: const [],
nullabilitySuffix: NullabilitySuffix.star,
@@ -294,88 +281,80 @@
}
@override
- InterfaceType /*!*/ get nullType {
- _nullType ??= _getType(_coreLibrary, "Null");
- return _nullType;
+ InterfaceType get nullType {
+ return _nullType ??= _getType(_coreLibrary, "Null");
}
@override
- ClassElement /*!*/ get numElement {
+ ClassElement get numElement {
return _numElement ??= _getClassElement(_coreLibrary, 'num');
}
@override
- InterfaceType /*!*/ get numType {
- _numType ??= _getType(_coreLibrary, "num");
- return _numType;
+ InterfaceType get numType {
+ return _numType ??= _getType(_coreLibrary, "num");
}
- InterfaceType /*!*/ get numTypeQuestion =>
+ InterfaceType get numTypeQuestion =>
_numTypeQuestion ??= (numType as InterfaceTypeImpl)
.withNullability(NullabilitySuffix.question);
- ClassElement /*!*/ get objectElement {
+ ClassElement get objectElement {
return _objectElement ??= _getClassElement(_coreLibrary, 'Object');
}
@override
- InterfaceType /*!*/ get objectType {
- _objectType ??= _getType(_coreLibrary, "Object");
- return _objectType;
+ InterfaceType get objectType {
+ return _objectType ??= _getType(_coreLibrary, "Object");
}
@override
- ClassElement /*!*/ get setElement {
+ ClassElement get setElement {
return _setElement ??= _getClassElement(_coreLibrary, 'Set');
}
@override
- InterfaceType /*!*/ get stackTraceType {
- _stackTraceType ??= _getType(_coreLibrary, "StackTrace");
- return _stackTraceType;
+ InterfaceType get stackTraceType {
+ return _stackTraceType ??= _getType(_coreLibrary, "StackTrace");
}
@override
- InterfaceType /*!*/ get streamDynamicType {
- _streamDynamicType ??= InterfaceTypeImpl(
+ InterfaceType get streamDynamicType {
+ return _streamDynamicType ??= InterfaceTypeImpl(
element: streamElement,
typeArguments: [dynamicType],
nullabilitySuffix: _nullabilitySuffix,
);
- return _streamDynamicType;
}
@override
- ClassElement /*!*/ get streamElement {
+ ClassElement get streamElement {
return _streamElement ??= _getClassElement(_asyncLibrary, 'Stream');
}
@override
- ClassElement /*!*/ get stringElement {
+ ClassElement get stringElement {
return _stringElement ??= _getClassElement(_coreLibrary, 'String');
}
@override
- InterfaceType /*!*/ get stringType {
- _stringType ??= _getType(_coreLibrary, "String");
- return _stringType;
+ InterfaceType get stringType {
+ return _stringType ??= _getType(_coreLibrary, "String");
}
@override
- ClassElement /*!*/ get symbolElement {
+ ClassElement get symbolElement {
return _symbolElement ??= _getClassElement(_coreLibrary, 'Symbol');
}
@override
- InterfaceType /*!*/ get symbolType {
- _symbolType ??= _getType(_coreLibrary, "Symbol");
- return _symbolType;
+ InterfaceType get symbolType {
+ return _symbolType ??= _getType(_coreLibrary, "Symbol");
}
@override
- InterfaceType /*!*/ get typeType {
- _typeType ??= _getType(_coreLibrary, "Type");
- return _typeType;
+ InterfaceType get typeType {
+ return _typeType ??= _getType(_coreLibrary, "Type");
}
@override
diff --git a/pkg/analyzer/lib/src/dart/element/type_schema_elimination.dart b/pkg/analyzer/lib/src/dart/element/type_schema_elimination.dart
index 56e772a5..8072b7b 100644
--- a/pkg/analyzer/lib/src/dart/element/type_schema_elimination.dart
+++ b/pkg/analyzer/lib/src/dart/element/type_schema_elimination.dart
@@ -5,7 +5,6 @@
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/src/dart/element/replacement_visitor.dart';
import 'package:analyzer/src/dart/element/type_schema.dart';
-import 'package:meta/meta.dart';
/// Visitor that computes least and greatest closures of a type schema.
///
@@ -38,10 +37,10 @@
/// resulting type. If the schema contains no instances of `_`, the original
/// schema object is returned to avoid unnecessary allocation.
static DartType run({
- @required DartType topType,
- @required DartType bottomType,
- @required bool isLeastClosure,
- @required DartType schema,
+ required DartType topType,
+ required DartType bottomType,
+ required bool isLeastClosure,
+ required DartType schema,
}) {
var visitor = TypeSchemaEliminationVisitor._(
topType,
diff --git a/pkg/analyzer/lib/src/dart/element/type_system.dart b/pkg/analyzer/lib/src/dart/element/type_system.dart
index 9b2ab91..51ceee2 100644
--- a/pkg/analyzer/lib/src/dart/element/type_system.dart
+++ b/pkg/analyzer/lib/src/dart/element/type_system.dart
@@ -31,7 +31,6 @@
import 'package:analyzer/src/dart/element/type_provider.dart';
import 'package:analyzer/src/dart/element/type_schema.dart';
import 'package:analyzer/src/dart/element/type_schema_elimination.dart';
-import 'package:meta/meta.dart';
/// The [TypeSystem] implementation.
class TypeSystemImpl implements TypeSystem {
@@ -53,28 +52,28 @@
bool strictInference;
/// The cached instance of `Object?`.
- InterfaceTypeImpl _objectQuestion;
+ InterfaceTypeImpl? _objectQuestion;
/// The cached instance of `Object*`.
- InterfaceTypeImpl _objectStar;
+ InterfaceTypeImpl? _objectStar;
/// The cached instance of `Object!`.
- InterfaceTypeImpl _objectNone;
+ InterfaceTypeImpl? _objectNone;
/// The cached instance of `Null!`.
- InterfaceTypeImpl _nullNone;
+ InterfaceTypeImpl? _nullNone;
- GreatestLowerBoundHelper _greatestLowerBoundHelper;
- LeastUpperBoundHelper _leastUpperBoundHelper;
+ late final GreatestLowerBoundHelper _greatestLowerBoundHelper;
+ late final LeastUpperBoundHelper _leastUpperBoundHelper;
/// The implementation of the subtyping relation.
- SubtypeHelper _subtypeHelper;
+ late final SubtypeHelper _subtypeHelper;
TypeSystemImpl({
- @required this.implicitCasts,
- @required this.isNonNullableByDefault,
- @required this.strictInference,
- @required TypeProvider typeProvider,
+ required this.implicitCasts,
+ required this.isNonNullableByDefault,
+ required this.strictInference,
+ required TypeProvider typeProvider,
}) : typeProvider = typeProvider as TypeProviderImpl {
_greatestLowerBoundHelper = GreatestLowerBoundHelper(this);
_leastUpperBoundHelper = LeastUpperBoundHelper(this);
@@ -82,19 +81,19 @@
}
InterfaceTypeImpl get nullNone =>
- _nullNone ??= (typeProvider.nullType as TypeImpl)
+ _nullNone ??= (typeProvider.nullType as InterfaceTypeImpl)
.withNullability(NullabilitySuffix.none);
InterfaceTypeImpl get objectNone =>
- _objectNone ??= (typeProvider.objectType as TypeImpl)
+ _objectNone ??= (typeProvider.objectType as InterfaceTypeImpl)
.withNullability(NullabilitySuffix.none);
InterfaceTypeImpl get objectQuestion =>
- _objectQuestion ??= (typeProvider.objectType as TypeImpl)
+ _objectQuestion ??= (typeProvider.objectType as InterfaceTypeImpl)
.withNullability(NullabilitySuffix.question);
InterfaceTypeImpl get objectStar =>
- _objectStar ??= (typeProvider.objectType as TypeImpl)
+ _objectStar ??= (typeProvider.objectType as InterfaceTypeImpl)
.withNullability(NullabilitySuffix.star);
/// Returns true iff the type [t] accepts function types, and requires an
@@ -106,7 +105,7 @@
/// - `FutureOr<T>` where T is one of the two cases above.
///
/// Note that this returns false if [t] is a top type such as Object.
- bool acceptsFunctionType(DartType t) {
+ bool acceptsFunctionType(DartType? t) {
if (t == null) return false;
if (t.isDartAsyncFutureOr) {
return acceptsFunctionType((t as InterfaceType).typeArguments[0]);
@@ -217,7 +216,7 @@
}
@override
- TypeImpl flatten(DartType type) {
+ DartType flatten(DartType type) {
if (identical(type, UnknownInferredType.instance)) {
return type;
}
@@ -227,7 +226,7 @@
NullabilitySuffix nullabilitySuffix = type.nullabilitySuffix;
if (nullabilitySuffix != NullabilitySuffix.none) {
var S = (type as TypeImpl).withNullability(NullabilitySuffix.none);
- return flatten(S).withNullability(nullabilitySuffix);
+ return (flatten(S) as TypeImpl).withNullability(nullabilitySuffix);
}
if (type is InterfaceType) {
@@ -252,7 +251,7 @@
// types, since they are by definition less specific.
List<DartType> candidateTypes =
_searchTypeHierarchyForFutureTypeParameters(type);
- DartType flattenResult =
+ var flattenResult =
InterfaceTypeImpl.findMostSpecificType(candidateTypes, this);
if (flattenResult != null) {
return flattenResult;
@@ -316,7 +315,7 @@
if (mixinElement.isMixin) {
candidates = mixinElement.superclassConstraints;
} else {
- candidates = [mixinElement.supertype];
+ candidates = [mixinElement.supertype!];
candidates.addAll(mixinElement.mixins);
if (mixinElement.isMixinApplication) {
candidates.removeLast();
@@ -329,7 +328,7 @@
/// Given a type t, if t is an interface type with a call method defined,
/// return the function type for the call method, otherwise return null.
- FunctionType getCallMethodType(DartType t) {
+ FunctionType? getCallMethodType(DartType t) {
if (t is InterfaceType) {
return t.lookUpMethod2('call', t.element.library)?.type;
}
@@ -420,9 +419,9 @@
/// If this function is called with a [contextType] that is also
/// uninstantiated, or a [fnType] that is already instantiated, it will have
/// no effect and return `null`.
- List<DartType> inferFunctionTypeInstantiation(
+ List<DartType>? inferFunctionTypeInstantiation(
FunctionType contextType, FunctionType fnType,
- {ErrorReporter errorReporter, AstNode errorNode}) {
+ {ErrorReporter? errorReporter, AstNode? errorNode}) {
if (contextType.typeFormals.isNotEmpty || fnType.typeFormals.isEmpty) {
return const <DartType>[];
}
@@ -463,15 +462,15 @@
/// they originated, so we can issue an error message tracing back to the
/// argument values, type parameter "extends" clause, or the return type
/// context.
- List<DartType> inferGenericFunctionOrType({
- ClassElement genericClass,
- @required List<TypeParameterElement> typeParameters,
- @required List<ParameterElement> parameters,
- @required DartType declaredReturnType,
- @required List<DartType> argumentTypes,
- @required DartType contextReturnType,
- ErrorReporter errorReporter,
- AstNode errorNode,
+ List<DartType>? inferGenericFunctionOrType({
+ ClassElement? genericClass,
+ required List<TypeParameterElement> typeParameters,
+ required List<ParameterElement> parameters,
+ required DartType declaredReturnType,
+ required List<DartType> argumentTypes,
+ required DartType? contextReturnType,
+ ErrorReporter? errorReporter,
+ AstNode? errorNode,
bool downwards = false,
bool isConst = false,
}) {
@@ -519,24 +518,20 @@
// TODO(scheglov) Move this method to elements for classes, typedefs,
// and generic functions; compute lazily and cache.
DartType instantiateToBounds(DartType type,
- {List<bool> hasError, Map<TypeParameterElement, DartType> knownTypes}) {
+ {List<bool>? hasError, Map<TypeParameterElement, DartType>? knownTypes}) {
List<TypeParameterElement> typeFormals = typeFormalsAsElements(type);
List<DartType> arguments = instantiateTypeFormalsToBounds(typeFormals,
hasError: hasError, knownTypes: knownTypes);
- if (arguments == null) {
- return type;
- }
-
return instantiateType(type, arguments);
}
@override
DartType instantiateToBounds2({
- ClassElement classElement,
+ ClassElement? classElement,
@Deprecated("Use 'typeAliasElement' instead")
- FunctionTypeAliasElement functionTypeAliasElement,
- TypeAliasElement typeAliasElement,
- @required NullabilitySuffix nullabilitySuffix,
+ FunctionTypeAliasElement? functionTypeAliasElement,
+ TypeAliasElement? typeAliasElement,
+ required NullabilitySuffix nullabilitySuffix,
}) {
typeAliasElement ??= functionTypeAliasElement;
if (classElement != null) {
@@ -546,7 +541,7 @@
typeArguments: typeArguments,
nullabilitySuffix: nullabilitySuffix,
);
- type = toLegacyType(type);
+ type = toLegacyType(type) as InterfaceType;
return type;
} else if (typeAliasElement != null) {
var typeParameters = typeAliasElement.typeParameters;
@@ -586,8 +581,8 @@
/// https://github.com/dart-lang/sdk/issues/27526#issuecomment-260021397
List<DartType> instantiateTypeFormalsToBounds(
List<TypeParameterElement> typeFormals,
- {List<bool> hasError,
- Map<TypeParameterElement, DartType> knownTypes}) {
+ {List<bool>? hasError,
+ Map<TypeParameterElement, DartType>? knownTypes}) {
int count = typeFormals.length;
if (count == 0) {
return const <DartType>[];
@@ -602,19 +597,16 @@
for (TypeParameterElement typeParameter in typeFormals) {
all.add(typeParameter);
if (!defaults.containsKey(typeParameter)) {
- if (typeParameter.bound == null) {
- defaults[typeParameter] = DynamicTypeImpl.instance;
- } else {
- partials[typeParameter] = typeParameter.bound;
- }
+ var bound = typeParameter.bound ?? DynamicTypeImpl.instance;
+ partials[typeParameter] = bound;
}
}
- List<TypeParameterElement> getFreeParameters(DartType rootType) {
- List<TypeParameterElement> parameters;
+ List<TypeParameterElement>? getFreeParameters(DartType rootType) {
+ List<TypeParameterElement>? parameters;
Set<DartType> visitedTypes = HashSet<DartType>();
- void appendParameters(DartType type) {
+ void appendParameters(DartType? type) {
if (type == null) {
return;
}
@@ -626,7 +618,7 @@
var element = type.element;
if (all.contains(element)) {
parameters ??= <TypeParameterElement>[];
- parameters.add(element);
+ parameters!.add(element);
}
} else {
if (type is FunctionType) {
@@ -648,8 +640,8 @@
while (hasProgress) {
hasProgress = false;
for (TypeParameterElement parameter in partials.keys) {
- DartType value = partials[parameter];
- List<TypeParameterElement> freeParameters = getFreeParameters(value);
+ DartType value = partials[parameter]!;
+ var freeParameters = getFreeParameters(value);
if (freeParameters == null) {
defaults[parameter] = value;
partials.remove(parameter);
@@ -685,12 +677,12 @@
// to be Phi(B)
for (TypeParameterElement parameter in partials.keys) {
defaults[parameter] = Substitution.fromPairs(domain, range)
- .substituteType(partials[parameter]);
+ .substituteType(partials[parameter]!);
}
}
List<DartType> orderedArguments =
- typeFormals.map((p) => defaults[p]).toList();
+ typeFormals.map((p) => defaults[p]!).toList();
return orderedArguments;
}
@@ -935,14 +927,12 @@
}
// MOREBOTTOM(X extends T, Y extends S) = MOREBOTTOM(T, S)
- var T_bound = T_element.bound;
- var S_bound = S_element.bound;
// The invariant of the larger algorithm that this is only called with
// types that satisfy `BOTTOM(T)` or `NULL(T)`, and all such types, if
// they are type variables, have bounds which themselves are
// `BOTTOM` or `NULL` types.
- assert(T_bound != null);
- assert(S_bound != null);
+ var T_bound = T_element.bound!;
+ var S_bound = S_element.bound!;
return isMoreBottom(T_bound, S_bound);
}
@@ -1033,9 +1023,9 @@
}
// MORETOP(FutureOr<T>, FutureOr<S>) = MORETOP(T, S)
- if (T is InterfaceType &&
+ if (T is InterfaceTypeImpl &&
T.isDartAsyncFutureOr &&
- S is InterfaceType &&
+ S is InterfaceTypeImpl &&
S.isDartAsyncFutureOr) {
assert(T_nullability == NullabilitySuffix.none);
assert(S_nullability == NullabilitySuffix.none);
@@ -1052,7 +1042,7 @@
if (type.isDynamic || type.isVoid || type.isDartCoreNull) {
return false;
} else if (type is TypeParameterTypeImpl && type.promotedBound != null) {
- return isNonNullable(type.promotedBound);
+ return isNonNullable(type.promotedBound!);
} else if (type.nullabilitySuffix == NullabilitySuffix.question) {
return false;
} else if (type is InterfaceType && type.isDartAsyncFutureOr) {
@@ -1093,7 +1083,7 @@
if (type.isDynamic || type.isVoid || type.isDartCoreNull) {
return true;
} else if (type is TypeParameterTypeImpl && type.promotedBound != null) {
- return isNullable(type.promotedBound);
+ return isNullable(type.promotedBound!);
} else if (type.nullabilitySuffix == NullabilitySuffix.question) {
return true;
} else if (type.isDartAsyncFutureOr) {
@@ -1104,7 +1094,7 @@
/// Return `true` for any type which is in the equivalence class of `Object`.
bool isObject(DartType type) {
- TypeImpl typeImpl = type;
+ var typeImpl = type as TypeImpl;
if (typeImpl.nullabilitySuffix != NullabilitySuffix.none) {
return false;
}
@@ -1115,7 +1105,7 @@
}
// OBJECT(FutureOr<T>) is OBJECT(T)
- if (type is InterfaceType && type.isDartAsyncFutureOr) {
+ if (type is InterfaceTypeImpl && type.isDartAsyncFutureOr) {
var T = type.typeArguments[0];
return isObject(T);
}
@@ -1191,7 +1181,7 @@
}
// TOP(FutureOr<T>) is TOP(T)
- if (type is InterfaceType && type.isDartAsyncFutureOr) {
+ if (type is InterfaceTypeImpl && type.isDartAsyncFutureOr) {
assert(nullabilitySuffix == NullabilitySuffix.none);
var T = type.typeArguments[0];
return isTop(T);
@@ -1273,15 +1263,15 @@
/// Returns a nullable version of [type]. The result would be equivalent to
/// the union `type | Null` (if we supported union types).
- DartType makeNullable(TypeImpl type) {
+ DartType makeNullable(DartType type) {
// TODO(paulberry): handle type parameter types
- return type.withNullability(NullabilitySuffix.question);
+ return (type as TypeImpl).withNullability(NullabilitySuffix.question);
}
/// Attempts to find the appropriate substitution for the [mixinElement]
/// type parameters that can be applied to [srcTypes] to make it equal to
/// [destTypes]. If no such substitution can be found, `null` is returned.
- List<DartType> matchSupertypeConstraints(
+ List<DartType>? matchSupertypeConstraints(
ClassElement mixinElement,
List<DartType> srcTypes,
List<DartType> destTypes,
@@ -1296,7 +1286,7 @@
var inferredTypes = inferrer.infer(
typeParameters,
considerExtendsClause: false,
- );
+ )!;
inferredTypes =
inferredTypes.map(_removeBoundsOfGenericFunctionTypes).toList();
var substitution = Substitution.fromPairs(typeParameters, inferredTypes);
@@ -1351,7 +1341,7 @@
// NonNull(X & T) = X & NonNull(T)
if (type.promotedBound != null) {
- var promotedBound = promoteToNonNull(type.promotedBound);
+ var promotedBound = promoteToNonNull(type.promotedBound!);
return TypeParameterTypeImpl(
element: element,
nullabilitySuffix: NullabilitySuffix.none,
@@ -1360,8 +1350,8 @@
}
// NonNull(X) = X & NonNull(B), where B is the bound of X
- var promotedBound = element.bound != null
- ? promoteToNonNull(element.bound)
+ DartType? promotedBound = element.bound != null
+ ? promoteToNonNull(element.bound!)
: typeProvider.objectType;
if (identical(promotedBound, element.bound)) {
promotedBound = null;
@@ -1379,8 +1369,12 @@
/// Determine the type of a binary expression with the given [operator] whose
/// left operand has the type [leftType] and whose right operand has the type
/// [rightType], given that resolution has so far produced the [currentType].
- DartType refineBinaryExpressionType(DartType leftType, TokenType operator,
- DartType rightType, DartType currentType, MethodElement operatorElement) {
+ DartType refineBinaryExpressionType(
+ DartType leftType,
+ TokenType operator,
+ DartType rightType,
+ DartType currentType,
+ MethodElement? operatorElement) {
if (isNonNullableByDefault) {
if (operatorElement == null) return currentType;
return _refineNumericInvocationTypeNullSafe(
@@ -1396,9 +1390,14 @@
/// [methodElement], the context surrounding the method invocation is
/// [invocationContext], and the context type produced so far by resolution is
/// [currentType].
- DartType refineNumericInvocationContext(DartType targetType,
- Element methodElement, DartType invocationContext, DartType currentType) {
- if (methodElement is MethodElement && isNonNullableByDefault) {
+ DartType refineNumericInvocationContext(
+ DartType? targetType,
+ Element? methodElement,
+ DartType? invocationContext,
+ DartType currentType) {
+ if (targetType != null &&
+ methodElement is MethodElement &&
+ isNonNullableByDefault) {
return _refineNumericInvocationContextNullSafe(
targetType, methodElement, invocationContext, currentType);
} else {
@@ -1415,7 +1414,7 @@
/// TODO(scheglov) I expected that [methodElement] is [MethodElement].
DartType refineNumericInvocationType(
DartType targetType,
- Element methodElement,
+ Element? methodElement,
List<DartType> argumentTypes,
DartType currentType) {
if (methodElement is MethodElement && isNonNullableByDefault) {
@@ -1501,7 +1500,7 @@
/// Tries to promote from the first type from the second type, and returns the
/// promoted type if it succeeds, otherwise null.
- DartType tryPromoteToType(DartType to, DartType from) {
+ DartType? tryPromoteToType(DartType to, DartType from) {
// Allow promoting to a subtype, for example:
//
// f(Base b) {
@@ -1518,7 +1517,7 @@
// For a type parameter `T extends U`, allow promoting the upper bound
// `U` to `S` where `S <: U`, yielding a type parameter `T extends S`.
if (from is TypeParameterType) {
- if (isSubtypeOf2(to, from.bound ?? DynamicTypeImpl.instance)) {
+ if (isSubtypeOf2(to, from.bound)) {
var declaration = from.element.declaration;
return TypeParameterTypeImpl(
element: declaration,
@@ -1547,8 +1546,8 @@
}
void updateOptions({
- @required bool implicitCasts,
- @required bool strictInference,
+ required bool implicitCasts,
+ required bool strictInference,
}) {
this.implicitCasts = implicitCasts;
this.strictInference = strictInference;
@@ -1559,7 +1558,7 @@
) {
return typeParameters.map((typeParameter) {
var typeParameterImpl = typeParameter as TypeParameterElementImpl;
- return typeParameterImpl.defaultType;
+ return typeParameterImpl.defaultType!;
}).toList();
}
@@ -1583,8 +1582,7 @@
operator == TokenType.MINUS ||
operator == TokenType.STAR ||
operator == TokenType.SLASH) {
- InterfaceTypeImpl doubleType = typeProvider.doubleType;
- return doubleType;
+ return typeProvider.doubleType;
}
}
return currentType;
@@ -1607,8 +1605,7 @@
operator == TokenType.PLUS_EQ ||
operator == TokenType.STAR_EQ) {
if (rightType.isDartCoreDouble) {
- InterfaceTypeImpl doubleType = typeProvider.doubleType;
- return doubleType;
+ return typeProvider.doubleType;
}
}
// int op int
@@ -1625,8 +1622,7 @@
operator == TokenType.PLUS_PLUS ||
operator == TokenType.MINUS_MINUS) {
if (rightType.isDartCoreInt) {
- InterfaceTypeImpl intType = typeProvider.intType;
- return intType;
+ return typeProvider.intType;
}
}
}
@@ -1637,7 +1633,7 @@
DartType _refineNumericInvocationContextNullSafe(
DartType targetType,
MethodElement methodElement,
- DartType invocationContext,
+ DartType? invocationContext,
DartType currentType) {
// If the method being invoked comes from an extension, don't refine the
// type because we can only make guarantees about methods defined in the
@@ -1865,16 +1861,17 @@
/// Starting from the given [type], search its class hierarchy for types of
/// the form Future<R>, and return a list of the resulting R's.
- List<DartType> _searchTypeHierarchyForFutureTypeParameters(DartType type) {
+ List<DartType> _searchTypeHierarchyForFutureTypeParameters(
+ InterfaceType type) {
List<DartType> result = <DartType>[];
HashSet<ClassElement> visitedClasses = HashSet<ClassElement>();
- void recurse(InterfaceTypeImpl type) {
+ void recurse(InterfaceType type) {
if (type.isDartAsyncFuture && type.typeArguments.isNotEmpty) {
result.add(type.typeArguments[0]);
}
if (visitedClasses.add(type.element)) {
if (type.superclass != null) {
- recurse(type.superclass);
+ recurse(type.superclass!);
}
for (InterfaceType interface in type.interfaces) {
recurse(interface);
@@ -1900,8 +1897,8 @@
}
static DartType run({
- @required DartType bottomType,
- @required DartType type,
+ required DartType bottomType,
+ required DartType type,
}) {
var visitor = _RemoveBoundsOfGenericFunctionTypeVisitor._(bottomType);
var result = type.accept(visitor);
diff --git a/pkg/analyzer/lib/src/dart/element/type_visitor.dart b/pkg/analyzer/lib/src/dart/element/type_visitor.dart
index a10644a..262ec60 100644
--- a/pkg/analyzer/lib/src/dart/element/type_visitor.dart
+++ b/pkg/analyzer/lib/src/dart/element/type_visitor.dart
@@ -43,7 +43,8 @@
type.returnType,
...type.typeFormals
.map((formal) => formal.bound)
- .where((type) => type != null),
+ .where((type) => type != null)
+ .map((type) => type!),
...type.parameters.map((param) => param.type),
]);
diff --git a/pkg/analyzer/lib/src/dart/error/ffi_code.dart b/pkg/analyzer/lib/src/dart/error/ffi_code.dart
index 63e796e..250c01c 100644
--- a/pkg/analyzer/lib/src/dart/error/ffi_code.dart
+++ b/pkg/analyzer/lib/src/dart/error/ffi_code.dart
@@ -4,7 +4,6 @@
import 'package:analyzer/error/error.dart';
import 'package:analyzer/src/error/analyzer_error_code.dart';
-import 'package:meta/meta.dart';
// It is hard to visually separate each code's _doc comment_ from its published
// _documentation comment_ when each is written as an end-of-line comment.
@@ -291,12 +290,12 @@
///
/// If [hasPublishedDocs] is `true` then a URL for the docs will be generated.
const FfiCode({
- String correction,
+ String? correction,
bool hasPublishedDocs = false,
- @required String message,
- @required String name,
- String uniqueName,
+ required String message,
+ required String name,
ErrorType type = ErrorType.COMPILE_TIME_ERROR,
+ String? uniqueName,
}) : type = type,
super(
correction: correction,
diff --git a/pkg/analyzer/lib/src/dart/error/hint_codes.dart b/pkg/analyzer/lib/src/dart/error/hint_codes.dart
index 28463aa..f55ecc1 100644
--- a/pkg/analyzer/lib/src/dart/error/hint_codes.dart
+++ b/pkg/analyzer/lib/src/dart/error/hint_codes.dart
@@ -3055,9 +3055,9 @@
const HintCode(
String name,
String message, {
- String correction,
+ String? correction,
bool hasPublishedDocs = false,
- String uniqueName,
+ String? uniqueName,
}) : super(
correction: correction,
hasPublishedDocs: hasPublishedDocs,
diff --git a/pkg/analyzer/lib/src/dart/error/lint_codes.dart b/pkg/analyzer/lib/src/dart/error/lint_codes.dart
index cc1f0c2..d2c467a 100644
--- a/pkg/analyzer/lib/src/dart/error/lint_codes.dart
+++ b/pkg/analyzer/lib/src/dart/error/lint_codes.dart
@@ -13,8 +13,8 @@
const LintCode(
String name,
String message, {
- String correction,
- String uniqueName,
+ String? correction,
+ String? uniqueName,
}) : super(
correction: correction,
message: message,
@@ -42,7 +42,7 @@
@Deprecated('Use SecurityLintCode and its uniqueName')
class LintCodeWithUniqueName extends LintCode {
const LintCodeWithUniqueName(String name, String uniqueName, String message,
- {String correction})
+ {String? correction})
: super(name, message, uniqueName: uniqueName, correction: correction);
}
@@ -52,7 +52,7 @@
/// suppressed with `// ignore:` or `// ignore_for_file:` comments.
class SecurityLintCode extends LintCode {
const SecurityLintCode(String name, String message,
- {String uniqueName, String correction})
+ {String? uniqueName, String? correction})
: super(name, message,
uniqueName: uniqueName ?? 'LintCode.$name', correction: correction);
@@ -64,6 +64,6 @@
class SecurityLintCodeWithUniqueName extends SecurityLintCode {
const SecurityLintCodeWithUniqueName(
String name, String uniqueName, String message,
- {String correction})
+ {String? correction})
: super(name, message, uniqueName: uniqueName, correction: correction);
}
diff --git a/pkg/analyzer/lib/src/dart/error/syntactic_errors.dart b/pkg/analyzer/lib/src/dart/error/syntactic_errors.dart
index 8472e01..57029cf 100644
--- a/pkg/analyzer/lib/src/dart/error/syntactic_errors.dart
+++ b/pkg/analyzer/lib/src/dart/error/syntactic_errors.dart
@@ -927,9 +927,9 @@
const ParserErrorCode(
String name,
String message, {
- String correction,
+ String? correction,
bool hasPublishedDocs = false,
- String uniqueName,
+ String? uniqueName,
}) : super(
correction: correction,
hasPublishedDocs: hasPublishedDocs,
diff --git a/pkg/analyzer/lib/src/dart/error/syntactic_errors.g.dart b/pkg/analyzer/lib/src/dart/error/syntactic_errors.g.dart
index 23291d0..8225f80 100644
--- a/pkg/analyzer/lib/src/dart/error/syntactic_errors.g.dart
+++ b/pkg/analyzer/lib/src/dart/error/syntactic_errors.g.dart
@@ -6,7 +6,7 @@
part of 'syntactic_errors.dart';
-final fastaAnalyzerErrorCodes = <ErrorCode>[
+final fastaAnalyzerErrorCodes = <ErrorCode?>[
null,
_EQUALITY_CANNOT_BE_EQUALITY_OPERAND,
_CONTINUE_OUTSIDE_OF_LOOP,
diff --git a/pkg/analyzer/lib/src/dart/micro/analysis_context.dart b/pkg/analyzer/lib/src/dart/micro/analysis_context.dart
index 3d8351e..530ff1f 100644
--- a/pkg/analyzer/lib/src/dart/micro/analysis_context.dart
+++ b/pkg/analyzer/lib/src/dart/micro/analysis_context.dart
@@ -11,22 +11,23 @@
import 'package:analyzer/src/context/builder.dart';
import 'package:analyzer/src/context/context.dart';
import 'package:analyzer/src/dart/analysis/context_root.dart';
+import 'package:analyzer/src/dart/analysis/driver.dart';
import 'package:analyzer/src/dart/analysis/results.dart';
import 'package:analyzer/src/dart/analysis/session.dart';
import 'package:analyzer/src/dart/element/inheritance_manager3.dart';
import 'package:analyzer/src/dart/micro/resolve_file.dart';
import 'package:analyzer/src/generated/engine.dart' show AnalysisOptionsImpl;
import 'package:analyzer/src/generated/source.dart';
+import 'package:analyzer/src/util/performance/operation_performance.dart';
import 'package:analyzer/src/workspace/workspace.dart';
-import 'package:meta/meta.dart';
MicroContextObjects createMicroContextObjects({
- @required FileResolver fileResolver,
- @required AnalysisOptionsImpl analysisOptions,
- @required SourceFactory sourceFactory,
- @required ContextRootImpl root,
- @required ResourceProvider resourceProvider,
- @required Workspace workspace,
+ required FileResolver fileResolver,
+ required AnalysisOptionsImpl analysisOptions,
+ required SourceFactory sourceFactory,
+ required ContextRootImpl root,
+ required ResourceProvider resourceProvider,
+ required Workspace workspace,
}) {
var declaredVariables = DeclaredVariables();
var synchronousSession = SynchronousSession(
@@ -74,11 +75,11 @@
final _MicroAnalysisContextImpl analysisContext2;
MicroContextObjects({
- @required this.declaredVariables,
- @required this.synchronousSession,
- @required this.analysisSession,
- @required this.analysisContext,
- @required this.analysisContext2,
+ required this.declaredVariables,
+ required this.synchronousSession,
+ required this.analysisSession,
+ required this.analysisContext,
+ required this.analysisContext2,
});
set analysisOptions(AnalysisOptionsImpl analysisOptions) {
@@ -90,6 +91,11 @@
}
}
+class _FakeAnalysisDriver implements AnalysisDriver {
+ @override
+ noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
+}
+
class _MicroAnalysisContextImpl implements AnalysisContext {
final FileResolver fileResolver;
final SynchronousSession synchronousSession;
@@ -100,12 +106,12 @@
final ContextRoot contextRoot;
@override
- _MicroAnalysisSessionImpl currentSession;
+ late _MicroAnalysisSessionImpl currentSession;
final DeclaredVariables declaredVariables;
final SourceFactory sourceFactory;
- Workspace _workspace;
+ Workspace? _workspace;
_MicroAnalysisContextImpl(
this.fileResolver,
@@ -114,7 +120,7 @@
this.declaredVariables,
this.sourceFactory,
this.resourceProvider, {
- Workspace workspace,
+ Workspace? workspace,
}) : _workspace = workspace;
@override
@@ -123,7 +129,7 @@
}
@override
- Folder get sdkRoot => null;
+ Folder? get sdkRoot => null;
@override
Workspace get workspace {
@@ -148,12 +154,12 @@
final SourceFactory sourceFactory;
@override
- _MicroAnalysisContextImpl analysisContext;
+ late _MicroAnalysisContextImpl analysisContext;
_MicroAnalysisSessionImpl(
this.declaredVariables,
this.sourceFactory,
- ) : super(null);
+ ) : super(_FakeAnalysisDriver());
@override
ResourceProvider get resourceProvider =>
@@ -169,11 +175,15 @@
@override
FileResult getFile(String path) {
+ var fileContext = analysisContext.fileResolver.getFileContext(
+ path: path,
+ performance: OperationPerformanceImpl('<default>'),
+ );
return FileResultImpl(
this,
path,
- uriConverter.pathToUri(path),
- null,
+ fileContext.file.uri,
+ fileContext.file.lineInfo,
false,
);
}
@@ -206,14 +216,14 @@
_UriConverterImpl(this.resourceProvider, this.sourceFactory);
@override
- Uri pathToUri(String path, {String containingPath}) {
+ Uri? pathToUri(String path, {String? containingPath}) {
var fileUri = resourceProvider.pathContext.toUri(path);
- var fileSource = sourceFactory.forUri2(fileUri);
+ var fileSource = sourceFactory.forUri2(fileUri)!;
return sourceFactory.restoreUri(fileSource);
}
@override
- String uriToPath(Uri uri) {
+ String? uriToPath(Uri uri) {
return sourceFactory.forUri2(uri)?.fullName;
}
}
diff --git a/pkg/analyzer/lib/src/dart/micro/cider_byte_store.dart b/pkg/analyzer/lib/src/dart/micro/cider_byte_store.dart
index 2d4c16b..fc56800 100644
--- a/pkg/analyzer/lib/src/dart/micro/cider_byte_store.dart
+++ b/pkg/analyzer/lib/src/dart/micro/cider_byte_store.dart
@@ -25,7 +25,7 @@
/// [signature].
///
/// Return `null` if the association does not exist.
- CacheData get(String key, List<int> signature);
+ CacheData? get(String key, List<int> signature);
/// Associate the given [bytes] with the [key] and [signature]. Return the
/// [CacheData].
@@ -44,14 +44,14 @@
int idCounter = 0;
/// This field gets value only during testing.
- CiderByteStoreTestView testView;
+ CiderByteStoreTestView? testView;
CiderCachedByteStore(int maxCacheSize)
: _cache = Cache<String, CiderCacheEntry>(
maxCacheSize, (v) => v.data.bytes.length);
@override
- CacheData get(String key, List<int> signature) {
+ CacheData? get(String key, List<int> signature) {
var entry = _cache.get(key, () => null);
if (entry != null &&
diff --git a/pkg/analyzer/lib/src/dart/micro/library_analyzer.dart b/pkg/analyzer/lib/src/dart/micro/library_analyzer.dart
index 12a7a75..f5686bf 100644
--- a/pkg/analyzer/lib/src/dart/micro/library_analyzer.dart
+++ b/pkg/analyzer/lib/src/dart/micro/library_analyzer.dart
@@ -8,8 +8,6 @@
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/error/error.dart';
import 'package:analyzer/error/listener.dart';
-import 'package:analyzer/file_system/file_system.dart';
-import 'package:analyzer/src/context/builder.dart';
import 'package:analyzer/src/context/source.dart';
import 'package:analyzer/src/dart/ast/ast.dart';
import 'package:analyzer/src/dart/ast/utilities.dart';
@@ -48,7 +46,6 @@
import 'package:analyzer/src/task/strong/checker.dart';
import 'package:analyzer/src/util/performance/operation_performance.dart';
import 'package:analyzer/src/workspace/workspace.dart';
-import 'package:meta/meta.dart';
import 'package:pub_semver/pub_semver.dart';
/// Analyzer of a single library.
@@ -61,14 +58,13 @@
final DeclaredVariables _declaredVariables;
final SourceFactory _sourceFactory;
final FileState _library;
- final ResourceProvider _resourceProvider;
final InheritanceManager3 _inheritance;
final bool Function(Uri) _isLibraryUri;
final AnalysisContext _context;
final LinkedElementFactory _elementFactory;
- LibraryElement _libraryElement;
+ late LibraryElementImpl _libraryElement;
final Map<FileState, LineInfo> _fileToLineInfo = {};
@@ -96,7 +92,6 @@
this._elementFactory,
this._inheritance,
this._library,
- this._resourceProvider,
this.getFileContent,
);
@@ -106,9 +101,9 @@
/// Compute analysis results for all units of the library.
Map<FileState, UnitAnalysisResult> analyzeSync({
- @required String completionPath,
- @required int completionOffset,
- @required OperationPerformanceImpl performance,
+ required String? completionPath,
+ required int? completionOffset,
+ required OperationPerformanceImpl performance,
}) {
var forCompletion = completionPath != null;
var units = <FileState, CompilationUnit>{};
@@ -136,7 +131,7 @@
});
performance.run('libraryElement', (performance) {
- _libraryElement = _elementFactory.libraryOfUri(_library.uriStr);
+ _libraryElement = _elementFactory.libraryOfUri2(_library.uriStr);
});
performance.run('resolveDirectives', (performance) {
@@ -205,8 +200,8 @@
}
void _computeDiagnostics({
- @required OperationPerformanceImpl performance,
- @required Map<FileState, CompilationUnit> units,
+ required OperationPerformanceImpl performance,
+ required Map<FileState, CompilationUnit> units,
}) {
performance.run('computeVerifyErrors', (performance) {
units.forEach((file, unit) {
@@ -238,7 +233,7 @@
performance.run('computeLints', (performance) {
var allUnits = _library.libraryFiles.map((file) {
var content = getFileContent(file);
- return LinterContextUnit(content, units[file]);
+ return LinterContextUnit(content, units[file]!);
}).toList();
for (int i = 0; i < allUnits.length; i++) {
_computeLints(_library.libraryFiles[i], allUnits[i], allUnits);
@@ -249,19 +244,13 @@
// This must happen after all other diagnostics have been computed but
// before the list of diagnostics has been filtered.
for (var file in _library.libraryFiles) {
- if (file.source != null) {
- IgnoreValidator(_getErrorReporter(file), _getErrorListener(file).errors,
- _fileToIgnoreInfo[file], _fileToLineInfo[file])
- .reportErrors();
- }
+ IgnoreValidator(_getErrorReporter(file), _getErrorListener(file).errors,
+ _fileToIgnoreInfo[file]!, _fileToLineInfo[file]!)
+ .reportErrors();
}
}
void _computeHints(FileState file, CompilationUnit unit) {
- if (file.source == null) {
- return;
- }
-
AnalysisErrorListener errorListener = _getErrorListener(file);
ErrorReporter errorReporter = _getErrorReporter(file);
@@ -335,9 +324,6 @@
void _computeLints(FileState file, LinterContextUnit currentUnit,
List<LinterContextUnit> allUnits) {
var unit = currentUnit.unit;
- if (file.source == null) {
- return;
- }
ErrorReporter errorReporter = _getErrorReporter(file);
@@ -371,10 +357,6 @@
}
void _computeVerifyErrors(FileState file, CompilationUnit unit) {
- if (file.source == null) {
- return;
- }
-
RecordingErrorListener errorListener = _getErrorListener(file);
CodeChecker checker = CodeChecker(
@@ -420,12 +402,12 @@
return errors;
}
- IgnoreInfo ignoreInfo = _fileToIgnoreInfo[file];
+ IgnoreInfo ignoreInfo = _fileToIgnoreInfo[file]!;
if (!ignoreInfo.hasIgnores) {
return errors;
}
- LineInfo lineInfo = _fileToLineInfo[file];
+ LineInfo lineInfo = _fileToLineInfo[file]!;
bool isIgnored(AnalysisError error) {
int errorLine = lineInfo.getLocation(error.offset).lineNumber;
@@ -458,37 +440,26 @@
});
}
- WorkspacePackage _getPackage(CompilationUnit unit) {
+ WorkspacePackage? _getPackage(CompilationUnit unit) {
final libraryPath = _library.source.fullName;
- Workspace workspace =
- unit.declaredElement.session?.analysisContext?.workspace;
-
- // If there is no driver setup (as in test environments), we need to create
- // a workspace ourselves.
- // todo (pq): fix tests or otherwise de-dup this logic shared w/ resolver.
- if (workspace == null) {
- final builder = ContextBuilder(
- _resourceProvider, null /* sdkManager */, null /* contentCache */);
- workspace = ContextBuilder.createWorkspace(
- _resourceProvider, libraryPath, builder);
- }
- return workspace?.findPackageFor(libraryPath);
+ var workspace = unit.declaredElement!.session.analysisContext.workspace;
+ return workspace.findPackageFor(libraryPath);
}
/// Return the name of the library that the given part is declared to be a
/// part of, or `null` if the part does not contain a part-of directive.
- _NameOrSource _getPartLibraryNameOrUri(Source partSource,
+ _NameOrSource? _getPartLibraryNameOrUri(Source partSource,
CompilationUnit partUnit, List<Directive> directivesToResolve) {
for (Directive directive in partUnit.directives) {
if (directive is PartOfDirective) {
directivesToResolve.add(directive);
- LibraryIdentifier libraryName = directive.libraryName;
+ var libraryName = directive.libraryName;
if (libraryName != null) {
return _NameOrSource(libraryName.name, null);
}
- String uri = directive.uri?.stringValue;
+ var uri = directive.uri?.stringValue;
if (uri != null) {
- Source librarySource = _sourceFactory.resolveUri(partSource, uri);
+ var librarySource = _sourceFactory.resolveUri(partSource, uri);
if (librarySource != null) {
return _NameOrSource(null, librarySource);
}
@@ -514,8 +485,8 @@
/// Return a parsed unresolved [CompilationUnit].
CompilationUnit _parse({
- @required FileState file,
- @required OperationPerformanceImpl performance,
+ required FileState file,
+ required OperationPerformanceImpl performance,
}) {
String content = getFileContent(file);
@@ -525,7 +496,7 @@
AnalysisErrorListener errorListener = _getErrorListener(file);
CompilationUnit unit = file.parse(errorListener, content);
- LineInfo lineInfo = unit.lineInfo;
+ LineInfo lineInfo = unit.lineInfo!;
_fileToLineInfo[file] = lineInfo;
_fileToIgnoreInfo[file] = IgnoreInfo.forDart(unit, content);
@@ -534,7 +505,7 @@
void _resolveDirectives(
Map<FileState, CompilationUnit> units,
- String completionPath,
+ String? completionPath,
) {
if (completionPath != null) {
var completionUnit = units.values.first;
@@ -542,7 +513,7 @@
return;
}
- CompilationUnit definingCompilationUnit = units[_library];
+ CompilationUnit definingCompilationUnit = units[_library]!;
definingCompilationUnit.element = _libraryElement.definingCompilationUnit;
bool matchNodeElement(Directive node, Element element) {
@@ -551,7 +522,7 @@
ErrorReporter libraryErrorReporter = _getErrorReporter(_library);
- LibraryIdentifier libraryNameNode;
+ LibraryIdentifier? libraryNameNode;
var seenPartSources = <Source>{};
var directivesToResolve = <Directive>[];
int partIndex = 0;
@@ -564,7 +535,7 @@
if (matchNodeElement(directive, importElement)) {
directive.element = importElement;
directive.prefix?.staticElement = importElement.prefix;
- Source source = importElement.importedLibrary?.source;
+ var source = importElement.importedLibrary?.source;
if (source != null && !_isLibrarySource(source)) {
ErrorCode errorCode = CompileTimeErrorCode.IMPORT_OF_NON_LIBRARY;
libraryErrorReporter.reportErrorForNode(
@@ -576,7 +547,7 @@
for (ExportElement exportElement in _libraryElement.exports) {
if (matchNodeElement(directive, exportElement)) {
directive.element = exportElement;
- Source source = exportElement.exportedLibrary?.source;
+ var source = exportElement.exportedLibrary?.source;
if (source != null && !_isLibrarySource(source)) {
libraryErrorReporter.reportErrorForNode(
CompileTimeErrorCode.EXPORT_OF_NON_LIBRARY,
@@ -589,13 +560,13 @@
StringLiteral partUri = directive.uri;
FileState partFile = _library.partedFiles[partIndex];
- CompilationUnit partUnit = units[partFile];
+ CompilationUnit partUnit = units[partFile]!;
CompilationUnitElement partElement = _libraryElement.parts[partIndex];
partUnit.element = partElement;
directive.element = partElement;
partIndex++;
- Source partSource = directive.uriSource;
+ var partSource = directive.uriSource;
if (partSource == null) {
continue;
}
@@ -613,7 +584,7 @@
// name or uri as the library.
//
if (_isExistingSource(partSource)) {
- _NameOrSource nameOrSource = _getPartLibraryNameOrUri(
+ var nameOrSource = _getPartLibraryNameOrUri(
partSource, partUnit, directivesToResolve);
if (nameOrSource == null) {
libraryErrorReporter.reportErrorForNode(
@@ -621,7 +592,7 @@
partUri,
[partUri.toSource()]);
} else {
- String name = nameOrSource.name;
+ var name = nameOrSource.name;
if (name != null) {
if (libraryNameNode == null) {
libraryErrorReporter.reportErrorForNode(
@@ -635,7 +606,7 @@
[libraryNameNode.name, name]);
}
} else {
- Source source = nameOrSource.source;
+ var source = nameOrSource.source!;
if (source != _library.source) {
libraryErrorReporter.reportErrorForNode(
CompileTimeErrorCode.PART_OF_DIFFERENT_LIBRARY,
@@ -662,18 +633,15 @@
}
void _resolveFile({
- @required int completionOffset,
- @required FileState file,
- @required CompilationUnit unit,
+ required int? completionOffset,
+ required FileState file,
+ required CompilationUnit unit,
}) {
Source source = file.source;
- if (source == null) {
- return;
- }
RecordingErrorListener errorListener = _getErrorListener(file);
- CompilationUnitElement unitElement = unit.declaredElement;
+ var unitElement = unit.declaredElement as CompilationUnitElementImpl;
// TODO(scheglov) Hack: set types for top-level variables
// Otherwise TypeResolverVisitor will set declared types, and because we
@@ -704,7 +672,7 @@
// Nothing for RESOLVED_UNIT9?
// Nothing for RESOLVED_UNIT10?
- FlowAnalysisHelper flowAnalysisHelper;
+ FlowAnalysisHelper? flowAnalysisHelper;
if (unit.featureSet.isEnabled(Feature.non_nullable)) {
flowAnalysisHelper = FlowAnalysisHelper(_typeSystem, false);
}
@@ -724,7 +692,7 @@
if (nodeToResolve != null) {
var can = resolverVisitor.prepareForResolving(nodeToResolve);
if (can) {
- nodeToResolve?.accept(resolverVisitor);
+ nodeToResolve.accept(resolverVisitor);
donePartialResolution = true;
}
}
@@ -737,16 +705,11 @@
/// Return the result of resolve the given [uriContent], reporting errors
/// against the [uriLiteral].
- Source _resolveUri(FileState file, bool isImport, StringLiteral uriLiteral,
- String uriContent) {
- UriValidationCode code =
+ Source? _resolveUri(FileState file, bool isImport, StringLiteral uriLiteral,
+ String? uriContent) {
+ var code =
UriBasedDirectiveImpl.validateUri(isImport, uriLiteral, uriContent);
if (code == null) {
- try {
- Uri.parse(uriContent);
- } on FormatException {
- return null;
- }
return _sourceFactory.resolveUri(file.source, uriContent);
} else if (code == UriValidationCode.URI_WITH_DART_EXT_SCHEME) {
return null;
@@ -766,16 +729,16 @@
for (Directive directive in unit.directives) {
if (directive is UriBasedDirective) {
StringLiteral uriLiteral = directive.uri;
- String uriContent = uriLiteral.stringValue?.trim();
+ var uriContent = uriLiteral.stringValue?.trim();
directive.uriContent = uriContent;
- Source defaultSource = _resolveUri(
+ var defaultSource = _resolveUri(
file, directive is ImportDirective, uriLiteral, uriContent);
directive.uriSource = defaultSource;
}
}
}
- CompilationUnitElement _unitElementWithPath(String path) {
+ CompilationUnitElement? _unitElementWithPath(String path) {
for (var unitElement in _libraryElement.units) {
if (unitElement.source.fullName == path) {
return unitElement;
@@ -797,7 +760,7 @@
/// report an error if it does not.
void _validateUriBasedDirective(
FileState file, UriBasedDirectiveImpl directive) {
- Source source = directive.uriSource;
+ var source = directive.uriSource;
if (source != null) {
if (_isExistingSource(source)) {
return;
@@ -821,8 +784,8 @@
/// Check each directive in the given [unit] to see if the referenced source
/// exists and report an error if it does not.
void _validateUriBasedDirectives(FileState file, CompilationUnit unit) {
- for (Directive directive in unit.directives) {
- if (directive is UriBasedDirective) {
+ for (var directive in unit.directives) {
+ if (directive is UriBasedDirectiveImpl) {
_validateUriBasedDirective(file, directive);
}
}
@@ -840,8 +803,8 @@
/// Either the name or the source associated with a part-of directive.
class _NameOrSource {
- final String name;
- final Source source;
+ final String? name;
+ final Source? source;
_NameOrSource(this.name, this.source);
}
diff --git a/pkg/analyzer/lib/src/dart/micro/library_graph.dart b/pkg/analyzer/lib/src/dart/micro/library_graph.dart
index 971bc79..f5e42bb 100644
--- a/pkg/analyzer/lib/src/dart/micro/library_graph.dart
+++ b/pkg/analyzer/lib/src/dart/micro/library_graph.dart
@@ -33,7 +33,6 @@
import 'package:analyzer/src/workspace/workspace.dart';
import 'package:collection/collection.dart';
import 'package:convert/convert.dart';
-import 'package:meta/meta.dart';
import 'package:pub_semver/pub_semver.dart';
/// Ensure that the [FileState.libraryCycle] for the [file] and anything it
@@ -58,7 +57,7 @@
/// The [WorkspacePackage] that contains this file.
///
/// It might be `null` if the file is outside of the workspace.
- final WorkspacePackage workspacePackage;
+ final WorkspacePackage? workspacePackage;
/// The [FeatureSet] for all files in the analysis context.
///
@@ -82,16 +81,16 @@
final Set<FileState> directReferencedFiles = {};
final Set<FileState> directReferencedLibraries = {};
final List<FileState> libraryFiles = [];
- FileState partOfLibrary;
+ FileState? partOfLibrary;
- List<int> _digest;
- bool _exists;
- List<int> _apiSignature;
- UnlinkedUnit2 unlinked2;
- LibraryCycle _libraryCycle;
+ late List<int> _digest;
+ late bool _exists;
+ late List<int> _apiSignature;
+ late UnlinkedUnit2 unlinked2;
+ LibraryCycle? _libraryCycle;
/// id of the cache entry.
- int id;
+ late int id;
FileState._(
this._fsState,
@@ -115,7 +114,7 @@
if (_libraryCycle == null) {
computeLibraryCycle(_fsState._linkedSalt, this);
}
- return _libraryCycle;
+ return _libraryCycle!;
}
LineInfo get lineInfo => LineInfo(unlinked2.lineStarts);
@@ -215,7 +214,7 @@
}
void refresh({
- @required OperationPerformanceImpl performance,
+ required OperationPerformanceImpl performance,
}) {
_fsState.testView.refreshedFiles.add(path);
performance.getDataInt('count').increment();
@@ -228,7 +227,8 @@
String unlinkedKey = path;
// Prepare bytes of the unlinked bundle - existing or new.
- List<int> bytes;
+ // TODO(migration): should not be nullable
+ List<int>? bytes;
{
var cacheData = _fsState._byteStore.get(unlinkedKey, _digest);
bytes = cacheData?.bytes;
@@ -247,21 +247,21 @@
performance.run('unlinked', (performance) {
var unlinkedBuilder = serializeAstCiderUnlinked(_digest, unit);
bytes = unlinkedBuilder.toBuffer();
- performance.getDataInt('length').add(bytes.length);
- cacheData = _fsState._byteStore.putGet(unlinkedKey, _digest, bytes);
- bytes = cacheData.bytes;
+ performance.getDataInt('length').add(bytes!.length);
+ cacheData = _fsState._byteStore.putGet(unlinkedKey, _digest, bytes!);
+ bytes = cacheData!.bytes;
});
performance.run('prefetch', (_) {
- unlinked2 = CiderUnlinkedUnit.fromBuffer(bytes).unlinkedUnit;
+ unlinked2 = CiderUnlinkedUnit.fromBuffer(bytes!).unlinkedUnit!;
_prefetchDirectReferences(unlinked2);
});
}
- id = cacheData.id;
+ id = cacheData!.id;
}
// Read the unlinked bundle.
- unlinked2 = CiderUnlinkedUnit.fromBuffer(bytes).unlinkedUnit;
+ unlinked2 = CiderUnlinkedUnit.fromBuffer(bytes!).unlinkedUnit!;
_apiSignature = Uint8List.fromList(unlinked2.apiSignature);
// Build the graph.
@@ -300,7 +300,7 @@
performance: performance,
);
if (partOfLibrary != null) {
- directReferencedFiles.add(partOfLibrary);
+ directReferencedFiles.add(partOfLibrary!);
}
}
}
@@ -320,9 +320,9 @@
return path;
}
- FileState _fileForRelativeUri({
- @required String relativeUri,
- @required OperationPerformanceImpl performance,
+ FileState? _fileForRelativeUri({
+ required String relativeUri,
+ required OperationPerformanceImpl performance,
}) {
if (relativeUri.isEmpty) {
return null;
@@ -379,7 +379,7 @@
for (var uri in unlinked2.parts) {
findPathForUri(uri);
}
- _fsState.prefetchFiles(paths.toList());
+ _fsState.prefetchFiles!(paths.toList());
}
static CiderUnlinkedUnitBuilder serializeAstCiderUnlinked(
@@ -409,7 +409,7 @@
} else if (directive is PartOfDirective) {
hasPartOfDirective = true;
if (directive.uri != null) {
- partOfUriStr = directive.uri.stringValue;
+ partOfUriStr = directive.uri!.stringValue!;
}
}
}
@@ -428,7 +428,7 @@
hasLibraryDirective: hasLibraryDirective,
hasPartOfDirective: hasPartOfDirective,
partOfUri: partOfUriStr,
- lineStarts: unit.lineInfo.lineStarts,
+ lineStarts: unit.lineInfo!.lineStarts,
);
return CiderUnlinkedUnitBuilder(
contentDigest: digest, unlinkedUnit: unlinkedBuilder);
@@ -470,7 +470,7 @@
/// A function that fetches the given list of files. This function can be used
/// to batch file reads in systems where file fetches are expensive.
- final void Function(List<String> paths) prefetchFiles;
+ final void Function(List<String> paths)? prefetchFiles;
final FileSystemStateTimers timers2 = FileSystemStateTimers();
@@ -522,7 +522,7 @@
FeatureSet contextFeatureSet(
String path,
Uri uri,
- WorkspacePackage workspacePackage,
+ WorkspacePackage? workspacePackage,
) {
var workspacePackageExperiments = workspacePackage?.enabledExperiments;
if (workspacePackageExperiments != null) {
@@ -537,7 +537,7 @@
Version contextLanguageVersion(
String path,
Uri uri,
- WorkspacePackage workspacePackage,
+ WorkspacePackage? workspacePackage,
) {
var workspaceLanguageVersion = workspacePackage?.languageVersion;
if (workspaceLanguageVersion != null) {
@@ -548,18 +548,18 @@
}
FileState getFileForPath({
- @required String path,
- @required OperationPerformanceImpl performance,
+ required String path,
+ required OperationPerformanceImpl performance,
}) {
var file = _pathToFile[path];
if (file == null) {
var fileUri = _resourceProvider.pathContext.toUri(path);
var uri = _sourceFactory.restoreUri(
_FakeSource(path, fileUri),
- );
+ )!;
- var source = _sourceFactory.forUri2(uri);
- var workspacePackage = _workspace?.findPackageFor(path);
+ var source = _sourceFactory.forUri2(uri)!;
+ var workspacePackage = _workspace.findPackageFor(path);
var featureSet = contextFeatureSet(path, uri, workspacePackage);
var packageLanguageVersion =
contextLanguageVersion(path, uri, workspacePackage);
@@ -570,7 +570,7 @@
_uriToFile[uri] = file;
performance.run('refresh', (performance) {
- file.refresh(
+ file!.refresh(
performance: performance,
);
});
@@ -578,11 +578,11 @@
return file;
}
- FileState getFileForUri({
- @required Uri uri,
- @required OperationPerformanceImpl performance,
+ FileState? getFileForUri({
+ required Uri uri,
+ required OperationPerformanceImpl performance,
}) {
- FileState file = _uriToFile[uri];
+ var file = _uriToFile[uri];
if (file == null) {
var source = _sourceFactory.forUri2(uri);
if (source == null) {
@@ -590,7 +590,7 @@
}
var path = source.fullName;
- var workspacePackage = _workspace?.findPackageFor(path);
+ var workspacePackage = _workspace.findPackageFor(path);
var featureSet = contextFeatureSet(path, uri, workspacePackage);
var packageLanguageVersion =
contextLanguageVersion(path, uri, workspacePackage);
@@ -607,7 +607,7 @@
return file;
}
- String getPathForUri(Uri uri) {
+ String? getPathForUri(Uri uri) {
var source = _sourceFactory.forUri2(uri);
if (source == null) {
return null;
@@ -624,13 +624,13 @@
var deps = HashSet<String>();
for (var path in files) {
unusedFiles.remove(path);
- _pathToFile[path].collectAllReferencedFiles(deps);
+ _pathToFile[path]!.collectAllReferencedFiles(deps);
}
for (var path in deps) {
unusedFiles.remove(path);
}
for (var path in unusedFiles) {
- var file = _pathToFile.remove(path);
+ var file = _pathToFile.remove(path)!;
_uriToFile.remove(file.uri);
removedFiles.add(file);
}
@@ -696,16 +696,18 @@
/// the signatures of the cycles that the [libraries] reference
/// directly. So, indirectly it is based on the transitive closure of all
/// files that [libraries] reference (but we don't compute these files).
- List<int> signature;
+ late List<int> signature;
/// The hash of all the paths of the files in this cycle.
- String cyclePathsHash;
+ late String cyclePathsHash;
- /// id of the ast cache entry.
- int astId;
+ /// The ID of the ast cache entry.
+ /// It is `null` if we failed to load libraries of the cycle.
+ int? astId;
- /// id of the resolution cache entry.
- int resolutionId;
+ /// The ID of the resolution cache entry.
+ /// It is `null` if we failed to load libraries of the cycle.
+ int? resolutionId;
LibraryCycle();
diff --git a/pkg/analyzer/lib/src/dart/micro/resolve_file.dart b/pkg/analyzer/lib/src/dart/micro/resolve_file.dart
index 84d29d8..c58fb75 100644
--- a/pkg/analyzer/lib/src/dart/micro/resolve_file.dart
+++ b/pkg/analyzer/lib/src/dart/micro/resolve_file.dart
@@ -36,7 +36,6 @@
import 'package:analyzer/src/task/options.dart';
import 'package:analyzer/src/util/performance/operation_performance.dart';
import 'package:analyzer/src/workspace/workspace.dart';
-import 'package:meta/meta.dart';
import 'package:yaml/yaml.dart';
const M = 1024 * 1024 /*1 MiB*/;
@@ -64,18 +63,18 @@
/// A function that fetches the given list of files. This function can be used
/// to batch file reads in systems where file fetches are expensive.
- final void Function(List<String> paths) prefetchFiles;
+ final void Function(List<String> paths)? prefetchFiles;
final Workspace workspace;
/// This field gets value only during testing.
- FileResolverTestView testView;
+ FileResolverTestView? testView;
- FileSystemState fsState;
+ FileSystemState? fsState;
- MicroContextObjects contextObjects;
+ MicroContextObjects? contextObjects;
- _LibraryContext libraryContext;
+ _LibraryContext? libraryContext;
/// List of ids for cache elements that are invalidated. Track elements that
/// are invalidated during [changeFile]. Used in [releaseAndClearRemovedIds]
@@ -89,8 +88,8 @@
SourceFactory sourceFactory,
String Function(String path) getFileDigest,
void Function(List<String> paths) prefetchFiles, {
- @required Workspace workspace,
- @deprecated Duration libraryContextResetTimeout,
+ required Workspace workspace,
+ @deprecated Duration? libraryContextResetTimeout,
}) : this.from(
logger: logger,
resourceProvider: resourceProvider,
@@ -103,23 +102,21 @@
);
FileResolver.from({
- @required PerformanceLog logger,
- @required ResourceProvider resourceProvider,
- @required SourceFactory sourceFactory,
- @required String Function(String path) getFileDigest,
- @required void Function(List<String> paths) prefetchFiles,
- @required Workspace workspace,
- CiderByteStore byteStore,
- @deprecated Duration libraryContextResetTimeout,
+ required PerformanceLog logger,
+ required ResourceProvider resourceProvider,
+ required SourceFactory sourceFactory,
+ required String Function(String path) getFileDigest,
+ required void Function(List<String> paths)? prefetchFiles,
+ required Workspace workspace,
+ CiderByteStore? byteStore,
+ @deprecated Duration? libraryContextResetTimeout,
}) : logger = logger,
sourceFactory = sourceFactory,
resourceProvider = resourceProvider,
getFileDigest = getFileDigest,
prefetchFiles = prefetchFiles,
- workspace = workspace {
- byteStore ??= CiderCachedByteStore(memoryCacheSize);
- this.byteStore = byteStore;
- }
+ workspace = workspace,
+ byteStore = byteStore ?? CiderCachedByteStore(memoryCacheSize);
/// Update the resolver to reflect the fact that the file with the given
/// [path] was changed. We need to make sure that when this file, of any file
@@ -133,7 +130,7 @@
// Remove this file and all files that transitively depend on it.
var removedFiles = <FileState>[];
- fsState.changeFile(path, removedFiles);
+ fsState!.changeFile(path, removedFiles);
// Schedule disposing references to cached unlinked data.
for (var removedFile in removedFiles) {
@@ -143,23 +140,23 @@
// Remove libraries represented by removed files.
// If we need these libraries later, we will relink and reattach them.
if (libraryContext != null) {
- libraryContext.remove(removedFiles, removedCacheIds);
+ libraryContext!.remove(removedFiles, removedCacheIds);
}
}
/// Collects all the cached artifacts and add all the cache id's for the
/// removed artifacts to [removedCacheIds].
void collectSharedDataIdentifiers() {
- removedCacheIds.addAll(fsState.collectSharedDataIdentifiers());
- removedCacheIds.addAll(libraryContext.collectSharedDataIdentifiers());
+ removedCacheIds.addAll(fsState!.collectSharedDataIdentifiers());
+ removedCacheIds.addAll(libraryContext!.collectSharedDataIdentifiers());
}
@deprecated
void dispose() {}
ErrorsResult getErrors({
- @required String path,
- OperationPerformanceImpl performance,
+ required String path,
+ OperationPerformanceImpl? performance,
}) {
_throwIfNotAbsoluteNormalizedPath(path);
@@ -168,7 +165,7 @@
return logger.run('Get errors for $path', () {
var fileContext = getFileContext(
path: path,
- performance: performance,
+ performance: performance!,
);
var file = fileContext.file;
@@ -179,11 +176,11 @@
var errorsKey = file.path + '.errors';
var bytes = byteStore.get(errorsKey, errorsSignature)?.bytes;
- List<AnalysisError> errors;
+ List<AnalysisError>? errors;
if (bytes != null) {
var data = CiderUnitErrors.fromBuffer(bytes);
errors = data.errors.map((error) {
- return ErrorEncoding.decode(file.source, error);
+ return ErrorEncoding.decode(file.source, error)!;
}).toList();
}
@@ -202,7 +199,7 @@
}
return ErrorsResultImpl(
- contextObjects.analysisSession,
+ contextObjects!.analysisSession,
path,
file.uri,
file.lineInfo,
@@ -214,8 +211,8 @@
@deprecated
ErrorsResult getErrors2({
- @required String path,
- OperationPerformanceImpl performance,
+ required String path,
+ OperationPerformanceImpl? performance,
}) {
return getErrors(
path: path,
@@ -224,8 +221,8 @@
}
FileContext getFileContext({
- @required String path,
- @required OperationPerformanceImpl performance,
+ required String path,
+ required OperationPerformanceImpl performance,
}) {
return performance.run('fileContext', (performance) {
var analysisOptions = performance.run('analysisOptions', (performance) {
@@ -240,7 +237,7 @@
});
var file = performance.run('fileForPath', (performance) {
- return fsState.getFileForPath(
+ return fsState!.getFileForPath(
path: path,
performance: performance,
);
@@ -251,12 +248,12 @@
}
String getLibraryLinkedSignature({
- @required String path,
- @required OperationPerformanceImpl performance,
+ required String path,
+ required OperationPerformanceImpl performance,
}) {
_throwIfNotAbsoluteNormalizedPath(path);
- var file = fsState.getFileForPath(
+ var file = fsState!.getFileForPath(
path: path,
performance: performance,
);
@@ -284,7 +281,7 @@
/// from bytes, which will be done by [getErrors]. It is OK for it to
/// spend some more time on this.
void linkLibraries({
- @required String path,
+ required String path,
}) {
_throwIfNotAbsoluteNormalizedPath(path);
@@ -297,7 +294,7 @@
var file = fileContext.file;
var libraryFile = file.partOfLibrary ?? file;
- libraryContext.load2(
+ libraryContext!.load2(
targetLibrary: libraryFile,
performance: performance,
);
@@ -316,7 +313,7 @@
/// [FileState]'s. Adds the cache id's for the removed [FileState]'s to
/// [removedCacheIds].
void removeFilesNotNecessaryForAnalysisOf(List<String> files) {
- var removedFiles = fsState.removeUnusedFiles(files);
+ var removedFiles = fsState!.removeUnusedFiles(files);
for (var removedFile in removedFiles) {
removedCacheIds.add(removedFile.id);
}
@@ -324,10 +321,10 @@
/// The [completionLine] and [completionColumn] are zero based.
ResolvedUnitResult resolve({
- int completionLine,
- int completionColumn,
- @required String path,
- OperationPerformanceImpl performance,
+ int? completionLine,
+ int? completionColumn,
+ required String path,
+ OperationPerformanceImpl? performance,
}) {
_throwIfNotAbsoluteNormalizedPath(path);
@@ -336,19 +333,19 @@
return logger.run('Resolve $path', () {
var fileContext = getFileContext(
path: path,
- performance: performance,
+ performance: performance!,
);
var file = fileContext.file;
var libraryFile = file.partOfLibrary ?? file;
- int completionOffset;
+ int? completionOffset;
if (completionLine != null && completionColumn != null) {
var lineOffset = file.lineInfo.getOffsetOfLine(completionLine);
completionOffset = lineOffset + completionColumn;
}
performance.run('libraryContext', (performance) {
- libraryContext.load2(
+ libraryContext!.load2(
targetLibrary: libraryFile,
performance: performance,
);
@@ -360,24 +357,23 @@
var errorListener = RecordingErrorListener();
var unit = file.parse(errorListener, content);
- Map<FileState, UnitAnalysisResult> results;
+ late Map<FileState, UnitAnalysisResult> results;
logger.run('Compute analysis results', () {
var libraryAnalyzer = LibraryAnalyzer(
fileContext.analysisOptions,
- contextObjects.declaredVariables,
+ contextObjects!.declaredVariables,
sourceFactory,
(_) => true, // _isLibraryUri
- contextObjects.analysisContext,
- libraryContext.elementFactory,
- contextObjects.inheritanceManager,
+ contextObjects!.analysisContext,
+ libraryContext!.elementFactory,
+ contextObjects!.inheritanceManager,
libraryFile,
- resourceProvider,
(file) => file.getContentWithSameDigest(),
);
try {
- results = performance.run('analyze', (performance) {
+ results = performance!.run('analyze', (performance) {
return NullSafetyUnderstandingFlag.enableNullSafetyTypes(() {
return libraryAnalyzer.analyzeSync(
completionPath: completionOffset != null ? path : null,
@@ -399,15 +395,15 @@
);
}
});
- UnitAnalysisResult fileResult = results[file];
+ UnitAnalysisResult fileResult = results[file]!;
return ResolvedUnitResultImpl(
- contextObjects.analysisSession,
+ contextObjects!.analysisSession,
path,
file.uri,
file.exists,
content,
- unit.lineInfo,
+ unit.lineInfo!,
false, // isPart
fileResult.unit,
fileResult.errors,
@@ -429,7 +425,7 @@
/// for another.
void _createContext(String path, AnalysisOptionsImpl fileAnalysisOptions) {
if (contextObjects != null) {
- contextObjects.analysisOptions = fileAnalysisOptions;
+ contextObjects!.analysisOptions = fileAnalysisOptions;
return;
}
@@ -479,14 +475,14 @@
logger,
resourceProvider,
byteStore,
- contextObjects,
+ contextObjects!,
);
}
}
- File _findOptionsFile(Folder folder) {
+ File? _findOptionsFile(Folder? folder) {
while (folder != null) {
- File packagesFile =
+ var packagesFile =
_getFile(folder, AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE);
if (packagesFile != null) {
return packagesFile;
@@ -505,17 +501,17 @@
///
/// Otherwise, return the default options.
AnalysisOptionsImpl _getAnalysisOptions({
- @required String path,
- @required OperationPerformanceImpl performance,
+ required String path,
+ required OperationPerformanceImpl performance,
}) {
- YamlMap optionMap;
+ YamlMap? optionMap;
var separator = resourceProvider.pathContext.separator;
var isThirdParty = path
.contains('${separator}third_party${separator}dart$separator') ||
path.contains('${separator}third_party${separator}dart_lang$separator');
- File optionsFile;
+ File? optionsFile;
if (!isThirdParty) {
optionsFile = performance.run('findOptionsFile', (_) {
var folder = resourceProvider.getFile(path).parent;
@@ -527,7 +523,7 @@
performance.run('getOptionsFromFile', (_) {
try {
var optionsProvider = AnalysisOptionsProvider(sourceFactory);
- optionMap = optionsProvider.getOptionsFromFile(optionsFile);
+ optionMap = optionsProvider.getOptionsFromFile(optionsFile!);
} catch (e) {
// ignored
}
@@ -564,7 +560,7 @@
if (optionMap != null) {
performance.run('applyToAnalysisOptions', (_) {
- applyToAnalysisOptions(options, optionMap);
+ applyToAnalysisOptions(options, optionMap!);
});
}
@@ -596,7 +592,7 @@
}
}
- static File _getFile(Folder directory, String name) {
+ static File? _getFile(Folder directory, String name) {
Resource resource = directory.getChild(name);
if (resource is File && resource.exists) {
return resource;
@@ -622,7 +618,7 @@
final CiderByteStore byteStore;
final MicroContextObjects contextObjects;
- LinkedElementFactory elementFactory;
+ late final LinkedElementFactory elementFactory;
Set<LibraryCycle> loadedBundles = Set.identity();
@@ -643,9 +639,16 @@
/// artifacts.
Set<int> collectSharedDataIdentifiers() {
var idSet = <int>{};
+
+ void addIfNotNull(int? id) {
+ if (id != null) {
+ idSet.add(id);
+ }
+ }
+
for (var cycle in loadedBundles) {
- idSet.add(cycle.astId);
- idSet.add(cycle.resolutionId);
+ addIfNotNull(cycle.astId);
+ addIfNotNull(cycle.resolutionId);
}
loadedBundles.clear();
return idSet;
@@ -653,8 +656,8 @@
/// Load data required to access elements of the given [targetLibrary].
void load2({
- @required FileState targetLibrary,
- @required OperationPerformanceImpl performance,
+ required FileState targetLibrary,
+ required OperationPerformanceImpl performance,
}) {
var librariesLinked = 0;
var librariesLinkedTimer = Stopwatch();
@@ -682,7 +685,6 @@
var inputLibraries = <link2.LinkInputLibrary>[];
for (var libraryFile in cycle.libraries) {
var librarySource = libraryFile.source;
- if (librarySource == null) continue;
var inputUnits = <link2.LinkInputUnit>[];
var partIndex = -1;
@@ -698,7 +700,7 @@
content,
);
- String partUriStr;
+ String? partUriStr;
if (partIndex >= 0) {
partUriStr = libraryFile.unlinked2.parts[partIndex];
}
@@ -741,14 +743,14 @@
performance.getDataInt('bytesGet').add(resolutionBytes.length);
performance.getDataInt('libraryLoadCount').add(cycle.libraries.length);
}
- cycle.astId = astData.id;
- cycle.resolutionId = resolutionData.id;
+ cycle.astId = astData!.id;
+ cycle.resolutionId = resolutionData!.id;
elementFactory.addBundle(
BundleReader(
elementFactory: elementFactory,
- astBytes: astBytes,
- resolutionBytes: resolutionBytes,
+ astBytes: astBytes as Uint8List,
+ resolutionBytes: resolutionBytes as Uint8List,
),
);
@@ -775,10 +777,17 @@
);
var removedSet = removed.toSet();
+
+ void addIfNotNull(int? id) {
+ if (id != null) {
+ removedIds.add(id);
+ }
+ }
+
loadedBundles.removeWhere((cycle) {
if (cycle.libraries.any(removedSet.contains)) {
- removedIds.add(cycle.astId);
- removedIds.add(cycle.resolutionId);
+ addIfNotNull(cycle.astId);
+ addIfNotNull(cycle.resolutionId);
return true;
}
return false;
@@ -788,9 +797,9 @@
/// Ensure that type provider is created.
void _createElementFactoryTypeProvider() {
var analysisContext = contextObjects.analysisContext;
- if (analysisContext.typeProviderNonNullableByDefault == null) {
- var dartCore = elementFactory.libraryOfUri('dart:core');
- var dartAsync = elementFactory.libraryOfUri('dart:async');
+ if (!analysisContext.hasTypeProvider) {
+ var dartCore = elementFactory.libraryOfUri2('dart:core');
+ var dartAsync = elementFactory.libraryOfUri2('dart:async');
elementFactory.createTypeProviders(dartCore, dartAsync);
}
}
diff --git a/pkg/analyzer/lib/src/dart/resolver/annotation_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/annotation_resolver.dart
index 6b31839..a02ad16 100644
--- a/pkg/analyzer/lib/src/dart/resolver/annotation_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/annotation_resolver.dart
@@ -28,13 +28,14 @@
_resolve1(node);
node.constructorName?.accept(_resolver);
- Element element = node.element;
+ var element = node.element;
if (element is ExecutableElement) {
InferenceContext.setType(node.arguments, element.type);
}
node.arguments?.accept(_resolver);
- ElementAnnotationImpl elementAnnotationImpl = node.elementAnnotation;
+ var elementAnnotationImpl =
+ node.elementAnnotation as ElementAnnotationImpl?;
if (elementAnnotationImpl == null) {
// Analyzer ignores annotations on "part of" directives.
assert(parent is PartDirective || parent is PartOfDirective);
@@ -135,14 +136,13 @@
void _resolveAnnotationConstructorInvocationArguments(
Annotation annotation, ConstructorElement constructor) {
- ArgumentList argumentList = annotation.arguments;
+ var argumentList = annotation.arguments;
// error will be reported in ConstantVerifier
if (argumentList == null) {
return;
}
// resolve arguments to parameters
- List<ParameterElement> parameters =
- _resolveArgumentsToFunction(argumentList, constructor);
+ var parameters = _resolveArgumentsToFunction(argumentList, constructor);
if (parameters != null) {
argumentList.correspondingStaticParameters = parameters;
}
@@ -150,8 +150,8 @@
/// Continues resolution of the given [annotation].
void _resolveAnnotationElement(Annotation annotation) {
- SimpleIdentifier nameNode1;
- SimpleIdentifier nameNode2;
+ late final SimpleIdentifier nameNode1;
+ SimpleIdentifier? nameNode2;
{
Identifier annName = annotation.name;
if (annName is PrefixedIdentifier) {
@@ -162,14 +162,14 @@
nameNode2 = null;
}
}
- SimpleIdentifier nameNode3 = annotation.constructorName;
- ConstructorElement constructor;
+ SimpleIdentifier? nameNode3 = annotation.constructorName;
+ ConstructorElement? constructor;
bool undefined = false;
//
// CONST or Class(args)
//
- if (nameNode1 != null && nameNode2 == null && nameNode3 == null) {
- Element element1 = nameNode1.staticElement;
+ if (nameNode2 == null && nameNode3 == null) {
+ var element1 = nameNode1.staticElement;
// TODO(scheglov) Must be const.
if (element1 is VariableElement) {
return;
@@ -191,9 +191,9 @@
//
// prefix.CONST or prefix.Class() or Class.CONST or Class.constructor(args)
//
- if (nameNode1 != null && nameNode2 != null && nameNode3 == null) {
- Element element1 = nameNode1.staticElement;
- Element element2 = nameNode2.staticElement;
+ if (nameNode2 != null && nameNode3 == null) {
+ var element1 = nameNode1.staticElement;
+ var element2 = nameNode2.staticElement;
// Class.CONST - not resolved yet
if (element1 is ClassElement) {
element2 = element1.lookUpGetter(nameNode2.name, _definingLibrary);
@@ -228,16 +228,15 @@
//
// prefix.Class.CONST or prefix.Class.constructor(args)
//
- if (nameNode1 != null && nameNode2 != null && nameNode3 != null) {
- Element element2 = nameNode2.staticElement;
+ if (nameNode2 != null && nameNode3 != null) {
+ var element2 = nameNode2.staticElement;
// element2 should be ClassElement
if (element2 is ClassElement) {
String name3 = nameNode3.name;
// prefix.Class.CONST
- PropertyAccessorElement getter =
- element2.lookUpGetter(name3, _definingLibrary);
+ var getter = element2.lookUpGetter(name3, _definingLibrary);
if (getter != null) {
- getter = _resolver.toLegacyElement(getter);
+ getter = _resolver.toLegacyElement(getter)!;
nameNode3.staticElement = getter;
annotation.element = getter;
_resolveAnnotationElementGetter(annotation, getter);
@@ -287,8 +286,8 @@
/// the arguments, or `null` if no correspondence could be computed.
///
/// TODO(scheglov) this is duplicate
- List<ParameterElement> _resolveArgumentsToFunction(
- ArgumentList argumentList, ExecutableElement executableElement) {
+ List<ParameterElement?>? _resolveArgumentsToFunction(
+ ArgumentList argumentList, ExecutableElement? executableElement) {
if (executableElement == null) {
return null;
}
@@ -303,7 +302,7 @@
/// correspond to the arguments.
///
/// TODO(scheglov) this is duplicate
- List<ParameterElement> _resolveArgumentsToParameters(
+ List<ParameterElement?> _resolveArgumentsToParameters(
ArgumentList argumentList, List<ParameterElement> parameters) {
return ResolverVisitor.resolveArgumentsToParameters(
argumentList, parameters, _errorReporter.reportErrorForNode);
diff --git a/pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart
index a71a826..a767e17 100644
--- a/pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart
@@ -16,7 +16,6 @@
import 'package:analyzer/src/dart/resolver/type_property_resolver.dart';
import 'package:analyzer/src/error/codes.dart';
import 'package:analyzer/src/generated/resolver.dart';
-import 'package:meta/meta.dart';
/// Helper for resolving [AssignmentExpression]s.
class AssignmentExpressionResolver {
@@ -26,7 +25,7 @@
final AssignmentExpressionShared _assignmentShared;
AssignmentExpressionResolver({
- @required ResolverVisitor resolver,
+ required ResolverVisitor resolver,
}) : _resolver = resolver,
_typePropertyResolver = resolver.typePropertyResolver,
_inferenceHelper = resolver.inferenceHelper,
@@ -60,24 +59,27 @@
if (hasRead) {
_resolver.setReadElement(left, readElement);
+ _resolveOperator(node);
}
_resolver.setWriteElement(left, writeElement);
_resolver.migrationResolutionHooks
?.setCompoundAssignmentExpressionTypes(node);
- _resolveOperator(node);
+ // TODO(scheglov) Use VariableElement and do in resolveForWrite() ?
+ _assignmentShared.checkFinalAlreadyAssigned(left);
{
var leftType = node.writeType;
if (writeElement is VariableElement) {
- leftType = _resolver.localVariableTypeProvider.getType(left);
+ leftType = _resolver.localVariableTypeProvider
+ .getType(left as SimpleIdentifier);
}
- _setRhsContext(node, leftType, operator, right);
+ _setRhsContext(node, leftType!, operator, right);
}
var flow = _resolver.flowAnalysis?.flow;
if (flow != null && isIfNull) {
- flow.ifNullExpression_rightBegin(left, node.readType);
+ flow.ifNullExpression_rightBegin(left, node.readType!);
}
right.accept(_resolver);
@@ -85,8 +87,8 @@
_resolveTypes(node);
if (flow != null) {
- if (writeElement is VariableElement) {
- flow.write(writeElement, node.staticType, hasRead ? null : right);
+ if (writeElement is PromotableElement) {
+ flow.write(writeElement, node.staticType!, hasRead ? null : right);
}
if (isIfNull) {
flow.ifNullExpression_end();
@@ -123,8 +125,7 @@
/// See [StaticWarningCode.USE_OF_VOID_RESULT].
/// TODO(scheglov) this is duplicate
bool _checkForUseOfVoidResult(Expression expression) {
- if (expression == null ||
- !identical(expression.staticType, VoidTypeImpl.instance)) {
+ if (!identical(expression.staticType, VoidTypeImpl.instance)) {
return false;
}
@@ -145,14 +146,11 @@
var operator = node.operator;
var operatorType = operator.type;
- var leftType = node.readType;
+ var leftType = node.readType!;
if (identical(leftType, NeverTypeImpl.instance)) {
return;
}
- // TODO(scheglov) Use VariableElement and do in resolveForWrite() ?
- _assignmentShared.checkFinalAlreadyAssigned(left);
-
// Values of the type void cannot be used.
// Example: `y += 0`, is not allowed.
if (operatorType != TokenType.EQ) {
@@ -182,7 +180,7 @@
receiverErrorNode: left,
nameErrorEntity: operator,
);
- node.staticElement = result.getter;
+ node.staticElement = result.getter as MethodElement?;
if (result.needsGetterError) {
_errorReporter.reportErrorForToken(
CompileTimeErrorCode.UNDEFINED_OPERATOR,
@@ -198,17 +196,17 @@
var operator = node.operator.type;
if (operator == TokenType.EQ) {
- assignedType = node.rightHandSide.staticType;
+ assignedType = node.rightHandSide.staticType!;
nodeType = assignedType;
} else if (operator == TokenType.QUESTION_QUESTION_EQ) {
- var leftType = node.readType;
+ var leftType = node.readType!;
// The LHS value will be used only if it is non-null.
if (_isNonNullableByDefault) {
leftType = _typeSystem.promoteToNonNull(leftType);
}
- assignedType = node.rightHandSide.staticType;
+ assignedType = node.rightHandSide.staticType!;
nodeType = _typeSystem.getLeastUpperBound(leftType, assignedType);
} else if (operator == TokenType.AMPERSAND_AMPERSAND_EQ ||
operator == TokenType.BAR_BAR_EQ) {
@@ -217,8 +215,8 @@
} else {
var operatorElement = node.staticElement;
if (operatorElement != null) {
- var leftType = node.readType;
- var rightType = node.rightHandSide.staticType;
+ var leftType = node.readType!;
+ var rightType = node.rightHandSide.staticType!;
assignedType = _typeSystem.refineBinaryExpressionType(
leftType,
operator,
@@ -236,7 +234,7 @@
// TODO(scheglov) Remove from ErrorVerifier?
_checkForInvalidAssignment(
- node.writeType,
+ node.writeType!,
node.rightHandSide,
assignedType,
);
@@ -273,7 +271,7 @@
final ResolverVisitor _resolver;
AssignmentExpressionShared({
- @required ResolverVisitor resolver,
+ required ResolverVisitor resolver,
}) : _resolver = resolver;
ErrorReporter get _errorReporter => _resolver.errorReporter;
@@ -282,11 +280,11 @@
var flow = _resolver.flowAnalysis?.flow;
if (flow != null && left is SimpleIdentifier) {
var element = left.staticElement;
- if (element is VariableElement) {
+ if (element is PromotableElement) {
var assigned =
- _resolver.flowAnalysis.isDefinitelyAssigned(left, element);
+ _resolver.flowAnalysis!.isDefinitelyAssigned(left, element);
var unassigned =
- _resolver.flowAnalysis.isDefinitelyUnassigned(left, element);
+ _resolver.flowAnalysis!.isDefinitelyUnassigned(left, element);
if (element.isFinal) {
if (element.isLate) {
diff --git a/pkg/analyzer/lib/src/dart/resolver/ast_rewrite.dart b/pkg/analyzer/lib/src/dart/resolver/ast_rewrite.dart
index 377e713..26596c8 100644
--- a/pkg/analyzer/lib/src/dart/resolver/ast_rewrite.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/ast_rewrite.dart
@@ -10,7 +10,6 @@
import 'package:analyzer/error/listener.dart';
import 'package:analyzer/src/dart/ast/utilities.dart';
import 'package:analyzer/src/error/codes.dart';
-import 'package:meta/meta.dart';
/// Helper for [MethodInvocation]s into [InstanceCreationExpression] to support
/// the optional `new` and `const` feature, or [ExtensionOverride].
@@ -27,14 +26,14 @@
return node;
}
- Expression target = node.target;
+ var target = node.target;
if (target == null) {
// Possible cases: C() or C<>()
if (node.realTarget != null) {
// This isn't a constructor invocation because it's in a cascade.
return node;
}
- Element element = nameScope.lookup(methodName.name).getter;
+ var element = nameScope.lookup(methodName.name).getter;
if (element is ClassElement) {
return _toInstanceCreation_type(
node: node,
@@ -60,7 +59,7 @@
// This isn't a constructor invocation because a null aware operator is
// being used.
}
- Element element = nameScope.lookup(target.name).getter;
+ var element = nameScope.lookup(target.name).getter;
if (element is ClassElement) {
// class C { C.named(); }
// C.named()
@@ -72,7 +71,7 @@
);
} else if (element is PrefixElement) {
// Possible cases: p.C() or p.C<>()
- Element prefixedElement = element.scope.lookup(methodName.name).getter;
+ var prefixedElement = element.scope.lookup(methodName.name).getter;
if (prefixedElement is ClassElement) {
return _toInstanceCreation_prefix_type(
node: node,
@@ -81,7 +80,7 @@
);
} else if (prefixedElement is ExtensionElement) {
PrefixedIdentifier extensionName =
- astFactory.prefixedIdentifier(target, node.operator, methodName);
+ astFactory.prefixedIdentifier(target, node.operator!, methodName);
ExtensionOverride extensionOverride = astFactory.extensionOverride(
extensionName: extensionName,
typeArguments: node.typeArguments,
@@ -141,10 +140,10 @@
}
AstNode _instanceCreation_prefix_type_name({
- @required MethodInvocation node,
- @required PrefixedIdentifier typeNameIdentifier,
- @required SimpleIdentifier constructorIdentifier,
- @required ClassElement classElement,
+ required MethodInvocation node,
+ required PrefixedIdentifier typeNameIdentifier,
+ required SimpleIdentifier constructorIdentifier,
+ required ClassElement classElement,
}) {
var constructorElement = classElement.getNamedConstructor(
constructorIdentifier.name,
@@ -171,13 +170,13 @@
}
InstanceCreationExpression _toInstanceCreation_prefix_type({
- @required MethodInvocation node,
- @required SimpleIdentifier prefixIdentifier,
- @required SimpleIdentifier typeIdentifier,
+ required MethodInvocation node,
+ required SimpleIdentifier prefixIdentifier,
+ required SimpleIdentifier typeIdentifier,
}) {
var typeName = astFactory.typeName(
astFactory.prefixedIdentifier(
- prefixIdentifier, node.operator, typeIdentifier),
+ prefixIdentifier, node.operator!, typeIdentifier),
node.typeArguments);
var constructorName = astFactory.constructorName(typeName, null, null);
var instanceCreationExpression = astFactory.instanceCreationExpression(
@@ -187,8 +186,8 @@
}
InstanceCreationExpression _toInstanceCreation_type({
- @required MethodInvocation node,
- @required SimpleIdentifier typeIdentifier,
+ required MethodInvocation node,
+ required SimpleIdentifier typeIdentifier,
}) {
var typeName = astFactory.typeName(typeIdentifier, node.typeArguments);
var constructorName = astFactory.constructorName(typeName, null, null);
@@ -199,10 +198,10 @@
}
AstNode _toInstanceCreation_type_constructor({
- @required MethodInvocation node,
- @required SimpleIdentifier typeIdentifier,
- @required SimpleIdentifier constructorIdentifier,
- @required ClassElement classElement,
+ required MethodInvocation node,
+ required SimpleIdentifier typeIdentifier,
+ required SimpleIdentifier constructorIdentifier,
+ required ClassElement classElement,
}) {
var name = constructorIdentifier.name;
var constructorElement = classElement.getNamedConstructor(name);
diff --git a/pkg/analyzer/lib/src/dart/resolver/binary_expression_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/binary_expression_resolver.dart
index 603b9d1..1c8de42 100644
--- a/pkg/analyzer/lib/src/dart/resolver/binary_expression_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/binary_expression_resolver.dart
@@ -17,7 +17,6 @@
import 'package:analyzer/src/error/codes.dart';
import 'package:analyzer/src/generated/resolver.dart';
import 'package:analyzer/src/generated/type_promotion_manager.dart';
-import 'package:meta/meta.dart';
/// Helper for resolving [BinaryExpression]s.
class BinaryExpressionResolver {
@@ -27,8 +26,8 @@
final InvocationInferenceHelper _inferenceHelper;
BinaryExpressionResolver({
- @required ResolverVisitor resolver,
- @required TypePromotionManager promoteManager,
+ required ResolverVisitor resolver,
+ required TypePromotionManager promoteManager,
}) : _resolver = resolver,
_promoteManager = promoteManager,
_typePropertyResolver = resolver.typePropertyResolver,
@@ -79,15 +78,7 @@
/// TODO(scheglov) this is duplicate
void _analyzeLeastUpperBoundTypes(
Expression node, DartType staticType1, DartType staticType2) {
- // TODO(brianwilkerson) Determine whether this can still happen.
- staticType1 ??= DynamicTypeImpl.instance;
-
- // TODO(brianwilkerson) Determine whether this can still happen.
- staticType2 ??= DynamicTypeImpl.instance;
-
- DartType staticType =
- _typeSystem.getLeastUpperBound(staticType1, staticType2) ??
- DynamicTypeImpl.instance;
+ var staticType = _typeSystem.getLeastUpperBound(staticType1, staticType2);
staticType = _resolver.toLegacyTypeIfOptOut(staticType);
@@ -102,7 +93,7 @@
);
}
- void _resolveEqual(BinaryExpressionImpl node, {@required bool notEqual}) {
+ void _resolveEqual(BinaryExpressionImpl node, {required bool notEqual}) {
var left = node.leftOperand;
left.accept(_resolver);
left = node.leftOperand;
@@ -110,7 +101,7 @@
var flow = _resolver.flowAnalysis?.flow;
var leftExtensionOverride = left is ExtensionOverride;
if (!leftExtensionOverride) {
- flow?.equalityOp_rightBegin(left, left.staticType);
+ flow?.equalityOp_rightBegin(left, left.staticType!);
}
var right = node.rightOperand;
@@ -118,7 +109,7 @@
right = node.rightOperand;
if (!leftExtensionOverride) {
- flow?.equalityOp_end(node, right, right.staticType, notEqual: notEqual);
+ flow?.equalityOp_end(node, right, right.staticType!, notEqual: notEqual);
}
_resolveUserDefinableElement(
@@ -142,7 +133,7 @@
left.accept(_resolver);
left = node.leftOperand;
- var leftType = left.staticType;
+ var leftType = left.staticType!;
var rightContextType = InferenceContext.getContext(node);
if (rightContextType == null || rightContextType.isDynamic) {
@@ -155,7 +146,7 @@
right = node.rightOperand;
flow?.ifNullExpression_end();
- var rightType = right.staticType;
+ var rightType = right.staticType!;
if (_isNonNullableByDefault) {
var promotedLeftType = _typeSystem.promoteToNonNull(leftType);
_analyzeLeastUpperBoundTypes(node, promotedLeftType, rightType);
@@ -183,7 +174,7 @@
right.accept(_resolver);
right = node.rightOperand;
- _resolver.nullSafetyDeadCodeVerifier?.flowEnd(right);
+ _resolver.nullSafetyDeadCodeVerifier.flowEnd(right);
flow?.logicalBinaryOp_end(node, right, isAnd: true);
} else {
_promoteManager.visitBinaryExpression_and_rhs(
@@ -220,7 +211,7 @@
right.accept(_resolver);
right = node.rightOperand;
- _resolver.nullSafetyDeadCodeVerifier?.flowEnd(right);
+ _resolver.nullSafetyDeadCodeVerifier.flowEnd(right);
flow?.logicalBinaryOp_end(node, right, isAnd: false);
_checkNonBoolOperand(left, '||');
@@ -234,7 +225,7 @@
///
/// TODO(scheglov) this is duplicate
DartType _resolveTypeParameter(DartType type) =>
- type?.resolveToBound(_typeProvider.objectType);
+ type.resolveToBound(_typeProvider.objectType);
void _resolveUnsupportedOperator(BinaryExpressionImpl node) {
node.leftOperand.accept(_resolver);
@@ -279,8 +270,9 @@
Expression leftOperand = node.leftOperand;
if (leftOperand is ExtensionOverride) {
- ExtensionElement extension = leftOperand.extensionName.staticElement;
- MethodElement member = extension.getMethod(methodName);
+ var extension =
+ leftOperand.extensionName.staticElement as ExtensionElement;
+ var member = extension.getMethod(methodName);
if (member == null) {
_errorReporter.reportErrorForToken(
CompileTimeErrorCode.UNDEFINED_EXTENSION_OPERATOR,
@@ -293,7 +285,7 @@
return;
}
- var leftType = leftOperand.staticType;
+ var leftType = leftOperand.staticType!;
leftType = _resolveTypeParameter(leftType);
if (identical(leftType, NeverTypeImpl.instance)) {
@@ -316,7 +308,7 @@
nameErrorEntity: node,
);
- node.staticElement = result.getter;
+ node.staticElement = result.getter as MethodElement?;
node.staticInvokeType = result.getter?.type;
if (result.needsGetterError) {
if (leftOperand is SuperExpression) {
@@ -338,8 +330,13 @@
void _resolveUserDefinableType(BinaryExpressionImpl node) {
var leftOperand = node.leftOperand;
- var leftType = leftOperand.staticType;
- leftType = _resolveTypeParameter(leftType);
+ DartType leftType;
+ if (leftOperand is ExtensionOverride) {
+ leftType = leftOperand.extendedType!;
+ } else {
+ leftType = leftOperand.staticType!;
+ leftType = _resolveTypeParameter(leftType);
+ }
if (identical(leftType, NeverTypeImpl.instance)) {
_inferenceHelper.recordStaticType(node, NeverTypeImpl.instance);
@@ -352,7 +349,7 @@
staticType = _typeSystem.refineBinaryExpressionType(
leftType,
node.operator.type,
- node.rightOperand.staticType,
+ node.rightOperand.staticType!,
staticType,
node.staticElement,
);
diff --git a/pkg/analyzer/lib/src/dart/resolver/body_inference_context.dart b/pkg/analyzer/lib/src/dart/resolver/body_inference_context.dart
index b470871..ed9a552 100644
--- a/pkg/analyzer/lib/src/dart/resolver/body_inference_context.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/body_inference_context.dart
@@ -8,7 +8,6 @@
import 'package:analyzer/dart/element/type_provider.dart';
import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/dart/element/type_system.dart';
-import 'package:meta/meta.dart';
class BodyInferenceContext {
static const _key = 'BodyInferenceContext';
@@ -19,15 +18,15 @@
/// The context type, computed from the imposed return type schema.
/// Might be `null` if an empty typing context.
- final DartType contextType;
+ final DartType? contextType;
/// Types of all `return` or `yield` statements in the body.
final List<DartType> _returnTypes = [];
factory BodyInferenceContext({
- @required TypeSystemImpl typeSystem,
- @required FunctionBody node,
- @required DartType imposedType,
+ required TypeSystemImpl typeSystem,
+ required FunctionBody node,
+ required DartType? imposedType,
}) {
var contextType = _contextTypeForImposed(typeSystem, node, imposedType);
@@ -43,21 +42,21 @@
}
BodyInferenceContext._({
- @required TypeSystemImpl typeSystem,
- @required bool isAsynchronous,
- @required bool isGenerator,
- @required this.contextType,
- }) : _typeSystem = typeSystem,
+ required TypeSystemImpl typeSystem,
+ required bool isAsynchronous,
+ required bool isGenerator,
+ required this.contextType,
+ }) : _typeSystem = typeSystem,
_isAsynchronous = isAsynchronous,
_isGenerator = isGenerator;
TypeProvider get _typeProvider => _typeSystem.typeProvider;
- void addReturnExpression(Expression expression) {
+ void addReturnExpression(Expression? expression) {
if (expression == null) {
_returnTypes.add(_typeProvider.nullType);
} else {
- var type = expression.staticType;
+ var type = expression.staticType!;
if (_isAsynchronous) {
type = _typeSystem.flatten(type);
}
@@ -66,7 +65,7 @@
}
void addYield(YieldStatement node) {
- var expressionType = node.expression.staticType;
+ var expressionType = node.expression.staticType!;
if (node.star == null) {
_returnTypes.add(expressionType);
@@ -85,7 +84,7 @@
}
DartType computeInferredReturnType({
- @required bool endOfBlockIsReachable,
+ required bool endOfBlockIsReachable,
}) {
var actualReturnedType = _computeActualReturnedType(
endOfBlockIsReachable: endOfBlockIsReachable,
@@ -140,7 +139,7 @@
}
DartType _computeActualReturnedType({
- @required bool endOfBlockIsReachable,
+ required bool endOfBlockIsReachable,
}) {
if (_isGenerator) {
if (_returnTypes.isEmpty) {
@@ -155,11 +154,11 @@
return _returnTypes.fold(initialType, _typeSystem.getLeastUpperBound);
}
- static BodyInferenceContext of(FunctionBody node) {
+ static BodyInferenceContext? of(FunctionBody node) {
return node.getProperty(_key);
}
- static DartType _argumentOf(DartType type, ClassElement element) {
+ static DartType? _argumentOf(DartType type, ClassElement element) {
var elementType = type.asInstanceOf(element);
if (elementType != null) {
return elementType.typeArguments[0];
@@ -167,10 +166,10 @@
return null;
}
- static DartType _contextTypeForImposed(
+ static DartType? _contextTypeForImposed(
TypeSystemImpl typeSystem,
FunctionBody node,
- DartType imposedType,
+ DartType? imposedType,
) {
if (imposedType == null) {
return null;
diff --git a/pkg/analyzer/lib/src/dart/resolver/exit_detector.dart b/pkg/analyzer/lib/src/dart/resolver/exit_detector.dart
index 4c10a69..2b66120 100644
--- a/pkg/analyzer/lib/src/dart/resolver/exit_detector.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/exit_detector.dart
@@ -22,7 +22,7 @@
bool _enclosingBlockContainsContinue = false;
/// Add node when a labelled `break` is encountered.
- final Set<AstNode> _enclosingBlockBreaksLabel = <AstNode>{};
+ final Set<AstNode?> _enclosingBlockBreaksLabel = <AstNode?>{};
@override
bool visitArgumentList(ArgumentList node) =>
@@ -116,19 +116,16 @@
@override
bool visitConditionalExpression(ConditionalExpression node) {
- Expression conditionExpression = node.condition;
- Expression thenStatement = node.thenExpression;
- Expression elseStatement = node.elseExpression;
+ var conditionExpression = node.condition;
+ var thenExpression = node.thenExpression;
+ var elseExpression = node.elseExpression;
// TODO(jwren) Do we want to take constant expressions into account,
// evaluate if(false) {} differently than if(<condition>), when <condition>
// evaluates to a constant false value?
if (_nodeExits(conditionExpression)) {
return true;
}
- if (thenStatement == null || elseStatement == null) {
- return false;
- }
- return thenStatement.accept(this) && elseStatement.accept(this);
+ return thenExpression.accept(this)! && elseExpression.accept(this)!;
}
@override
@@ -188,17 +185,16 @@
ForLoopParts forLoopParts = node.forLoopParts;
if (forLoopParts is ForParts) {
if (forLoopParts is ForPartsWithDeclarations) {
- if (forLoopParts.variables != null &&
- _visitVariableDeclarations(forLoopParts.variables.variables)) {
+ if (_visitVariableDeclarations(forLoopParts.variables.variables)) {
return true;
}
} else if (forLoopParts is ForPartsWithExpression) {
- if (forLoopParts.initialization != null &&
- _nodeExits(forLoopParts.initialization)) {
+ var initialization = forLoopParts.initialization;
+ if (initialization != null && _nodeExits(initialization)) {
return true;
}
}
- Expression conditionExpression = forLoopParts.condition;
+ var conditionExpression = forLoopParts.condition;
if (conditionExpression != null && _nodeExits(conditionExpression)) {
return true;
}
@@ -248,9 +244,9 @@
_nodeExits(node.body);
return iterableExits;
}
- VariableDeclarationList variables;
- Expression initialization;
- Expression condition;
+ VariableDeclarationList? variables;
+ Expression? initialization;
+ Expression? condition;
NodeList<Expression> updaters;
if (parts is ForPartsWithDeclarations) {
variables = parts.variables;
@@ -260,6 +256,8 @@
initialization = parts.initialization;
condition = parts.condition;
updaters = parts.updaters;
+ } else {
+ throw UnimplementedError();
}
if (variables != null &&
_visitVariableDeclarations(variables.variables)) {
@@ -303,7 +301,7 @@
if (_nodeExits(node.function)) {
return true;
}
- return node.argumentList.accept(this);
+ return node.argumentList.accept(this)!;
}
@override
@@ -314,14 +312,14 @@
@override
bool visitIfElement(IfElement node) {
- Expression conditionExpression = node.condition;
- CollectionElement thenElement = node.thenElement;
- CollectionElement elseElement = node.elseElement;
+ var conditionExpression = node.condition;
+ var thenElement = node.thenElement;
+ var elseElement = node.elseElement;
if (_nodeExits(conditionExpression)) {
return true;
}
- bool conditionValue = _knownConditionValue(conditionExpression);
+ var conditionValue = _knownConditionValue(conditionExpression);
if (conditionValue == true) {
return _nodeExits(thenElement);
} else if (conditionValue == false && elseElement != null) {
@@ -330,7 +328,7 @@
bool thenExits = _nodeExits(thenElement);
bool elseExits = _nodeExits(elseElement);
- if (thenElement == null || elseElement == null) {
+ if (elseElement == null) {
return false;
}
return thenExits && elseExits;
@@ -338,14 +336,14 @@
@override
bool visitIfStatement(IfStatement node) {
- Expression conditionExpression = node.condition;
- Statement thenStatement = node.thenStatement;
- Statement elseStatement = node.elseStatement;
+ var conditionExpression = node.condition;
+ var thenStatement = node.thenStatement;
+ var elseStatement = node.elseStatement;
if (_nodeExits(conditionExpression)) {
return true;
}
- bool conditionValue = _knownConditionValue(conditionExpression);
+ var conditionValue = _knownConditionValue(conditionExpression);
if (conditionValue == true) {
return _nodeExits(thenStatement);
} else if (conditionValue == false && elseStatement != null) {
@@ -354,7 +352,7 @@
bool thenExits = _nodeExits(thenStatement);
bool elseExits = _nodeExits(elseStatement);
- if (thenStatement == null || elseStatement == null) {
+ if (elseStatement == null) {
return false;
}
return thenExits && elseExits;
@@ -377,7 +375,7 @@
_nodeExits(node.argumentList);
@override
- bool visitIsExpression(IsExpression node) => node.expression.accept(this);
+ bool visitIsExpression(IsExpression node) => node.expression.accept(this)!;
@override
bool visitLabel(Label node) => false;
@@ -414,16 +412,16 @@
@override
bool visitMethodInvocation(MethodInvocation node) {
- Expression target = node.realTarget;
+ var target = node.realTarget;
if (target != null) {
- if (target.accept(this)) {
+ if (target.accept(this)!) {
return true;
}
if (node.isNullAware) {
return false;
}
}
- Element element = node.methodName.staticElement;
+ var element = node.methodName.staticElement;
if (_elementExits(element)) {
return true;
}
@@ -432,7 +430,7 @@
@override
bool visitNamedExpression(NamedExpression node) =>
- node.expression.accept(this);
+ node.expression.accept(this)!;
@override
bool visitNode(AstNode node) {
@@ -442,7 +440,7 @@
@override
bool visitParenthesizedExpression(ParenthesizedExpression node) =>
- node.expression.accept(this);
+ node.expression.accept(this)!;
@override
bool visitPostfixExpression(PostfixExpression node) => false;
@@ -452,11 +450,8 @@
@override
bool visitPropertyAccess(PropertyAccess node) {
- Expression target = node.realTarget;
- if (target != null && target.accept(this)) {
- return true;
- }
- return false;
+ var target = node.realTarget;
+ return target.accept(this)!;
}
@override
@@ -512,7 +507,7 @@
// For switch members with no statements, don't visit the children.
// Otherwise, if there children statements don't exit, mark this as a
// non-exiting case.
- if (switchMember.statements.isNotEmpty && !switchMember.accept(this)) {
+ if (switchMember.statements.isNotEmpty && !switchMember.accept(this)!) {
hasNonExitingCase = true;
}
}
@@ -553,9 +548,9 @@
@override
bool visitVariableDeclaration(VariableDeclaration node) {
- Expression initializer = node.initializer;
+ var initializer = node.initializer;
if (initializer != null) {
- return initializer.accept(this);
+ return initializer.accept(this)!;
}
return false;
}
@@ -568,7 +563,7 @@
bool visitVariableDeclarationStatement(VariableDeclarationStatement node) {
NodeList<VariableDeclaration> variables = node.variables.variables;
for (int i = 0; i < variables.length; i++) {
- if (variables[i].accept(this)) {
+ if (variables[i].accept(this)!) {
return true;
}
}
@@ -581,7 +576,7 @@
_enclosingBlockContainsBreak = false;
try {
Expression conditionExpression = node.condition;
- if (conditionExpression.accept(this)) {
+ if (conditionExpression.accept(this)!) {
return true;
}
node.body.accept(this);
@@ -613,7 +608,7 @@
/// If the given [expression] has a known Boolean value, return the known
/// value, otherwise return `null`.
- bool _knownConditionValue(Expression conditionExpression) {
+ bool? _knownConditionValue(Expression conditionExpression) {
// TODO(jwren) Do we want to take all constant expressions into account?
if (conditionExpression is BooleanLiteral) {
return conditionExpression.value;
@@ -622,16 +617,16 @@
}
/// Return `true` if the given [node] exits.
- bool _nodeExits(AstNode node) {
+ bool _nodeExits(AstNode? node) {
if (node == null) {
return false;
}
- return node.accept(this);
+ return node.accept(this)!;
}
bool _visitExpressions(NodeList<Expression> expressions) {
for (int i = expressions.length - 1; i >= 0; i--) {
- if (expressions[i].accept(this)) {
+ if (expressions[i].accept(this)!) {
return true;
}
}
@@ -640,7 +635,7 @@
bool _visitStatements(NodeList<Statement> statements) {
for (int i = 0; i < statements.length; i++) {
- if (statements[i].accept(this)) {
+ if (statements[i].accept(this)!) {
return true;
}
}
@@ -650,7 +645,7 @@
bool _visitVariableDeclarations(
NodeList<VariableDeclaration> variableDeclarations) {
for (int i = variableDeclarations.length - 1; i >= 0; i--) {
- if (variableDeclarations[i].accept(this)) {
+ if (variableDeclarations[i].accept(this)!) {
return true;
}
}
@@ -662,7 +657,7 @@
return ExitDetector()._nodeExits(node);
}
- static bool _elementExits(Element element) {
+ static bool _elementExits(Element? element) {
if (element is ExecutableElement) {
var declaration = element.declaration;
return declaration.hasAlwaysThrows ||
diff --git a/pkg/analyzer/lib/src/dart/resolver/extension_member_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/extension_member_resolver.dart
index a35cc79..1765615 100644
--- a/pkg/analyzer/lib/src/dart/resolver/extension_member_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/extension_member_resolver.dart
@@ -81,10 +81,10 @@
///
/// The [node] is fully resolved, and its type arguments are set.
ResolutionResult getOverrideMember(ExtensionOverride node, String name) {
- ExtensionElement element = node.extensionName.staticElement;
+ var element = node.extensionName.staticElement as ExtensionElement;
- ExecutableElement getter;
- ExecutableElement setter;
+ ExecutableElement? getter;
+ ExecutableElement? setter;
if (name == '[]') {
getter = element.getMethod('[]');
setter = element.getMethod('[]=');
@@ -99,11 +99,13 @@
var substitution = Substitution.fromPairs(
element.typeParameters,
- node.typeArgumentTypes,
+ node.typeArgumentTypes!,
);
- var getterMember = ExecutableMember.from2(getter, substitution);
- var setterMember = ExecutableMember.from2(setter, substitution);
+ var getterMember =
+ getter != null ? ExecutableMember.from2(getter, substitution) : null;
+ var setterMember =
+ setter != null ? ExecutableMember.from2(setter, substitution) : null;
getterMember = _resolver.toLegacyElement(getterMember);
setterMember = _resolver.toLegacyElement(setterMember);
@@ -114,14 +116,16 @@
/// Perform upward inference for the override.
void resolveOverride(ExtensionOverride node) {
var nodeImpl = node as ExtensionOverrideImpl;
- var element = node.staticElement;
+ var element = node.staticElement!;
var typeParameters = element.typeParameters;
if (!_isValidContext(node)) {
- _errorReporter.reportErrorForNode(
- CompileTimeErrorCode.EXTENSION_OVERRIDE_WITHOUT_ACCESS,
- node,
- );
+ if (!_isCascadeTarget(node)) {
+ _errorReporter.reportErrorForNode(
+ CompileTimeErrorCode.EXTENSION_OVERRIDE_WITHOUT_ACCESS,
+ node,
+ );
+ }
nodeImpl.staticType = _dynamicType;
}
@@ -137,13 +141,13 @@
}
var receiverExpression = arguments[0];
- var receiverType = receiverExpression.staticType;
+ var receiverType = receiverExpression.staticType!;
if (node.isNullAware) {
receiverType = _typeSystem.promoteToNonNull(receiverType);
}
- var typeArgumentTypes = _inferTypeArguments(node, receiverType);
+ var typeArgumentTypes = _inferTypeArguments(node, receiverType)!;
nodeImpl.typeArgumentTypes = typeArgumentTypes;
var substitution = Substitution.fromPairs(
@@ -163,7 +167,7 @@
if (receiverType.isVoid) {
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.USE_OF_VOID_RESULT, receiverExpression);
- } else if (!_typeSystem.isAssignableTo2(receiverType, node.extendedType)) {
+ } else if (!_typeSystem.isAssignableTo2(receiverType, node.extendedType!)) {
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.EXTENSION_OVERRIDE_ARGUMENT_NOT_ASSIGNABLE,
receiverExpression,
@@ -177,7 +181,7 @@
/// The context of the invocation that is made through the override does
/// not affect the type inference of the override and the receiver.
void setOverrideReceiverContextType(ExtensionOverride node) {
- var element = node.staticElement;
+ var element = node.staticElement!;
var typeParameters = element.typeParameters;
var arguments = node.argumentList.arguments;
@@ -190,7 +194,7 @@
if (typeArguments != null) {
var arguments = typeArguments.arguments;
if (arguments.length == typeParameters.length) {
- typeArgumentTypes = arguments.map((a) => a.type).toList();
+ typeArgumentTypes = arguments.map((a) => a.type!).toList();
} else {
typeArgumentTypes = _listOfDynamic(typeParameters);
}
@@ -212,7 +216,7 @@
void _checkTypeArgumentsMatchingBounds(
List<TypeParameterElement> typeParameters,
- TypeArgumentList typeArgumentList,
+ TypeArgumentList? typeArgumentList,
List<DartType> typeArgumentTypes,
Substitution substitution,
) {
@@ -236,7 +240,7 @@
/// Return the most specific extension or `null` if no single one can be
/// identified.
- _InstantiatedExtension _chooseMostSpecific(
+ _InstantiatedExtension? _chooseMostSpecific(
List<_InstantiatedExtension> extensions) {
for (var i = 0; i < extensions.length; i++) {
var e1 = extensions[i];
@@ -328,8 +332,8 @@
}
}
if (name == '[]') {
- ExecutableElement getter;
- ExecutableElement setter;
+ ExecutableElement? getter;
+ ExecutableElement? setter;
for (var method in extension.methods) {
if (method.name == '[]') {
getter = method;
@@ -367,11 +371,11 @@
/// If the number of explicit type arguments is different than the number
/// of extension's type parameters, or inference fails, return `dynamic`
/// for all type parameters.
- List<DartType> _inferTypeArguments(
+ List<DartType>? _inferTypeArguments(
ExtensionOverride node,
DartType receiverType,
) {
- var element = node.staticElement;
+ var element = node.staticElement!;
var typeParameters = element.typeParameters;
var typeArguments = node.typeArguments;
@@ -381,7 +385,7 @@
if (typeParameters.isEmpty) {
return const <DartType>[];
}
- return arguments.map((a) => a.type).toList();
+ return arguments.map((a) => a.type!).toList();
} else {
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS_EXTENSION,
@@ -461,12 +465,16 @@
return List<DartType>.filled(parameters.length, _dynamicType);
}
+ static bool _isCascadeTarget(ExtensionOverride node) {
+ var parent = node.parent;
+ return parent is CascadeExpression && parent.target == node;
+ }
+
/// Return `true` if the extension override [node] is being used as a target
/// of an operation that might be accessing an instance member.
static bool _isValidContext(ExtensionOverride node) {
- AstNode parent = node.parent;
+ var parent = node.parent;
return parent is BinaryExpression && parent.leftOperand == node ||
- parent is CascadeExpression && parent.target == node ||
parent is FunctionExpressionInvocation && parent.function == node ||
parent is IndexExpression && parent.target == node ||
parent is MethodInvocation && parent.target == node ||
@@ -477,8 +485,8 @@
class _CandidateExtension {
final ExtensionElement extension;
- final ExecutableElement getter;
- final ExecutableElement setter;
+ final ExecutableElement? getter;
+ final ExecutableElement? setter;
_CandidateExtension(this.extension, {this.getter, this.setter})
: assert(getter != null || setter != null);
@@ -497,17 +505,19 @@
ExtensionElement get extension => candidate.extension;
- ExecutableElement get getter {
- if (candidate.getter == null) {
+ ExecutableElement? get getter {
+ var getter = candidate.getter;
+ if (getter == null) {
return null;
}
- return ExecutableMember.from2(candidate.getter, substitution);
+ return ExecutableMember.from2(getter, substitution);
}
- ExecutableElement get setter {
- if (candidate.setter == null) {
+ ExecutableElement? get setter {
+ var setter = candidate.setter;
+ if (setter == null) {
return null;
}
- return ExecutableMember.from2(candidate.setter, substitution);
+ return ExecutableMember.from2(setter, substitution);
}
}
diff --git a/pkg/analyzer/lib/src/dart/resolver/flow_analysis_visitor.dart b/pkg/analyzer/lib/src/dart/resolver/flow_analysis_visitor.dart
index 1e46e61..4a01f6e 100644
--- a/pkg/analyzer/lib/src/dart/resolver/flow_analysis_visitor.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/flow_analysis_visitor.dart
@@ -8,7 +8,6 @@
import 'package:analyzer/dart/ast/visitor.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/type.dart';
-import 'package:analyzer/dart/element/type_system.dart';
import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/dart/element/type_system.dart' show TypeSystemImpl;
import 'package:analyzer/src/generated/migration.dart';
@@ -53,16 +52,16 @@
final TypeSystemTypeOperations _typeOperations;
/// Precomputed sets of potentially assigned variables.
- AssignedVariables<AstNode, PromotableElement> assignedVariables;
+ AssignedVariables<AstNode, PromotableElement>? assignedVariables;
/// The result for post-resolution stages of analysis, for testing only.
- final FlowAnalysisDataForTesting dataForTesting;
+ final FlowAnalysisDataForTesting? dataForTesting;
/// The current flow, when resolving a function body, or `null` otherwise.
- FlowAnalysis<AstNode, Statement, Expression, PromotableElement, DartType>
+ FlowAnalysis<AstNode, Statement, Expression, PromotableElement, DartType>?
flow;
- FlowAnalysisHelper(TypeSystem typeSystem, bool retainDataForTesting)
+ FlowAnalysisHelper(TypeSystemImpl typeSystem, bool retainDataForTesting)
: this._(TypeSystemTypeOperations(typeSystem),
retainDataForTesting ? FlowAnalysisDataForTesting() : null);
@@ -78,14 +77,14 @@
var expression = node.expression;
var typeAnnotation = node.type;
- flow.asExpression_end(expression, typeAnnotation.type);
+ flow!.asExpression_end(expression, typeAnnotation.type!);
}
void assignmentExpression(AssignmentExpression node) {
if (flow == null) return null;
if (node.operator.type == TokenType.QUESTION_QUESTION_EQ) {
- flow.ifNullExpression_rightBegin(node.leftHandSide, node.readType);
+ flow!.ifNullExpression_rightBegin(node.leftHandSide, node.readType!);
}
}
@@ -93,72 +92,76 @@
if (flow == null) return null;
if (node.operator.type == TokenType.QUESTION_QUESTION_EQ) {
- flow.ifNullExpression_end();
+ flow!.ifNullExpression_end();
}
}
void breakStatement(BreakStatement node) {
var target = getLabelTarget(node, node.label?.staticElement);
- flow.handleBreak(target);
+ if (target != null) {
+ flow!.handleBreak(target);
+ }
}
/// Mark the [node] as unreachable if it is not covered by another node that
/// is already known to be unreachable.
void checkUnreachableNode(AstNode node) {
if (flow == null) return;
- if (flow.isReachable) return;
+ if (flow!.isReachable) return;
if (dataForTesting != null) {
- dataForTesting.unreachableNodes.add(node);
+ dataForTesting!.unreachableNodes.add(node);
}
}
void continueStatement(ContinueStatement node) {
var target = getLabelTarget(node, node.label?.staticElement);
- flow.handleContinue(target);
+ if (target != null) {
+ flow!.handleContinue(target);
+ }
}
void executableDeclaration_enter(
- AstNode node, FormalParameterList parameters, bool isClosure) {
+ AstNode node, FormalParameterList? parameters, bool isClosure) {
if (isClosure) {
- flow.functionExpression_begin(node);
+ flow!.functionExpression_begin(node);
}
if (parameters != null) {
for (var parameter in parameters.parameters) {
- flow.declare(parameter.declaredElement, true);
+ flow!.declare(parameter.declaredElement!, true);
}
}
}
void executableDeclaration_exit(FunctionBody body, bool isClosure) {
if (isClosure) {
- flow.functionExpression_end();
+ flow!.functionExpression_end();
}
- if (!flow.isReachable) {
- dataForTesting?.functionBodiesThatDontComplete?.add(body);
+ if (!flow!.isReachable) {
+ dataForTesting?.functionBodiesThatDontComplete.add(body);
}
}
- void for_bodyBegin(AstNode node, Expression condition) {
- flow.for_bodyBegin(node is Statement ? node : null, condition);
+ void for_bodyBegin(AstNode node, Expression? condition) {
+ flow!.for_bodyBegin(node is Statement ? node : null, condition);
}
void for_conditionBegin(AstNode node) {
- flow.for_conditionBegin(node);
+ flow!.for_conditionBegin(node);
}
bool isDefinitelyAssigned(
SimpleIdentifier node,
PromotableElement element,
) {
- var isAssigned = flow.isAssigned(element);
+ var isAssigned = flow!.isAssigned(element);
if (dataForTesting != null) {
if (isAssigned) {
- dataForTesting.definitelyAssigned.add(node);
+ dataForTesting!.definitelyAssigned.add(node);
} else {
- dataForTesting.notDefinitelyAssigned.add(node);
+ dataForTesting!.notDefinitelyAssigned.add(node);
}
}
@@ -169,10 +172,10 @@
SimpleIdentifier node,
PromotableElement element,
) {
- var isUnassigned = flow.isUnassigned(element);
+ var isUnassigned = flow!.isUnassigned(element);
if (dataForTesting != null && isUnassigned) {
- dataForTesting.definitelyUnassigned.add(node);
+ dataForTesting!.definitelyUnassigned.add(node);
}
return isUnassigned;
@@ -184,37 +187,37 @@
var expression = node.expression;
var typeAnnotation = node.type;
- flow.isExpression_end(
+ flow!.isExpression_end(
node,
expression,
node.notOperator != null,
- typeAnnotation.type,
+ typeAnnotation.type!,
);
}
void labeledStatement_enter(LabeledStatement node) {
if (flow == null) return;
- flow.labeledStatement_begin(node);
+ flow!.labeledStatement_begin(node);
}
void labeledStatement_exit(LabeledStatement node) {
if (flow == null) return;
- flow.labeledStatement_end();
+ flow!.labeledStatement_end();
}
void topLevelDeclaration_enter(
- Declaration node, FormalParameterList parameters, FunctionBody body) {
- assert(node != null);
+ Declaration node, FormalParameterList? parameters, FunctionBody? body) {
assert(flow == null);
assignedVariables = computeAssignedVariables(node, parameters,
retainDataForTesting: dataForTesting != null);
if (dataForTesting != null) {
- dataForTesting.assignedVariables[node] = assignedVariables;
+ dataForTesting!.assignedVariables[node] = assignedVariables
+ as AssignedVariablesForTesting<AstNode, PromotableElement>;
}
flow = FlowAnalysis<AstNode, Statement, Expression, PromotableElement,
- DartType>(_typeOperations, assignedVariables);
+ DartType>(_typeOperations, assignedVariables!);
}
void topLevelDeclaration_exit() {
@@ -225,7 +228,7 @@
this.flow = null;
assignedVariables = null;
- flow.finish();
+ flow!.finish();
}
void variableDeclarationList(VariableDeclarationList node) {
@@ -233,14 +236,15 @@
var variables = node.variables;
for (var i = 0; i < variables.length; ++i) {
var variable = variables[i];
- flow.declare(variable.declaredElement, variable.initializer != null);
+ flow!.declare(variable.declaredElement as PromotableElement,
+ variable.initializer != null);
}
}
}
/// Computes the [AssignedVariables] map for the given [node].
static AssignedVariables<AstNode, PromotableElement> computeAssignedVariables(
- Declaration node, FormalParameterList parameters,
+ Declaration node, FormalParameterList? parameters,
{bool retainDataForTesting = false}) {
AssignedVariables<AstNode, PromotableElement> assignedVariables =
retainDataForTesting
@@ -256,14 +260,14 @@
/// Return the target of the `break` or `continue` statement with the
/// [element] label. The [element] might be `null` (when the statement does
/// not specify a label), so the default enclosing target is returned.
- static Statement getLabelTarget(AstNode node, Element element) {
+ static Statement? getLabelTarget(AstNode? node, Element? element) {
for (; node != null; node = node.parent) {
if (element == null) {
if (node is DoStatement ||
node is ForStatement ||
node is SwitchStatement ||
node is WhileStatement) {
- return node;
+ return node as Statement;
}
} else {
if (node is LabeledStatement) {
@@ -305,12 +309,12 @@
final MigrationResolutionHooks migrationResolutionHooks;
FlowAnalysisHelperForMigration(
- TypeSystem typeSystem, this.migrationResolutionHooks)
+ TypeSystemImpl typeSystem, this.migrationResolutionHooks)
: super(typeSystem, false);
@override
void topLevelDeclaration_enter(
- Declaration node, FormalParameterList parameters, FunctionBody body) {
+ Declaration node, FormalParameterList? parameters, FunctionBody? body) {
super.topLevelDeclaration_enter(node, parameters, body);
migrationResolutionHooks.setFlowAnalysis(flow);
}
@@ -365,7 +369,7 @@
}
@override
- DartType tryPromoteToType(DartType to, DartType from) {
+ DartType? tryPromoteToType(DartType to, DartType from) {
return typeSystem.tryPromoteToType(to, from);
}
@@ -390,7 +394,7 @@
if (left is SimpleIdentifier) {
var element = left.staticElement;
- if (element is VariableElement) {
+ if (element is PromotableElement) {
assignedVariables.write(element);
}
}
@@ -532,7 +536,7 @@
@override
void visitSimpleIdentifier(SimpleIdentifier node) {
var element = node.staticElement;
- if (element is VariableElement &&
+ if (element is PromotableElement &&
node.inGetterContext() &&
node.parent is! FormalParameter &&
node.parent is! CatchClause) {
@@ -572,12 +576,12 @@
@override
void visitVariableDeclaration(VariableDeclaration node) {
- var grandParent = node.parent.parent;
+ var grandParent = node.parent!.parent;
if (grandParent is TopLevelVariableDeclaration ||
grandParent is FieldDeclaration) {
throw StateError('Should not visit top level declarations');
}
- var declaredElement = node.declaredElement;
+ var declaredElement = node.declaredElement as PromotableElement;
assignedVariables.declare(declaredElement);
if (declaredElement.isLate && node.initializer != null) {
assignedVariables.beginNode();
@@ -595,10 +599,10 @@
assignedVariables.endNode(node);
}
- void _declareParameters(FormalParameterList parameters) {
+ void _declareParameters(FormalParameterList? parameters) {
if (parameters == null) return;
for (var parameter in parameters.parameters) {
- assignedVariables.declare(parameter.declaredElement);
+ assignedVariables.declare(parameter.declaredElement!);
}
}
@@ -607,7 +611,7 @@
if (forLoopParts is ForPartsWithExpression) {
forLoopParts.initialization?.accept(this);
} else if (forLoopParts is ForPartsWithDeclarations) {
- forLoopParts.variables?.accept(this);
+ forLoopParts.variables.accept(this);
} else {
throw StateError('Unrecognized for loop parts');
}
@@ -615,7 +619,7 @@
assignedVariables.beginNode();
forLoopParts.condition?.accept(this);
body.accept(this);
- forLoopParts.updaters?.accept(this);
+ forLoopParts.updaters.accept(this);
assignedVariables.endNode(node);
} else if (forLoopParts is ForEachParts) {
var iterable = forLoopParts.iterable;
@@ -624,11 +628,11 @@
if (forLoopParts is ForEachPartsWithIdentifier) {
var element = forLoopParts.identifier.staticElement;
- if (element is VariableElement) {
+ if (element is PromotableElement) {
assignedVariables.write(element);
}
} else if (forLoopParts is ForEachPartsWithDeclaration) {
- var variable = forLoopParts.loopVariable.declaredElement;
+ var variable = forLoopParts.loopVariable.declaredElement!;
assignedVariables.declare(variable);
} else {
throw StateError('Unrecognized for loop parts');
diff --git a/pkg/analyzer/lib/src/dart/resolver/for_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/for_resolver.dart
index 5c977b9..d074408 100644
--- a/pkg/analyzer/lib/src/dart/resolver/for_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/for_resolver.dart
@@ -12,14 +12,13 @@
import 'package:analyzer/src/dart/resolver/assignment_expression_resolver.dart';
import 'package:analyzer/src/error/codes.dart';
import 'package:analyzer/src/generated/resolver.dart';
-import 'package:meta/meta.dart';
/// Helper for resolving [ForStatement]s and [ForElement]s.
class ForResolver {
final ResolverVisitor _resolver;
ForResolver({
- @required ResolverVisitor resolver,
+ required ResolverVisitor resolver,
}) : _resolver = resolver;
void resolveElement(ForElementImpl node) {
@@ -46,8 +45,8 @@
/// a type for the elements being iterated over. Inference is based
/// on the type of the iterator or stream over which the foreach loop
/// is defined.
- DartType _computeForEachElementType(Expression iterable, bool isAsync) {
- DartType iterableType = iterable.staticType;
+ DartType? _computeForEachElementType(Expression iterable, bool isAsync) {
+ var iterableType = iterable.staticType;
if (iterableType == null) return null;
iterableType =
iterableType.resolveToBound(_resolver.typeProvider.objectType);
@@ -56,7 +55,7 @@
? _resolver.typeProvider.streamElement
: _resolver.typeProvider.iterableElement;
- InterfaceType iteratedType = iterableType.asInstanceOf(iteratedElement);
+ var iteratedType = iterableType.asInstanceOf(iteratedElement);
if (iteratedType != null) {
var elementType = iteratedType.typeArguments.single;
@@ -74,23 +73,23 @@
AstNode body,
) {
Expression iterable = forEachParts.iterable;
- DeclaredIdentifier loopVariable;
- SimpleIdentifier identifier;
- Element identifierElement;
+ DeclaredIdentifier? loopVariable;
+ SimpleIdentifier? identifier;
+ Element? identifierElement;
if (forEachParts is ForEachPartsWithDeclaration) {
loopVariable = forEachParts.loopVariable;
} else if (forEachParts is ForEachPartsWithIdentifier) {
identifier = forEachParts.identifier;
// TODO(scheglov) replace with lexical lookup
- identifier?.accept(_resolver);
+ identifier.accept(_resolver);
AssignmentExpressionShared(
resolver: _resolver,
).checkFinalAlreadyAssigned(identifier);
}
- DartType valueType;
+ DartType? valueType;
if (loopVariable != null) {
- TypeAnnotation typeAnnotation = loopVariable.type;
+ var typeAnnotation = loopVariable.type;
valueType = typeAnnotation?.type ?? UnknownInferredType.instance;
}
if (identifier != null) {
@@ -111,7 +110,7 @@
InferenceContext.setType(iterable, targetType);
}
- iterable?.accept(_resolver);
+ iterable.accept(_resolver);
iterable = forEachParts.iterable;
_resolver.nullableDereferenceVerifier.expression(iterable,
@@ -129,12 +128,13 @@
}
if (loopVariable != null) {
- _resolver.flowAnalysis?.flow?.declare(loopVariable.declaredElement, true);
+ _resolver.flowAnalysis?.flow
+ ?.declare(loopVariable.declaredElement!, true);
}
_resolver.flowAnalysis?.flow?.forEach_bodyBegin(
node,
- identifierElement is VariableElement
+ identifierElement is PromotableElement
? identifierElement
: loopVariable?.declaredElement,
elementType ?? DynamicTypeImpl.instance,
@@ -147,7 +147,7 @@
void _forParts(AstNode node, ForParts forParts, AstNode body) {
if (forParts is ForPartsWithDeclarations) {
- forParts.variables?.accept(_resolver);
+ forParts.variables.accept(_resolver);
} else if (forParts is ForPartsWithExpression) {
forParts.initialization?.accept(_resolver);
}
@@ -158,7 +158,7 @@
if (condition != null) {
InferenceContext.setType(condition, _resolver.typeProvider.boolType);
condition.accept(_resolver);
- condition = forParts.condition;
+ condition = forParts.condition!;
_resolver.boolExpressionVerifier.checkForNonBoolCondition(condition);
}
diff --git a/pkg/analyzer/lib/src/dart/resolver/function_expression_invocation_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/function_expression_invocation_resolver.dart
index 28cd2ec..a85d35e 100644
--- a/pkg/analyzer/lib/src/dart/resolver/function_expression_invocation_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/function_expression_invocation_resolver.dart
@@ -14,7 +14,6 @@
import 'package:analyzer/src/error/codes.dart';
import 'package:analyzer/src/error/nullable_dereference_verifier.dart';
import 'package:analyzer/src/generated/resolver.dart';
-import 'package:meta/meta.dart';
/// Helper for resolving [FunctionExpressionInvocation]s.
class FunctionExpressionInvocationResolver {
@@ -23,8 +22,8 @@
final InvocationInferenceHelper _inferenceHelper;
FunctionExpressionInvocationResolver({
- @required ResolverVisitor resolver,
- }) : _resolver = resolver,
+ required ResolverVisitor resolver,
+ }) : _resolver = resolver,
_typePropertyResolver = resolver.typePropertyResolver,
_inferenceHelper = resolver.inferenceHelper;
@@ -82,7 +81,7 @@
}
void _resolveReceiverExtensionOverride(
- FunctionExpressionInvocation node,
+ FunctionExpressionInvocationImpl node,
ExtensionOverride function,
) {
var result = _extensionResolver.getOverrideMember(
@@ -126,7 +125,7 @@
);
var callElement = result.getter;
- if (callElement?.kind != ElementKind.METHOD) {
+ if (callElement == null || callElement.kind != ElementKind.METHOD) {
_unresolved(node, DynamicTypeImpl.instance);
return;
}
@@ -150,7 +149,7 @@
var typeArguments = node.typeArguments;
if (typeArguments != null) {
node.typeArgumentTypes = typeArguments.arguments
- .map((typeArgument) => typeArgument.type)
+ .map((typeArgument) => typeArgument.type!)
.toList();
} else {
node.typeArgumentTypes = const <DartType>[];
diff --git a/pkg/analyzer/lib/src/dart/resolver/function_expression_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/function_expression_resolver.dart
index cc7c606..830360d 100644
--- a/pkg/analyzer/lib/src/dart/resolver/function_expression_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/function_expression_resolver.dart
@@ -13,18 +13,18 @@
import 'package:analyzer/src/generated/migration.dart';
import 'package:analyzer/src/generated/resolver.dart';
import 'package:analyzer/src/generated/type_promotion_manager.dart';
-import 'package:meta/meta.dart';
+import 'package:collection/collection.dart';
class FunctionExpressionResolver {
final ResolverVisitor _resolver;
- final MigrationResolutionHooks _migrationResolutionHooks;
+ final MigrationResolutionHooks? _migrationResolutionHooks;
final InvocationInferenceHelper _inferenceHelper;
final TypePromotionManager _promoteManager;
FunctionExpressionResolver({
- @required ResolverVisitor resolver,
- @required MigrationResolutionHooks migrationResolutionHooks,
- @required TypePromotionManager promoteManager,
+ required ResolverVisitor resolver,
+ required MigrationResolutionHooks? migrationResolutionHooks,
+ required TypePromotionManager promoteManager,
}) : _resolver = resolver,
_migrationResolutionHooks = migrationResolutionHooks,
_inferenceHelper = resolver.inferenceHelper,
@@ -36,11 +36,11 @@
void resolve(FunctionExpression node) {
var isFunctionDeclaration = node.parent is FunctionDeclaration;
- var body = node.body;
+ var body = node.body!;
if (_resolver.flowAnalysis != null) {
- if (_resolver.flowAnalysis.flow != null && !isFunctionDeclaration) {
- _resolver.flowAnalysis
+ if (_resolver.flowAnalysis!.flow != null && !isFunctionDeclaration) {
+ _resolver.flowAnalysis!
.executableDeclaration_enter(node, node.parameters, true);
}
} else {
@@ -63,15 +63,15 @@
_resolve2(node);
if (_resolver.flowAnalysis != null) {
- if (_resolver.flowAnalysis.flow != null && !isFunctionDeclaration) {
- var bodyContext = BodyInferenceContext.of(node.body);
+ if (_resolver.flowAnalysis!.flow != null && !isFunctionDeclaration) {
+ var bodyContext = BodyInferenceContext.of(node.body!);
_resolver.checkForBodyMayCompleteNormally(
returnType: bodyContext?.contextType,
body: body,
errorNode: body,
);
- _resolver.flowAnalysis.flow?.functionExpression_end();
- _resolver.nullSafetyDeadCodeVerifier?.flowEnd(node);
+ _resolver.flowAnalysis!.flow?.functionExpression_end();
+ _resolver.nullSafetyDeadCodeVerifier.flowEnd(node);
}
} else {
_promoteManager.exitFunctionBody();
@@ -80,7 +80,7 @@
/// Infer types of implicitly typed formal parameters.
void _inferFormalParameters(
- FormalParameterList node,
+ FormalParameterList? node,
FunctionType contextType,
) {
if (node == null) {
@@ -90,7 +90,7 @@
void inferType(ParameterElementImpl p, DartType inferredType) {
// Check that there is no declared type, and that we have not already
// inferred a type in some fashion.
- if (p.hasImplicitType && (p.type == null || p.type.isDynamic)) {
+ if (p.hasImplicitType && p.type.isDynamic) {
// If no type is declared for a parameter and there is a
// corresponding parameter in the context type schema with type
// schema `K`, the parameter is given an inferred type `T` where `T`
@@ -105,8 +105,8 @@
: _typeSystem.objectStar;
}
if (_migrationResolutionHooks != null) {
- inferredType = _migrationResolutionHooks.modifyInferredParameterType(
- p, inferredType);
+ inferredType = _migrationResolutionHooks!
+ .modifyInferredParameterType(p, inferredType);
} else {
inferredType = _typeSystem.nonNullifyLegacy(inferredType);
}
@@ -116,14 +116,15 @@
}
}
- List<ParameterElement> parameters = node.parameterElements;
+ var parameters = node.parameterElements.whereNotNull();
{
Iterator<ParameterElement> positional =
parameters.where((p) => p.isPositional).iterator;
Iterator<ParameterElement> fnPositional =
contextType.parameters.where((p) => p.isPositional).iterator;
while (positional.moveNext() && fnPositional.moveNext()) {
- inferType(positional.current, fnPositional.current.type);
+ inferType(positional.current as ParameterElementImpl,
+ fnPositional.current.type);
}
}
@@ -131,11 +132,11 @@
Map<String, DartType> namedParameterTypes =
contextType.namedParameterTypes;
Iterable<ParameterElement> named = parameters.where((p) => p.isNamed);
- for (ParameterElementImpl p in named) {
+ for (var p in named) {
if (!namedParameterTypes.containsKey(p.name)) {
continue;
}
- inferType(p, namedParameterTypes[p.name]);
+ inferType(p as ParameterElementImpl, namedParameterTypes[p.name]!);
}
}
}
@@ -143,7 +144,7 @@
/// Infers the return type of a local function, either a lambda or
/// (in strong mode) a local function declaration.
DartType _inferLocalFunctionReturnType(FunctionExpression node) {
- FunctionBody body = node.body;
+ var body = node.body;
return InferenceContext.getContext(body) ?? DynamicTypeImpl.instance;
}
@@ -152,8 +153,8 @@
///
/// Return `null` is the number of element in [typeParameterList] is not
/// the same as the number of type parameters in the [type].
- FunctionType _matchTypeParameters(
- TypeParameterList typeParameterList, FunctionType type) {
+ FunctionType? _matchTypeParameters(
+ TypeParameterList? typeParameterList, FunctionType type) {
if (typeParameterList == null) {
if (type.typeFormals.isEmpty) {
return type;
@@ -167,7 +168,7 @@
}
return type.instantiate(typeParameters.map((typeParameter) {
- return typeParameter.declaredElement.instantiate(
+ return typeParameter.declaredElement!.instantiate(
nullabilitySuffix: _resolver.noneOrStarSuffix,
);
}).toList());
@@ -188,7 +189,7 @@
var parent = node.parent;
if (parent is FunctionDeclaration) {
// Local function without declared return type.
- return node.parent.parent is FunctionDeclarationStatement &&
+ return parent.parent is FunctionDeclarationStatement &&
parent.returnType == null;
} else {
// Pure function expression.
diff --git a/pkg/analyzer/lib/src/dart/resolver/invocation_inference_helper.dart b/pkg/analyzer/lib/src/dart/resolver/invocation_inference_helper.dart
index e5edabb..0215f6e 100644
--- a/pkg/analyzer/lib/src/dart/resolver/invocation_inference_helper.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/invocation_inference_helper.dart
@@ -13,22 +13,21 @@
import 'package:analyzer/src/error/codes.dart';
import 'package:analyzer/src/generated/migration.dart';
import 'package:analyzer/src/generated/resolver.dart';
-import 'package:meta/meta.dart';
class InvocationInferenceHelper {
final ResolverVisitor _resolver;
final ErrorReporter _errorReporter;
final TypeSystemImpl _typeSystem;
- final MigrationResolutionHooks _migrationResolutionHooks;
+ final MigrationResolutionHooks? _migrationResolutionHooks;
- List<DartType> _typeArgumentTypes;
- FunctionType _invokeType;
+ List<DartType>? _typeArgumentTypes;
+ FunctionType? _invokeType;
InvocationInferenceHelper(
- {@required ResolverVisitor resolver,
- @required ErrorReporter errorReporter,
- @required TypeSystemImpl typeSystem,
- @required MigrationResolutionHooks migrationResolutionHooks})
+ {required ResolverVisitor resolver,
+ required ErrorReporter errorReporter,
+ required TypeSystemImpl typeSystem,
+ required MigrationResolutionHooks? migrationResolutionHooks})
: _resolver = resolver,
_errorReporter = errorReporter,
_typeSystem = typeSystem,
@@ -36,7 +35,7 @@
/// Compute the return type of the method or function represented by the given
/// type that is being invoked.
- DartType computeInvokeReturnType(DartType type) {
+ DartType computeInvokeReturnType(DartType? type) {
if (type is FunctionType) {
return type.returnType;
} else {
@@ -44,9 +43,9 @@
}
}
- FunctionType inferArgumentTypesForGeneric(AstNode inferenceNode,
- DartType uninstantiatedType, TypeArgumentList typeArguments,
- {AstNode errorNode, bool isConst = false}) {
+ FunctionType? inferArgumentTypesForGeneric(AstNode inferenceNode,
+ DartType? uninstantiatedType, TypeArgumentList? typeArguments,
+ {AstNode? errorNode, bool isConst = false}) {
errorNode ??= inferenceNode;
uninstantiatedType = _getFreshType(uninstantiatedType);
if (typeArguments == null &&
@@ -72,10 +71,9 @@
void inferArgumentTypesForInvocation(
InvocationExpression node,
- DartType type,
+ DartType? type,
) {
- DartType inferred =
- inferArgumentTypesForGeneric(node, type, node.typeArguments);
+ var inferred = inferArgumentTypesForGeneric(node, type, node.typeArguments);
InferenceContext.setType(
node.argumentList, inferred ?? node.staticInvokeType);
}
@@ -87,12 +85,12 @@
/// the argument types.
void inferGenericInvocationExpression(
InvocationExpression node,
- DartType type,
+ DartType? type,
) {
ArgumentList arguments = node.argumentList;
var freshType = _getFreshType(type);
- FunctionType inferred = inferGenericInvoke(
+ var inferred = inferGenericInvoke(
node, freshType, node.typeArguments, arguments, node.function);
if (inferred != null && inferred != node.staticInvokeType) {
// Fix up the parameter elements based on inferred method.
@@ -109,10 +107,10 @@
///
/// This takes into account both the context type, as well as information from
/// the argument types.
- FunctionType inferGenericInvoke(
+ FunctionType? inferGenericInvoke(
Expression node,
- DartType fnType,
- TypeArgumentList typeArguments,
+ DartType? fnType,
+ TypeArgumentList? typeArguments,
ArgumentList argumentList,
AstNode errorNode,
{bool isConst = false}) {
@@ -120,7 +118,7 @@
fnType is FunctionType &&
fnType.typeFormals.isNotEmpty) {
// Get the parameters that correspond to the uninstantiated generic.
- List<DartType> typeArgs = _inferUpwards(
+ var typeArgs = _inferUpwards(
rawType: fnType,
argumentList: argumentList,
contextType: InferenceContext.getContext(node),
@@ -140,7 +138,7 @@
// for FunctionExpressionInvocation(s), so set it here, if not inferred.
if (node is FunctionExpressionInvocationImpl) {
if (typeArguments != null) {
- var typeArgs = typeArguments.arguments.map((n) => n.type).toList();
+ var typeArgs = typeArguments.arguments.map((n) => n.type!).toList();
node.typeArgumentTypes = typeArgs;
} else {
node.typeArgumentTypes = const <DartType>[];
@@ -165,7 +163,7 @@
tearOffType,
errorReporter: _resolver.errorReporter,
errorNode: expression,
- );
+ )!;
(identifier as SimpleIdentifierImpl).tearOffTypeArgumentTypes =
typeArguments;
if (typeArguments.isNotEmpty) {
@@ -182,22 +180,14 @@
///
/// TODO(scheglov) this is duplication
void recordStaticType(Expression expression, DartType type) {
- if (_migrationResolutionHooks != null) {
- // TODO(scheglov) type cannot be null
- type = _migrationResolutionHooks.modifyExpressionType(
- expression,
- type ?? DynamicTypeImpl.instance,
- );
+ var hooks = _migrationResolutionHooks;
+ if (hooks != null) {
+ type = hooks.modifyExpressionType(expression, type);
}
- // TODO(scheglov) type cannot be null
- if (type == null) {
- expression.staticType = DynamicTypeImpl.instance;
- } else {
- expression.staticType = type;
- if (_typeSystem.isBottom(type)) {
- _resolver.flowAnalysis?.flow?.handleExit();
- }
+ expression.staticType = type;
+ if (_typeSystem.isBottom(type)) {
+ _resolver.flowAnalysis?.flow?.handleExit();
}
}
@@ -207,8 +197,8 @@
/// is its not yet instantiated type. Here we perform downwards inference,
/// resolution of arguments, and upwards inference.
void resolveFunctionExpressionInvocation({
- @required FunctionExpressionInvocationImpl node,
- @required FunctionType rawType,
+ required FunctionExpressionInvocationImpl node,
+ required FunctionType rawType,
}) {
_resolveInvocation(
rawType: rawType,
@@ -229,8 +219,8 @@
/// is its not yet instantiated type. Here we perform downwards inference,
/// resolution of arguments, and upwards inference.
void resolveMethodInvocation({
- @required MethodInvocationImpl node,
- @required FunctionType rawType,
+ required MethodInvocationImpl node,
+ required FunctionType rawType,
}) {
_resolveInvocation(
rawType: rawType,
@@ -244,19 +234,26 @@
node.typeArgumentTypes = _typeArgumentTypes;
node.staticInvokeType = _invokeType;
- var returnType = _typeSystem.refineNumericInvocationType(
- node.realTarget?.staticType,
+ var returnType = computeInvokeReturnType(_invokeType);
+ var targetType = node.realTarget?.staticType;
+ if (targetType != null) {
+ returnType = _typeSystem.refineNumericInvocationType(
+ targetType,
node.methodName.staticElement,
- [for (var argument in node.argumentList.arguments) argument.staticType],
- computeInvokeReturnType(_invokeType));
+ [
+ for (var argument in node.argumentList.arguments) argument.staticType!
+ ],
+ returnType,
+ );
+ }
recordStaticType(node, returnType);
}
- List<DartType> _inferDownwards({
- @required FunctionType rawType,
- @required DartType contextType,
- @required bool isConst,
- @required AstNode errorNode,
+ List<DartType>? _inferDownwards({
+ required FunctionType rawType,
+ required DartType? contextType,
+ required bool isConst,
+ required AstNode errorNode,
}) {
return _typeSystem.inferGenericFunctionOrType(
typeParameters: rawType.typeFormals,
@@ -272,27 +269,27 @@
}
/// TODO(scheglov) Instead of [isConst] sanitize [contextType] before calling.
- List<DartType> _inferUpwards({
- @required FunctionType rawType,
- @required DartType contextType,
- @required ArgumentList argumentList,
- @required bool isConst,
- @required AstNode errorNode,
+ List<DartType>? _inferUpwards({
+ required FunctionType rawType,
+ required DartType? contextType,
+ required ArgumentList argumentList,
+ required bool isConst,
+ required AstNode errorNode,
}) {
- rawType = _getFreshType(rawType);
+ rawType = _getFreshType(rawType) as FunctionType;
// Get the parameters that correspond to the uninstantiated generic.
- List<ParameterElement> rawParameters =
+ List<ParameterElement?> rawParameters =
ResolverVisitor.resolveArgumentsToParameters(
argumentList, rawType.parameters, null);
List<ParameterElement> params = <ParameterElement>[];
List<DartType> argTypes = <DartType>[];
for (int i = 0, length = rawParameters.length; i < length; i++) {
- ParameterElement parameter = rawParameters[i];
+ ParameterElement? parameter = rawParameters[i];
if (parameter != null) {
params.add(parameter);
- argTypes.add(argumentList.arguments[i].staticType);
+ argTypes.add(argumentList.arguments[i].staticType!);
}
}
var typeArgs = _typeSystem.inferGenericFunctionOrType(
@@ -308,12 +305,12 @@
return typeArgs;
}
- bool _isCallToIdentical(AstNode invocation) {
+ bool _isCallToIdentical(AstNode? invocation) {
if (invocation is MethodInvocation) {
var invokedMethod = invocation.methodName.staticElement;
return invokedMethod != null &&
invokedMethod.name == 'identical' &&
- invokedMethod.library.isDartCore;
+ invokedMethod.library!.isDartCore;
}
return false;
}
@@ -324,12 +321,12 @@
}
void _resolveInvocation({
- @required FunctionType rawType,
- @required DartType contextType,
- @required TypeArgumentList typeArgumentList,
- @required ArgumentList argumentList,
- @required bool isConst,
- @required AstNode errorNode,
+ required FunctionType rawType,
+ required DartType? contextType,
+ required TypeArgumentList? typeArgumentList,
+ required ArgumentList argumentList,
+ required bool isConst,
+ required AstNode errorNode,
}) {
if (typeArgumentList != null) {
_resolveInvocationWithTypeArguments(
@@ -346,15 +343,15 @@
errorNode: errorNode,
);
}
- _setCorrespondingParameters(argumentList, _invokeType);
+ _setCorrespondingParameters(argumentList, _invokeType!);
}
void _resolveInvocationWithoutTypeArguments({
- @required FunctionType rawType,
- @required DartType contextType,
- @required ArgumentList argumentList,
- @required bool isConst,
- @required AstNode errorNode,
+ required FunctionType rawType,
+ required DartType? contextType,
+ required ArgumentList argumentList,
+ required bool isConst,
+ required AstNode errorNode,
}) {
var typeParameters = rawType.typeFormals;
@@ -365,14 +362,14 @@
_typeArgumentTypes = const <DartType>[];
_invokeType = rawType;
} else {
- rawType = _getFreshType(rawType);
+ rawType = _getFreshType(rawType) as FunctionType;
- List<DartType> downwardsTypeArguments = _inferDownwards(
+ var downwardsTypeArguments = _inferDownwards(
rawType: rawType,
contextType: contextType,
isConst: isConst,
errorNode: errorNode,
- );
+ )!;
var downwardsInvokeType = rawType.instantiate(downwardsTypeArguments);
InferenceContext.setType(argumentList, downwardsInvokeType);
@@ -386,14 +383,14 @@
isConst: isConst,
errorNode: errorNode,
);
- _invokeType = rawType.instantiate(_typeArgumentTypes);
+ _invokeType = rawType.instantiate(_typeArgumentTypes!);
}
}
void _resolveInvocationWithTypeArguments({
- FunctionType rawType,
- TypeArgumentList typeArgumentList,
- ArgumentList argumentList,
+ required FunctionType rawType,
+ required TypeArgumentList typeArgumentList,
+ required ArgumentList argumentList,
}) {
var typeParameters = rawType.typeFormals;
@@ -414,7 +411,7 @@
);
} else {
typeArguments = typeArgumentList.arguments
- .map((typeArgument) => typeArgument.type)
+ .map((typeArgument) => typeArgument.type!)
.toList(growable: true);
}
@@ -439,7 +436,7 @@
argumentList.correspondingStaticParameters = parameters;
}
- static DartType _getFreshType(DartType type) {
+ static DartType? _getFreshType(DartType? type) {
if (type is FunctionType) {
var parameters = getFreshTypeParameters(type.typeFormals);
return parameters.applyToFunctionType(type);
diff --git a/pkg/analyzer/lib/src/dart/resolver/legacy_type_asserter.dart b/pkg/analyzer/lib/src/dart/resolver/legacy_type_asserter.dart
index 6942809..77ca27a 100644
--- a/pkg/analyzer/lib/src/dart/resolver/legacy_type_asserter.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/legacy_type_asserter.dart
@@ -52,7 +52,7 @@
void visitClassMember(ClassMember node) {
final element = node.declaredElement;
if (element is ExecutableElement) {
- _assertLegacyType(element?.type);
+ _assertLegacyType(element.type);
}
super.visitClassMember(node);
}
@@ -114,7 +114,7 @@
super.visitVariableDeclaration(node);
}
- void _assertLegacyElement(Element element) {
+ void _assertLegacyElement(Element? element) {
if (element is ExecutableElement) {
_assertLegacyType(element.type);
} else if (element is VariableElement) {
@@ -122,7 +122,7 @@
}
}
- void _assertLegacyType(DartType type) {
+ void _assertLegacyType(DartType? type) {
if (type == null) {
return;
}
diff --git a/pkg/analyzer/lib/src/dart/resolver/lexical_lookup.dart b/pkg/analyzer/lib/src/dart/resolver/lexical_lookup.dart
index 6417634..f9256ea 100644
--- a/pkg/analyzer/lib/src/dart/resolver/lexical_lookup.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/lexical_lookup.dart
@@ -6,7 +6,6 @@
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/src/dart/element/extensions.dart';
import 'package:analyzer/src/generated/resolver.dart';
-import 'package:meta/meta.dart';
class LexicalLookup {
final ResolverVisitor _resolver;
@@ -14,8 +13,8 @@
LexicalLookup(this._resolver);
LexicalLookupResult perform({
- @required SimpleIdentifier node,
- @required bool setter,
+ required SimpleIdentifier node,
+ required bool setter,
}) {
var id = node.name;
var scopeResult = _resolver.nameScope.lookup(id);
@@ -31,7 +30,7 @@
requested: _resolver.toLegacyElement(scopeSetter),
);
}
- if (!scopeGetter.isInstanceMember) {
+ if (!scopeGetter!.isInstanceMember) {
return LexicalLookupResult(
recovery: _resolver.toLegacyElement(scopeGetter),
);
@@ -90,8 +89,8 @@
}
class LexicalLookupResult {
- final Element requested;
- final Element recovery;
+ final Element? requested;
+ final Element? recovery;
LexicalLookupResult({this.requested, this.recovery});
}
diff --git a/pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart
index a3349c3..58e5bf1 100644
--- a/pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart
@@ -20,7 +20,6 @@
import 'package:analyzer/src/generated/resolver.dart';
import 'package:analyzer/src/generated/super_context.dart';
import 'package:analyzer/src/generated/variable_type_provider.dart';
-import 'package:meta/meta.dart';
class MethodInvocationResolver {
/// Resolver visitor is separated from the elements resolver, which calls
@@ -58,16 +57,16 @@
final MigratableAstInfoProvider _migratableAstInfoProvider;
/// The invocation being resolved.
- MethodInvocationImpl _invocation;
+ MethodInvocationImpl? _invocation;
/// The [Name] object of the invocation being resolved by [resolve].
- Name _currentName;
+ Name? _currentName;
MethodInvocationResolver(
this._resolver,
this._migratableAstInfoProvider, {
- @required InvocationInferenceHelper inferenceHelper,
- }) : _typeType = _resolver.typeProvider.typeType,
+ required InvocationInferenceHelper inferenceHelper,
+ }) : _typeType = _resolver.typeProvider.typeType,
_inheritance = _resolver.inheritance,
_definingLibrary = _resolver.definingLibrary,
_definingLibraryUri = _resolver.definingLibrary.source.uri,
@@ -80,14 +79,14 @@
TypeSystemImpl get _typeSystem => _resolver.typeSystem;
- void resolve(MethodInvocation node) {
+ void resolve(MethodInvocationImpl node) {
_invocation = node;
SimpleIdentifier nameNode = node.methodName;
String name = nameNode.name;
_currentName = Name(_definingLibraryUri, name);
- Expression receiver = node.realTarget;
+ var receiver = node.realTarget;
if (receiver == null) {
_resolveReceiverNull(node, nameNode, name);
@@ -142,7 +141,7 @@
}
}
- DartType receiverType = receiver.staticType;
+ DartType receiverType = receiver.staticType!;
if (_typeSystem.isDynamicBounded(receiverType)) {
_resolveReceiverDynamicBounded(node);
@@ -246,8 +245,8 @@
void _reportUndefinedFunction(
MethodInvocation node, {
- @required String prefix,
- @required String name,
+ required String? prefix,
+ required String name,
}) {
_setDynamicResolution(node);
@@ -308,11 +307,11 @@
/// Given that we are accessing a property of the given [classElement] with the
/// given [propertyName], return the element that represents the property.
- Element _resolveElement(
+ Element? _resolveElement(
ClassElement classElement, SimpleIdentifier propertyName) {
// TODO(scheglov) Replace with class hierarchy.
String name = propertyName.name;
- Element element;
+ Element? element;
if (propertyName.inSetterContext()) {
element = classElement.getSetter(name);
}
@@ -362,7 +361,7 @@
_resolver.errorReporter.reportErrorForNode(
CompileTimeErrorCode.UNDEFINED_EXTENSION_METHOD,
nameNode,
- [name, override.staticElement.name],
+ [name, override.staticElement!.name],
);
return;
}
@@ -528,9 +527,9 @@
DartType receiverType;
if (_resolver.enclosingClass != null) {
- receiverType = _resolver.enclosingClass.thisType;
+ receiverType = _resolver.enclosingClass!.thisType;
} else if (_resolver.enclosingExtension != null) {
- receiverType = _resolver.enclosingExtension.extendedType;
+ receiverType = _resolver.enclosingExtension!.extendedType;
} else {
return _reportUndefinedFunction(
node,
@@ -561,7 +560,7 @@
element = _resolver.toLegacyElement(element);
if (element is ExecutableElement) {
nameNode.staticElement = element;
- return _setResolution(node, element.type);
+ return _setResolution(node, (element as ExecutableElement).type);
}
}
}
@@ -599,8 +598,8 @@
}
var target = _inheritance.getMember2(
- enclosingClass,
- _currentName,
+ enclosingClass!,
+ _currentName!,
forSuper: true,
);
target = _resolver.toLegacyElement(target);
@@ -618,7 +617,7 @@
// Otherwise, this is an error.
// But we would like to give the user at least some resolution.
// So, we try to find the interface target.
- target = _inheritance.getInherited2(enclosingClass, _currentName);
+ target = _inheritance.getInherited2(enclosingClass, _currentName!);
if (target != null) {
nameNode.staticElement = target;
_setResolution(node, target.type);
@@ -639,12 +638,12 @@
}
void _resolveReceiverType({
- @required MethodInvocation node,
- @required Expression receiver,
- @required DartType receiverType,
- @required SimpleIdentifier nameNode,
- @required String name,
- @required Expression receiverErrorNode,
+ required MethodInvocation node,
+ required Expression? receiver,
+ required DartType receiverType,
+ required SimpleIdentifier nameNode,
+ required String name,
+ required Expression receiverErrorNode,
}) {
var result = _resolver.typePropertyResolver.resolve(
receiver: receiver,
@@ -701,7 +700,7 @@
}
var element = _resolveElement(receiver, nameNode);
- element = _resolver.toLegacyElement(element);
+ element = _resolver.toLegacyElement(element) as ExecutableElement?;
if (element != null) {
if (element is ExecutableElement) {
nameNode.staticElement = element;
@@ -748,13 +747,13 @@
if (target is SimpleIdentifier && target.staticElement is PrefixElement) {
functionExpression = astFactory.prefixedIdentifier(
target,
- node.operator,
+ node.operator!,
node.methodName,
);
} else {
functionExpression = astFactory.propertyAccess(
target,
- node.operator,
+ node.operator!,
node.methodName,
);
}
@@ -788,12 +787,12 @@
///
/// TODO(scheglov) when we do inference in this resolver, do we need this?
void _setExplicitTypeArgumentTypes() {
- var typeArgumentList = _invocation.typeArguments;
+ var typeArgumentList = _invocation!.typeArguments;
if (typeArgumentList != null) {
var arguments = typeArgumentList.arguments;
- _invocation.typeArgumentTypes = arguments.map((n) => n.type).toList();
+ _invocation!.typeArgumentTypes = arguments.map((n) => n.type!).toList();
} else {
- _invocation.typeArgumentTypes = [];
+ _invocation!.typeArgumentTypes = [];
}
}
@@ -808,7 +807,8 @@
}
if (type is FunctionType) {
- _inferenceHelper.resolveMethodInvocation(node: node, rawType: type);
+ _inferenceHelper.resolveMethodInvocation(
+ node: node as MethodInvocationImpl, rawType: type);
return;
}
@@ -823,16 +823,16 @@
/// this method resolver. If we rewrite a [MethodInvocation] node, this
/// method will return the resulting [FunctionExpressionInvocation], so
/// that the resolver visitor will know to continue resolving this new node.
- static FunctionExpressionInvocation getRewriteResult(MethodInvocation node) {
+ static FunctionExpressionInvocation? getRewriteResult(MethodInvocation node) {
return node.getProperty(_rewriteResultKey);
}
/// Checks whether the given [expression] is a reference to a class. If it is
/// then the element representing the class is returned, otherwise `null` is
/// returned.
- static ClassElement getTypeReference(Expression expression) {
+ static ClassElement? getTypeReference(Expression expression) {
if (expression is Identifier) {
- Element staticElement = expression.staticElement;
+ var staticElement = expression.staticElement;
if (staticElement is ClassElement) {
return staticElement;
}
diff --git a/pkg/analyzer/lib/src/dart/resolver/postfix_expression_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/postfix_expression_resolver.dart
index 322b65c..08ebc32 100644
--- a/pkg/analyzer/lib/src/dart/resolver/postfix_expression_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/postfix_expression_resolver.dart
@@ -16,7 +16,6 @@
import 'package:analyzer/src/dart/resolver/type_property_resolver.dart';
import 'package:analyzer/src/error/codes.dart';
import 'package:analyzer/src/generated/resolver.dart';
-import 'package:meta/meta.dart';
/// Helper for resolving [PostfixExpression]s.
class PostfixExpressionResolver {
@@ -26,7 +25,7 @@
final AssignmentExpressionShared _assignmentShared;
PostfixExpressionResolver({
- @required ResolverVisitor resolver,
+ required ResolverVisitor resolver,
}) : _resolver = resolver,
_typePropertyResolver = resolver.typePropertyResolver,
_inferenceHelper = resolver.inferenceHelper,
@@ -63,7 +62,7 @@
// TODO(scheglov) Use VariableElement and do in resolveForWrite() ?
_assignmentShared.checkFinalAlreadyAssigned(operand);
- var receiverType = node.readType;
+ var receiverType = node.readType!;
_resolve1(node, receiverType);
_resolve2(node, receiverType);
}
@@ -74,7 +73,7 @@
/// TODO(scheglov) this is duplicate
void _checkForInvalidAssignmentIncDec(
PostfixExpression node, Expression operand, DartType type) {
- var operandWriteType = node.writeType;
+ var operandWriteType = node.writeType!;
if (!_typeSystem.isAssignableTo2(type, operandWriteType)) {
_resolver.errorReporter.reportErrorForNode(
CompileTimeErrorCode.INVALID_ASSIGNMENT,
@@ -90,18 +89,16 @@
/// @return the static return type that was computed
///
/// TODO(scheglov) this is duplicate
- DartType _computeStaticReturnType(Element element) {
+ DartType _computeStaticReturnType(Element? element) {
if (element is PropertyAccessorElement) {
//
// This is a function invocation expression disguised as something else.
// We are invoking a getter and then invoking the returned function.
//
FunctionType propertyType = element.type;
- if (propertyType != null) {
- return _resolver.inferenceHelper.computeInvokeReturnType(
- propertyType.returnType,
- );
- }
+ return _resolver.inferenceHelper.computeInvokeReturnType(
+ propertyType.returnType,
+ );
} else if (element is ExecutableElement) {
return _resolver.inferenceHelper.computeInvokeReturnType(element.type);
}
@@ -139,7 +136,7 @@
receiverErrorNode: operand,
nameErrorEntity: operand,
);
- node.staticElement = result.getter;
+ node.staticElement = result.getter as MethodElement?;
if (result.needsGetterError) {
if (operand is SuperExpression) {
_errorReporter.reportErrorForToken(
@@ -209,7 +206,7 @@
operand.accept(_resolver);
operand = node.operand;
- var operandType = operand.staticType;
+ var operandType = operand.staticType!;
var type = _typeSystem.promoteToNonNull(operandType);
_inferenceHelper.recordStaticType(node, type);
diff --git a/pkg/analyzer/lib/src/dart/resolver/prefix_expression_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/prefix_expression_resolver.dart
index 6a060aa..6901f05 100644
--- a/pkg/analyzer/lib/src/dart/resolver/prefix_expression_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/prefix_expression_resolver.dart
@@ -16,7 +16,6 @@
import 'package:analyzer/src/dart/resolver/type_property_resolver.dart';
import 'package:analyzer/src/error/codes.dart';
import 'package:analyzer/src/generated/resolver.dart';
-import 'package:meta/meta.dart';
/// Helper for resolving [PrefixExpression]s.
class PrefixExpressionResolver {
@@ -26,7 +25,7 @@
final AssignmentExpressionShared _assignmentShared;
PrefixExpressionResolver({
- @required ResolverVisitor resolver,
+ required ResolverVisitor resolver,
}) : _resolver = resolver,
_typePropertyResolver = resolver.typePropertyResolver,
_inferenceHelper = resolver.inferenceHelper,
@@ -78,7 +77,7 @@
/// TODO(scheglov) this is duplicate
void _checkForInvalidAssignmentIncDec(
PrefixExpressionImpl node, DartType type) {
- var operandWriteType = node.writeType;
+ var operandWriteType = node.writeType!;
if (!_typeSystem.isAssignableTo2(type, operandWriteType)) {
_resolver.errorReporter.reportErrorForNode(
CompileTimeErrorCode.INVALID_ASSIGNMENT,
@@ -94,18 +93,16 @@
/// @return the static return type that was computed
///
/// TODO(scheglov) this is duplicate
- DartType _computeStaticReturnType(Element element) {
+ DartType _computeStaticReturnType(Element? element) {
if (element is PropertyAccessorElement) {
//
// This is a function invocation expression disguised as something else.
// We are invoking a getter and then invoking the returned function.
//
- FunctionType propertyType = element.type;
- if (propertyType != null) {
- return _resolver.inferenceHelper.computeInvokeReturnType(
- propertyType.returnType,
- );
- }
+ var propertyType = element.type;
+ return _resolver.inferenceHelper.computeInvokeReturnType(
+ propertyType.returnType,
+ );
} else if (element is ExecutableElement) {
return _resolver.inferenceHelper.computeInvokeReturnType(element.type);
}
@@ -145,8 +142,8 @@
Expression operand = node.operand;
String methodName = _getPrefixOperator(node);
if (operand is ExtensionOverride) {
- ExtensionElement element = operand.extensionName.staticElement;
- MethodElement member = element.getMethod(methodName);
+ var element = operand.extensionName.staticElement as ExtensionElement;
+ var member = element.getMethod(methodName);
if (member == null) {
_errorReporter.reportErrorForToken(
CompileTimeErrorCode.UNDEFINED_EXTENSION_OPERATOR,
@@ -157,7 +154,7 @@
return;
}
- var readType = node.readType ?? operand.staticType;
+ var readType = node.readType ?? operand.staticType!;
if (identical(readType, NeverTypeImpl.instance)) {
_resolver.errorReporter.reportErrorForNode(
HintCode.RECEIVER_OF_TYPE_NEVER,
@@ -173,7 +170,7 @@
receiverErrorNode: operand,
nameErrorEntity: operand,
);
- node.staticElement = result.getter;
+ node.staticElement = result.getter as MethodElement?;
if (result.needsGetterError) {
if (operand is SuperExpression) {
_errorReporter.reportErrorForToken(
@@ -198,13 +195,13 @@
_recordStaticType(node, NeverTypeImpl.instance);
} else {
// The other cases are equivalent to invoking a method.
- ExecutableElement staticMethodElement = node.staticElement;
+ var staticMethodElement = node.staticElement;
DartType staticType = _computeStaticReturnType(staticMethodElement);
Expression operand = node.operand;
if (operand is ExtensionOverride) {
// No special handling for incremental operators.
} else if (operator.isIncrementOperator) {
- if (node.readType.isDartCoreInt) {
+ if (node.readType!.isDartCoreInt) {
staticType = _typeProvider.intType;
} else {
_checkForInvalidAssignmentIncDec(node, staticType);
diff --git a/pkg/analyzer/lib/src/dart/resolver/prefixed_identifier_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/prefixed_identifier_resolver.dart
index a6e5194..56da5f9 100644
--- a/pkg/analyzer/lib/src/dart/resolver/prefixed_identifier_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/prefixed_identifier_resolver.dart
@@ -79,7 +79,7 @@
} else if (element is VariableElement) {
type = element.type;
} else if (result.functionTypeCallType != null) {
- type = result.functionTypeCallType;
+ type = result.functionTypeCallType!;
}
type = _inferenceHelper.inferTearOff(node, identifier, type);
@@ -96,24 +96,15 @@
/// TODO(scheglov) this is duplicate
DartType _getTypeOfProperty(PropertyAccessorElement accessor) {
FunctionType functionType = accessor.type;
- if (functionType == null) {
- // TODO(brianwilkerson) Report this internal error. This happens when we
- // are analyzing a reference to a property before we have analyzed the
- // declaration of the property or when the property does not have a
- // defined type.
- return DynamicTypeImpl.instance;
- }
if (accessor.isSetter) {
List<DartType> parameterTypes = functionType.normalParameterTypes;
- if (parameterTypes != null && parameterTypes.isNotEmpty) {
+ if (parameterTypes.isNotEmpty) {
return parameterTypes[0];
}
- PropertyAccessorElement getter = accessor.variable.getter;
+ var getter = accessor.variable.getter;
if (getter != null) {
functionType = getter.type;
- if (functionType != null) {
- return functionType.returnType;
- }
+ return functionType.returnType;
}
return DynamicTypeImpl.instance;
}
diff --git a/pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart
index a649b31..9a7c23b 100644
--- a/pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart
@@ -18,7 +18,6 @@
import 'package:analyzer/src/error/codes.dart';
import 'package:analyzer/src/generated/resolver.dart';
import 'package:analyzer/src/generated/super_context.dart';
-import 'package:meta/meta.dart';
class PropertyElementResolver {
final ResolverVisitor _resolver;
@@ -34,13 +33,11 @@
TypeSystemImpl get _typeSystem => _resolver.typeSystem;
PropertyElementResolverResult resolveIndexExpression({
- @required IndexExpression node,
- @required bool hasRead,
- @required bool hasWrite,
+ required IndexExpression node,
+ required bool hasRead,
+ required bool hasWrite,
}) {
var target = node.realTarget;
- var targetType = target.staticType;
- targetType = _resolveTypeParameter(targetType);
if (target is ExtensionOverride) {
var result = _extensionResolver.getOverrideMember(target, '[]');
@@ -50,7 +47,7 @@
_reportUnresolvedIndex(
node,
CompileTimeErrorCode.UNDEFINED_EXTENSION_OPERATOR,
- ['[]', target.staticElement.name],
+ ['[]', target.staticElement!.name],
);
}
@@ -58,13 +55,16 @@
_reportUnresolvedIndex(
node,
CompileTimeErrorCode.UNDEFINED_EXTENSION_OPERATOR,
- ['[]=', target.staticElement.name],
+ ['[]=', target.staticElement!.name],
);
}
return _toIndexResult(result);
}
+ var targetType = target.staticType!;
+ targetType = _resolveTypeParameter(targetType);
+
if (targetType.isVoid) {
// TODO(scheglov) Report directly in TypePropertyResolver?
_reportUnresolvedIndex(
@@ -123,9 +123,9 @@
}
PropertyElementResolverResult resolvePrefixedIdentifier({
- @required PrefixedIdentifier node,
- @required bool hasRead,
- @required bool hasWrite,
+ required PrefixedIdentifier node,
+ required bool hasRead,
+ required bool hasWrite,
bool forAnnotation = false,
}) {
var prefix = node.prefix;
@@ -153,9 +153,9 @@
}
PropertyElementResolverResult resolvePropertyAccess({
- @required PropertyAccess node,
- @required bool hasRead,
- @required bool hasWrite,
+ required PropertyAccess node,
+ required bool hasRead,
+ required bool hasWrite,
}) {
var target = node.realTarget;
var propertyName = node.propertyName;
@@ -189,20 +189,20 @@
}
PropertyElementResolverResult resolveSimpleIdentifier({
- @required SimpleIdentifier node,
- @required bool hasRead,
- @required bool hasWrite,
+ required SimpleIdentifier node,
+ required bool hasRead,
+ required bool hasWrite,
}) {
- Element readElementRequested;
- Element readElementRecovery;
+ Element? readElementRequested;
+ Element? readElementRecovery;
if (hasRead) {
var readLookup = _resolver.lexicalLookup(node: node, setter: false);
readElementRequested = readLookup.requested;
_resolver.checkReadOfNotAssignedLocalVariable(node, readElementRequested);
}
- Element writeElementRequested;
- Element writeElementRecovery;
+ Element? writeElementRequested;
+ Element? writeElementRecovery;
if (hasWrite) {
var writeLookup = _resolver.lexicalLookup(node: node, setter: true);
writeElementRequested = writeLookup.requested;
@@ -226,7 +226,7 @@
void _checkExtensionOverrideStaticMember(
SimpleIdentifier propertyName,
- ExecutableElement element,
+ ExecutableElement? element,
) {
if (element != null && element.isStatic) {
_errorReporter.reportErrorForNode(
@@ -250,9 +250,9 @@
);
}
- DartType _computeIndexContextType({
- @required ExecutableElement readElement,
- @required ExecutableElement writeElement,
+ DartType? _computeIndexContextType({
+ required ExecutableElement? readElement,
+ required ExecutableElement? writeElement,
}) {
var method = writeElement ?? readElement;
var parameters = method is MethodElement ? method.parameters : null;
@@ -271,7 +271,7 @@
void _reportUnresolvedIndex(
IndexExpression node,
ErrorCode errorCode, [
- List<Object> arguments = const [],
+ List<Object?> arguments = const [],
]) {
var leftBracket = node.leftBracket;
var rightBracket = node.rightBracket;
@@ -282,12 +282,12 @@
}
PropertyElementResolverResult _resolve({
- @required Expression target,
- @required bool isCascaded,
- @required bool isNullAware,
- @required SimpleIdentifier propertyName,
- @required bool hasRead,
- @required bool hasWrite,
+ required Expression target,
+ required bool isCascaded,
+ required bool isNullAware,
+ required SimpleIdentifier propertyName,
+ required bool hasRead,
+ required bool hasWrite,
}) {
//
// If this property access is of the form 'C.m' where 'C' is a class,
@@ -336,7 +336,7 @@
}
}
- var targetType = target.staticType;
+ var targetType = target.staticType!;
if (targetType is FunctionType && propertyName.name == 'call') {
return PropertyElementResolverResult(
@@ -390,17 +390,17 @@
}
PropertyElementResolverResult _resolveTargetClassElement({
- @required ClassElement typeReference,
- @required bool isCascaded,
- @required SimpleIdentifier propertyName,
- @required bool hasRead,
- @required bool hasWrite,
+ required ClassElement typeReference,
+ required bool isCascaded,
+ required SimpleIdentifier propertyName,
+ required bool hasRead,
+ required bool hasWrite,
}) {
if (isCascaded) {
typeReference = _resolver.typeProvider.typeType.element;
}
- ExecutableElement readElement;
+ ExecutableElement? readElement;
if (hasRead) {
readElement = typeReference.getGetter(propertyName.name);
if (readElement != null && !_isAccessible(readElement)) {
@@ -429,8 +429,8 @@
}
}
- ExecutableElement writeElement;
- ExecutableElement writeElementRecovery;
+ ExecutableElement? writeElement;
+ ExecutableElement? writeElementRecovery;
if (hasWrite) {
writeElement = typeReference.getSetter(propertyName.name);
if (writeElement != null) {
@@ -463,14 +463,14 @@
}
PropertyElementResolverResult _resolveTargetExtensionElement({
- @required ExtensionElement extension,
- @required SimpleIdentifier propertyName,
- @required bool hasRead,
- @required bool hasWrite,
+ required ExtensionElement extension,
+ required SimpleIdentifier propertyName,
+ required bool hasRead,
+ required bool hasWrite,
}) {
var memberName = propertyName.name;
- ExecutableElement readElement;
+ ExecutableElement? readElement;
if (hasRead) {
readElement ??= extension.getGetter(memberName);
readElement ??= extension.getMethod(memberName);
@@ -487,7 +487,7 @@
}
}
- ExecutableElement writeElement;
+ ExecutableElement? writeElement;
if (hasWrite) {
writeElement = extension.getSetter(memberName);
@@ -510,10 +510,10 @@
}
PropertyElementResolverResult _resolveTargetExtensionOverride({
- @required ExtensionOverride target,
- @required SimpleIdentifier propertyName,
- @required bool hasRead,
- @required bool hasWrite,
+ required ExtensionOverride target,
+ required SimpleIdentifier propertyName,
+ required bool hasRead,
+ required bool hasWrite,
}) {
if (target.parent is CascadeExpression) {
// Report this error and recover by treating it like a non-cascade.
@@ -523,12 +523,12 @@
);
}
- ExtensionElement element = target.extensionName.staticElement;
- String memberName = propertyName.name;
+ var element = target.extensionName.staticElement!;
+ var memberName = propertyName.name;
var result = _extensionResolver.getOverrideMember(target, memberName);
- ExecutableElement readElement;
+ ExecutableElement? readElement;
if (hasRead) {
readElement = result.getter;
if (readElement == null) {
@@ -541,7 +541,7 @@
_checkExtensionOverrideStaticMember(propertyName, readElement);
}
- ExecutableElement writeElement;
+ ExecutableElement? writeElement;
if (hasWrite) {
writeElement = result.setter;
if (writeElement == null) {
@@ -561,11 +561,11 @@
}
PropertyElementResolverResult _resolveTargetPrefixElement({
- @required PrefixElement target,
- @required SimpleIdentifier identifier,
- @required bool hasRead,
- @required bool hasWrite,
- @required bool forAnnotation,
+ required PrefixElement target,
+ required SimpleIdentifier identifier,
+ required bool hasRead,
+ required bool hasWrite,
+ required bool forAnnotation,
}) {
var lookupResult = target.scope.lookup(identifier.name);
@@ -595,18 +595,18 @@
}
PropertyElementResolverResult _resolveTargetSuperExpression({
- @required SuperExpression target,
- @required SimpleIdentifier propertyName,
- @required bool hasRead,
- @required bool hasWrite,
+ required SuperExpression target,
+ required SimpleIdentifier propertyName,
+ required bool hasRead,
+ required bool hasWrite,
}) {
if (SuperContext.of(target) != SuperContext.valid) {
return PropertyElementResolverResult();
}
var targetType = target.staticType;
- ExecutableElement readElement;
- ExecutableElement writeElement;
+ ExecutableElement? readElement;
+ ExecutableElement? writeElement;
if (targetType is InterfaceTypeImpl) {
if (hasRead) {
@@ -658,8 +658,8 @@
inherited: true,
);
if (writeElement != null) {
- ClassElementImpl receiverSuperClass =
- targetType.element.supertype.element;
+ var receiverSuperClass =
+ targetType.element.supertype!.element as ClassElementImpl;
if (!receiverSuperClass.hasNoSuchMethod) {
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.ABSTRACT_SUPER_MEMBER_REFERENCE,
@@ -709,15 +709,15 @@
}
class PropertyElementResolverResult {
- final Element readElementRequested;
- final Element readElementRecovery;
- final Element writeElementRequested;
- final Element writeElementRecovery;
- final FunctionType functionTypeCallType;
+ final Element? readElementRequested;
+ final Element? readElementRecovery;
+ final Element? writeElementRequested;
+ final Element? writeElementRecovery;
+ final FunctionType? functionTypeCallType;
/// If [IndexExpression] is resolved, the context type of the index.
/// Might be `null` if `[]` or `[]=` are not resolved or invalid.
- final DartType indexContextType;
+ final DartType? indexContextType;
PropertyElementResolverResult({
this.readElementRequested,
@@ -728,11 +728,11 @@
this.functionTypeCallType,
});
- Element get readElement {
+ Element? get readElement {
return readElementRequested ?? readElementRecovery;
}
- Element get writeElement {
+ Element? get writeElement {
return writeElementRequested ?? writeElementRecovery;
}
}
diff --git a/pkg/analyzer/lib/src/dart/resolver/resolution_result.dart b/pkg/analyzer/lib/src/dart/resolver/resolution_result.dart
index 3a19d28..130268c 100644
--- a/pkg/analyzer/lib/src/dart/resolver/resolution_result.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/resolution_result.dart
@@ -18,7 +18,7 @@
final _ResolutionResultState state;
/// Return the element that is invoked for reading.
- final ExecutableElement getter;
+ final ExecutableElement? getter;
/// If `true`, then the [getter] is `null`, and this is an error that has
/// not yet been reported, and the client should report it.
@@ -31,7 +31,7 @@
final bool needsGetterError;
/// Return the element that is invoked for writing.
- final ExecutableElement setter;
+ final ExecutableElement? setter;
/// If `true`, then the [setter] is `null`, and this is an error that has
/// not yet been reported, and the client should report it.
@@ -47,9 +47,9 @@
/// reading and / or writing result.
ResolutionResult({
this.getter,
- this.needsGetterError,
+ this.needsGetterError = true,
this.setter,
- this.needsSetterError,
+ this.needsSetterError = true,
}) : state = _ResolutionResultState.single;
/// Initialize a newly created result with no elements and the given [state].
diff --git a/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart b/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart
index 8ad526f..b5eef7b 100644
--- a/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart
@@ -22,14 +22,13 @@
import 'package:analyzer/src/error/codes.dart';
import 'package:analyzer/src/generated/declaration_resolver.dart';
import 'package:analyzer/src/generated/utilities_dart.dart';
-import 'package:meta/meta.dart';
class ElementHolder {
final ElementImpl _element;
final List<TypeParameterElementImpl> _typeParameters = [];
final List<ParameterElementImpl> _parameters = [];
- ElementHolder(this._element) : assert(_element != null);
+ ElementHolder(this._element);
List<ParameterElementImpl> get parameters => _parameters;
@@ -71,25 +70,25 @@
/// visited. For example when we visit a method, its element is resynthesized
/// from the summary, and we get resynthesized elements for type parameters
/// and formal parameters to apply to corresponding AST nodes.
- ElementWalker _elementWalker;
+ ElementWalker? _elementWalker;
/// The scope used to resolve identifiers.
Scope _nameScope;
/// The scope used to resolve labels for `break` and `continue` statements,
/// or `null` if no labels have been defined in the current context.
- LabelScope _labelScope;
+ LabelScope? _labelScope;
/// The container to add newly created elements that should be put into the
/// enclosing element.
ElementHolder _elementHolder;
factory ResolutionVisitor({
- @required CompilationUnitElementImpl unitElement,
- @required AnalysisErrorListener errorListener,
- @required FeatureSet featureSet,
- @required Scope nameScope,
- ElementWalker elementWalker,
+ required CompilationUnitElementImpl unitElement,
+ required AnalysisErrorListener errorListener,
+ required FeatureSet featureSet,
+ required Scope nameScope,
+ ElementWalker? elementWalker,
}) {
var libraryElement = unitElement.library;
var typeProvider = libraryElement.typeProvider;
@@ -181,7 +180,7 @@
element.type = type;
exceptionNode.staticType = type;
} else {
- element.type = exceptionTypeNode.type;
+ element.type = exceptionTypeNode.type!;
exceptionNode.staticType = exceptionTypeNode.type;
}
@@ -212,7 +211,7 @@
@override
void visitClassDeclaration(ClassDeclaration node) {
- ClassElementImpl element = _elementWalker.getClass();
+ ClassElementImpl element = _elementWalker!.getClass();
node.name.staticElement = element;
_typeNameResolver.enclosingClass = element;
@@ -248,7 +247,7 @@
@override
void visitClassTypeAlias(ClassTypeAlias node) {
- ClassElementImpl element = _elementWalker.getClass();
+ ClassElementImpl element = _elementWalker!.getClass();
node.name.staticElement = element;
_typeNameResolver.enclosingClass = element;
@@ -276,7 +275,7 @@
@override
void visitConstructorDeclaration(ConstructorDeclaration node) {
- ConstructorElementImpl element = _elementWalker.getConstructor();
+ ConstructorElementImpl element = _elementWalker!.getConstructor();
(node as ConstructorDeclarationImpl).declaredElement = element;
node.name?.staticElement = element;
@@ -321,8 +320,8 @@
element.hasImplicitType = true;
element.type = _dynamicType;
} else {
- node.type.accept(this);
- element.type = node.type.type;
+ node.type!.accept(this);
+ element.type = node.type!.type!;
}
_setCodeRange(element, node);
@@ -331,11 +330,11 @@
@override
void visitDefaultFormalParameter(covariant DefaultFormalParameterImpl node) {
NormalFormalParameter normalParameter = node.parameter;
- SimpleIdentifier nameNode = normalParameter.identifier;
+ SimpleIdentifier? nameNode = normalParameter.identifier;
ParameterElementImpl element;
if (_elementWalker != null) {
- element = _elementWalker.getParameter();
+ element = _elementWalker!.getParameter();
} else {
var name = nameNode?.name ?? '';
var nameOffset = nameNode?.offset ?? -1;
@@ -379,7 +378,7 @@
@override
void visitEnumConstantDeclaration(EnumConstantDeclaration node) {
- var element = _elementWalker.getVariable();
+ var element = _elementWalker!.getVariable();
node.name.staticElement = element;
node.metadata.accept(this);
@@ -388,7 +387,7 @@
@override
void visitEnumDeclaration(EnumDeclaration node) {
- EnumElementImpl element = _elementWalker.getEnum();
+ EnumElementImpl element = _elementWalker!.getEnum();
node.name.staticElement = element;
node.metadata.accept(this);
@@ -407,14 +406,14 @@
_withElementWalker(null, () {
super.visitExportDirective(node);
if (node.element != null) {
- _setElementAnnotations(node.metadata, node.element.metadata);
+ _setElementAnnotations(node.metadata, node.element!.metadata);
}
});
}
@override
void visitExtensionDeclaration(ExtensionDeclaration node) {
- var element = _elementWalker.getExtension();
+ var element = _elementWalker!.getExtension();
(node as ExtensionDeclarationImpl).declaredElement = element;
node.name?.staticElement = element;
@@ -437,7 +436,8 @@
@override
void visitFieldDeclaration(FieldDeclaration node) {
super.visitFieldDeclaration(node);
- FieldElement firstFieldElement = node.fields.variables[0].declaredElement;
+ var firstFieldElement =
+ node.fields.variables[0].declaredElement as FieldElement;
_setElementAnnotations(node.metadata, firstFieldElement.metadata);
}
@@ -445,11 +445,12 @@
void visitFieldFormalParameter(covariant FieldFormalParameterImpl node) {
FieldFormalParameterElementImpl element;
if (node.parent is DefaultFormalParameter) {
- element = node.declaredElement;
+ element = node.declaredElement as FieldFormalParameterElementImpl;
} else {
var nameNode = node.identifier;
if (_elementWalker != null) {
- element = _elementWalker.getParameter();
+ element =
+ _elementWalker!.getParameter() as FieldFormalParameterElementImpl;
} else {
// Only for recovery, this should not happen in valid code.
element = FieldFormalParameterElementImpl(
@@ -502,17 +503,17 @@
ExecutableElementImpl element;
if (_elementWalker != null) {
element = node.isGetter || node.isSetter
- ? _elementWalker.getAccessor()
- : _elementWalker.getFunction();
+ ? _elementWalker!.getAccessor()
+ : _elementWalker!.getFunction();
node.name.staticElement = element;
} else {
- element = node.declaredElement;
+ element = node.declaredElement as ExecutableElementImpl;
_setCodeRange(element, node);
setElementDocumentationComment(element, node);
element.metadata = _createElementAnnotations(node.metadata);
- FunctionBody body = node.functionExpression.body;
+ var body = node.functionExpression.body as FunctionBody;
if (node.externalKeyword != null || body is NativeFunctionBody) {
element.isExternal = true;
}
@@ -524,10 +525,10 @@
}
}
- FunctionExpressionImpl expression = node.functionExpression;
+ var expression = node.functionExpression as FunctionExpressionImpl;
expression.declaredElement = element;
- node.metadata?.accept(this);
+ node.metadata.accept(this);
_setElementAnnotations(node.metadata, element.metadata);
var holder = ElementHolder(element);
@@ -554,7 +555,7 @@
_defineParameters(element.parameters);
_withElementWalker(null, () {
- expression.body.accept(this);
+ expression.body!.accept(this);
});
});
},
@@ -578,8 +579,9 @@
(node as FunctionExpressionImpl).declaredElement = element;
element.hasImplicitReturnType = true;
+ element.returnType = DynamicTypeImpl.instance;
- FunctionBody body = node.body;
+ FunctionBody body = node.body!;
element.isAsynchronous = body.isAsynchronous;
element.isGenerator = body.isGenerator;
@@ -590,11 +592,11 @@
node.typeParameters?.accept(this);
element.typeParameters = holder.typeParameters;
- node.parameters.accept(this);
+ node.parameters!.accept(this);
element.parameters = holder.parameters;
_defineParameters(element.parameters);
- node.body.accept(this);
+ node.body!.accept(this);
});
});
@@ -603,10 +605,10 @@
@override
void visitFunctionTypeAlias(FunctionTypeAlias node) {
- var element = _elementWalker.getTypedef();
+ var element = _elementWalker!.getTypedef() as FunctionTypeAliasElementImpl;
node.name.staticElement = element;
- node.metadata?.accept(this);
+ node.metadata.accept(this);
_setElementAnnotations(node.metadata, element.metadata);
_withElementWalker(ElementWalker.forTypedef(element), () {
@@ -614,7 +616,7 @@
_buildTypeParameterElements(node.typeParameters);
node.typeParameters?.accept(this);
node.returnType?.accept(this);
- node.parameters?.accept(this);
+ node.parameters.accept(this);
});
});
}
@@ -625,11 +627,11 @@
) {
ParameterElementImpl element;
if (node.parent is DefaultFormalParameter) {
- element = node.declaredElement;
+ element = node.declaredElement as ParameterElementImpl;
} else {
SimpleIdentifier nameNode = node.identifier;
if (_elementWalker != null) {
- element = _elementWalker.getParameter();
+ element = _elementWalker!.getParameter();
} else {
element = ParameterElementImpl(nameNode.name, nameNode.offset);
_elementHolder.addParameter(element);
@@ -642,7 +644,7 @@
nameNode.staticElement = element;
}
- node.metadata?.accept(this);
+ node.metadata.accept(this);
element.metadata = _createElementAnnotations(node.metadata);
var holder = ElementHolder(element);
@@ -711,12 +713,12 @@
nullabilitySuffix: _getNullability(node.question != null),
);
element.type = type;
- (node as GenericFunctionTypeImpl).type = type;
+ node.type = type;
}
@override
void visitGenericTypeAlias(GenericTypeAlias node) {
- var element = _elementWalker.getTypedef();
+ var element = _elementWalker!.getTypedef();
node.name.staticElement = element;
node.metadata.accept(this);
@@ -726,7 +728,7 @@
_withNameScope(() {
_buildTypeParameterElements(node.typeParameters);
node.typeParameters?.accept(this);
- node.type?.accept(this);
+ node.type.accept(this);
});
});
}
@@ -736,7 +738,7 @@
_withElementWalker(null, () {
super.visitImportDirective(node);
if (node.element != null) {
- _setElementAnnotations(node.metadata, node.element.metadata);
+ _setElementAnnotations(node.metadata, node.element!.metadata);
}
});
}
@@ -769,7 +771,7 @@
super.visitLibraryDirective(node);
++_libraryDirectiveIndex;
if (node.element != null && _libraryDirectiveIndex == 1) {
- _setElementAnnotations(node.metadata, node.element.metadata);
+ _setElementAnnotations(node.metadata, node.element!.metadata);
} else {
for (var annotation in node.metadata) {
annotation.elementAnnotation = ElementAnnotationImpl(_unitElement);
@@ -780,8 +782,8 @@
@override
void visitMethodDeclaration(MethodDeclaration node) {
ExecutableElementImpl element = node.isGetter || node.isSetter
- ? _elementWalker.getAccessor()
- : _elementWalker.getFunction();
+ ? _elementWalker!.getAccessor()
+ : _elementWalker!.getFunction();
node.name.staticElement = element;
node.metadata.accept(this);
@@ -798,7 +800,7 @@
_withElementWalker(null, () {
_withElementHolder(ElementHolder(element), () {
_defineParameters(element.parameters);
- node.body?.accept(this);
+ node.body.accept(this);
});
});
});
@@ -817,7 +819,7 @@
@override
void visitMixinDeclaration(MixinDeclaration node) {
- var element = _elementWalker.getMixin();
+ var element = _elementWalker!.getMixin();
node.name.staticElement = element;
node.metadata.accept(this);
@@ -843,7 +845,7 @@
_withElementWalker(null, () {
super.visitPartDirective(node);
if (node.element != null) {
- _setElementAnnotations(node.metadata, node.element.metadata);
+ _setElementAnnotations(node.metadata, node.element!.metadata);
}
});
}
@@ -852,11 +854,11 @@
void visitSimpleFormalParameter(covariant SimpleFormalParameterImpl node) {
ParameterElementImpl element;
if (node.parent is DefaultFormalParameter) {
- element = node.declaredElement;
+ element = node.declaredElement as ParameterElementImpl;
} else {
- SimpleIdentifier nameNode = node.identifier;
+ var nameNode = node.identifier;
if (_elementWalker != null) {
- element = _elementWalker.getParameter();
+ element = _elementWalker!.getParameter();
} else {
if (nameNode != null) {
element = ParameterElementImpl(nameNode.name, nameNode.offset);
@@ -921,15 +923,15 @@
_typeNameResolver.resolveTypeName(node);
if (_typeNameResolver.rewriteResult != null) {
- _typeNameResolver.rewriteResult.accept(this);
+ _typeNameResolver.rewriteResult!.accept(this);
}
}
@override
void visitTypeParameter(TypeParameter node) {
- TypeParameterElementImpl element = node.declaredElement;
+ var element = node.declaredElement as TypeParameterElementImpl;
- node.metadata?.accept(this);
+ node.metadata.accept(this);
_setElementAnnotations(node.metadata, element.metadata);
var boundNode = node.bound;
@@ -943,17 +945,17 @@
@override
void visitVariableDeclaration(VariableDeclaration node) {
- Expression initializerNode = node.initializer;
+ var initializerNode = node.initializer;
VariableElementImpl element;
if (_elementWalker != null) {
- element = _elementWalker.getVariable();
+ element = _elementWalker!.getVariable();
node.name.staticElement = element;
} else {
- LocalVariableElementImpl localElement = node.declaredElement;
+ var localElement = node.declaredElement as LocalVariableElementImpl;
element = localElement;
- VariableDeclarationList varList = node.parent;
+ var varList = node.parent as VariableDeclarationList;
localElement.hasImplicitType = varList.type == null;
localElement.hasInitializer = initializerNode != null;
localElement.type = varList.type?.type ?? _dynamicType;
@@ -995,7 +997,7 @@
var element = variable.declaredElement as ElementImpl;
element.metadata = elementAnnotations;
- var offset = (i == 0 ? node.parent : variable).offset;
+ var offset = (i == 0 ? node.parent! : variable).offset;
var length = variable.end - offset;
element.setCodeRange(offset, length);
}
@@ -1069,7 +1071,7 @@
/// Ensure that each type parameters from the [typeParameterList] has its
/// element set, either from the [_elementWalker] or new, and define these
/// elements in the [_nameScope].
- void _buildTypeParameterElements(TypeParameterList typeParameterList) {
+ void _buildTypeParameterElements(TypeParameterList? typeParameterList) {
if (typeParameterList == null) return;
for (var typeParameter in typeParameterList.typeParameters) {
@@ -1077,7 +1079,7 @@
TypeParameterElementImpl element;
if (_elementWalker != null) {
- element = _elementWalker.getTypeParameter();
+ element = _elementWalker!.getTypeParameter();
} else {
element = TypeParameterElementImpl(name.name, name.offset);
_elementHolder.addTypeParameter(element);
@@ -1139,7 +1141,7 @@
return NullabilitySuffix.star;
}
- void _resolveImplementsClause(ImplementsClause clause) {
+ void _resolveImplementsClause(ImplementsClause? clause) {
if (clause == null) return;
_resolveTypes(
@@ -1148,7 +1150,7 @@
);
}
- void _resolveOnClause(OnClause clause) {
+ void _resolveOnClause(OnClause? clause) {
if (clause == null) return;
_resolveTypes(
@@ -1182,7 +1184,7 @@
visitTypeName(typeName);
_typeNameResolver.classHierarchy_typeName = null;
- DartType type = typeName.type;
+ DartType type = typeName.type!;
if (type is InterfaceType) {
ClassElement element = type.element;
if (element.isEnum || element.isMixin && asClass) {
@@ -1215,7 +1217,7 @@
}
}
- void _resolveWithClause(WithClause clause) {
+ void _resolveWithClause(WithClause? clause) {
if (clause == null) return;
for (var typeName in clause.mixinTypes) {
@@ -1244,7 +1246,7 @@
}
/// Make the given [walker] be the current one while running [f].
- void _withElementWalker(ElementWalker walker, void Function() f) {
+ void _withElementWalker(ElementWalker? walker, void Function() f) {
var current = _elementWalker;
try {
_elementWalker = walker;
diff --git a/pkg/analyzer/lib/src/dart/resolver/scope.dart b/pkg/analyzer/lib/src/dart/resolver/scope.dart
index b9c2384..83348d9 100644
--- a/pkg/analyzer/lib/src/dart/resolver/scope.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/scope.dart
@@ -11,7 +11,6 @@
import 'package:analyzer/src/dart/element/scope.dart';
import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/generated/engine.dart';
-import 'package:meta/meta.dart';
/// The scope defined by a block.
class BlockScope {
@@ -24,16 +23,16 @@
for (int i = 0; i < statementCount; i++) {
Statement statement = statements[i];
if (statement is LabeledStatement) {
- statement = (statement as LabeledStatement).statement;
+ statement = statement.statement;
}
if (statement is VariableDeclarationStatement) {
NodeList<VariableDeclaration> variables = statement.variables.variables;
int variableCount = variables.length;
for (int j = 0; j < variableCount; j++) {
- yield variables[j].declaredElement;
+ yield variables[j].declaredElement!;
}
} else if (statement is FunctionDeclarationStatement) {
- yield statement.functionDeclaration.declaredElement;
+ yield statement.functionDeclaration.declaredElement!;
}
}
}
@@ -46,11 +45,11 @@
static const ImplicitLabelScope ROOT = ImplicitLabelScope._(null, null);
/// The implicit label scope enclosing this implicit label scope.
- final ImplicitLabelScope outerScope;
+ final ImplicitLabelScope? outerScope;
/// The statement that acts as a target for break and/or continue statements
/// at this scoping level.
- final Statement statement;
+ final Statement? statement;
/// Initialize a newly created scope, enclosed within the [outerScope],
/// representing the given [statement].
@@ -58,14 +57,14 @@
/// Return the statement which should be the target of an unlabeled `break` or
/// `continue` statement, or `null` if there is no appropriate target.
- Statement getTarget(bool isContinue) {
+ Statement? getTarget(bool isContinue) {
if (outerScope == null) {
// This scope represents the top-level of a function body, so it doesn't
// match either break or continue.
return null;
}
if (isContinue && statement is SwitchStatement) {
- return outerScope.getTarget(isContinue);
+ return outerScope!.getTarget(isContinue);
}
return statement;
}
@@ -80,7 +79,7 @@
/// A scope in which a single label is defined.
class LabelScope {
/// The label scope enclosing this label scope.
- final LabelScope _outerScope;
+ final LabelScope? _outerScope;
/// The label defined in this scope.
final String _label;
@@ -98,7 +97,7 @@
/// Return the LabelScope which defines [targetLabel], or `null` if it is not
/// defined in this scope.
- LabelScope lookup(String targetLabel) {
+ LabelScope? lookup(String targetLabel) {
if (_label == targetLabel) {
return this;
}
@@ -125,12 +124,12 @@
/// Return the element in this namespace that is available to the containing
/// scope using the given name, or `null` if there is no such element.
- Element get(String name) => _definedNames[name];
+ Element? get(String name) => _definedNames[name];
/// Return the element in this namespace whose name is the result of combining
/// the [prefix] and the [name], separated by a period, or `null` if there is
/// no such element.
- Element getPrefixed(String prefix, String name) => null;
+ Element? getPrefixed(String prefix, String name) => null;
}
/// The builder used to build a namespace. Namespace builders are thread-safe
@@ -139,7 +138,7 @@
/// Create a namespace representing the export namespace of the given
/// [element].
Namespace createExportNamespaceForDirective(ExportElement element) {
- LibraryElement exportedLibrary = element.exportedLibrary;
+ var exportedLibrary = element.exportedLibrary;
if (exportedLibrary == null) {
//
// The exported library will be null if the URI does not reference a valid
@@ -162,7 +161,7 @@
/// Create a namespace representing the import namespace of the given
/// [element].
Namespace createImportNamespaceForDirective(ImportElement element) {
- LibraryElement importedLibrary = element.importedLibrary;
+ var importedLibrary = element.importedLibrary;
if (importedLibrary == null) {
//
// The imported library will be null if the URI does not reference a valid
@@ -172,7 +171,7 @@
}
Map<String, Element> exportedNames = _getExportMapping(importedLibrary);
exportedNames = _applyCombinators(exportedNames, element.combinators);
- PrefixElement prefix = element.prefix;
+ var prefix = element.prefix;
if (prefix != null) {
return PrefixedNamespace(prefix.name, exportedNames);
}
@@ -213,19 +212,10 @@
return _applyCombinators(map, element.combinators).values;
}
- /// Add all of the names in the given [namespace] to the table of
- /// [definedNames].
- void _addAllFromNamespace(
- Map<String, Element> definedNames, Namespace namespace) {
- if (namespace != null) {
- definedNames.addAll(namespace.definedNames);
- }
- }
-
/// Add the given [element] to the table of [definedNames] if it has a
/// publicly visible name.
void _addIfPublic(Map<String, Element> definedNames, Element element) {
- String name = element.name;
+ var name = element.name;
if (name != null && name.isNotEmpty && !Identifier.isPrivateName(name)) {
definedNames[name] = element;
}
@@ -277,51 +267,8 @@
return definedNames;
}
- /// Create a mapping table representing the export namespace of the given
- /// [library]. The set of [visitedElements] contains the libraries that do not
- /// need to be visited when processing the export directives of the given
- /// library because all of the names defined by them will be added by another
- /// library.
- Map<String, Element> _computeExportMapping(
- LibraryElement library, HashSet<LibraryElement> visitedElements) {
- visitedElements.add(library);
- try {
- Map<String, Element> definedNames = HashMap<String, Element>();
- for (ExportElement element in library.exports) {
- LibraryElement exportedLibrary = element.exportedLibrary;
- if (exportedLibrary != null &&
- !visitedElements.contains(exportedLibrary)) {
- //
- // The exported library will be null if the URI does not reference a
- // valid library.
- //
- Map<String, Element> exportedNames =
- _computeExportMapping(exportedLibrary, visitedElements);
- exportedNames = _applyCombinators(exportedNames, element.combinators);
- definedNames.addAll(exportedNames);
- }
- }
- _addAllFromNamespace(
- definedNames,
- createPublicNamespaceForLibrary(library),
- );
- return definedNames;
- } finally {
- visitedElements.remove(library);
- }
- }
-
Map<String, Element> _getExportMapping(LibraryElement library) {
- if (library.exportNamespace != null) {
- return library.exportNamespace.definedNames;
- }
- if (library is LibraryElementImpl) {
- Map<String, Element> exportMapping =
- _computeExportMapping(library, HashSet<LibraryElement>());
- library.exportNamespace = Namespace(exportMapping);
- return exportMapping;
- }
- return _computeExportMapping(library, HashSet<LibraryElement>());
+ return library.exportNamespace.definedNames;
}
/// Return a new map of names which has all the names from [definedNames]
@@ -341,7 +288,7 @@
Map<String, Element> definedNames, List<String> shownNames) {
Map<String, Element> newNames = HashMap<String, Element>();
for (String name in shownNames) {
- Element element = definedNames[name];
+ var element = definedNames[name];
if (element != null) {
newNames[name] = element;
}
@@ -386,7 +333,7 @@
}
@override
- Element get(String name) {
+ Element? get(String name) {
if (name.length > _length && name.startsWith(_prefix)) {
if (name.codeUnitAt(_length) == '.'.codeUnitAt(0)) {
return _definedNames[name.substring(_length + 1)];
@@ -396,7 +343,7 @@
}
@override
- Element getPrefixed(String prefix, String name) {
+ Element? getPrefixed(String prefix, String name) {
if (prefix == _prefix) {
return _definedNames[name];
}
@@ -425,8 +372,8 @@
/// (might be `null`) and [name] is not defined should be ignored (from the
/// perspective of error reporting).
bool shouldIgnoreUndefined2({
- @required String prefix,
- @required String name,
+ required String? prefix,
+ required String name,
}) {
return _enclosingLibraryScope.shouldIgnoreUndefined(
prefix: prefix,
@@ -439,7 +386,7 @@
}
LibraryScope get _enclosingLibraryScope {
- var scope = this;
+ Scope? scope = this;
while (scope != null) {
if (scope is LibraryScope) {
return scope;
diff --git a/pkg/analyzer/lib/src/dart/resolver/simple_identifier_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/simple_identifier_resolver.dart
index 785ea9f..9cb37d0 100644
--- a/pkg/analyzer/lib/src/dart/resolver/simple_identifier_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/simple_identifier_resolver.dart
@@ -19,7 +19,7 @@
class SimpleIdentifierResolver {
final ResolverVisitor _resolver;
- final FlowAnalysisHelper _flowAnalysis;
+ final FlowAnalysisHelper? _flowAnalysis;
SimpleIdentifierResolver(this._resolver, this._flowAnalysis);
@@ -50,24 +50,15 @@
/// TODO(scheglov) this is duplicate
DartType _getTypeOfProperty(PropertyAccessorElement accessor) {
FunctionType functionType = accessor.type;
- if (functionType == null) {
- // TODO(brianwilkerson) Report this internal error. This happens when we
- // are analyzing a reference to a property before we have analyzed the
- // declaration of the property or when the property does not have a
- // defined type.
- return DynamicTypeImpl.instance;
- }
if (accessor.isSetter) {
- List<DartType> parameterTypes = functionType.normalParameterTypes;
- if (parameterTypes != null && parameterTypes.isNotEmpty) {
+ var parameterTypes = functionType.normalParameterTypes;
+ if (parameterTypes.isNotEmpty) {
return parameterTypes[0];
}
- PropertyAccessorElement getter = accessor.variable.getter;
+ var getter = accessor.variable.getter;
if (getter != null) {
functionType = getter.type;
- if (functionType != null) {
- return functionType.returnType;
- }
+ return functionType.returnType;
}
return DynamicTypeImpl.instance;
}
@@ -101,7 +92,7 @@
/// * it is the prefix in an import directive, or
/// * it is the prefix in a prefixed identifier.
bool _isValidAsPrefix(SimpleIdentifier node) {
- AstNode parent = node.parent;
+ var parent = node.parent;
if (parent is ImportDirective) {
return identical(parent.prefix, node);
} else if (parent is PrefixedIdentifier) {
@@ -120,22 +111,14 @@
///
/// TODO(scheglov) this is duplicate
void _recordStaticType(Expression expression, DartType type) {
- if (_resolver.migrationResolutionHooks != null) {
- // TODO(scheglov) type cannot be null
- type = _resolver.migrationResolutionHooks.modifyExpressionType(
- expression,
- type ?? DynamicTypeImpl.instance,
- );
+ var hooks = _resolver.migrationResolutionHooks;
+ if (hooks != null) {
+ type = hooks.modifyExpressionType(expression, type);
}
- // TODO(scheglov) type cannot be null
- if (type == null) {
- expression.staticType = DynamicTypeImpl.instance;
- } else {
- expression.staticType = type;
- if (_resolver.typeSystem.isBottom(type)) {
- _flowAnalysis?.flow?.handleExit();
- }
+ expression.staticType = type;
+ if (_resolver.typeSystem.isBottom(type)) {
+ _flowAnalysis?.flow?.handleExit();
}
}
@@ -157,7 +140,7 @@
node.staticElement is ParameterElement) {
return;
}
- AstNode parent = node.parent;
+ var parent = node.parent;
if (parent is FieldFormalParameter) {
return;
} else if (parent is ConstructorFieldInitializer &&
@@ -189,10 +172,9 @@
hasWrite: hasWrite,
);
- // Element element = _resolver.elementResolver.resolveSimpleIdentifier(node);
- Element element = hasRead ? result.readElement : result.writeElement;
+ var element = hasRead ? result.readElement : result.writeElement;
- ClassElement enclosingClass = _resolver.enclosingClass;
+ var enclosingClass = _resolver.enclosingClass;
if (_isFactoryConstructorReturnType(node) &&
!identical(element, enclosingClass)) {
_errorReporter.reportErrorForNode(
@@ -232,7 +214,7 @@
}
void _resolve2(SimpleIdentifier node) {
- Element element = node.staticElement;
+ var element = node.staticElement;
if (element is ExtensionElement) {
_setExtensionIdentifierType(node);
@@ -315,7 +297,7 @@
/// Return `true` if the given [identifier] is the return type of a
/// constructor declaration.
static bool _isConstructorReturnType(SimpleIdentifier identifier) {
- AstNode parent = identifier.parent;
+ var parent = identifier.parent;
if (parent is ConstructorDeclaration) {
return identical(parent.returnType, identifier);
}
@@ -325,7 +307,7 @@
/// Return `true` if the given [identifier] is the return type of a factory
/// constructor.
static bool _isFactoryConstructorReturnType(SimpleIdentifier identifier) {
- AstNode parent = identifier.parent;
+ var parent = identifier.parent;
if (parent is ConstructorDeclaration) {
return identical(parent.returnType, identifier) &&
parent.factoryKeyword != null;
diff --git a/pkg/analyzer/lib/src/dart/resolver/type_name_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/type_name_resolver.dart
index 38e717a..c019b77 100644
--- a/pkg/analyzer/lib/src/dart/resolver/type_name_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/type_name_resolver.dart
@@ -26,29 +26,29 @@
final bool isNonNullableByDefault;
final ErrorReporter errorReporter;
- Scope nameScope;
+ late Scope nameScope;
/// If not `null`, the element of the [ClassDeclaration], or the
/// [ClassTypeAlias] being resolved.
- ClassElement enclosingClass;
+ ClassElement? enclosingClass;
/// If not `null`, a direct child of an [ExtendsClause], [WithClause],
/// or [ImplementsClause].
- TypeName classHierarchy_typeName;
+ TypeName? classHierarchy_typeName;
/// If not `null`, a direct child the [WithClause] in the [enclosingClass].
- TypeName withClause_typeName;
+ TypeName? withClause_typeName;
/// If not `null`, the [TypeName] of the redirected constructor being
/// resolved, in the [enclosingClass].
- TypeName redirectedConstructor_typeName;
+ TypeName? redirectedConstructor_typeName;
/// If [resolveTypeName] finds out that the given [TypeName] with a
/// [PrefixedIdentifier] name is actually the name of a class and the name of
/// the constructor, it rewrites the [ConstructorName] to correctly represent
/// the type and the constructor name, and set this field to the rewritten
/// [ConstructorName]. Otherwise this field will be set `null`.
- ConstructorName rewriteResult;
+ ConstructorName? rewriteResult;
TypeNameResolver(this.typeSystem, TypeProvider typeProvider,
this.isNonNullableByDefault, this.errorReporter)
@@ -116,8 +116,9 @@
}
/// Return type arguments, exactly [parameterCount].
- List<DartType> _buildTypeArguments(TypeName node, int parameterCount) {
- var arguments = node.typeArguments.arguments;
+ List<DartType> _buildTypeArguments(
+ TypeName node, TypeArgumentList argumentList, int parameterCount) {
+ var arguments = argumentList.arguments;
var argumentCount = arguments.length;
if (argumentCount != parameterCount) {
@@ -133,12 +134,10 @@
return const <DartType>[];
}
- var typeArguments = List<DartType>.filled(parameterCount, null);
- for (var i = 0; i < parameterCount; i++) {
- typeArguments[i] = arguments[i].type;
- }
-
- return typeArguments;
+ return List.generate(
+ parameterCount,
+ (i) => arguments[i].type!,
+ );
}
NullabilitySuffix _getNullability(TypeName node) {
@@ -167,8 +166,8 @@
parameters: const [],
declaredReturnType: element.thisType,
argumentTypes: const [],
- contextReturnType: enclosingClass.thisType,
- );
+ contextReturnType: enclosingClass!.thisType,
+ )!;
return element.instantiate(
typeArguments: typeArguments,
nullabilitySuffix: _noneOrStarSuffix,
@@ -185,6 +184,7 @@
if (element is ClassElement) {
var typeArguments = _buildTypeArguments(
node,
+ argumentList,
element.typeParameters.length,
);
return element.instantiate(
@@ -194,6 +194,7 @@
} else if (element is TypeAliasElement) {
var typeArguments = _buildTypeArguments(
node,
+ argumentList,
element.typeParameters.length,
);
var type = element.instantiate(
@@ -206,13 +207,13 @@
_ErrorHelper(errorReporter).reportNewWithNonType(node);
return dynamicType;
} else if (element is DynamicElementImpl) {
- _buildTypeArguments(node, 0);
+ _buildTypeArguments(node, argumentList, 0);
return DynamicTypeImpl.instance;
} else if (element is NeverElementImpl) {
- _buildTypeArguments(node, 0);
+ _buildTypeArguments(node, argumentList, 0);
return _instantiateElementNever(nullability);
} else if (element is TypeParameterElement) {
- _buildTypeArguments(node, 0);
+ _buildTypeArguments(node, argumentList, 0);
return element.instantiate(
nullabilitySuffix: nullability,
);
@@ -224,7 +225,7 @@
if (element is ClassElement) {
if (identical(node, withClause_typeName)) {
- for (var mixin in enclosingClass.mixins) {
+ for (var mixin in enclosingClass!.mixins) {
if (mixin.element == element) {
return mixin;
}
@@ -270,7 +271,7 @@
}
}
- void _resolveToElement(TypeName node, Element element) {
+ void _resolveToElement(TypeName node, Element? element) {
if (element == null) {
node.type = dynamicType;
if (!nameScope.shouldIgnoreUndefined(node.name)) {
@@ -394,8 +395,9 @@
}
static bool _isInstanceCreation(TypeName node) {
- return node.parent is ConstructorName &&
- node.parent.parent is InstanceCreationExpression;
+ var parent = node.parent;
+ return parent is ConstructorName &&
+ parent.parent is InstanceCreationExpression;
}
}
@@ -425,7 +427,7 @@
return false;
}
- void reportNullOrNonTypeElement(TypeName node, Element element) {
+ void reportNullOrNonTypeElement(TypeName node, Element? element) {
var identifier = node.name;
var errorNode = _getErrorNode(node);
diff --git a/pkg/analyzer/lib/src/dart/resolver/type_property_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/type_property_resolver.dart
index b12e424..fc603c5 100644
--- a/pkg/analyzer/lib/src/dart/resolver/type_property_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/type_property_resolver.dart
@@ -14,7 +14,6 @@
import 'package:analyzer/src/dart/resolver/resolution_result.dart';
import 'package:analyzer/src/error/codes.dart';
import 'package:analyzer/src/generated/resolver.dart';
-import 'package:meta/meta.dart';
/// Helper for resolving properties (getters, setters, or methods).
class TypePropertyResolver {
@@ -25,19 +24,19 @@
final TypeProviderImpl _typeProvider;
final ExtensionMemberResolver _extensionResolver;
- Expression _receiver;
- SyntacticEntity _nameErrorEntity;
- String _name;
+ late Expression? _receiver;
+ late SyntacticEntity _nameErrorEntity;
+ late String _name;
- bool _needsGetterError;
- bool _reportedGetterError;
- ExecutableElement _getterRequested;
- ExecutableElement _getterRecovery;
+ bool _needsGetterError = false;
+ bool _reportedGetterError = false;
+ ExecutableElement? _getterRequested;
+ ExecutableElement? _getterRecovery;
- bool _needsSetterError;
- bool _reportedSetterError;
- ExecutableElement _setterRequested;
- ExecutableElement _setterRecovery;
+ bool _needsSetterError = false;
+ bool _reportedSetterError = false;
+ ExecutableElement? _setterRequested;
+ ExecutableElement? _setterRecovery;
TypePropertyResolver(this._resolver)
: _definingLibrary = _resolver.definingLibrary,
@@ -59,13 +58,12 @@
///
/// The [nameErrorEntity] is used to report the ambiguous extension issue.
ResolutionResult resolve({
- @required Expression receiver,
- @required DartType receiverType,
- @required String name,
- @required AstNode receiverErrorNode,
- @required SyntacticEntity nameErrorEntity,
+ required Expression? receiver,
+ required DartType receiverType,
+ required String name,
+ required AstNode receiverErrorNode,
+ required SyntacticEntity nameErrorEntity,
}) {
- assert(receiverType != null);
_receiver = receiver;
_name = name;
_nameErrorEntity = nameErrorEntity;
@@ -98,8 +96,7 @@
errorCode = CompileTimeErrorCode.UNCHECKED_INVOCATION_OF_NULLABLE_VALUE;
} else {
if (parentExpression is CascadeExpression) {
- parentExpression =
- (parentExpression as CascadeExpression).cascadeSections.first;
+ parentExpression = parentExpression.cascadeSections.first;
}
if (parentExpression is BinaryExpression) {
errorCode = CompileTimeErrorCode
@@ -240,7 +237,7 @@
bool ifNullSafe = false,
}) {
if (_typeSystem.isNonNullableByDefault ? ifNullSafe : ifLegacy) {
- return type?.resolveToBound(_typeProvider.objectType);
+ return type.resolveToBound(_typeProvider.objectType);
} else {
return type;
}
diff --git a/pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart
index e701244..d6c2dfc 100644
--- a/pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart
@@ -18,7 +18,6 @@
import 'package:analyzer/src/generated/migratable_ast_info_provider.dart';
import 'package:analyzer/src/generated/resolver.dart';
import 'package:analyzer/src/generated/utilities_dart.dart';
-import 'package:meta/meta.dart';
/// Helper for resolving [ListLiteral]s and [SetOrMapLiteral]s.
class TypedLiteralResolver {
@@ -71,12 +70,12 @@
}
void resolveListLiteral(ListLiteral node) {
- InterfaceType listType;
+ InterfaceType? listType;
- List<TypeAnnotation> typeArguments = node.typeArguments?.arguments;
+ var typeArguments = node.typeArguments?.arguments;
if (typeArguments != null) {
if (typeArguments.length == 1) {
- DartType elementType = typeArguments[0].type;
+ DartType elementType = typeArguments[0].type!;
if (!elementType.isDynamic) {
listType = _typeProvider.listType2(elementType);
}
@@ -102,11 +101,11 @@
(node as SetOrMapLiteralImpl).becomeUnresolved();
var typeArguments = node.typeArguments?.arguments;
- InterfaceType literalType;
+ InterfaceType? literalType;
var literalResolution = _computeSetOrMapResolution(node);
if (literalResolution.kind == _LiteralResolutionKind.set) {
if (typeArguments != null && typeArguments.length == 1) {
- var elementType = typeArguments[0].type;
+ var elementType = typeArguments[0].type!;
literalType = _typeProvider.setType2(elementType);
} else {
literalType =
@@ -114,8 +113,8 @@
}
} else if (literalResolution.kind == _LiteralResolutionKind.map) {
if (typeArguments != null && typeArguments.length == 2) {
- var keyType = typeArguments[0].type;
- var valueType = typeArguments[1].type;
+ var keyType = typeArguments[0].type!;
+ var valueType = typeArguments[1].type!;
literalType = _typeProvider.mapType2(keyType, valueType);
} else {
literalType =
@@ -137,7 +136,7 @@
node.typeArguments == null &&
node.isMap) {
// The node is really an empty set literal with no type arguments.
- (node as SetOrMapLiteralImpl).becomeMap();
+ node.becomeMap();
}
} else if (typeArguments.length == 2) {
DartType keyType = typeArguments[0];
@@ -145,9 +144,9 @@
_pushCollectionTypesDownToAll(_getSetOrMapElements(node),
iterableType: literalType, keyType: keyType, valueType: valueType);
}
- (node as SetOrMapLiteralImpl).contextType = literalType;
+ node.contextType = literalType;
} else {
- (node as SetOrMapLiteralImpl).contextType = null;
+ node.contextType = null;
}
node.visitChildren(_resolver);
@@ -156,7 +155,7 @@
DartType _computeElementType(CollectionElement element) {
if (element is Expression) {
- return element.staticType;
+ return element.staticType!;
} else if (element is ForElement) {
return _computeElementType(element.body);
} else if (element is IfElement) {
@@ -174,7 +173,7 @@
// This error will be reported elsewhere.
return _typeProvider.dynamicType;
} else if (element is SpreadElement) {
- var expressionType = element.expression.staticType;
+ var expressionType = element.expression.staticType!;
var iterableType = expressionType.asInstanceOf(
_typeProvider.iterableElement,
@@ -216,7 +215,7 @@
_LiteralResolution _computeSetOrMapResolution(SetOrMapLiteral literal) {
_LiteralResolution typeArgumentsResolution =
_fromTypeArguments(literal.typeArguments?.arguments);
- DartType contextType = InferenceContext.getContext(literal);
+ var contextType = InferenceContext.getContext(literal);
_LiteralResolution contextResolution = _fromContextType(contextType);
_LeafElements elementCounts = _LeafElements(_getSetOrMapElements(literal));
_LiteralResolution elementResolution = elementCounts.resolution;
@@ -271,7 +270,7 @@
///
/// If [contextType] implements `Map`, but not `Iterable`, then *e* is a map
/// literal.
- _LiteralResolution _fromContextType(DartType contextType) {
+ _LiteralResolution _fromContextType(DartType? contextType) {
if (contextType != null) {
var unwrappedContextType = _typeSystem.futureOrBase(contextType);
// TODO(brianwilkerson) Find out what the "greatest closure" is and use that
@@ -306,14 +305,14 @@
}
/// Return the resolution that is indicated by the given [arguments].
- _LiteralResolution _fromTypeArguments(List<TypeAnnotation> arguments) {
+ _LiteralResolution _fromTypeArguments(List<TypeAnnotation>? arguments) {
if (arguments != null) {
if (arguments.length == 1) {
return _LiteralResolution(_LiteralResolutionKind.set,
- _typeProvider.setType2(arguments[0].type));
+ _typeProvider.setType2(arguments[0].type!));
} else if (arguments.length == 2) {
return _LiteralResolution(_LiteralResolutionKind.map,
- _typeProvider.mapType2(arguments[0].type, arguments[1].type));
+ _typeProvider.mapType2(arguments[0].type!, arguments[1].type!));
}
}
return _LiteralResolution(_LiteralResolutionKind.ambiguous, null);
@@ -326,10 +325,10 @@
_migratableAstInfoProvider.getSetOrMapElements(node);
_InferredCollectionElementTypeInformation _inferCollectionElementType(
- CollectionElement element) {
+ CollectionElement? element) {
if (element is Expression) {
return _InferredCollectionElementTypeInformation(
- elementType: element.staticType, keyType: null, valueType: null);
+ elementType: element.staticType!, keyType: null, valueType: null);
} else if (element is ForElement) {
return _inferCollectionElementType(element.body);
} else if (element is IfElement) {
@@ -348,7 +347,7 @@
keyType: element.key.staticType,
valueType: element.value.staticType);
} else if (element is SpreadElement) {
- DartType expressionType = element.expression.staticType;
+ var expressionType = element.expression.staticType!;
var iterableType = expressionType.asInstanceOf(
_typeProvider.iterableElement,
@@ -417,8 +416,8 @@
}
}
- DartType _inferListType(ListLiteral node, {bool downwards = false}) {
- DartType contextType = InferenceContext.getContext(node);
+ InterfaceType? _inferListType(ListLiteral node, {bool downwards = false}) {
+ var contextType = InferenceContext.getContext(node);
var element = _typeProvider.listElement;
var typeParameters = element.typeParameters;
@@ -460,15 +459,15 @@
isConst: node.isConst,
errorReporter: _errorReporter,
errorNode: node,
- );
+ )!;
return element.instantiate(
typeArguments: typeArguments,
nullabilitySuffix: _noneOrStarSuffix,
);
}
- InterfaceType _inferMapTypeDownwards(
- SetOrMapLiteral node, DartType contextType) {
+ InterfaceType? _inferMapTypeDownwards(
+ SetOrMapLiteral node, DartType? contextType) {
if (contextType == null) {
return null;
}
@@ -484,7 +483,7 @@
isConst: node.isConst,
errorReporter: _errorReporter,
errorNode: node,
- );
+ )!;
return element.instantiate(
typeArguments: typeArguments,
nullabilitySuffix: _noneOrStarSuffix,
@@ -493,7 +492,7 @@
DartType _inferSetOrMapLiteralType(SetOrMapLiteral literal) {
var literalImpl = literal as SetOrMapLiteralImpl;
- DartType contextType = literalImpl.contextType;
+ var contextType = literalImpl.contextType;
literalImpl.contextType = null; // Not needed anymore.
List<CollectionElement> elements = _getSetOrMapElements(literal);
List<_InferredCollectionElementTypeInformation> inferredTypes = [];
@@ -565,7 +564,8 @@
return _typeProvider.dynamicType;
}
- DartType _inferSetTypeDownwards(SetOrMapLiteral node, DartType contextType) {
+ InterfaceType? _inferSetTypeDownwards(
+ SetOrMapLiteral node, DartType? contextType) {
if (contextType == null) {
return null;
}
@@ -581,18 +581,18 @@
isConst: node.isConst,
errorReporter: _errorReporter,
errorNode: node,
- );
+ )!;
return element.instantiate(
typeArguments: typeArguments,
nullabilitySuffix: _noneOrStarSuffix,
);
}
- void _pushCollectionTypesDown(CollectionElement element,
- {DartType elementType,
- @required DartType iterableType,
- DartType keyType,
- DartType valueType}) {
+ void _pushCollectionTypesDown(CollectionElement? element,
+ {DartType? elementType,
+ required DartType iterableType,
+ DartType? keyType,
+ DartType? valueType}) {
if (element is Expression) {
InferenceContext.setType(element, elementType);
} else if (element is ForElement) {
@@ -624,11 +624,10 @@
}
void _pushCollectionTypesDownToAll(List<CollectionElement> elements,
- {DartType elementType,
- @required DartType iterableType,
- DartType keyType,
- DartType valueType}) {
- assert(iterableType != null);
+ {DartType? elementType,
+ required DartType iterableType,
+ DartType? keyType,
+ DartType? valueType}) {
for (CollectionElement element in elements) {
_pushCollectionTypesDown(element,
elementType: elementType,
@@ -657,16 +656,13 @@
}
void _resolveListLiteral2(ListLiteral node) {
- List<TypeAnnotation> typeArguments = node.typeArguments?.arguments;
+ var typeArguments = node.typeArguments?.arguments;
// If we have explicit arguments, use them.
if (typeArguments != null) {
DartType elementType = _dynamicType;
- if (typeArguments != null && typeArguments.length == 1) {
- DartType argumentType = typeArguments[0].type;
- if (argumentType != null) {
- elementType = argumentType;
- }
+ if (typeArguments.length == 1) {
+ elementType = typeArguments[0].type!;
}
_recordStaticType(
node,
@@ -681,12 +677,12 @@
DartType listDynamicType = _typeProvider.listType2(_dynamicType);
// If there are no type arguments, try to infer some arguments.
- DartType inferred = _inferListType(node);
+ var inferred = _inferListType(node);
if (inferred != listDynamicType) {
// TODO(brianwilkerson) Determine whether we need to make the inferred
// type non-nullable here or whether it will already be non-nullable.
- _recordStaticType(node, inferred);
+ _recordStaticType(node, inferred!);
return;
}
@@ -703,7 +699,7 @@
if (typeArguments != null) {
if (typeArguments.length == 1) {
(node as SetOrMapLiteralImpl).becomeSet();
- var elementType = typeArguments[0].type;
+ var elementType = typeArguments[0].type!;
_recordStaticType(
node,
_typeProvider.setElement.instantiate(
@@ -714,8 +710,8 @@
return;
} else if (typeArguments.length == 2) {
(node as SetOrMapLiteralImpl).becomeMap();
- var keyType = typeArguments[0].type;
- var valueType = typeArguments[1].type;
+ var keyType = typeArguments[0].type!;
+ var valueType = typeArguments[1].type!;
_recordStaticType(
node,
_typeProvider.mapElement.instantiate(
@@ -755,7 +751,7 @@
_recordStaticType(node, literalType);
}
- DartType _toMapType(SetOrMapLiteral node, DartType contextType,
+ DartType _toMapType(SetOrMapLiteral node, DartType? contextType,
List<_InferredCollectionElementTypeInformation> inferredTypes) {
DartType dynamicType = _typeProvider.dynamicType;
@@ -768,16 +764,15 @@
nullabilitySuffix: _noneOrStarSuffix,
);
- var parameters =
- List<ParameterElement>.filled(2 * inferredTypes.length, null);
- var argumentTypes = List<DartType>.filled(2 * inferredTypes.length, null);
+ var parameters = <ParameterElement>[];
+ var argumentTypes = <DartType>[];
for (var i = 0; i < inferredTypes.length; i++) {
- parameters[2 * i + 0] = ParameterElementImpl.synthetic(
- 'key', genericKeyType, ParameterKind.POSITIONAL);
- parameters[2 * i + 1] = ParameterElementImpl.synthetic(
- 'value', genericValueType, ParameterKind.POSITIONAL);
- argumentTypes[2 * i + 0] = inferredTypes[i].keyType ?? dynamicType;
- argumentTypes[2 * i + 1] = inferredTypes[i].valueType ?? dynamicType;
+ parameters.add(ParameterElementImpl.synthetic(
+ 'key', genericKeyType, ParameterKind.POSITIONAL));
+ parameters.add(ParameterElementImpl.synthetic(
+ 'value', genericValueType, ParameterKind.POSITIONAL));
+ argumentTypes.add(inferredTypes[i].keyType ?? dynamicType);
+ argumentTypes.add(inferredTypes[i].valueType ?? dynamicType);
}
var typeArguments = _typeSystem.inferGenericFunctionOrType(
@@ -786,14 +781,14 @@
declaredReturnType: element.thisType,
argumentTypes: argumentTypes,
contextReturnType: contextType,
- );
+ )!;
return element.instantiate(
typeArguments: typeArguments,
nullabilitySuffix: _noneOrStarSuffix,
);
}
- DartType _toSetType(SetOrMapLiteral node, DartType contextType,
+ DartType _toSetType(SetOrMapLiteral node, DartType? contextType,
List<_InferredCollectionElementTypeInformation> inferredTypes) {
DartType dynamicType = _typeProvider.dynamicType;
@@ -803,12 +798,12 @@
nullabilitySuffix: _noneOrStarSuffix,
);
- var parameters = List<ParameterElement>.filled(inferredTypes.length, null);
- var argumentTypes = List<DartType>.filled(inferredTypes.length, null);
+ var parameters = <ParameterElement>[];
+ var argumentTypes = <DartType>[];
for (var i = 0; i < inferredTypes.length; i++) {
- parameters[i] = ParameterElementImpl.synthetic(
- 'element', genericElementType, ParameterKind.POSITIONAL);
- argumentTypes[i] = inferredTypes[i].elementType ?? dynamicType;
+ parameters.add(ParameterElementImpl.synthetic(
+ 'element', genericElementType, ParameterKind.POSITIONAL));
+ argumentTypes.add(inferredTypes[i].elementType ?? dynamicType);
}
var typeArguments = _typeSystem.inferGenericFunctionOrType(
@@ -817,7 +812,7 @@
declaredReturnType: element.thisType,
argumentTypes: argumentTypes,
contextReturnType: contextType,
- );
+ )!;
return element.instantiate(
typeArguments: typeArguments,
nullabilitySuffix: _noneOrStarSuffix,
@@ -826,9 +821,9 @@
}
class _InferredCollectionElementTypeInformation {
- final DartType elementType;
- final DartType keyType;
- final DartType valueType;
+ final DartType? elementType;
+ final DartType? keyType;
+ final DartType? valueType;
_InferredCollectionElementTypeInformation(
{this.elementType, this.keyType, this.valueType});
@@ -838,13 +833,13 @@
_InferredCollectionElementTypeInformation thenInfo,
_InferredCollectionElementTypeInformation elseInfo) {
if (thenInfo.isDynamic) {
- DartType dynamic = thenInfo.elementType;
+ var dynamic = thenInfo.elementType!;
return _InferredCollectionElementTypeInformation(
elementType: _dynamicOrNull(elseInfo.elementType, dynamic),
keyType: _dynamicOrNull(elseInfo.keyType, dynamic),
valueType: _dynamicOrNull(elseInfo.valueType, dynamic));
} else if (elseInfo.isDynamic) {
- DartType dynamic = elseInfo.elementType;
+ DartType dynamic = elseInfo.elementType!;
return _InferredCollectionElementTypeInformation(
elementType: _dynamicOrNull(thenInfo.elementType, dynamic),
keyType: _dynamicOrNull(thenInfo.keyType, dynamic),
@@ -865,11 +860,11 @@
bool get isDynamic =>
elementType != null &&
- elementType.isDynamic &&
+ elementType!.isDynamic &&
keyType != null &&
- keyType.isDynamic &&
+ keyType!.isDynamic &&
valueType != null &&
- valueType.isDynamic;
+ valueType!.isDynamic;
bool get mustBeMap => canBeMap && elementType == null;
@@ -880,15 +875,15 @@
return '($elementType, $keyType, $valueType)';
}
- static DartType _dynamicOrNull(DartType type, DartType dynamic) {
+ static DartType? _dynamicOrNull(DartType? type, DartType dynamic) {
if (type == null) {
return null;
}
return dynamic;
}
- static DartType _leastUpperBoundOfTypes(
- TypeSystemImpl typeSystem, DartType first, DartType second) {
+ static DartType? _leastUpperBoundOfTypes(
+ TypeSystemImpl typeSystem, DartType? first, DartType? second) {
if (first == null) {
return second;
} else if (second == null) {
@@ -927,7 +922,7 @@
}
/// Recursively add the given collection [element] to the counts.
- void _count(CollectionElement element) {
+ void _count(CollectionElement? element) {
if (element is Expression) {
if (_isComplete(element)) {
expressionCount++;
@@ -972,7 +967,7 @@
/// The type that should be used as the inference context when performing type
/// inference for the literal.
- DartType contextType;
+ DartType? contextType;
/// Initialize a newly created resolution.
_LiteralResolution(this.kind, this.contextType);
diff --git a/pkg/analyzer/lib/src/dart/resolver/variable_declaration_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/variable_declaration_resolver.dart
index 10da629..68efd6c 100644
--- a/pkg/analyzer/lib/src/dart/resolver/variable_declaration_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/variable_declaration_resolver.dart
@@ -11,7 +11,6 @@
import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/error/codes.dart';
import 'package:analyzer/src/generated/resolver.dart';
-import 'package:meta/meta.dart';
/// Helper for resolving [VariableDeclaration]s.
class VariableDeclarationResolver {
@@ -19,8 +18,8 @@
final bool _strictInference;
VariableDeclarationResolver({
- @required ResolverVisitor resolver,
- @required bool strictInference,
+ required ResolverVisitor resolver,
+ required bool strictInference,
}) : _resolver = resolver,
_strictInference = strictInference;
@@ -40,7 +39,7 @@
return;
}
- var element = node.declaredElement;
+ var element = node.declaredElement!;
var isTopLevel =
element is FieldElement || element is TopLevelVariableElement;
@@ -55,7 +54,7 @@
initializer = node.initializer;
if (parent.type == null) {
- _setInferredType(element, initializer.staticType);
+ _setInferredType(element, initializer!.staticType!);
}
if (isTopLevel) {
@@ -70,7 +69,7 @@
// evaluate the const constructor).
if (element is ConstVariableElement) {
(element as ConstVariableElement).constantInitializer =
- ConstantAstCloner().cloneNode(initializer);
+ ConstantAstCloner().cloneNullableNode(initializer);
}
}
diff --git a/pkg/analyzer/lib/src/dart/resolver/yield_statement_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/yield_statement_resolver.dart
index 672ed6f..41678af 100644
--- a/pkg/analyzer/lib/src/dart/resolver/yield_statement_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/yield_statement_resolver.dart
@@ -11,17 +11,16 @@
import 'package:analyzer/src/dart/element/type_system.dart';
import 'package:analyzer/src/error/codes.dart';
import 'package:analyzer/src/generated/resolver.dart';
-import 'package:meta/meta.dart';
/// Helper for resolving [YieldStatement]s.
class YieldStatementResolver {
final ResolverVisitor _resolver;
YieldStatementResolver({
- @required ResolverVisitor resolver,
+ required ResolverVisitor resolver,
}) : _resolver = resolver;
- ExecutableElement get _enclosingFunction => _resolver.enclosingFunction;
+ ExecutableElement get _enclosingFunction => _resolver.enclosingFunction!;
ErrorReporter get _errorReporter => _resolver.errorReporter;
@@ -30,7 +29,7 @@
TypeSystemImpl get _typeSystem => _resolver.typeSystem;
void resolve(YieldStatement node) {
- if (_enclosingFunction?.isGenerator ?? false) {
+ if (_enclosingFunction.isGenerator) {
_resolve_generator(node);
} else {
_resolve_notGenerator(node);
@@ -73,7 +72,7 @@
var declaredReturnType = _enclosingFunction.returnType;
var expression = node.expression;
- var expressionType = expression.staticType;
+ var expressionType = expression.staticType!;
DartType impliedReturnType;
if (isYieldEach) {
@@ -84,15 +83,13 @@
impliedReturnType = _typeProvider.streamType2(expressionType);
}
- if (declaredReturnType != null) {
- if (!_typeSystem.isAssignableTo2(impliedReturnType, declaredReturnType)) {
- _errorReporter.reportErrorForNode(
- CompileTimeErrorCode.YIELD_OF_INVALID_TYPE,
- expression,
- [impliedReturnType, declaredReturnType],
- );
- return;
- }
+ if (!_typeSystem.isAssignableTo2(impliedReturnType, declaredReturnType)) {
+ _errorReporter.reportErrorForNode(
+ CompileTimeErrorCode.YIELD_OF_INVALID_TYPE,
+ expression,
+ [impliedReturnType, declaredReturnType],
+ );
+ return;
}
if (isYieldEach) {
diff --git a/pkg/analyzer/lib/src/dart/scanner/scanner.dart b/pkg/analyzer/lib/src/dart/scanner/scanner.dart
index 48aab67..2e85266 100644
--- a/pkg/analyzer/lib/src/dart/scanner/scanner.dart
+++ b/pkg/analyzer/lib/src/dart/scanner/scanner.dart
@@ -15,7 +15,6 @@
import 'package:analyzer/src/dart/scanner/reader.dart';
import 'package:analyzer/src/error/codes.dart';
import 'package:analyzer/src/generated/source.dart';
-import 'package:meta/meta.dart';
import 'package:pub_semver/pub_semver.dart';
export 'package:analyzer/src/dart/error/syntactic_errors.dart';
@@ -44,14 +43,14 @@
/// If the file has [fasta.LanguageVersionToken], it is allowed to use the
/// language version greater than the one specified in the package config.
/// So, we need to know the full feature set for the context.
- FeatureSet _featureSetForOverriding;
+ late final FeatureSet _featureSetForOverriding;
/// The flag specifying whether documentation comments should be parsed.
bool _preserveComments = true;
final List<int> lineStarts = <int>[];
- /*late final*/ Token firstToken;
+ late final Token firstToken;
/// A flag indicating whether the scanner should recognize the `>>>` operator
/// and the `>>>=` operator.
@@ -65,9 +64,9 @@
/// Use [configureFeatures] rather than this field.
bool enableNonNullable = false;
- Version _overrideVersion;
+ Version? _overrideVersion;
- FeatureSet _featureSet;
+ late FeatureSet _featureSet;
/// Initialize a newly created scanner to scan characters from the given
/// [source]. The given character [reader] will be used to read the characters
@@ -79,7 +78,7 @@
contents: reader.getContents(), offset: reader.offset);
factory Scanner.fasta(Source source, AnalysisErrorListener errorListener,
- {String contents, int offset = -1}) {
+ {String? contents, int offset = -1}) {
return Scanner._(
source, contents ?? source.contents.data, offset, errorListener);
}
@@ -101,7 +100,7 @@
/// The language version override specified for this compilation unit using a
/// token like '// @dart = 2.7', or `null` if no override is specified.
- Version get overrideVersion => _overrideVersion;
+ Version? get overrideVersion => _overrideVersion;
set preserveComments(bool preserveComments) {
_preserveComments = preserveComments;
@@ -113,8 +112,8 @@
/// that callers are forced to use this API. Note that this would be a
/// breaking change.
void configureFeatures({
- @required FeatureSet featureSetForOverriding,
- @required FeatureSet featureSet,
+ required FeatureSet featureSetForOverriding,
+ required FeatureSet featureSet,
}) {
_featureSetForOverriding = featureSetForOverriding;
_featureSet = featureSet;
@@ -123,7 +122,7 @@
}
void reportError(
- ScannerErrorCode errorCode, int offset, List<Object> arguments) {
+ ScannerErrorCode errorCode, int offset, List<Object?>? arguments) {
_errorListener
.onError(AnalysisError(source, offset, 1, errorCode, arguments));
}
@@ -146,11 +145,7 @@
/// Set [reportScannerErrors] `true` when using the old parser.
Token tokenize({bool reportScannerErrors = true}) {
fasta.ScannerResult result = fasta.scanString(_contents,
- configuration: _featureSet != null
- ? buildConfig(_featureSet)
- : fasta.ScannerConfiguration(
- enableTripleShift: enableGtGtGt,
- enableNonNullable: enableNonNullable),
+ configuration: buildConfig(_featureSet),
includeComments: _preserveComments,
languageVersionChanged: _languageVersionChanged);
@@ -170,8 +165,8 @@
// The default recovery strategy used by scanString
// places all error tokens at the head of the stream.
while (token.type == TokenType.BAD_INPUT) {
- translateErrorToken(token, reportError);
- token = token.next;
+ translateErrorToken(token as fasta.ErrorToken, reportError);
+ token = token.next!;
}
}
@@ -181,7 +176,7 @@
final int delta = _readerOffset + 1;
do {
token.offset += delta;
- token = token.next;
+ token = token.next!;
} while (!token.isEof);
}
return firstToken;
@@ -194,7 +189,9 @@
if (overrideMajor < 0 || overrideMinor < 0) {
return;
}
- _overrideVersion = Version(overrideMajor, overrideMinor, 0);
+
+ var overrideVersion = Version(overrideMajor, overrideMinor, 0);
+ _overrideVersion = overrideVersion;
var latestVersion = ExperimentStatus.currentVersion;
if (overrideVersion > latestVersion) {
@@ -209,17 +206,15 @@
);
_overrideVersion = null;
} else {
- if (_featureSet != null) {
- _featureSet = _featureSetForOverriding.restrictToVersion(
- _overrideVersion,
- );
- scanner.configuration = buildConfig(_featureSet);
- }
+ _featureSet = _featureSetForOverriding.restrictToVersion(
+ overrideVersion,
+ );
+ scanner.configuration = buildConfig(_featureSet);
}
}
/// Return a ScannerConfiguration based upon the specified feature set.
- static fasta.ScannerConfiguration buildConfig(FeatureSet featureSet) =>
+ static fasta.ScannerConfiguration buildConfig(FeatureSet? featureSet) =>
featureSet == null
? fasta.ScannerConfiguration()
: fasta.ScannerConfiguration(
diff --git a/pkg/analyzer/lib/src/dart/sdk/sdk.dart b/pkg/analyzer/lib/src/dart/sdk/sdk.dart
index 8b55ebf..2a1a0ec 100644
--- a/pkg/analyzer/lib/src/dart/sdk/sdk.dart
+++ b/pkg/analyzer/lib/src/dart/sdk/sdk.dart
@@ -29,16 +29,16 @@
/// library map.
abstract class AbstractDartSdk implements DartSdk {
/// The resource provider used to access the file system.
- /*late final*/ ResourceProvider resourceProvider;
+ late final ResourceProvider resourceProvider;
/// A mapping from Dart library URI's to the library represented by that URI.
LibraryMap libraryMap = LibraryMap();
/// The mapping from Dart URI's to the corresponding sources.
- final Map<String, Source> _uriToSourceMap = HashMap<String, Source>();
+ final Map<String, Source?> _uriToSourceMap = HashMap<String, Source?>();
@override
- List<SdkLibrary> get sdkLibraries => libraryMap.sdkLibraries;
+ List<SdkLibraryImpl> get sdkLibraries => libraryMap.sdkLibraries;
/// Return the path separator used by the resource provider.
String get separator => resourceProvider.pathContext.separator;
@@ -66,10 +66,10 @@
}
@override
- Source fromFileUri(Uri uri) {
+ Source? fromFileUri(Uri uri) {
File file =
resourceProvider.getFile(resourceProvider.pathContext.fromUri(uri));
- String path = _getPath(file);
+ String? path = _getPath(file);
if (path == null) {
return null;
}
@@ -83,12 +83,12 @@
return null;
}
- String getRelativePathFromFile(File file);
+ String? getRelativePathFromFile(File file);
@override
- SdkLibrary getSdkLibrary(String dartUri) => libraryMap.getLibrary(dartUri);
+ SdkLibrary? getSdkLibrary(String dartUri) => libraryMap.getLibrary(dartUri);
- Source internalMapDartUri(String dartUri) {
+ Source? internalMapDartUri(String dartUri) {
// TODO(brianwilkerson) Figure out how to unify the implementations in the
// two subclasses.
String libraryName;
@@ -101,7 +101,7 @@
libraryName = dartUri;
relativePath = "";
}
- SdkLibrary library = getSdkLibrary(libraryName);
+ SdkLibrary? library = getSdkLibrary(libraryName);
if (library == null) {
return null;
}
@@ -130,8 +130,8 @@
}
@override
- Source mapDartUri(String /*!*/ dartUri) {
- Source source = _uriToSourceMap[dartUri];
+ Source? mapDartUri(String dartUri) {
+ Source? source = _uriToSourceMap[dartUri];
if (source == null) {
source = internalMapDartUri(dartUri);
_uriToSourceMap[dartUri] = source;
@@ -139,21 +139,21 @@
return source;
}
- String _getPath(File file) {
+ String? _getPath(File file) {
List<SdkLibrary> libraries = libraryMap.sdkLibraries;
int length = libraries.length;
- List<String> paths = List.filled(length, null);
- String filePath = getRelativePathFromFile(file);
+ String? filePath = getRelativePathFromFile(file);
if (filePath == null) {
return null;
}
+ List<String> paths = <String>[];
for (int i = 0; i < length; i++) {
SdkLibrary library = libraries[i];
String libraryPath = library.path.replaceAll('/', separator);
if (filePath == libraryPath) {
return library.shortName;
}
- paths[i] = libraryPath;
+ paths.add(libraryPath);
}
for (int i = 0; i < length; i++) {
SdkLibrary library = libraries[i];
@@ -178,7 +178,7 @@
static const String _EMBEDDED_LIB_MAP_KEY = 'embedded_libs';
- Version _languageVersion;
+ late final Version _languageVersion;
final Map<String, String> _urlMappings = HashMap<String, String>();
@@ -186,8 +186,8 @@
/// https://github.com/dart-lang/sdk/issues/42890
EmbedderSdk(
ResourceProvider resourceProvider,
- Map<Folder, YamlMap> embedderYamls, {
- Version languageVersion,
+ Map<Folder, YamlMap>? embedderYamls, {
+ Version? languageVersion,
}) {
this.resourceProvider = resourceProvider;
_languageVersion =
@@ -196,11 +196,11 @@
}
@override
- String get allowedExperimentsJson {
+ String? get allowedExperimentsJson {
var coreSource = mapDartUri('dart:core');
if (coreSource != null) {
var coreFile = resourceProvider.getFile(coreSource.fullName);
- var embeddedFolder = coreFile.parent.parent;
+ var embeddedFolder = coreFile.parent!.parent!;
try {
return embeddedFolder
.getChildAssumingFolder('_internal')
@@ -225,7 +225,7 @@
String getRelativePathFromFile(File file) => file.path;
@override
- Source internalMapDartUri(String dartUri) {
+ Source? internalMapDartUri(String dartUri) {
String libraryName;
String relativePath;
int index = dartUri.indexOf('/');
@@ -236,7 +236,7 @@
libraryName = dartUri;
relativePath = "";
}
- SdkLibrary library = getSdkLibrary(libraryName);
+ SdkLibrary? library = getSdkLibrary(libraryName);
if (library == null) {
return null;
}
@@ -351,17 +351,17 @@
final Folder _sdkDirectory;
/// The directory within the SDK directory that contains the libraries.
- /*late final*/ Folder _libraryDirectory;
+ Folder? _libraryDirectory;
/// The revision number of this SDK, or `"0"` if the revision number cannot be
/// discovered.
- /*late final*/ String _sdkVersion;
+ String? _sdkVersion;
/// The cached language version of this SDK.
- /*late final*/ Version _languageVersion;
+ Version? _languageVersion;
/// The file containing the pub executable.
- /*late final*/ File _pubExecutable;
+ File? _pubExecutable;
/// Initialize a newly created SDK to represent the Dart SDK installed in the
/// [sdkDirectory].
@@ -373,15 +373,11 @@
@override
String get allowedExperimentsJson {
- try {
- return _sdkDirectory
- .getChildAssumingFolder('lib')
- .getChildAssumingFolder('_internal')
- .getChildAssumingFile('allowed_experiments.json')
- .readAsStringSync();
- } catch (_) {
- return null;
- }
+ return _sdkDirectory
+ .getChildAssumingFolder('lib')
+ .getChildAssumingFolder('_internal')
+ .getChildAssumingFile('allowed_experiments.json')
+ .readAsStringSync();
}
/// Return the directory containing the SDK.
@@ -400,7 +396,7 @@
_languageVersion = languageVersionFromSdkVersion(sdkVersionStr);
}
- return _languageVersion;
+ return _languageVersion!;
}
/// Return the directory within the SDK directory that contains the libraries.
@@ -424,19 +420,16 @@
@override
String get sdkVersion {
if (_sdkVersion == null) {
- _sdkVersion = DartSdk.DEFAULT_VERSION;
File revisionFile =
_sdkDirectory.getChildAssumingFile(_VERSION_FILE_NAME);
try {
String revision = revisionFile.readAsStringSync();
- if (revision != null) {
- _sdkVersion = revision.trim();
- }
+ _sdkVersion = revision.trim();
} on FileSystemException {
- // Fall through to return the default.
+ return _sdkVersion = DartSdk.DEFAULT_VERSION;
}
}
- return _sdkVersion;
+ return _sdkVersion!;
}
/// Determine the search order for trying to locate the [_LIBRARIES_FILE].
@@ -460,7 +453,7 @@
}
@override
- String getRelativePathFromFile(File file) {
+ String? getRelativePathFromFile(File file) {
String filePath = file.path;
String libPath = libraryDirectory.path;
if (!filePath.startsWith("$libPath$separator")) {
@@ -473,13 +466,14 @@
/// Return the initialized library map.
LibraryMap initialLibraryMap() {
List<String> searchedPaths = <String>[];
- /*late*/ StackTrace lastStackTrace;
- /*late*/ Object lastException;
+ late StackTrace lastStackTrace;
+ late Object lastException;
for (File librariesFile in _libraryMapLocations) {
try {
String contents = librariesFile.readAsStringSync();
return SdkLibrariesReader().readFromFile(librariesFile, contents);
} catch (exception, stackTrace) {
+ print('[exception: $exception][stackTrace: $stackTrace]');
searchedPaths.add(librariesFile.path);
lastException = exception;
lastStackTrace = stackTrace;
@@ -497,7 +491,7 @@
}
@override
- Source internalMapDartUri(String dartUri) {
+ Source? internalMapDartUri(String dartUri) {
String libraryName;
String relativePath;
int index = dartUri.indexOf('/');
@@ -508,14 +502,14 @@
libraryName = dartUri;
relativePath = "";
}
- SdkLibrary library = getSdkLibrary(libraryName);
+ SdkLibrary? library = getSdkLibrary(libraryName);
if (library == null) {
return null;
}
try {
File file = libraryDirectory.getChildAssumingFile(library.path);
if (relativePath.isNotEmpty) {
- File relativeFile = file.parent.getChildAssumingFile(relativePath);
+ File relativeFile = file.parent!.getChildAssumingFile(relativePath);
if (relativeFile.path == file.path) {
// The relative file is the library, so return a Source for the
// library rather than the part format.
@@ -568,6 +562,7 @@
content: libraryFileContents,
featureSet: featureSet,
throwIfDiagnostics: false,
+ path: source.fullName,
);
var unit = parseResult.unit;
diff --git a/pkg/analyzer/lib/src/dartdoc/dartdoc_directive_info.dart b/pkg/analyzer/lib/src/dartdoc/dartdoc_directive_info.dart
index 79be2df..2bcb023 100644
--- a/pkg/analyzer/lib/src/dartdoc/dartdoc_directive_info.dart
+++ b/pkg/analyzer/lib/src/dartdoc/dartdoc_directive_info.dart
@@ -46,8 +46,8 @@
/// there is one.
void extractTemplate(String comment) {
for (Match match in templateRegExp.allMatches(comment)) {
- String name = match.group(1).trim();
- String body = match.group(2).trim();
+ String name = match.group(1)!.trim();
+ String body = match.group(2)!.trim();
templateMap[name] = _stripDelimiters(body).join('\n');
}
}
@@ -62,10 +62,10 @@
List<String> lines = _stripDelimiters(comment);
for (int i = lines.length - 1; i >= 0; i--) {
String line = lines[i];
- Match match = macroRegExp.firstMatch(line);
+ var match = macroRegExp.firstMatch(line);
if (match != null) {
- String name = match.group(1);
- String value = templateMap[name];
+ var name = match.group(1)!;
+ var value = templateMap[name];
if (value != null) {
lines[i] = value;
}
@@ -74,7 +74,7 @@
match = videoRegExp.firstMatch(line);
if (match != null) {
- String uri = match.group(2);
+ var uri = match.group(2);
if (uri != null && uri.isNotEmpty) {
String label = uri;
if (label.startsWith('https://')) {
@@ -90,9 +90,6 @@
/// Remove the delimiters from the given [comment].
List<String> _stripDelimiters(String comment) {
- if (comment == null) {
- return null;
- }
//
// Remove /** */.
//
diff --git a/pkg/analyzer/lib/src/diagnostic/diagnostic.dart b/pkg/analyzer/lib/src/diagnostic/diagnostic.dart
index d45ad279..aeeb56e 100644
--- a/pkg/analyzer/lib/src/diagnostic/diagnostic.dart
+++ b/pkg/analyzer/lib/src/diagnostic/diagnostic.dart
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/diagnostic/diagnostic.dart';
-import 'package:meta/meta.dart';
/// A concrete implementation of a diagnostic message.
class DiagnosticMessageImpl implements DiagnosticMessage {
@@ -23,8 +22,8 @@
/// the file at the given [filePath] at the given [offset] and with the given
/// [length].
DiagnosticMessageImpl(
- {@required this.filePath,
- @required this.length,
- @required this.message,
- @required this.offset});
+ {required this.filePath,
+ required this.length,
+ required this.message,
+ required this.offset});
}
diff --git a/pkg/analyzer/lib/src/diagnostic/diagnostic_factory.dart b/pkg/analyzer/lib/src/diagnostic/diagnostic_factory.dart
index 14c09b7..45533a1 100644
--- a/pkg/analyzer/lib/src/diagnostic/diagnostic_factory.dart
+++ b/pkg/analyzer/lib/src/diagnostic/diagnostic_factory.dart
@@ -7,7 +7,6 @@
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/diagnostic/diagnostic.dart';
import 'package:analyzer/error/error.dart';
-import 'package:analyzer/source/line_info.dart';
import 'package:analyzer/src/diagnostic/diagnostic.dart';
import 'package:analyzer/src/error/codes.dart';
import 'package:analyzer/src/generated/source.dart';
@@ -71,14 +70,14 @@
/// before it was declared.
AnalysisError referencedBeforeDeclaration(
Source source, Identifier identifier,
- {Element element}) {
+ {Element? element}) {
String name = identifier.name;
- Element staticElement = element ?? identifier.staticElement;
- List<DiagnosticMessage> contextMessages;
+ Element staticElement = element ?? identifier.staticElement!;
+ List<DiagnosticMessage>? contextMessages;
int declarationOffset = staticElement.nameOffset;
- if (declarationOffset >= 0 && staticElement != null) {
- CompilationUnitElement unit = staticElement.thisOrAncestorOfType();
- CharacterLocation location = unit.lineInfo.getLocation(declarationOffset);
+ if (declarationOffset >= 0) {
+ CompilationUnitElement unit = staticElement.thisOrAncestorOfType()!;
+ var location = unit.lineInfo!.getLocation(declarationOffset);
contextMessages = [
DiagnosticMessageImpl(
filePath: source.fullName,
diff --git a/pkg/analyzer/lib/src/error.dart b/pkg/analyzer/lib/src/error.dart
index 1de5c30..3d7c559 100644
--- a/pkg/analyzer/lib/src/error.dart
+++ b/pkg/analyzer/lib/src/error.dart
@@ -22,7 +22,7 @@
// Print a less friendly string representation to ensure that
// error.source.contents is not executed, as .contents it isn't async
String sourceName = error.source.shortName;
- sourceName ??= '<unknown source>';
+ // sourceName ??= '<unknown source>';
builder.write("Error in $sourceName: ${error.message}");
// var content = error.source.contents.data;
diff --git a/pkg/analyzer/lib/src/error/analyzer_error_code.dart b/pkg/analyzer/lib/src/error/analyzer_error_code.dart
index a3543a2..2b07046 100644
--- a/pkg/analyzer/lib/src/error/analyzer_error_code.dart
+++ b/pkg/analyzer/lib/src/error/analyzer_error_code.dart
@@ -3,18 +3,17 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/error/error.dart';
-import 'package:meta/meta.dart';
/// A superclass for error codes that can have a url associated with them.
abstract class AnalyzerErrorCode extends ErrorCode {
/// Initialize a newly created error code.
const AnalyzerErrorCode({
- String correction,
+ String? correction,
bool hasPublishedDocs = false,
bool isUnresolvedIdentifier = false,
- @required String message,
- @required String name,
- @required String uniqueName,
+ required String message,
+ required String name,
+ required String uniqueName,
}) : super(
correction: correction,
hasPublishedDocs: hasPublishedDocs,
diff --git a/pkg/analyzer/lib/src/error/assignment_verifier.dart b/pkg/analyzer/lib/src/error/assignment_verifier.dart
index b3f762b..4b64931 100644
--- a/pkg/analyzer/lib/src/error/assignment_verifier.dart
+++ b/pkg/analyzer/lib/src/error/assignment_verifier.dart
@@ -8,7 +8,6 @@
import 'package:analyzer/error/listener.dart';
import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/error/codes.dart';
-import 'package:meta/meta.dart';
/// Helper for verifying resolution of assignments, in form of explicit
/// an [AssignmentExpression], or a [PrefixExpression] or [PostfixExpression]
@@ -30,10 +29,10 @@
/// it is not `null`, we report [CompileTimeErrorCode.UNDEFINED_SETTER]
/// instead of a more generic [CompileTimeErrorCode.UNDEFINED_IDENTIFIER].
void verify({
- @required SimpleIdentifier node,
- @required Element requested,
- @required Element recovery,
- @required Object receiverTypeObject,
+ required SimpleIdentifier node,
+ required Element? requested,
+ required Element? recovery,
+ required Object? receiverTypeObject,
}) {
if (requested != null) {
if (requested is VariableElement) {
diff --git a/pkg/analyzer/lib/src/error/best_practices_verifier.dart b/pkg/analyzer/lib/src/error/best_practices_verifier.dart
index cbb6ab5..3c842d0 100644
--- a/pkg/analyzer/lib/src/error/best_practices_verifier.dart
+++ b/pkg/analyzer/lib/src/error/best_practices_verifier.dart
@@ -11,7 +11,6 @@
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/nullability_suffix.dart';
import 'package:analyzer/dart/element/type.dart';
-import 'package:analyzer/dart/element/type_provider.dart';
import 'package:analyzer/error/listener.dart';
import 'package:analyzer/src/dart/ast/extensions.dart';
import 'package:analyzer/src/dart/element/element.dart';
@@ -19,6 +18,7 @@
import 'package:analyzer/src/dart/element/inheritance_manager3.dart';
import 'package:analyzer/src/dart/element/member.dart' show ExecutableMember;
import 'package:analyzer/src/dart/element/type.dart';
+import 'package:analyzer/src/dart/element/type_provider.dart';
import 'package:analyzer/src/dart/element/type_system.dart';
import 'package:analyzer/src/dart/resolver/body_inference_context.dart';
import 'package:analyzer/src/dart/resolver/exit_detector.dart';
@@ -46,7 +46,7 @@
/// The class containing the AST nodes being visited, or `null` if we are not
/// in the scope of a class.
- ClassElementImpl _enclosingClass;
+ ClassElementImpl? _enclosingClass;
/// A flag indicating whether a surrounding member is annotated as
/// `@doNotStore`.
@@ -76,10 +76,10 @@
final CatchErrorVerifier _catchErrorVerifier;
/// The [WorkspacePackage] in which [_currentLibrary] is declared.
- final WorkspacePackage _workspacePackage;
+ final WorkspacePackage? _workspacePackage;
/// The [LinterContext] used for possible const calculations.
- LinterContext _linterContext;
+ late final LinterContext _linterContext;
/// Is `true` if the library being analyzed is non-nullable by default.
final bool _isNonNullableByDefault;
@@ -92,16 +92,16 @@
/// @param errorReporter the error reporter
BestPracticesVerifier(
this._errorReporter,
- TypeProvider typeProvider,
+ TypeProviderImpl typeProvider,
this._currentLibrary,
CompilationUnit unit,
String content, {
- @required TypeSystemImpl typeSystem,
- @required InheritanceManager3 inheritanceManager,
- @required DeclaredVariables declaredVariables,
- @required AnalysisOptions analysisOptions,
- @required WorkspacePackage workspacePackage,
- }) : _nullType = typeProvider.nullType,
+ required TypeSystemImpl typeSystem,
+ required InheritanceManager3 inheritanceManager,
+ required DeclaredVariables declaredVariables,
+ required AnalysisOptions analysisOptions,
+ required WorkspacePackage? workspacePackage,
+ }) : _nullType = typeProvider.nullType,
_typeSystem = typeSystem,
_isNonNullableByDefault = typeSystem.isNonNullableByDefault,
_strictInference =
@@ -119,7 +119,7 @@
_inDoNotStoreMember = _currentLibrary.hasDoNotStore;
_linterContext = LinterContextImpl(
- null /* allUnits */,
+ [],
LinterContextUnit(content, unit),
declaredVariables,
typeProvider,
@@ -132,12 +132,12 @@
bool get _inPublicPackageApi {
return _workspacePackage != null &&
- _workspacePackage.sourceIsInPublicApi(_currentLibrary.source);
+ _workspacePackage!.sourceIsInPublicApi(_currentLibrary.source);
}
@override
void visitAnnotation(Annotation node) {
- ElementAnnotation element = node.elementAnnotation;
+ var element = node.elementAnnotation;
if (element == null) {
return;
}
@@ -158,20 +158,22 @@
var parentElement = parent is Declaration ? parent.declaredElement : null;
if (parent is TopLevelVariableDeclaration) {
for (VariableDeclaration variable in parent.variables.variables) {
- if (Identifier.isPrivateName(variable.declaredElement.name)) {
+ var element = variable.declaredElement as TopLevelVariableElement;
+ if (Identifier.isPrivateName(element.name)) {
_errorReporter.reportErrorForNode(
HintCode.INVALID_INTERNAL_ANNOTATION, variable, []);
}
}
} else if (parent is FieldDeclaration) {
for (VariableDeclaration variable in parent.fields.variables) {
- if (Identifier.isPrivateName(variable.declaredElement.name)) {
+ var element = variable.declaredElement as FieldElement;
+ if (Identifier.isPrivateName(element.name)) {
_errorReporter.reportErrorForNode(
HintCode.INVALID_INTERNAL_ANNOTATION, variable, []);
}
}
} else if (parent is ConstructorDeclaration) {
- var class_ = parent.declaredElement.enclosingElement;
+ var class_ = parent.declaredElement!.enclosingElement;
if (class_.isPrivate || (parentElement?.isPrivate ?? false)) {
_errorReporter.reportErrorForNode(
HintCode.INVALID_INTERNAL_ANNOTATION, node, []);
@@ -184,8 +186,7 @@
.reportErrorForNode(HintCode.INVALID_INTERNAL_ANNOTATION, node, []);
}
} else if (element.isLiteral == true) {
- if (parent is! ConstructorDeclaration ||
- (parent as ConstructorDeclaration).constKeyword == null) {
+ if (parent is! ConstructorDeclaration || parent.constKeyword == null) {
_errorReporter
.reportErrorForNode(HintCode.INVALID_LITERAL_ANNOTATION, node, []);
}
@@ -195,7 +196,7 @@
_errorReporter.reportErrorForNode(
HintCode.INVALID_NON_VIRTUAL_ANNOTATION,
node,
- [node.element.name]);
+ [node.element!.name]);
}
} else if (parent is MethodDeclaration) {
if (parent.parent is ExtensionDeclaration ||
@@ -204,16 +205,18 @@
_errorReporter.reportErrorForNode(
HintCode.INVALID_NON_VIRTUAL_ANNOTATION,
node,
- [node.element.name]);
+ [node.element!.name]);
}
} else {
_errorReporter.reportErrorForNode(
- HintCode.INVALID_NON_VIRTUAL_ANNOTATION, node, [node.element.name]);
+ HintCode.INVALID_NON_VIRTUAL_ANNOTATION,
+ node,
+ [node.element!.name]);
}
} else if (element.isSealed == true) {
if (!(parent is ClassDeclaration || parent is ClassTypeAlias)) {
_errorReporter.reportErrorForNode(
- HintCode.INVALID_SEALED_ANNOTATION, node, [node.element.name]);
+ HintCode.INVALID_SEALED_ANNOTATION, node, [node.element!.name]);
}
} else if (element.isVisibleForTemplate == true ||
element.isVisibleForTesting == true) {
@@ -227,19 +230,21 @@
if (parent is TopLevelVariableDeclaration) {
for (VariableDeclaration variable in parent.variables.variables) {
- if (Identifier.isPrivateName(variable.declaredElement.name)) {
- reportInvalidAnnotation(variable.declaredElement);
+ var element = variable.declaredElement as TopLevelVariableElement;
+ if (Identifier.isPrivateName(element.name)) {
+ reportInvalidAnnotation(element);
}
}
} else if (parent is FieldDeclaration) {
for (VariableDeclaration variable in parent.fields.variables) {
- if (Identifier.isPrivateName(variable.declaredElement.name)) {
- reportInvalidAnnotation(variable.declaredElement);
+ var element = variable.declaredElement as FieldElement;
+ if (Identifier.isPrivateName(element.name)) {
+ reportInvalidAnnotation(element);
}
}
} else if (parent.declaredElement != null &&
- Identifier.isPrivateName(parent.declaredElement.name)) {
- reportInvalidAnnotation(parent.declaredElement);
+ Identifier.isPrivateName(parent.declaredElement!.name!)) {
+ reportInvalidAnnotation(parent.declaredElement!);
}
} else {
// Something other than a declaration was annotated. Whatever this is,
@@ -250,11 +255,11 @@
var kinds = _targetKindsFor(element);
if (kinds.isNotEmpty) {
if (!_isValidTarget(parent, kinds)) {
- var invokedElement = element.element;
+ var invokedElement = element.element!;
var name = invokedElement.name;
if (invokedElement is ConstructorElement) {
var className = invokedElement.enclosingElement.name;
- if (name.isEmpty) {
+ if (name!.isEmpty) {
name = className;
} else {
name = '$className.$name';
@@ -308,7 +313,7 @@
bool wasInDoNotStoreMember = _inDoNotStoreMember;
_deprecatedVerifier.pushInDeprecatedValue(element.hasDeprecated);
- if (element != null && element.hasDoNotStore) {
+ if (element.hasDoNotStore) {
_inDoNotStoreMember = true;
}
@@ -335,17 +340,17 @@
@override
void visitConstructorDeclaration(ConstructorDeclaration node) {
- if (!_isNonNullableByDefault && node.declaredElement.isFactory) {
+ if (!_isNonNullableByDefault && node.declaredElement!.isFactory) {
if (node.body is BlockFunctionBody) {
// Check the block for a return statement, if not, create the hint.
- if (!ExitDetector.exits(node.body)) {
+ if (!ExitDetector.exits(node.body!)) {
_errorReporter.reportErrorForNode(
HintCode.MISSING_RETURN, node, [node.returnType.name]);
}
}
}
_checkStrictInferenceInParameters(node.parameters,
- body: node.body, initializers: node.initializers);
+ body: node.body!, initializers: node.initializers);
super.visitConstructorDeclaration(node);
}
@@ -375,11 +380,11 @@
try {
super.visitFieldDeclaration(node);
for (var field in node.fields.variables) {
- ExecutableElement getOverriddenPropertyAccessor() {
+ ExecutableElement? getOverriddenPropertyAccessor() {
final element = field.declaredElement;
if (element is PropertyAccessorElement || element is FieldElement) {
- Name name = Name(_currentLibrary.source.uri, element.name);
- Element enclosingElement = element.enclosingElement;
+ Name name = Name(_currentLibrary.source.uri, element!.name!);
+ Element enclosingElement = element.enclosingElement!;
if (enclosingElement is ClassElement) {
var overridden = _inheritanceManager
.getMember2(enclosingElement, name, forSuper: true);
@@ -401,7 +406,7 @@
_errorReporter.reportErrorForNode(
HintCode.INVALID_OVERRIDE_OF_NON_VIRTUAL_MEMBER,
field.name,
- [field.name, overriddenElement.enclosingElement.name]);
+ [field.name, overriddenElement!.enclosingElement.name]);
}
_checkForAssignmentOfDoNotStore(field.initializer);
@@ -420,13 +425,13 @@
@override
void visitFunctionDeclaration(FunctionDeclaration node) {
bool wasInDoNotStoreMember = _inDoNotStoreMember;
- ExecutableElement element = node.declaredElement;
+ ExecutableElement element = node.declaredElement!;
_deprecatedVerifier.pushInDeprecatedValue(element.hasDeprecated);
- if (element != null && element.hasDoNotStore) {
+ if (element.hasDoNotStore) {
_inDoNotStoreMember = true;
}
try {
- _checkForMissingReturn(node.functionExpression.body, node);
+ _checkForMissingReturn(node.functionExpression.body!, node);
// Return types are inferred only on non-recursive local functions.
if (node.parent is CompilationUnit && !node.isSetter) {
@@ -451,9 +456,9 @@
@override
void visitFunctionExpression(FunctionExpression node) {
if (node.parent is! FunctionDeclaration) {
- _checkForMissingReturn(node.body, node);
+ _checkForMissingReturn(node.body!, node);
}
- DartType functionType = InferenceContext.getContext(node);
+ var functionType = InferenceContext.getContext(node);
if (functionType is! FunctionType) {
_checkStrictInferenceInParameters(node.parameters, body: node.body);
}
@@ -495,7 +500,7 @@
void visitGenericTypeAlias(GenericTypeAlias node) {
if (node.functionType != null) {
_checkStrictInferenceReturnType(
- node.functionType.returnType, node, node.name.name);
+ node.functionType!.returnType, node, node.name.name);
}
super.visitGenericTypeAlias(node);
}
@@ -503,7 +508,7 @@
@override
void visitImportDirective(ImportDirective node) {
_deprecatedVerifier.importDirective(node);
- ImportElement importElement = node.element;
+ var importElement = node.element;
if (importElement != null && importElement.isDeferred) {
_checkForLoadLibraryFunction(node, importElement);
}
@@ -534,28 +539,28 @@
@override
void visitMethodDeclaration(MethodDeclaration node) {
bool wasInDoNotStoreMember = _inDoNotStoreMember;
- ExecutableElement element = node.declaredElement;
- Element enclosingElement = element?.enclosingElement;
+ var element = node.declaredElement!;
+ var enclosingElement = element.enclosingElement;
- Name name = Name(_currentLibrary.source.uri, element?.name ?? '');
+ Name name = Name(_currentLibrary.source.uri, element.name);
bool elementIsOverride() =>
element is ClassMemberElement && enclosingElement is ClassElement
? _inheritanceManager.getOverridden2(enclosingElement, name) != null
: false;
- ExecutableElement getConcreteOverriddenElement() =>
+ ExecutableElement? getConcreteOverriddenElement() =>
element is ClassMemberElement && enclosingElement is ClassElement
? _inheritanceManager.getMember2(enclosingElement, name,
forSuper: true)
: null;
- ExecutableElement getOverriddenPropertyAccessor() =>
+ ExecutableElement? getOverriddenPropertyAccessor() =>
element is PropertyAccessorElement && enclosingElement is ClassElement
? _inheritanceManager.getMember2(enclosingElement, name,
forSuper: true)
: null;
_deprecatedVerifier.pushInDeprecatedValue(element.hasDeprecated);
- if (element != null && element.hasDoNotStore) {
+ if (element.hasDoNotStore) {
_inDoNotStoreMember = true;
}
try {
@@ -570,7 +575,7 @@
}
_checkStrictInferenceInParameters(node.parameters, body: node.body);
- ExecutableElement overriddenElement = getConcreteOverriddenElement();
+ var overriddenElement = getConcreteOverriddenElement();
if (overriddenElement == null && (node.isSetter || node.isGetter)) {
overriddenElement = getOverriddenPropertyAccessor();
}
@@ -579,7 +584,7 @@
_errorReporter.reportErrorForNode(
HintCode.INVALID_OVERRIDE_OF_NON_VIRTUAL_MEMBER,
node.name,
- [node.name, overriddenElement.enclosingElement.name]);
+ [node.name, overriddenElement!.enclosingElement.name]);
}
super.visitMethodDeclaration(node);
@@ -599,7 +604,7 @@
@override
void visitMixinDeclaration(MixinDeclaration node) {
- var element = node.declaredElement;
+ var element = node.declaredElement as ClassElementImpl;
_enclosingClass = element;
_invalidAccessVerifier._enclosingClass = _enclosingClass;
@@ -620,7 +625,7 @@
void visitPostfixExpression(PostfixExpression node) {
_deprecatedVerifier.postfixExpression(node);
if (node.operator.type == TokenType.BANG &&
- node.operand.staticType.isDartCoreNull) {
+ node.operand.staticType!.isDartCoreNull) {
_errorReporter.reportErrorForNode(HintCode.NULL_CHECK_ALWAYS_FAILS, node);
}
super.visitPostfixExpression(node);
@@ -697,12 +702,8 @@
bool _checkAllTypeChecks(IsExpression node) {
Expression expression = node.expression;
TypeAnnotation typeName = node.type;
- var lhsType = expression.staticType as TypeImpl;
var rhsType = typeName.type as TypeImpl;
- if (lhsType == null || rhsType == null) {
- return false;
- }
- String rhsNameStr = typeName is TypeName ? typeName.name.name : null;
+ var rhsNameStr = typeName is TypeName ? typeName.name.name : null;
// if x is dynamic
if (rhsType.isDynamic && rhsNameStr == Keyword.DYNAMIC.lexeme) {
if (node.notOperator == null) {
@@ -716,8 +717,8 @@
}
return true;
}
- Element rhsElement = rhsType.element;
- LibraryElement libraryElement = rhsElement?.library;
+ var rhsElement = rhsType.element;
+ var libraryElement = rhsElement?.library;
if (libraryElement != null && libraryElement.isDartCore) {
// `is Null` or `is! Null`
if (rhsNameStr == _NULL_TYPE_NAME) {
@@ -771,7 +772,7 @@
return false;
}
- void _checkForAssignmentOfDoNotStore(Expression expression) {
+ void _checkForAssignmentOfDoNotStore(Expression? expression) {
var expressionMap = _getSubExpressionsMarkedDoNotStore(expression);
for (var entry in expressionMap.entries) {
_errorReporter.reportErrorForNode(
@@ -795,20 +796,20 @@
}
// Return if the '/' operator is not defined in core, or if we don't know
// its static type
- MethodElement methodElement = node.staticElement;
+ var methodElement = node.staticElement;
if (methodElement == null) {
return false;
}
LibraryElement libraryElement = methodElement.library;
- if (libraryElement != null && !libraryElement.isDartCore) {
+ if (!libraryElement.isDartCore) {
return false;
}
// Report error if the (x/y) has toInt() invoked on it
- AstNode parent = node.parent;
+ var parent = node.parent;
if (parent is ParenthesizedExpression) {
ParenthesizedExpression parenthesizedExpression =
_wrapParenthesizedExpression(parent);
- AstNode grandParent = parenthesizedExpression.parent;
+ var grandParent = parenthesizedExpression.parent;
if (grandParent is MethodInvocation) {
if (_TO_INT_METHOD_NAME == grandParent.methodName.name &&
grandParent.argumentList.arguments.isEmpty) {
@@ -836,7 +837,8 @@
for (final expression in expressions) {
final constEvaluation = _linterContext.evaluateConstant(expression);
if (constEvaluation.errors.isEmpty) {
- if (!alreadySeen.add(constEvaluation.value)) {
+ var value = constEvaluation.value;
+ if (value != null && !alreadySeen.add(value)) {
var errorCode = node.isSet
? HintCode.EQUAL_ELEMENTS_IN_SET
: HintCode.EQUAL_KEYS_IN_MAP;
@@ -883,7 +885,7 @@
}
}
if (element.supertype != null) {
- return isOrInheritsImmutable(element.supertype.element, visited);
+ return isOrInheritsImmutable(element.supertype!.element, visited);
}
}
return false;
@@ -910,7 +912,7 @@
if (element.supertype != null) {
nonFinalFields = nonFinalFields.followedBy(
definedOrInheritedNonFinalInstanceFields(
- element.supertype.element, visited));
+ element.supertype!.element, visited));
}
}
return nonFinalFields;
@@ -964,7 +966,7 @@
[libraryElement.displayName]);
}
var exportNamespace =
- NamespaceBuilder().createExportNamespaceForDirective(node.element);
+ NamespaceBuilder().createExportNamespaceForDirective(node.element!);
exportNamespace.definedNames.forEach((String name, Element element) {
if (element.hasInternal) {
_errorReporter.reportErrorForNode(
@@ -993,7 +995,7 @@
void _checkForInvalidFactory(MethodDeclaration decl) {
// Check declaration.
// Note that null return types are expected to be flagged by other analyses.
- DartType returnType = decl.returnType?.type;
+ var returnType = decl.returnType?.type;
if (returnType is VoidType) {
_errorReporter.reportErrorForNode(HintCode.INVALID_FACTORY_METHOD_DECL,
decl.name, [decl.name.toString()]);
@@ -1009,7 +1011,7 @@
}
// `new Foo()` or `null`.
- bool factoryExpression(Expression expression) =>
+ bool factoryExpression(Expression? expression) =>
expression is InstanceCreationExpression || expression is NullLiteral;
if (body is ExpressionFunctionBody && factoryExpression(body.expression)) {
@@ -1037,7 +1039,7 @@
// ClassElement, but [_checkForInvalidSealedSuperclass] should only be
// called with a [ClassOrMixinDeclaration], or a [ClassTypeAlias]. The
// `declaredElement` of these specific classes is a [ClassElement].
- ClassElement element = node.declaredElement;
+ var element = node.declaredElement as ClassElement;
// TODO(srawlins): Perhaps replace this with a getter on Element, like
// `Element.hasOrInheritsSealed`?
for (InterfaceType supertype in element.allSupertypes) {
@@ -1077,14 +1079,14 @@
void checkLeftRight(HintCode errorCode) {
if (node.leftOperand is NullLiteral) {
- var rightType = node.rightOperand.staticType;
+ var rightType = node.rightOperand.staticType!;
if (_typeSystem.isStrictlyNonNullable(rightType)) {
reportStartEnd(errorCode, node.leftOperand, node.operator);
}
}
if (node.rightOperand is NullLiteral) {
- var leftType = node.leftOperand.staticType;
+ var leftType = node.leftOperand.staticType!;
if (_typeSystem.isStrictlyNonNullable(leftType)) {
reportStartEnd(errorCode, node.operator, node.rightOperand);
}
@@ -1102,7 +1104,7 @@
/// marked with [literal].
void _checkForLiteralConstructorUse(InstanceCreationExpression node) {
ConstructorName constructorName = node.constructorName;
- ConstructorElement constructor = constructorName.staticElement;
+ ConstructorElement? constructor = constructorName.staticElement;
if (constructor == null) {
return;
}
@@ -1134,7 +1136,7 @@
/// See [CompileTimeErrorCode.IMPORT_DEFERRED_LIBRARY_WITH_LOAD_FUNCTION].
bool _checkForLoadLibraryFunction(
ImportDirective node, ImportElement importElement) {
- LibraryElement importedLibrary = importElement.importedLibrary;
+ LibraryElement? importedLibrary = importElement.importedLibrary;
if (importedLibrary == null) {
return false;
}
@@ -1171,7 +1173,7 @@
return;
}
- var bodyContext = BodyInferenceContext.of(body);
+ var bodyContext = BodyInferenceContext.of(body)!;
// TODO(scheglov) Update InferenceContext to record any type, dynamic.
var returnType = bodyContext.contextType ?? DynamicTypeImpl.instance;
@@ -1207,7 +1209,7 @@
return;
}
- if (_typeSystem.isPotentiallyNullable(type.type)) {
+ if (_typeSystem.isPotentiallyNullable(type.type!)) {
_errorReporter.reportErrorForNode(
HintCode.NULLABLE_TYPE_IN_CATCH_CLAUSE,
type,
@@ -1216,7 +1218,7 @@
}
/// Produce several null-aware related hints.
- void _checkForNullAwareHints(Expression node, Token operator) {
+ void _checkForNullAwareHints(Expression node, Token? operator) {
if (_isNonNullableByDefault) {
return;
}
@@ -1290,14 +1292,15 @@
}
}
- void _checkForReturnOfDoNotStore(Expression expression) {
+ void _checkForReturnOfDoNotStore(Expression? expression) {
if (_inDoNotStoreMember) {
return;
}
var expressionMap = _getSubExpressionsMarkedDoNotStore(expression);
if (expressionMap.isNotEmpty) {
- Declaration parent = expression.thisOrAncestorMatching(
- (e) => e is FunctionDeclaration || e is MethodDeclaration);
+ var parent = expression!.thisOrAncestorMatching(
+ (e) => e is FunctionDeclaration || e is MethodDeclaration)
+ as Declaration?;
if (parent == null) {
return;
}
@@ -1305,7 +1308,7 @@
_errorReporter.reportErrorForNode(
HintCode.RETURN_OF_DO_NOT_STORE,
entry.key,
- [entry.value.name, parent.declaredElement.displayName],
+ [entry.value.name, parent.declaredElement!.displayName],
);
}
}
@@ -1320,14 +1323,14 @@
if (node.name.name != FunctionElement.NO_SUCH_METHOD_METHOD_NAME) {
return false;
}
- bool isNonObjectNoSuchMethodInvocation(Expression invocation) {
+ bool isNonObjectNoSuchMethodInvocation(Expression? invocation) {
if (invocation is MethodInvocation &&
invocation.target is SuperExpression &&
invocation.argumentList.arguments.length == 1) {
SimpleIdentifier name = invocation.methodName;
if (name.name == FunctionElement.NO_SUCH_METHOD_METHOD_NAME) {
- Element methodElement = name.staticElement;
- Element classElement = methodElement?.enclosingElement;
+ var methodElement = name.staticElement;
+ var classElement = methodElement?.enclosingElement;
return methodElement is MethodElement &&
classElement is ClassElement &&
!classElement.isDartCoreObject;
@@ -1365,7 +1368,7 @@
requiredParameters.where((p) => p.isPositional);
final namedParamsWithRequiredAndDefault = requiredParameters
.where((p) => p.isNamed)
- .where((p) => p.declaredElement.defaultValueCode != null);
+ .where((p) => p.declaredElement!.defaultValueCode != null);
for (final param in nonNamedParamsWithRequired.where((p) => p.isOptional)) {
_errorReporter.reportErrorForNode(
HintCode.INVALID_REQUIRED_OPTIONAL_POSITIONAL_PARAM,
@@ -1391,9 +1394,9 @@
/// reported. If [initializers] and [body] are both null, the parameters are
/// assumed to originate from a typedef, function-typed parameter, or function
/// which is abstract or external.
- void _checkStrictInferenceInParameters(FormalParameterList parameters,
- {List<ConstructorInitializer> initializers, FunctionBody body}) {
- _UsedParameterVisitor usedParameterVisitor;
+ void _checkStrictInferenceInParameters(FormalParameterList? parameters,
+ {List<ConstructorInitializer>? initializers, FunctionBody? body}) {
+ _UsedParameterVisitor? usedParameterVisitor;
bool isParameterReferenced(SimpleFormalParameter parameter) {
if ((body == null || body is EmptyFunctionBody) && initializers == null) {
@@ -1405,19 +1408,19 @@
// Visit the function body and initializers once to determine whether
// each of the parameters is referenced.
usedParameterVisitor = _UsedParameterVisitor(
- parameters.parameters.map((p) => p.declaredElement).toSet());
- body?.accept(usedParameterVisitor);
- for (var initializer in initializers ?? []) {
- initializer.accept(usedParameterVisitor);
+ parameters!.parameters.map((p) => p.declaredElement!).toSet());
+ body?.accept(usedParameterVisitor!);
+ for (var initializer in initializers ?? <ConstructorInitializer>[]) {
+ initializer.accept(usedParameterVisitor!);
}
}
- return usedParameterVisitor.isUsed(parameter.declaredElement);
+ return usedParameterVisitor!.isUsed(parameter.declaredElement!);
}
void checkParameterTypeIsKnown(SimpleFormalParameter parameter) {
if (parameter.type == null && isParameterReferenced(parameter)) {
- ParameterElement element = parameter.declaredElement;
+ ParameterElement element = parameter.declaredElement!;
_errorReporter.reportErrorForNode(
HintCode.INFERENCE_FAILURE_ON_UNTYPED_PARAMETER,
parameter,
@@ -1431,8 +1434,9 @@
if (parameter is SimpleFormalParameter) {
checkParameterTypeIsKnown(parameter);
} else if (parameter is DefaultFormalParameter) {
- if (parameter.parameter is SimpleFormalParameter) {
- checkParameterTypeIsKnown(parameter.parameter);
+ var nonDefault = parameter.parameter;
+ if (nonDefault is SimpleFormalParameter) {
+ checkParameterTypeIsKnown(nonDefault);
}
}
}
@@ -1441,7 +1445,7 @@
/// In "strict-inference" mode, check that [returnType] is specified.
void _checkStrictInferenceReturnType(
- AstNode returnType, AstNode reportNode, String displayName) {
+ AstNode? returnType, AstNode reportNode, String displayName) {
if (!_strictInference) {
return;
}
@@ -1456,11 +1460,11 @@
/// Return subexpressions that are marked `@doNotStore`, as a map so that
/// corresponding elements can be used in the diagnostic message.
Map<Expression, Element> _getSubExpressionsMarkedDoNotStore(
- Expression expression,
- {Map<Expression, Element> addTo}) {
+ Expression? expression,
+ {Map<Expression, Element>? addTo}) {
var expressions = addTo ?? <Expression, Element>{};
- Element element;
+ Element? element;
if (expression is PropertyAccess) {
element = expression.propertyName.staticElement;
// Tear-off.
@@ -1492,23 +1496,23 @@
}
}
if (element is PropertyAccessorElement && element.isSynthetic) {
- element = (element as PropertyAccessorElement).variable;
+ element = element.variable;
}
if (element != null && element.hasOrInheritsDoNotStore) {
- expressions[expression] = element;
+ expressions[expression!] = element;
}
return expressions;
}
- bool _isLibraryInWorkspacePackage(LibraryElement library) {
+ bool _isLibraryInWorkspacePackage(LibraryElement? library) {
if (_workspacePackage == null || library == null) {
// Better to not make a big claim that they _are_ in the same package,
// if we were unable to determine what package [_currentLibrary] is in.
return false;
}
- return _workspacePackage.contains(library.source);
+ return _workspacePackage!.contains(library.source);
}
/// Return `true` if it is valid to have an annotation on the given [target]
@@ -1559,7 +1563,7 @@
/// Return the target kinds defined for the given [annotation].
Set<TargetKind> _targetKindsFor(ElementAnnotation annotation) {
var element = annotation.element;
- ClassElement classElement;
+ ClassElement? classElement;
if (element is PropertyAccessorElement) {
if (element.isGetter) {
var type = element.returnType;
@@ -1575,10 +1579,10 @@
}
for (var annotation in classElement.metadata) {
if (annotation.isTarget) {
- var value = annotation.computeConstantValue();
+ var value = annotation.computeConstantValue()!;
var kinds = <TargetKind>{};
- for (var kindObject in value.getField('kinds').toSetValue()) {
- var index = kindObject.getField('index').toIntValue();
+ for (var kindObject in value.getField('kinds')!.toSetValue()!) {
+ var index = kindObject.getField('index')!.toIntValue()!;
kinds.add(TargetKind.values[index]);
}
return kinds;
@@ -1593,8 +1597,8 @@
/// Returns `true` if and only if an unnecessary cast hint should be generated
/// on [node]. See [HintCode.UNNECESSARY_CAST].
static bool isUnnecessaryCast(AsExpression node, TypeSystemImpl typeSystem) {
- var leftType = node.expression.staticType;
- var rightType = node.type.type;
+ var leftType = node.expression.staticType!;
+ var rightType = node.type.type!;
// `dynamicValue as SomeType` is a valid use case.
if (leftType.isDynamic) {
@@ -1626,13 +1630,13 @@
: parent.thenExpression;
var currentType = typeSystem.leastUpperBound(
- node.staticType,
- other.staticType,
+ node.staticType!,
+ other.staticType!,
);
var typeWithoutCast = typeSystem.leastUpperBound(
- node.expression.staticType,
- other.staticType,
+ node.expression.staticType!,
+ other.staticType!,
);
if (typeWithoutCast != currentType) {
@@ -1648,7 +1652,7 @@
return identifier?.name ?? '';
}
- static bool _hasNonVirtualAnnotation(ExecutableElement element) {
+ static bool _hasNonVirtualAnnotation(ExecutableElement? element) {
if (element == null) {
return false;
}
@@ -1670,7 +1674,7 @@
/// expression, that does not have a parenthesized expression parent
static ParenthesizedExpression _wrapParenthesizedExpression(
ParenthesizedExpression parenthesizedExpression) {
- AstNode parent = parenthesizedExpression.parent;
+ var parent = parenthesizedExpression.parent;
if (parent is ParenthesizedExpression) {
return _wrapParenthesizedExpression(parent);
}
@@ -1689,12 +1693,12 @@
final ErrorReporter _errorReporter;
final LibraryElement _library;
- final WorkspacePackage _workspacePackage;
+ final WorkspacePackage? _workspacePackage;
- bool _inTemplateSource;
- bool _inTestDirectory;
+ late final bool _inTemplateSource;
+ late final bool _inTestDirectory;
- ClassElement _enclosingClass;
+ ClassElement? _enclosingClass;
_InvalidAccessVerifier(
this._errorReporter, this._library, this._workspacePackage) {
@@ -1723,11 +1727,11 @@
// This is the same logic used in [checkForDeprecatedMemberUseAtIdentifier]
// to avoid reporting an error twice for named constructors.
- AstNode parent = identifier.parent;
+ var parent = identifier.parent;
if (parent is ConstructorName && identical(identifier, parent.name)) {
return;
}
- AstNode grandparent = parent?.parent;
+ var grandparent = parent?.parent;
var element = grandparent is ConstructorName
? grandparent.staticElement
@@ -1748,7 +1752,7 @@
void verifyImport(ImportDirective node) {
var element = node.uriElement;
if (_hasInternal(element) &&
- !_isLibraryInWorkspacePackage(element.library)) {
+ !_isLibraryInWorkspacePackage(element!.library)) {
_errorReporter.reportErrorForNode(HintCode.INVALID_USE_OF_INTERNAL_MEMBER,
node, [node.uri.stringValue]);
}
@@ -1761,7 +1765,7 @@
}
var element = node.staticElement;
if (_hasInternal(element) &&
- !_isLibraryInWorkspacePackage(element.library)) {
+ !_isLibraryInWorkspacePackage(element!.library)) {
_errorReporter.reportErrorForNode(
HintCode.INVALID_USE_OF_INTERNAL_MEMBER, node, [element.name]);
}
@@ -1793,7 +1797,7 @@
SimpleIdentifier identifier, Element element) {
bool hasProtected = _hasProtected(element);
if (hasProtected) {
- ClassElement definingClass = element.enclosingElement;
+ var definingClass = element.enclosingElement as ClassElement;
if (_hasTypeOrSuperType(_enclosingClass, definingClass)) {
return;
}
@@ -1830,29 +1834,29 @@
node = identifier;
}
- Element definingClass = element.enclosingElement;
+ var definingClass = element.enclosingElement;
if (hasProtected) {
_errorReporter.reportErrorForNode(
HintCode.INVALID_USE_OF_PROTECTED_MEMBER,
node,
- [name, definingClass.source.uri]);
+ [name, definingClass!.source!.uri]);
}
if (hasVisibleForTemplate) {
_errorReporter.reportErrorForNode(
HintCode.INVALID_USE_OF_VISIBLE_FOR_TEMPLATE_MEMBER,
node,
- [name, definingClass.source.uri]);
+ [name, definingClass!.source!.uri]);
}
if (hasVisibleForTesting) {
_errorReporter.reportErrorForNode(
HintCode.INVALID_USE_OF_VISIBLE_FOR_TESTING_MEMBER,
node,
- [name, definingClass.source.uri]);
+ [name, definingClass!.source!.uri]);
}
}
- bool _hasInternal(Element element) {
+ bool _hasInternal(Element? element) {
if (element == null) {
return false;
}
@@ -1879,14 +1883,14 @@
return false;
}
- bool _hasTypeOrSuperType(ClassElement element, ClassElement superElement) {
+ bool _hasTypeOrSuperType(ClassElement? element, ClassElement superElement) {
if (element == null) {
return false;
}
return element.thisType.asInstanceOf(superElement) != null;
}
- bool _hasVisibleForTemplate(Element element) {
+ bool _hasVisibleForTemplate(Element? element) {
if (element == null) {
return false;
}
@@ -1901,9 +1905,6 @@
}
bool _hasVisibleForTesting(Element element) {
- if (element == null) {
- return false;
- }
if (element.hasVisibleForTesting) {
return true;
}
@@ -1923,15 +1924,15 @@
bool _inExportDirective(SimpleIdentifier identifier) =>
identifier.parent is Combinator &&
- identifier.parent.parent is ExportDirective;
+ identifier.parent!.parent is ExportDirective;
- bool _isLibraryInWorkspacePackage(LibraryElement library) {
+ bool _isLibraryInWorkspacePackage(LibraryElement? library) {
if (_workspacePackage == null || library == null) {
// Better to not make a big claim that they _are_ in the same package,
// if we were unable to determine what package [_currentLibrary] is in.
return false;
}
- return _workspacePackage.contains(library.source);
+ return _workspacePackage!.contains(library.source);
}
}
@@ -1949,12 +1950,12 @@
@override
void visitSimpleIdentifier(SimpleIdentifier node) {
- Element element = node.staticElement;
+ var element = node.staticElement;
if (element is ExecutableMember) {
element = element.declaration;
}
if (_parameters.contains(element)) {
- _usedParameters.add(element);
+ _usedParameters.add(element as ParameterElement);
}
}
}
@@ -1990,6 +1991,5 @@
case TargetKind.typedefType:
return 'typedefs';
}
- throw 'Remove this when this library is converted to null-safety';
}
}
diff --git a/pkg/analyzer/lib/src/error/bool_expression_verifier.dart b/pkg/analyzer/lib/src/error/bool_expression_verifier.dart
index c5a7253..3fa1459 100644
--- a/pkg/analyzer/lib/src/error/bool_expression_verifier.dart
+++ b/pkg/analyzer/lib/src/error/bool_expression_verifier.dart
@@ -11,7 +11,6 @@
import 'package:analyzer/src/dart/element/type_system.dart';
import 'package:analyzer/src/error/codes.dart';
import 'package:analyzer/src/error/nullable_dereference_verifier.dart';
-import 'package:meta/meta.dart';
/// Helper for verifying expression that should be of type bool.
class BoolExpressionVerifier {
@@ -23,10 +22,10 @@
final InterfaceType _boolType;
BoolExpressionVerifier({
- @required TypeSystemImpl typeSystem,
- @required ErrorReporter errorReporter,
- @required NullableDereferenceVerifier nullableDereferenceVerifier,
- }) : _typeSystem = typeSystem,
+ required TypeSystemImpl typeSystem,
+ required ErrorReporter errorReporter,
+ required NullableDereferenceVerifier nullableDereferenceVerifier,
+ }) : _typeSystem = typeSystem,
_errorReporter = errorReporter,
_nullableDereferenceVerifier = nullableDereferenceVerifier,
_boolElement = typeSystem.typeProvider.boolElement,
@@ -46,8 +45,8 @@
/// Verify that the given [expression] is of type 'bool', and report
/// [errorCode] if not, or a nullability error if its improperly nullable.
void checkForNonBoolExpression(Expression expression,
- {@required ErrorCode errorCode, List<Object> arguments}) {
- var type = expression.staticType;
+ {required ErrorCode errorCode, List<Object>? arguments}) {
+ var type = expression.staticType!;
if (!_checkForUseOfVoidResult(expression) &&
!_typeSystem.isAssignableTo2(type, _boolType)) {
if (type.element == _boolElement) {
@@ -73,8 +72,7 @@
/// are void, such as identifiers.
// TODO(scheglov) Move this in a separate verifier.
bool _checkForUseOfVoidResult(Expression expression) {
- if (expression == null ||
- !identical(expression.staticType, VoidTypeImpl.instance)) {
+ if (!identical(expression.staticType, VoidTypeImpl.instance)) {
return false;
}
diff --git a/pkg/analyzer/lib/src/error/catch_error_verifier.dart b/pkg/analyzer/lib/src/error/catch_error_verifier.dart
index 98d775a0..da72645 100644
--- a/pkg/analyzer/lib/src/error/catch_error_verifier.dart
+++ b/pkg/analyzer/lib/src/error/catch_error_verifier.dart
@@ -5,9 +5,9 @@
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/visitor.dart';
import 'package:analyzer/dart/element/type.dart';
-import 'package:analyzer/dart/element/type_provider.dart';
-import 'package:analyzer/dart/element/type_system.dart';
import 'package:analyzer/error/listener.dart';
+import 'package:analyzer/src/dart/element/type_provider.dart';
+import 'package:analyzer/src/dart/element/type_system.dart';
import 'package:analyzer/src/error/codes.dart';
import 'package:analyzer/src/error/return_type_verifier.dart';
import 'package:analyzer/src/generated/error_verifier.dart';
@@ -16,9 +16,9 @@
class CatchErrorVerifier {
final ErrorReporter _errorReporter;
- final TypeProvider _typeProvider;
+ final TypeProviderImpl _typeProvider;
- final TypeSystem _typeSystem;
+ final TypeSystemImpl _typeSystem;
final ReturnTypeVerifier _returnTypeVerifier;
@@ -28,16 +28,15 @@
typeSystem: _typeSystem,
errorReporter: _errorReporter,
);
+
void verifyMethodInvocation(MethodInvocation node) {
- // TODO(https://github.com/dart-lang/sdk/issues/35825): Verify the
- // parameters of a function passed to `Future.catchError` as well.
var target = node.realTarget;
if (target == null) {
return;
}
var methodName = node.methodName;
if (!(methodName.name == 'catchError' &&
- target.staticType.isDartAsyncFuture)) {
+ target.staticType!.isDartAsyncFuture)) {
return;
}
if (node.argumentList.arguments.isEmpty) {
@@ -52,8 +51,9 @@
var targetFutureType = targetType.typeArguments.first;
var expectedReturnType = _typeProvider.futureOrType2(targetFutureType);
if (callback is FunctionExpression) {
- _checkOnErrorFunctionType(
- callback, callback.staticType, expectedReturnType);
+ // TODO(migration): should be FunctionType, not nullable
+ var callbackType = callback.staticType as FunctionType;
+ _checkOnErrorFunctionType(callback, callbackType, expectedReturnType);
var catchErrorOnErrorExecutable = EnclosingExecutableContext(
callback.declaredElement,
isAsynchronous: true,
@@ -61,7 +61,7 @@
var returnStatementVerifier =
_ReturnStatementVerifier(_returnTypeVerifier);
_returnTypeVerifier.enclosingExecutable = catchErrorOnErrorExecutable;
- callback.body.accept(returnStatementVerifier);
+ callback.body!.accept(returnStatementVerifier);
} else {
var callbackType = callback.staticType;
if (callbackType is FunctionType) {
@@ -85,14 +85,12 @@
}
var parameters = expressionType.parameters;
- if (parameters == null || parameters.isEmpty) {
+ if (parameters.isEmpty) {
return report();
}
var firstParameter = parameters.first;
if (firstParameter.isNamed) {
return report();
- } else if (firstParameter.isOptionalPositional) {
- return report();
} else {
if (!_typeSystem.isSubtypeOf(
_typeProvider.objectType, firstParameter.type)) {
@@ -103,8 +101,6 @@
var secondParameter = parameters[1];
if (secondParameter.isNamed) {
return report();
- } else if (firstParameter.isOptionalPositional) {
- return report();
} else {
if (!_typeSystem.isSubtypeOf(
_typeProvider.stackTraceType, secondParameter.type)) {
@@ -131,7 +127,9 @@
/// Visits a function body, looking for return statements.
class _ReturnStatementVerifier extends RecursiveAstVisitor<void> {
final ReturnTypeVerifier _returnTypeVerifier;
+
_ReturnStatementVerifier(this._returnTypeVerifier);
+
@override
void visitExpressionFunctionBody(ExpressionFunctionBody node) {
_returnTypeVerifier.verifyExpressionFunctionBody(node);
diff --git a/pkg/analyzer/lib/src/error/codes.dart b/pkg/analyzer/lib/src/error/codes.dart
index 38ef844..4a053ab 100644
--- a/pkg/analyzer/lib/src/error/codes.dart
+++ b/pkg/analyzer/lib/src/error/codes.dart
@@ -12836,10 +12836,10 @@
const CompileTimeErrorCode(
String name,
String message, {
- String correction,
+ String? correction,
bool hasPublishedDocs = false,
bool isUnresolvedIdentifier = false,
- String uniqueName,
+ String? uniqueName,
}) : super(
correction: correction,
hasPublishedDocs: hasPublishedDocs,
@@ -12929,7 +12929,7 @@
* created from the optional [correction] template.
*/
const LanguageCode(String name, String message,
- {String correction, bool hasPublishedDocs = false})
+ {String? correction, bool hasPublishedDocs = false})
: super(
correction: correction,
hasPublishedDocs: hasPublishedDocs,
@@ -13253,10 +13253,10 @@
const StaticWarningCode(
String name,
String message, {
- String correction,
+ String? correction,
bool hasPublishedDocs = false,
bool isUnresolvedIdentifier = false,
- String uniqueName,
+ String? uniqueName,
}) : super(
correction: correction,
hasPublishedDocs: hasPublishedDocs,
@@ -13333,7 +13333,7 @@
* created from the optional [correction] template.
*/
const StrongModeCode(ErrorType type, String name, String message,
- {String correction, bool hasPublishedDocs = false})
+ {String? correction, bool hasPublishedDocs = false})
: type = type,
super(
correction: correction,
diff --git a/pkg/analyzer/lib/src/error/constructor_fields_verifier.dart b/pkg/analyzer/lib/src/error/constructor_fields_verifier.dart
index f3cea21..260bbb6 100644
--- a/pkg/analyzer/lib/src/error/constructor_fields_verifier.dart
+++ b/pkg/analyzer/lib/src/error/constructor_fields_verifier.dart
@@ -8,7 +8,6 @@
import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/dart/element/type_system.dart';
import 'package:analyzer/src/error/codes.dart';
-import 'package:meta/meta.dart';
/// Verifier for initializing fields in constructors.
class ConstructorFieldsVerifier {
@@ -22,7 +21,7 @@
///
/// [_InitState.notInit] or [_InitState.initInDeclaration] is set for each
/// field. Later [verify] is called to verify each constructor of the class.
- Map<FieldElement, _InitState> _initialFieldMap;
+ Map<FieldElement, _InitState>? _initialFieldMap;
/// The state of fields in the current constructor.
Map<FieldElement, _InitState> _fieldMap = {};
@@ -31,14 +30,14 @@
bool _hasRedirectingConstructorInvocation = false;
ConstructorFieldsVerifier({
- @required TypeSystemImpl typeSystem,
- @required ErrorReporter errorReporter,
- }) : _typeSystem = typeSystem,
+ required TypeSystemImpl typeSystem,
+ required ErrorReporter errorReporter,
+ }) : _typeSystem = typeSystem,
_errorReporter = errorReporter;
void enterClass(ClassDeclaration node) {
_isInNativeClass = node.nativeClause != null;
- _initFieldsMap(node.declaredElement);
+ _initFieldsMap(node.declaredElement!);
}
void leaveClass() {
@@ -64,7 +63,7 @@
return;
}
- _fieldMap = Map.of(_initialFieldMap);
+ _fieldMap = Map.of(_initialFieldMap!);
_hasRedirectingConstructorInvocation = false;
_updateWithParameters(node);
@@ -98,7 +97,7 @@
_initialFieldMap = <FieldElement, _InitState>{};
for (var field in element.fields) {
if (!field.isSynthetic) {
- _initialFieldMap[field] = field.hasInitializer
+ _initialFieldMap![field] = field.hasInitializer
? _InitState.initInDeclaration
: _InitState.notInit;
}
@@ -165,9 +164,9 @@
}
if (initializer is ConstructorFieldInitializer) {
SimpleIdentifier fieldName = initializer.fieldName;
- Element element = fieldName.staticElement;
+ var element = fieldName.staticElement;
if (element is FieldElement) {
- _InitState state = _fieldMap[element];
+ var state = _fieldMap[element];
if (state == _InitState.notInit) {
_fieldMap[element] = _InitState.initInInitializer;
} else if (state == _InitState.initInDeclaration) {
@@ -201,10 +200,13 @@
for (FormalParameter parameter in formalParameters) {
parameter = _baseParameter(parameter);
if (parameter is FieldFormalParameter) {
- FieldElement fieldElement =
+ var fieldElement =
(parameter.declaredElement as FieldFormalParameterElementImpl)
.field;
- _InitState state = _fieldMap[fieldElement];
+ if (fieldElement == null) {
+ continue;
+ }
+ _InitState? state = _fieldMap[fieldElement];
if (state == _InitState.notInit) {
_fieldMap[fieldElement] = _InitState.initInFieldFormal;
} else if (state == _InitState.initInDeclaration) {
diff --git a/pkg/analyzer/lib/src/error/correct_override.dart b/pkg/analyzer/lib/src/error/correct_override.dart
index f456ab8..db8a2ee 100644
--- a/pkg/analyzer/lib/src/error/correct_override.dart
+++ b/pkg/analyzer/lib/src/error/correct_override.dart
@@ -15,19 +15,18 @@
import 'package:analyzer/src/dart/element/type_algebra.dart';
import 'package:analyzer/src/dart/element/type_system.dart';
import 'package:analyzer/src/error/codes.dart';
-import 'package:meta/meta.dart';
class CorrectOverrideHelper {
final LibraryElementImpl _library;
final TypeSystemImpl _typeSystem;
final ExecutableElement _thisMember;
- FunctionType _thisTypeForSubtype;
+ FunctionType? _thisTypeForSubtype;
CorrectOverrideHelper({
- @required LibraryElement library,
- @required ExecutableElement thisMember,
- }) : _library = library,
+ required LibraryElementImpl library,
+ required ExecutableElement thisMember,
+ }) : _library = library,
_typeSystem = library.typeSystem,
_thisMember = thisMember {
_computeThisTypeForSubtype();
@@ -35,21 +34,21 @@
/// Return `true` if [_thisMember] is a correct override of [superMember].
bool isCorrectOverrideOf({
- @required ExecutableElement superMember,
+ required ExecutableElement superMember,
}) {
superMember = _library.toLegacyElementIfOptOut(superMember);
var superType = superMember.type;
- return _typeSystem.isSubtypeOf2(_thisTypeForSubtype, superType);
+ return _typeSystem.isSubtypeOf2(_thisTypeForSubtype!, superType);
}
/// If [_thisMember] is not a correct override of [superMember], report the
/// error.
void verify({
- @required ExecutableElement superMember,
- @required ErrorReporter errorReporter,
- @required AstNode errorNode,
- ErrorCode errorCode,
+ required ExecutableElement superMember,
+ required ErrorReporter errorReporter,
+ required AstNode errorNode,
+ ErrorCode? errorCode,
}) {
var isCorrect = isCorrectOverrideOf(superMember: superMember);
if (!isCorrect) {
@@ -72,7 +71,7 @@
void _computeThisTypeForSubtype() {
var parameters = _thisMember.parameters;
- List<ParameterElement> newParameters;
+ List<ParameterElement>? newParameters;
for (var i = 0; i < parameters.length; i++) {
var parameter = parameters[i];
if (parameter.isCovariant) {
@@ -106,14 +105,14 @@
final ExecutableElement _thisMember;
CovariantParametersVerifier({
- @required ExecutableElement thisMember,
- }) : _session = thisMember.library.session,
- _typeSystem = thisMember.library.typeSystem,
+ required ExecutableElement thisMember,
+ }) : _session = thisMember.library.session as AnalysisSessionImpl,
+ _typeSystem = thisMember.library.typeSystem as TypeSystemImpl,
_thisMember = thisMember;
void verify({
- @required ErrorReporter errorReporter,
- @required AstNode errorNode,
+ required ErrorReporter errorReporter,
+ required AstNode errorNode,
}) {
var superParameters = _superParameters();
for (var entry in superParameters.entries) {
@@ -142,7 +141,7 @@
List<_SuperMember> _superMembers() {
var classHierarchy = _session.classHierarchy;
- var classElement = _thisMember.enclosingElement;
+ var classElement = _thisMember.enclosingElement as ClassElement;
var interfaces = classHierarchy.implementedInterfaces(classElement);
var superMembers = <_SuperMember>[];
@@ -161,7 +160,7 @@
Map<ParameterElement, List<_SuperParameter>> _superParameters() {
var result = <ParameterElement, List<_SuperParameter>>{};
- List<_SuperMember> superMembers;
+ List<_SuperMember>? superMembers;
var parameters = _thisMember.parameters;
for (var i = 0; i < parameters.length; i++) {
var parameter = parameters[i];
@@ -215,7 +214,7 @@
/// Return a member from [classElement] that corresponds to the [proto],
/// or `null` if no such member exist.
- static ExecutableElement _correspondingMember(
+ static ExecutableElement? _correspondingMember(
ClassElement classElement,
ExecutableElement proto,
) {
@@ -233,7 +232,7 @@
/// Return an element of [parameters] that corresponds for the [proto],
/// or `null` if no such parameter exist.
- static ParameterElement _correspondingParameter(
+ static ParameterElement? _correspondingParameter(
List<ParameterElement> parameters,
ParameterElement proto,
int protoIndex,
@@ -270,5 +269,5 @@
_SuperParameter(this.element, this.type);
- ExecutableElement get member => element.enclosingElement;
+ ExecutableElement get member => element.enclosingElement as ExecutableElement;
}
diff --git a/pkg/analyzer/lib/src/error/dead_code_verifier.dart b/pkg/analyzer/lib/src/error/dead_code_verifier.dart
index 24eefd2..6425888 100644
--- a/pkg/analyzer/lib/src/error/dead_code_verifier.dart
+++ b/pkg/analyzer/lib/src/error/dead_code_verifier.dart
@@ -31,7 +31,7 @@
final ErrorReporter _errorReporter;
/// The object used to track the usage of labels within a given label scope.
- _LabelTracker labelTracker;
+ _LabelTracker? labelTracker;
DeadCodeVerifier(this._errorReporter);
@@ -47,10 +47,10 @@
@override
void visitExportDirective(ExportDirective node) {
- ExportElement exportElement = node.element;
+ ExportElement? exportElement = node.element;
if (exportElement != null) {
// The element is null when the URI is invalid.
- LibraryElement library = exportElement.exportedLibrary;
+ LibraryElement? library = exportElement.exportedLibrary;
if (library != null && !library.isSynthetic) {
for (Combinator combinator in node.combinators) {
_checkCombinator(library, combinator);
@@ -62,11 +62,11 @@
@override
void visitImportDirective(ImportDirective node) {
- ImportElement importElement = node.element;
+ ImportElement? importElement = node.element;
if (importElement != null) {
// The element is null when the URI is invalid, but not when the URI is
// valid but refers to a non-existent file.
- LibraryElement library = importElement.importedLibrary;
+ LibraryElement? library = importElement.importedLibrary;
if (library != null && !library.isSynthetic) {
for (Combinator combinator in node.combinators) {
_checkCombinator(library, combinator);
@@ -116,7 +116,7 @@
}
for (SimpleIdentifier name in names) {
String nameStr = name.name;
- Element element = namespace.get(nameStr);
+ Element? element = namespace.get(nameStr);
element ??= namespace.get("$nameStr=");
if (element == null) {
_errorReporter
@@ -128,11 +128,11 @@
/// Exit the most recently entered label scope after reporting any labels that
/// were not referenced within that scope.
void _popLabels() {
- for (Label label in labelTracker.unusedLabels()) {
+ for (Label label in labelTracker!.unusedLabels()) {
_errorReporter
.reportErrorForNode(HintCode.UNUSED_LABEL, label, [label.label.name]);
}
- labelTracker = labelTracker.outerTracker;
+ labelTracker = labelTracker!.outerTracker;
}
/// Enter a new label scope in which the given [labels] are defined.
@@ -152,14 +152,9 @@
/// Initialize a newly created dead code verifier that will report dead code
/// to the given [errorReporter] and will use the given [typeSystem] if one is
/// provided.
- LegacyDeadCodeVerifier(this._errorReporter, {TypeSystemImpl typeSystem})
- : _typeSystem = typeSystem ??
- TypeSystemImpl(
- implicitCasts: true,
- isNonNullableByDefault: false,
- strictInference: false,
- typeProvider: null,
- );
+ LegacyDeadCodeVerifier(this._errorReporter,
+ {required TypeSystemImpl typeSystem})
+ : _typeSystem = typeSystem;
@override
void visitBinaryExpression(BinaryExpression node) {
@@ -169,22 +164,22 @@
if (isAmpAmp || isBarBar) {
Expression lhsCondition = node.leftOperand;
if (!_isDebugConstant(lhsCondition)) {
- EvaluationResultImpl lhsResult = _getConstantBooleanValue(lhsCondition);
+ var lhsResult = _getConstantBooleanValue(lhsCondition);
if (lhsResult != null) {
- bool value = lhsResult.value.toBoolValue();
+ var value = lhsResult.value?.toBoolValue();
if (value == true && isBarBar) {
// Report error on "else" block: true || !e!
_errorReporter.reportErrorForNode(
HintCode.DEAD_CODE, node.rightOperand);
// Only visit the LHS:
- lhsCondition?.accept(this);
+ lhsCondition.accept(this);
return;
} else if (value == false && isAmpAmp) {
// Report error on "if" block: false && !e!
_errorReporter.reportErrorForNode(
HintCode.DEAD_CODE, node.rightOperand);
// Only visit the LHS:
- lhsCondition?.accept(this);
+ lhsCondition.accept(this);
return;
}
}
@@ -224,22 +219,21 @@
@override
void visitConditionalExpression(ConditionalExpression node) {
Expression conditionExpression = node.condition;
- conditionExpression?.accept(this);
+ conditionExpression.accept(this);
if (!_isDebugConstant(conditionExpression)) {
- EvaluationResultImpl result =
- _getConstantBooleanValue(conditionExpression);
+ var result = _getConstantBooleanValue(conditionExpression);
if (result != null) {
- if (result.value.toBoolValue() == true) {
+ if (result.value?.toBoolValue() == true) {
// Report error on "else" block: true ? 1 : !2!
_errorReporter.reportErrorForNode(
HintCode.DEAD_CODE, node.elseExpression);
- node.thenExpression?.accept(this);
+ node.thenExpression.accept(this);
return;
} else {
// Report error on "if" block: false ? !1! : 2
_errorReporter.reportErrorForNode(
HintCode.DEAD_CODE, node.thenExpression);
- node.elseExpression?.accept(this);
+ node.elseExpression.accept(this);
return;
}
}
@@ -250,17 +244,16 @@
@override
void visitIfElement(IfElement node) {
Expression conditionExpression = node.condition;
- conditionExpression?.accept(this);
+ conditionExpression.accept(this);
if (!_isDebugConstant(conditionExpression)) {
- EvaluationResultImpl result =
- _getConstantBooleanValue(conditionExpression);
+ var result = _getConstantBooleanValue(conditionExpression);
if (result != null) {
- if (result.value.toBoolValue() == true) {
+ if (result.value?.toBoolValue() == true) {
// Report error on else block: if(true) {} else {!}
- CollectionElement elseElement = node.elseElement;
+ var elseElement = node.elseElement;
if (elseElement != null) {
_errorReporter.reportErrorForNode(HintCode.DEAD_CODE, elseElement);
- node.thenElement?.accept(this);
+ node.thenElement.accept(this);
return;
}
} else {
@@ -278,18 +271,17 @@
@override
void visitIfStatement(IfStatement node) {
Expression conditionExpression = node.condition;
- conditionExpression?.accept(this);
+ conditionExpression.accept(this);
if (!_isDebugConstant(conditionExpression)) {
- EvaluationResultImpl result =
- _getConstantBooleanValue(conditionExpression);
+ var result = _getConstantBooleanValue(conditionExpression);
if (result != null) {
- if (result.value.toBoolValue() == true) {
+ if (result.value?.toBoolValue() == true) {
// Report error on else block: if(true) {} else {!}
- Statement elseStatement = node.elseStatement;
+ var elseStatement = node.elseStatement;
if (elseStatement != null) {
_errorReporter.reportErrorForNode(
HintCode.DEAD_CODE, elseStatement);
- node.thenStatement?.accept(this);
+ node.thenStatement.accept(this);
return;
}
} else {
@@ -318,7 +310,7 @@
@override
void visitTryStatement(TryStatement node) {
- node.body?.accept(this);
+ node.body.accept(this);
node.finallyBlock?.accept(this);
var verifier = _CatchClausesVerifier(
@@ -347,19 +339,18 @@
@override
void visitWhileStatement(WhileStatement node) {
Expression conditionExpression = node.condition;
- conditionExpression?.accept(this);
+ conditionExpression.accept(this);
if (!_isDebugConstant(conditionExpression)) {
- EvaluationResultImpl result =
- _getConstantBooleanValue(conditionExpression);
+ var result = _getConstantBooleanValue(conditionExpression);
if (result != null) {
- if (result.value.toBoolValue() == false) {
+ if (result.value?.toBoolValue() == false) {
// Report error on while block: while (false) {!}
_errorReporter.reportErrorForNode(HintCode.DEAD_CODE, node.body);
return;
}
}
}
- node.body?.accept(this);
+ node.body.accept(this);
}
/// Given some list of [statements], loop through the list searching for dead
@@ -381,7 +372,7 @@
int size = statements.length;
for (int i = 0; i < size; i++) {
Statement currentStatement = statements[i];
- currentStatement?.accept(this);
+ currentStatement.accept(this);
if (statementExits(currentStatement) && i != size - 1) {
Statement nextStatement = statements[i + 1];
Statement lastStatement = statements[size - 1];
@@ -405,7 +396,7 @@
/// Given some [expression], return [ValidResult.RESULT_TRUE] if it is `true`,
/// [ValidResult.RESULT_FALSE] if it is `false`, or `null` if the expression
/// is not a constant boolean value.
- EvaluationResultImpl _getConstantBooleanValue(Expression expression) {
+ EvaluationResultImpl? _getConstantBooleanValue(Expression expression) {
if (expression is BooleanLiteral) {
return EvaluationResultImpl(
DartObjectImpl(
@@ -433,7 +424,7 @@
/// Return `true` if the given [expression] is resolved to a constant
/// variable.
bool _isDebugConstant(Expression expression) {
- Element element;
+ Element? element;
if (expression is Identifier) {
element = expression.staticElement;
} else if (expression is PropertyAccess) {
@@ -441,7 +432,7 @@
}
if (element is PropertyAccessorElement) {
PropertyInducingElement variable = element.variable;
- return variable != null && variable.isConst;
+ return variable.isConst;
}
return false;
}
@@ -474,7 +465,7 @@
class NullSafetyDeadCodeVerifier {
final TypeSystemImpl _typeSystem;
final ErrorReporter _errorReporter;
- final FlowAnalysisHelper _flowAnalysis;
+ final FlowAnalysisHelper? _flowAnalysis;
/// The stack of verifiers of (potentially nested) try statements.
final List<_CatchClausesVerifier> _catchClausesVerifiers = [];
@@ -488,7 +479,7 @@
///
/// When this field is not `null`, and we see an unreachable node, this new
/// node is ignored, because it continues the same dead code range.
- AstNode _firstDeadNode;
+ AstNode? _firstDeadNode;
NullSafetyDeadCodeVerifier(
this._typeSystem,
@@ -505,7 +496,7 @@
return;
}
- var parent = _firstDeadNode.parent;
+ var parent = _firstDeadNode!.parent;
if (parent is Assertion && identical(_firstDeadNode, parent.message)) {
// Don't report "dead code" for the message part of an assert statement,
// because this causes nuisance warnings for redundant `!= null`
@@ -516,26 +507,26 @@
// But we trim it to the last statement for presentation purposes.
if (node != _firstDeadNode) {
if (node is FunctionDeclaration) {
- node = (node as FunctionDeclaration).functionExpression.body;
+ node = node.functionExpression.body!;
}
if (node is FunctionExpression) {
- node = (node as FunctionExpression).body;
+ node = node.body!;
}
if (node is MethodDeclaration) {
- node = (node as MethodDeclaration).body;
+ node = node.body;
}
if (node is BlockFunctionBody) {
- node = (node as BlockFunctionBody).block;
+ node = node.block;
}
if (node is Block && node.statements.isNotEmpty) {
- node = (node as Block).statements.last;
+ node = node.statements.last;
}
if (node is SwitchMember && node.statements.isNotEmpty) {
- node = (node as SwitchMember).statements.last;
+ node = node.statements.last;
}
}
- var offset = _firstDeadNode.offset;
+ var offset = _firstDeadNode!.offset;
var length = node.end - offset;
_errorReporter.reportErrorForOffset(HintCode.DEAD_CODE, offset, length);
}
@@ -580,9 +571,9 @@
if (node is Comment) return;
if (_flowAnalysis == null) return;
- _flowAnalysis.checkUnreachableNode(node);
+ _flowAnalysis!.checkUnreachableNode(node);
- var flow = _flowAnalysis.flow;
+ var flow = _flowAnalysis!.flow;
if (flow == null) return;
if (flow.isReachable) return;
@@ -661,14 +652,14 @@
/// An object used to track the usage of labels within a single label scope.
class _LabelTracker {
/// The tracker for the outer label scope.
- final _LabelTracker outerTracker;
+ final _LabelTracker? outerTracker;
/// The labels whose usage is being tracked.
final List<Label> labels;
/// A list of flags corresponding to the list of [labels] indicating whether
/// the corresponding label has been used.
- List<bool> used;
+ late final List<bool> used;
/// A map from the names of labels to the index of the label in [labels].
final Map<String, int> labelMap = <String, int>{};
@@ -682,13 +673,13 @@
}
/// Record that the label with the given [labelName] has been used.
- void recordUsage(String labelName) {
+ void recordUsage(String? labelName) {
if (labelName != null) {
- int index = labelMap[labelName];
+ var index = labelMap[labelName];
if (index != null) {
used[index] = true;
} else if (outerTracker != null) {
- outerTracker.recordUsage(labelName);
+ outerTracker!.recordUsage(labelName);
}
}
}
diff --git a/pkg/analyzer/lib/src/error/deprecated_member_use_verifier.dart b/pkg/analyzer/lib/src/error/deprecated_member_use_verifier.dart
index 6bcabc9..cebd550 100644
--- a/pkg/analyzer/lib/src/error/deprecated_member_use_verifier.dart
+++ b/pkg/analyzer/lib/src/error/deprecated_member_use_verifier.dart
@@ -3,16 +3,15 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/ast/ast.dart';
-import 'package:analyzer/dart/constant/value.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/error/listener.dart';
-import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/dart/error/hint_codes.dart';
import 'package:analyzer/src/workspace/workspace.dart';
+import 'package:collection/collection.dart';
class DeprecatedMemberUseVerifier {
- final WorkspacePackage _workspacePackage;
+ final WorkspacePackage? _workspacePackage;
final ErrorReporter _errorReporter;
/// We push a new value every time when we enter into a scope which
@@ -107,7 +106,7 @@
}
// Report full ConstructorName, not just the constructor name.
- AstNode parent = node.parent;
+ var parent = node.parent;
if (parent is ConstructorName && identical(node, parent.name)) {
return;
}
@@ -134,7 +133,7 @@
/// Given some [element], look at the associated metadata and report the use
/// of the member if it is declared as deprecated. If a diagnostic is reported
/// it should be reported at the given [node].
- void _checkForDeprecated(Element element, AstNode node) {
+ void _checkForDeprecated(Element? element, AstNode node) {
if (!_isDeprecated(element)) {
return;
}
@@ -161,7 +160,7 @@
errorNode = node.name.label;
}
- String displayName = element.displayName;
+ String displayName = element!.displayName;
if (element is ConstructorElement) {
// TODO(jwren) We should modify ConstructorElement.getDisplayName(),
// or have the logic centralized elsewhere, instead of doing this logic
@@ -180,9 +179,8 @@
displayName = "${invokeClass.name}.${element.displayName}";
}
}
- LibraryElement library =
- element is LibraryElement ? element : element.library;
- String message = _deprecatedMessage(element);
+ var library = element is LibraryElement ? element : element.library;
+ var message = _deprecatedMessage(element);
if (message == null || message.isEmpty) {
_errorReporter.reportErrorForNode(
_isLibraryInWorkspacePackage(library)
@@ -202,7 +200,7 @@
}
}
- void _invocationArguments(Element element, ArgumentList arguments) {
+ void _invocationArguments(Element? element, ArgumentList arguments) {
element = element?.declaration;
if (element is ExecutableElement) {
_visitParametersAndArguments(
@@ -217,13 +215,13 @@
}
}
- bool _isLibraryInWorkspacePackage(LibraryElement library) {
+ bool _isLibraryInWorkspacePackage(LibraryElement? library) {
// Better to not make a big claim that they _are_ in the same package,
// if we were unable to determine what package [_currentLibrary] is in.
if (_workspacePackage == null || library == null) {
return false;
}
- return _workspacePackage.contains(library.source);
+ return _workspacePackage!.contains(library.source);
}
void _simpleIdentifier(SimpleIdentifier identifier) {
@@ -233,33 +231,30 @@
/// Return the message in the deprecated annotation on the given [element], or
/// `null` if the element doesn't have a deprecated annotation or if the
/// annotation does not have a message.
- static String _deprecatedMessage(Element element) {
+ static String? _deprecatedMessage(Element element) {
// Implicit getters/setters.
if (element.isSynthetic && element is PropertyAccessorElement) {
- element = (element as PropertyAccessorElement).variable;
+ element = element.variable;
}
- ElementAnnotationImpl annotation = element.metadata.firstWhere(
- (e) => e.isDeprecated,
- orElse: () => null,
- );
+ var annotation = element.metadata.firstWhereOrNull((e) => e.isDeprecated);
if (annotation == null || annotation.element is PropertyAccessorElement) {
return null;
}
- DartObject constantValue = annotation.computeConstantValue();
+ var constantValue = annotation.computeConstantValue();
return constantValue?.getField('message')?.toStringValue() ??
constantValue?.getField('expires')?.toStringValue();
}
static bool _hasDeprecatedAnnotation(List<Annotation> annotations) {
for (var i = 0; i < annotations.length; i++) {
- if (annotations[i].elementAnnotation.isDeprecated) {
+ if (annotations[i].elementAnnotation!.isDeprecated) {
return true;
}
}
return false;
}
- static bool _isDeprecated(Element element) {
+ static bool _isDeprecated(Element? element) {
if (element == null) {
return false;
}
@@ -267,18 +262,15 @@
if (element is PropertyAccessorElement && element.isSynthetic) {
// TODO(brianwilkerson) Why isn't this the implementation for PropertyAccessorElement?
Element variable = element.variable;
- if (variable == null) {
- return false;
- }
return variable.hasDeprecated;
}
return element.hasDeprecated;
}
/// Return `true` if [element] is a [ParameterElement] declared in [node].
- static bool _isLocalParameter(Element element, AstNode node) {
+ static bool _isLocalParameter(Element? element, AstNode? node) {
if (element is ParameterElement) {
- ExecutableElement definingFunction = element.enclosingElement;
+ var definingFunction = element.enclosingElement as ExecutableElement;
for (; node != null; node = node.parent) {
if (node is ConstructorDeclaration) {
@@ -304,7 +296,7 @@
List<Expression> arguments,
void Function(ParameterElement, Expression) f,
) {
- Map<String, ParameterElement> namedParameters;
+ Map<String, ParameterElement>? namedParameters;
var positionalIndex = 0;
for (var argument in arguments) {
diff --git a/pkg/analyzer/lib/src/error/duplicate_definition_verifier.dart b/pkg/analyzer/lib/src/error/duplicate_definition_verifier.dart
index 073ca29..eb3d6c6 100644
--- a/pkg/analyzer/lib/src/error/duplicate_definition_verifier.dart
+++ b/pkg/analyzer/lib/src/error/duplicate_definition_verifier.dart
@@ -26,8 +26,8 @@
/// Check that the exception and stack trace parameters have different names.
void checkCatchClause(CatchClause node) {
- SimpleIdentifier exceptionParameter = node.exceptionParameter;
- SimpleIdentifier stackTraceParameter = node.stackTraceParameter;
+ var exceptionParameter = node.exceptionParameter;
+ var stackTraceParameter = node.stackTraceParameter;
if (exceptionParameter != null && stackTraceParameter != null) {
String exceptionName = exceptionParameter.name;
if (exceptionName == stackTraceParameter.name) {
@@ -40,15 +40,15 @@
}
void checkClass(ClassDeclaration node) {
- _checkClassMembers(node.declaredElement, node.members);
+ _checkClassMembers(node.declaredElement!, node.members);
}
/// Check that there are no members with the same name.
void checkEnum(EnumDeclaration node) {
- ClassElement element = node.declaredElement;
+ ClassElement element = node.declaredElement!;
Map<String, Element> staticGetters = {
- 'values': element.getGetter('values')
+ 'values': element.getGetter('values')!
};
for (EnumConstantDeclaration constant in node.constants) {
@@ -112,7 +112,7 @@
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.EXTENSION_CONFLICTING_STATIC_AND_INSTANCE,
identifier,
- [node.declaredElement.name, name],
+ [node.declaredElement!.name, name],
);
}
}
@@ -126,7 +126,7 @@
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.EXTENSION_CONFLICTING_STATIC_AND_INSTANCE,
identifier,
- [node.declaredElement.name, name],
+ [node.declaredElement!.name, name],
);
}
}
@@ -144,14 +144,14 @@
}
void checkMixin(MixinDeclaration node) {
- _checkClassMembers(node.declaredElement, node.members);
+ _checkClassMembers(node.declaredElement!, node.members);
}
/// Check that all of the parameters have unique names.
void checkParameters(FormalParameterList node) {
Map<String, Element> definedNames = HashMap<String, Element>();
for (FormalParameter parameter in node.parameters) {
- SimpleIdentifier identifier = parameter.identifier;
+ var identifier = parameter.identifier;
if (identifier != null) {
// The identifier can be null if this is a parameter list for a generic
// function type.
@@ -217,12 +217,12 @@
}
for (ImportElement importElement in _currentLibrary.imports) {
- PrefixElement prefix = importElement.prefix;
+ var prefix = importElement.prefix;
if (prefix != null) {
definedGetters[prefix.name] = prefix;
}
}
- CompilationUnitElement element = node.declaredElement;
+ CompilationUnitElement element = node.declaredElement!;
if (element != _currentLibrary.definingCompilationUnit) {
addWithoutChecking(_currentLibrary.definingCompilationUnit);
for (CompilationUnitElement part in _currentLibrary.parts) {
@@ -293,20 +293,21 @@
// Check for local static members conflicting with local instance members.
for (ClassMember member in members) {
if (member is ConstructorDeclaration) {
- if (member.name != null) {
- String name = member.name.name;
+ var nameNode = member.name;
+ if (nameNode != null) {
+ String name = nameNode.name;
var staticMember = staticGetters[name] ?? staticSetters[name];
if (staticMember != null) {
if (staticMember is PropertyAccessorElement) {
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.CONFLICTING_CONSTRUCTOR_AND_STATIC_FIELD,
- member.name,
+ nameNode,
[name],
);
} else {
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.CONFLICTING_CONSTRUCTOR_AND_STATIC_METHOD,
- member.name,
+ nameNode,
[name],
);
}
@@ -333,7 +334,7 @@
String name = identifier.name;
if (instanceGetters.containsKey(name) ||
instanceSetters.containsKey(name)) {
- String className = identifier.staticElement.enclosingElement.name;
+ String className = element.name;
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.CONFLICTING_STATIC_AND_INSTANCE,
identifier,
@@ -349,11 +350,11 @@
/// error if it is.
void _checkDuplicateIdentifier(
Map<String, Element> getterScope, SimpleIdentifier identifier,
- {Element element, Map<String, Element> setterScope}) {
+ {Element? element, Map<String, Element>? setterScope}) {
if (identifier.isSynthetic) {
return;
}
- element ??= identifier.staticElement;
+ element ??= identifier.staticElement!;
// Fields define getters and setters, so check them separately.
if (element is PropertyInducingElement) {
@@ -381,14 +382,14 @@
name = element.name;
}
- Element previous = getterScope[name];
+ var previous = getterScope[name];
if (previous != null) {
if (_isGetterSetterPair(element, previous)) {
// OK
} else if (element is FieldFormalParameterElement &&
previous is FieldFormalParameterElement &&
element.field != null &&
- element.field.isFinal) {
+ element.field!.isFinal) {
// Reported as CompileTimeErrorCode.FINAL_INITIALIZED_MULTIPLE_TIMES.
} else {
_errorReporter.reportErrorForNode(
@@ -401,16 +402,18 @@
getterScope[name] = element;
}
- if (element is PropertyAccessorElement && element.isSetter) {
- previous = setterScope[name];
- if (previous != null) {
- _errorReporter.reportErrorForNode(
- getError(previous, element),
- identifier,
- [name],
- );
- } else {
- setterScope[name] = element;
+ if (setterScope != null) {
+ if (element is PropertyAccessorElement && element.isSetter) {
+ previous = setterScope[name];
+ if (previous != null) {
+ _errorReporter.reportErrorForNode(
+ getError(previous, element),
+ identifier,
+ [name],
+ );
+ } else {
+ setterScope[name] = element;
+ }
}
}
}
diff --git a/pkg/analyzer/lib/src/error/getter_setter_types_verifier.dart b/pkg/analyzer/lib/src/error/getter_setter_types_verifier.dart
index 97a02ce..5c5e045 100644
--- a/pkg/analyzer/lib/src/error/getter_setter_types_verifier.dart
+++ b/pkg/analyzer/lib/src/error/getter_setter_types_verifier.dart
@@ -10,7 +10,6 @@
import 'package:analyzer/src/dart/element/inheritance_manager3.dart';
import 'package:analyzer/src/dart/element/type_system.dart';
import 'package:analyzer/src/error/codes.dart';
-import 'package:meta/meta.dart';
/// Verifies that the return type of the getter matches the parameter type
/// of the corresponding setter. Where "match" means "subtype" in non-nullable,
@@ -20,9 +19,9 @@
final ErrorReporter _errorReporter;
GetterSetterTypesVerifier({
- @required TypeSystemImpl typeSystem,
- @required ErrorReporter errorReporter,
- }) : _typeSystem = typeSystem,
+ required TypeSystemImpl typeSystem,
+ required ErrorReporter errorReporter,
+ }) : _typeSystem = typeSystem,
_errorReporter = errorReporter;
ErrorCode get _errorCode {
@@ -36,7 +35,8 @@
void checkExtension(ExtensionDeclaration node) {
for (var getterNode in node.members) {
if (getterNode is MethodDeclaration && getterNode.isGetter) {
- checkGetter(getterNode.name, getterNode.declaredElement);
+ checkGetter(getterNode.name,
+ getterNode.declaredElement as PropertyAccessorElement);
}
}
}
@@ -74,7 +74,7 @@
for (var name in interface.map.keys) {
if (!name.isAccessibleFor(libraryUri)) continue;
- var getter = interface.map[name];
+ var getter = interface.map[name]!;
if (getter.kind == ElementKind.GETTER) {
var setter = interface.map[Name(libraryUri, '${name.name}=')];
if (setter != null && setter.parameters.length == 1) {
@@ -125,7 +125,7 @@
}
/// Return the type of the first parameter of the [setter].
- static DartType _getSetterType(PropertyAccessorElement setter) {
+ static DartType? _getSetterType(PropertyAccessorElement setter) {
var parameters = setter.parameters;
if (parameters.isNotEmpty) {
return parameters[0].type;
diff --git a/pkg/analyzer/lib/src/error/ignore_validator.dart b/pkg/analyzer/lib/src/error/ignore_validator.dart
index a8dd8d8..5014a7e 100644
--- a/pkg/analyzer/lib/src/error/ignore_validator.dart
+++ b/pkg/analyzer/lib/src/error/ignore_validator.dart
@@ -10,7 +10,6 @@
import 'package:analyzer/src/error/codes.dart';
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/ignore_comments/ignore_info.dart';
-import 'package:meta/meta.dart';
/// Used to validate the ignore comments in a single file.
class IgnoreValidator {
@@ -30,7 +29,7 @@
/// be ignored. Note that this list is incomplete. Plugins might well define
/// diagnostics with a severity of `ERROR`, but we won't be able to flag their
/// use because we have no visibility of them here.
- Set<String> _unignorableNames;
+ late final Set<String> _unignorableNames;
/// Initialize a newly created validator to report any issues with ignore
/// comments in the file being analyzed. The diagnostics will be reported to
@@ -144,9 +143,9 @@
/// Helper for caching unignorable names.
class _UnignorableNames {
- static Set<String> _forFlutter;
- static Set<String> _forDart2jsTest;
- static Set<String> _forOther;
+ static Set<String>? _forFlutter;
+ static Set<String>? _forDart2jsTest;
+ static Set<String>? _forOther;
static Set<String> forFile(String filePath) {
var isFlutter = filePath.contains('flutter');
@@ -155,15 +154,15 @@
if (isFlutter) {
if (_forFlutter != null) {
- return _forFlutter;
+ return _forFlutter!;
}
} else if (isDart2jsTest) {
if (_forDart2jsTest != null) {
- return _forDart2jsTest;
+ return _forDart2jsTest!;
}
} else {
if (_forOther != null) {
- return _forOther;
+ return _forOther!;
}
}
@@ -189,8 +188,8 @@
static bool isIgnorable(
ErrorCode code, {
- @required bool isFlutter,
- @required bool isDart2jsTest,
+ required bool isFlutter,
+ required bool isDart2jsTest,
}) {
if (code.isIgnorable) {
return true;
diff --git a/pkg/analyzer/lib/src/error/imports_verifier.dart b/pkg/analyzer/lib/src/error/imports_verifier.dart
index 198ee09..caeba58 100644
--- a/pkg/analyzer/lib/src/error/imports_verifier.dart
+++ b/pkg/analyzer/lib/src/error/imports_verifier.dart
@@ -91,26 +91,32 @@
}
}
- void _recordIfExtensionMember(Element element) {
- if (element != null && element.enclosingElement is ExtensionElement) {
- _recordUsedExtension(element.enclosingElement);
+ void _recordIfExtensionMember(Element? element) {
+ if (element != null) {
+ var enclosingElement = element.enclosingElement;
+ if (enclosingElement is ExtensionElement) {
+ _recordUsedExtension(enclosingElement);
+ }
}
}
/// If the given [identifier] is prefixed with a [PrefixElement], fill the
/// corresponding `UsedImportedElements.prefixMap` entry and return `true`.
bool _recordPrefixMap(SimpleIdentifier identifier, Element element) {
- bool recordIfTargetIsPrefixElement(Expression target) {
- if (target is SimpleIdentifier && target.staticElement is PrefixElement) {
- List<Element> prefixedElements = usedElements.prefixMap
- .putIfAbsent(target.staticElement, () => <Element>[]);
- prefixedElements.add(element);
- return true;
+ bool recordIfTargetIsPrefixElement(Expression? target) {
+ if (target is SimpleIdentifier) {
+ var targetElement = target.staticElement;
+ if (targetElement is PrefixElement) {
+ List<Element> prefixedElements = usedElements.prefixMap
+ .putIfAbsent(targetElement, () => <Element>[]);
+ prefixedElements.add(element);
+ return true;
+ }
}
return false;
}
- AstNode parent = identifier.parent;
+ var parent = identifier.parent;
if (parent is MethodInvocation && parent.methodName == identifier) {
return recordIfTargetIsPrefixElement(parent.target);
}
@@ -122,7 +128,7 @@
void _recordUsedElement(Element element) {
// Ignore if an unknown library.
- LibraryElement containingLibrary = element.library;
+ var containingLibrary = element.library;
if (containingLibrary == null) {
return;
}
@@ -149,7 +155,7 @@
directive.metadata.accept(this);
}
- void _visitIdentifier(SimpleIdentifier identifier, Element element) {
+ void _visitIdentifier(SimpleIdentifier identifier, Element? element) {
if (element == null) {
return;
}
@@ -157,7 +163,7 @@
if (_recordPrefixMap(identifier, element)) {
return;
}
- Element enclosingElement = element.enclosingElement;
+ var enclosingElement = element.enclosingElement;
if (enclosingElement is CompilationUnitElement) {
_recordUsedElement(element);
} else if (enclosingElement is ExtensionElement) {
@@ -249,7 +255,7 @@
void addImports(CompilationUnit node) {
for (Directive directive in node.directives) {
if (directive is ImportDirective) {
- LibraryElement libraryElement = directive.uriElement;
+ var libraryElement = directive.uriElement;
if (libraryElement == null) {
continue;
}
@@ -259,11 +265,11 @@
// Initialize prefixElementMap
//
if (directive.asKeyword != null) {
- SimpleIdentifier prefixIdentifier = directive.prefix;
+ var prefixIdentifier = directive.prefix;
if (prefixIdentifier != null) {
- Element element = prefixIdentifier.staticElement;
+ var element = prefixIdentifier.staticElement;
if (element is PrefixElement) {
- List<ImportDirective> list = _prefixElementMap[element];
+ var list = _prefixElementMap[element];
if (list == null) {
list = <ImportDirective>[];
_prefixElementMap[element] = list;
@@ -359,9 +365,9 @@
for (int i = 0; i < length; i++) {
ImportDirective unusedImport = _unusedImports[i];
// Check that the imported URI exists and isn't dart:core
- ImportElement importElement = unusedImport.element;
+ var importElement = unusedImport.element;
if (importElement != null) {
- LibraryElement libraryElement = importElement.importedLibrary;
+ var libraryElement = importElement.importedLibrary;
if (libraryElement == null ||
libraryElement.isDartCore ||
libraryElement.isSynthetic) {
@@ -391,8 +397,7 @@
int length = identifiers.length;
for (int i = 0; i < length; i++) {
Identifier identifier = identifiers[i];
- List<SimpleIdentifier> duplicateNames =
- _duplicateShownNamesMap[importDirective];
+ var duplicateNames = _duplicateShownNamesMap[importDirective];
if (duplicateNames == null || !duplicateNames.contains(identifier)) {
// Only generate a hint if we won't also generate a
// "duplicate_shown_name" hint for the same identifier.
@@ -415,8 +420,9 @@
return;
}
// Find import directives using namespaces.
- for (var importDirective in _prefixElementMap[prefix] ?? []) {
- Namespace namespace = _computeNamespace(importDirective);
+ for (var importDirective
+ in _prefixElementMap[prefix] ?? <ImportDirective>[]) {
+ var namespace = _computeNamespace(importDirective);
if (elements.isEmpty) {
// [prefix] and [elements] were added to [usedElements.prefixMap] but
// [elements] is empty, so the prefix was referenced incorrectly.
@@ -425,7 +431,7 @@
_unusedImports.remove(importDirective);
}
for (var element in elements) {
- if (namespace?.getPrefixed(prefix.name, element.name) != null) {
+ if (namespace?.getPrefixed(prefix.name, element.name!) != null) {
_unusedImports.remove(importDirective);
_removeFromUnusedShownNamesMap(element, importDirective);
}
@@ -439,8 +445,8 @@
}
// Find import directives using namespaces.
for (ImportDirective importDirective in _allImports) {
- Namespace namespace = _computeNamespace(importDirective);
- if (namespace?.get(element.name) != null) {
+ var namespace = _computeNamespace(importDirective);
+ if (namespace?.get(element.name!) != null) {
_unusedImports.remove(importDirective);
_removeFromUnusedShownNamesMap(element, importDirective);
}
@@ -453,9 +459,9 @@
}
// Find import directives using namespaces.
for (ImportDirective importDirective in _allImports) {
- Namespace namespace = _computeNamespace(importDirective);
+ var namespace = _computeNamespace(importDirective);
var prefix = importDirective.prefix?.name;
- var elementName = extensionElement.name;
+ var elementName = extensionElement.name!;
if (prefix == null) {
if (namespace?.get(elementName) == extensionElement) {
_unusedImports.remove(importDirective);
@@ -477,16 +483,14 @@
/// Add duplicate shown and hidden names from [directive] into
/// [_duplicateHiddenNamesMap] and [_duplicateShownNamesMap].
void _addDuplicateShownHiddenNames(NamespaceDirective directive) {
- if (directive.combinators == null) {
- return;
- }
for (Combinator combinator in directive.combinators) {
// Use a Set to find duplicates in faster than O(n^2) time.
Set<Element> identifiers = <Element>{};
if (combinator is HideCombinator) {
for (SimpleIdentifier name in combinator.hiddenNames) {
- if (name.staticElement != null) {
- if (!identifiers.add(name.staticElement)) {
+ var element = name.staticElement;
+ if (element != null) {
+ if (!identifiers.add(element)) {
// [name] is a duplicate.
List<SimpleIdentifier> duplicateNames = _duplicateHiddenNamesMap
.putIfAbsent(directive, () => <SimpleIdentifier>[]);
@@ -496,8 +500,9 @@
}
} else if (combinator is ShowCombinator) {
for (SimpleIdentifier name in combinator.shownNames) {
- if (name.staticElement != null) {
- if (!identifiers.add(name.staticElement)) {
+ var element = name.staticElement;
+ if (element != null) {
+ if (!identifiers.add(element)) {
// [name] is a duplicate.
List<SimpleIdentifier> duplicateNames = _duplicateShownNamesMap
.putIfAbsent(directive, () => <SimpleIdentifier>[]);
@@ -511,9 +516,6 @@
/// Add every shown name from [importDirective] into [_unusedShownNamesMap].
void _addShownNames(ImportDirective importDirective) {
- if (importDirective.combinators == null) {
- return;
- }
List<SimpleIdentifier> identifiers = <SimpleIdentifier>[];
_unusedShownNamesMap[importDirective] = identifiers;
for (Combinator combinator in importDirective.combinators) {
@@ -536,12 +538,12 @@
/// @param importDirective the import directive used to compute the returned
/// namespace
/// @return the computed or looked up [Namespace]
- Namespace _computeNamespace(ImportDirective importDirective) {
- Namespace namespace = _namespaceMap[importDirective];
+ Namespace? _computeNamespace(ImportDirective importDirective) {
+ var namespace = _namespaceMap[importDirective];
if (namespace == null) {
// If the namespace isn't in the namespaceMap, then compute and put it in
// the map.
- ImportElement importElement = importDirective.element;
+ var importElement = importDirective.element;
if (importElement != null) {
namespace = importElement.namespace;
_namespaceMap[importDirective] = namespace;
@@ -553,7 +555,7 @@
/// Remove [element] from the list of names shown by [importDirective].
void _removeFromUnusedShownNamesMap(
Element element, ImportDirective importDirective) {
- List<SimpleIdentifier> identifiers = _unusedShownNamesMap[importDirective];
+ var identifiers = _unusedShownNamesMap[importDirective];
if (identifiers == null) {
return;
}
diff --git a/pkg/analyzer/lib/src/error/inheritance_override.dart b/pkg/analyzer/lib/src/error/inheritance_override.dart
index 72a8b0c..4b4e865 100644
--- a/pkg/analyzer/lib/src/error/inheritance_override.dart
+++ b/pkg/analyzer/lib/src/error/inheritance_override.dart
@@ -12,13 +12,11 @@
import 'package:analyzer/error/listener.dart';
import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/dart/element/inheritance_manager3.dart';
-import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/dart/element/type_system.dart';
import 'package:analyzer/src/error/codes.dart';
import 'package:analyzer/src/error/correct_override.dart';
import 'package:analyzer/src/error/getter_setter_types_verifier.dart';
import 'package:analyzer/src/task/inference_error.dart';
-import 'package:meta/meta.dart';
class InheritanceOverrideVerifier {
static const _missingOverridesKey = 'missingOverrides';
@@ -33,7 +31,7 @@
: _typeProvider = _typeSystem.typeProvider;
void verifyUnit(CompilationUnit unit) {
- var library = unit.declaredElement.library;
+ var library = unit.declaredElement!.library as LibraryElementImpl;
for (var declaration in unit.declarations) {
if (declaration is ClassDeclaration) {
_ClassVerifier(
@@ -93,34 +91,34 @@
final ErrorReporter reporter;
final FeatureSet featureSet;
- final LibraryElement library;
+ final LibraryElementImpl library;
final Uri libraryUri;
final ClassElementImpl classElement;
final SimpleIdentifier classNameNode;
final List<ClassMember> members;
- final ImplementsClause implementsClause;
- final OnClause onClause;
- final TypeName superclass;
- final WithClause withClause;
+ final ImplementsClause? implementsClause;
+ final OnClause? onClause;
+ final TypeName? superclass;
+ final WithClause? withClause;
final List<InterfaceType> directSuperInterfaces = [];
_ClassVerifier({
- this.typeSystem,
- this.typeProvider,
- this.inheritance,
- this.reporter,
- this.featureSet,
- this.library,
- this.classNameNode,
+ required this.typeSystem,
+ required this.typeProvider,
+ required this.inheritance,
+ required this.reporter,
+ required this.featureSet,
+ required this.library,
+ required this.classNameNode,
this.implementsClause,
this.members = const [],
this.onClause,
this.superclass,
this.withClause,
}) : libraryUri = library.source.uri,
- classElement = classNameNode.staticElement;
+ classElement = classNameNode.staticElement as ClassElementImpl;
bool get _isNonNullableByDefault => typeSystem.isNonNullableByDefault;
@@ -142,7 +140,7 @@
}
if (classElement.supertype != null) {
- directSuperInterfaces.add(classElement.supertype);
+ directSuperInterfaces.add(classElement.supertype!);
}
directSuperInterfaces.addAll(classElement.superclassConstraints);
@@ -157,7 +155,7 @@
var mixinTypes = classElement.mixins;
for (var i = 0; i < mixinTypes.length; i++) {
var mixinType = mixinTypes[i];
- _checkDeclaredMembers(mixinNodes[i], mixinType, mixinIndex: i);
+ _checkDeclaredMembers(mixinNodes![i], mixinType, mixinIndex: i);
directSuperInterfaces.add(mixinType);
}
@@ -169,7 +167,7 @@
if (member is FieldDeclaration) {
var fieldList = member.fields;
for (var field in fieldList.variables) {
- FieldElement fieldElement = field.declaredElement;
+ var fieldElement = field.declaredElement as FieldElement;
_checkDeclaredMember(field.name, libraryUri, fieldElement.getter);
_checkDeclaredMember(field.name, libraryUri, fieldElement.setter);
}
@@ -190,14 +188,14 @@
).checkInterface(classElement, interface);
if (!classElement.isAbstract) {
- List<ExecutableElement> inheritedAbstract;
+ List<ExecutableElement>? inheritedAbstract;
for (var name in interface.map.keys) {
if (!name.isAccessibleFor(libraryUri)) {
continue;
}
- var interfaceElement = interface.map[name];
+ var interfaceElement = interface.map[name]!;
var concreteElement = interface.implemented[name];
// No concrete implementation of the name.
@@ -251,8 +249,8 @@
void _checkDeclaredMember(
AstNode node,
Uri libraryUri,
- ExecutableElement member, {
- List<FormalParameter> methodParameterNodes,
+ ExecutableElement? member, {
+ List<FormalParameter>? methodParameterNodes,
int mixinIndex = -1,
}) {
if (member == null) return;
@@ -308,8 +306,8 @@
/// Check that instance members of [type] are valid overrides of the
/// corresponding instance members in each of [directSuperInterfaces].
- void _checkDeclaredMembers(AstNode node, InterfaceTypeImpl type,
- {@required int mixinIndex}) {
+ void _checkDeclaredMembers(AstNode node, InterfaceType type,
+ {required int mixinIndex}) {
var libraryUri = type.element.library.source.uri;
for (var method in type.methods) {
_checkDeclaredMember(node, libraryUri, method, mixinIndex: mixinIndex);
@@ -332,7 +330,7 @@
return false;
}
- DartType type = typeName.type;
+ DartType type = typeName.type!;
if (type is InterfaceType &&
typeProvider.nonSubtypableClasses.contains(type.element)) {
reporter.reportErrorForNode(errorCode, typeName, [type]);
@@ -348,7 +346,7 @@
bool _checkDirectSuperTypes() {
var hasError = false;
if (implementsClause != null) {
- for (var typeName in implementsClause.interfaces) {
+ for (var typeName in implementsClause!.interfaces) {
if (_checkDirectSuperType(
typeName,
CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS,
@@ -358,7 +356,7 @@
}
}
if (onClause != null) {
- for (var typeName in onClause.superclassConstraints) {
+ for (var typeName in onClause!.superclassConstraints) {
if (_checkDirectSuperType(
typeName,
CompileTimeErrorCode.MIXIN_SUPER_CLASS_CONSTRAINT_DISALLOWED_CLASS,
@@ -369,14 +367,14 @@
}
if (superclass != null) {
if (_checkDirectSuperType(
- superclass,
+ superclass!,
CompileTimeErrorCode.EXTENDS_DISALLOWED_CLASS,
)) {
hasError = true;
}
}
if (withClause != null) {
- for (var typeName in withClause.mixinTypes) {
+ for (var typeName in withClause!.mixinTypes) {
if (_checkDirectSuperType(
typeName,
CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS,
@@ -398,7 +396,8 @@
var derivedOptionalElements = <ParameterElementImpl>[];
var derivedParameterElements = derivedExecutable.parameters;
for (var i = 0; i < derivedParameterElements.length; i++) {
- var parameterElement = derivedParameterElements[i];
+ var parameterElement =
+ derivedParameterElements[i] as ParameterElementImpl;
if (parameterElement.isOptional) {
derivedOptionalNodes.add(derivedParameterNodes[i]);
derivedOptionalElements.add(parameterElement);
@@ -410,7 +409,8 @@
for (var i = 0; i < baseParameterElements.length; ++i) {
var baseParameter = baseParameterElements[i];
if (baseParameter.isOptional) {
- baseOptionalElements.add(baseParameter.declaration);
+ baseOptionalElements
+ .add(baseParameter.declaration as ParameterElementImpl);
}
}
@@ -432,7 +432,7 @@
var baseParameter = baseOptionalElements[j];
if (name == baseParameter.name && baseParameter.hasDefaultValue) {
var baseValue = baseParameter.computeConstantValue();
- var derivedResult = derivedElement.evaluationResult;
+ var derivedResult = derivedElement.evaluationResult!;
if (!_constantValuesEqual(derivedResult.value, baseValue)) {
reporter.reportErrorForNode(
StaticWarningCode
@@ -461,7 +461,7 @@
var baseElement = baseOptionalElements[i];
if (baseElement.hasDefaultValue) {
var baseValue = baseElement.computeConstantValue();
- var derivedResult = derivedElement.evaluationResult;
+ var derivedResult = derivedElement.evaluationResult!;
if (!_constantValuesEqual(derivedResult.value, baseValue)) {
reporter.reportErrorForNode(
StaticWarningCode
@@ -487,7 +487,7 @@
/// [CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE_ON],
/// [CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE_WITH].
bool _checkForRecursiveInterfaceInheritance(ClassElement element,
- [List<ClassElement> path]) {
+ [List<ClassElement>? path]) {
path ??= <ClassElement>[];
// Detect error condition.
@@ -528,7 +528,7 @@
path.add(element);
// n-case
- InterfaceType supertype = element.supertype;
+ var supertype = element.supertype;
if (supertype != null &&
_checkForRecursiveInterfaceInheritance(supertype.element, path)) {
return true;
@@ -648,7 +648,7 @@
}
}
- void _reportInheritedAbstractMembers(List<ExecutableElement> elements) {
+ void _reportInheritedAbstractMembers(List<ExecutableElement>? elements) {
if (elements == null) {
return;
}
@@ -669,15 +669,10 @@
}
}
- String description;
var elementName = element.displayName;
var enclosingElement = element.enclosingElement;
- if (enclosingElement != null) {
- var enclosingName = enclosingElement.displayName;
- description = "$prefix$enclosingName.$elementName";
- } else {
- description = "$prefix$elementName";
- }
+ var enclosingName = enclosingElement.displayName;
+ var description = "$prefix$enclosingName.$elementName";
descriptions.add(description);
}
@@ -734,7 +729,7 @@
node.name,
[
classElement.name,
- inferenceError.arguments[0],
+ inferenceError!.arguments[0],
],
);
return true;
@@ -743,7 +738,7 @@
return false;
}
- static bool _constantValuesEqual(DartObject x, DartObject y) {
+ static bool _constantValuesEqual(DartObject? x, DartObject? y) {
// If either constant value couldn't be computed due to an error, the
// corresponding DartObject will be `null`. Since an error has already been
// reported, there's no need to report another.
diff --git a/pkg/analyzer/lib/src/error/language_version_override_verifier.dart b/pkg/analyzer/lib/src/error/language_version_override_verifier.dart
index d5732f9..5853f8e 100644
--- a/pkg/analyzer/lib/src/error/language_version_override_verifier.dart
+++ b/pkg/analyzer/lib/src/error/language_version_override_verifier.dart
@@ -20,9 +20,9 @@
Token beginToken = unit.beginToken;
if (beginToken.type == TokenType.SCRIPT_TAG) {
- beginToken = beginToken.next;
+ beginToken = beginToken.next!;
}
- Token commentToken = beginToken.precedingComments;
+ Token? commentToken = beginToken.precedingComments;
while (commentToken != null) {
if (_findLanguageVersionOverrideComment(commentToken)) {
// A valid language version override was found. Do not search for any
@@ -278,7 +278,7 @@
var token = firstMeaningfulToken.next;
while (token != null) {
if (token.offset > firstMeaningfulToken.offset) {
- var commentToken = token.precedingComments;
+ Token? commentToken = token.precedingComments;
for (; commentToken != null; commentToken = commentToken.next) {
var lexeme = commentToken.lexeme;
diff --git a/pkg/analyzer/lib/src/error/literal_element_verifier.dart b/pkg/analyzer/lib/src/error/literal_element_verifier.dart
index 995b3e6..36b4318 100644
--- a/pkg/analyzer/lib/src/error/literal_element_verifier.dart
+++ b/pkg/analyzer/lib/src/error/literal_element_verifier.dart
@@ -21,11 +21,11 @@
final bool forList;
final bool forSet;
- final DartType elementType;
+ final DartType? elementType;
final bool forMap;
- final DartType mapKeyType;
- final DartType mapValueType;
+ final DartType? mapKeyType;
+ final DartType? mapValueType;
LiteralElementVerifier(
this.typeProvider,
@@ -38,7 +38,7 @@
this.forMap = false,
this.mapKeyType,
this.mapValueType,
- this.featureSet,
+ required this.featureSet,
});
void verify(CollectionElement element) {
@@ -48,7 +48,7 @@
/// Check that the given [type] is assignable to the [elementType], otherwise
/// report the list or set error on the [errorNode].
void _checkAssignableToElementType(DartType type, AstNode errorNode) {
- if (!typeSystem.isAssignableTo2(type, elementType)) {
+ if (!typeSystem.isAssignableTo2(type, elementType!)) {
var errorCode = forList
? CompileTimeErrorCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
: CompileTimeErrorCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE;
@@ -62,13 +62,13 @@
/// Verify that the given [element] can be assigned to the [elementType] of
/// the enclosing list, set, of map literal.
- void _verifyElement(CollectionElement element) {
+ void _verifyElement(CollectionElement? element) {
if (element is Expression) {
if (forList || forSet) {
- if (!elementType.isVoid && checkForUseOfVoidResult(element)) {
+ if (!elementType!.isVoid && checkForUseOfVoidResult(element)) {
return;
}
- _checkAssignableToElementType(element.staticType, element);
+ _checkAssignableToElementType(element.staticType!, element);
} else {
errorReporter.reportErrorForNode(
CompileTimeErrorCode.EXPRESSION_IN_MAP, element);
@@ -99,16 +99,16 @@
/// Verify that the [entry]'s key and value are assignable to [mapKeyType]
/// and [mapValueType].
void _verifyMapLiteralEntry(MapLiteralEntry entry) {
- if (!mapKeyType.isVoid && checkForUseOfVoidResult(entry.key)) {
+ if (!mapKeyType!.isVoid && checkForUseOfVoidResult(entry.key)) {
return;
}
- if (!mapValueType.isVoid && checkForUseOfVoidResult(entry.value)) {
+ if (!mapValueType!.isVoid && checkForUseOfVoidResult(entry.value)) {
return;
}
- var keyType = entry.key.staticType;
- if (!typeSystem.isAssignableTo2(keyType, mapKeyType)) {
+ var keyType = entry.key.staticType!;
+ if (!typeSystem.isAssignableTo2(keyType, mapKeyType!)) {
errorReporter.reportErrorForNode(
CompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE,
entry.key,
@@ -116,8 +116,8 @@
);
}
- var valueType = entry.value.staticType;
- if (!typeSystem.isAssignableTo2(valueType, mapValueType)) {
+ var valueType = entry.value.staticType!;
+ if (!typeSystem.isAssignableTo2(valueType, mapValueType!)) {
errorReporter.reportErrorForNode(
CompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE,
entry.value,
@@ -129,7 +129,7 @@
/// Verify that the type of the elements of the given [expression] can be
/// assigned to the [elementType] of the enclosing collection.
void _verifySpreadForListOrSet(bool isNullAware, Expression expression) {
- var expressionType = expression.staticType;
+ var expressionType = expression.staticType!;
if (expressionType.isDynamic) return;
if (typeSystem.isNonNullableByDefault) {
@@ -171,7 +171,7 @@
}
var iterableElementType = iterableType.typeArguments[0];
- if (!typeSystem.isAssignableTo2(iterableElementType, elementType)) {
+ if (!typeSystem.isAssignableTo2(iterableElementType, elementType!)) {
var errorCode = forList
? CompileTimeErrorCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
: CompileTimeErrorCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE;
@@ -186,7 +186,7 @@
/// Verify that the [expression] is a subtype of `Map<Object, Object>`, and
/// its key and values are assignable to [mapKeyType] and [mapValueType].
void _verifySpreadForMap(bool isNullAware, Expression expression) {
- var expressionType = expression.staticType;
+ var expressionType = expression.staticType!;
if (expressionType.isDynamic) return;
if (typeSystem.isNonNullableByDefault) {
@@ -228,7 +228,7 @@
}
var keyType = mapType.typeArguments[0];
- if (!typeSystem.isAssignableTo2(keyType, mapKeyType)) {
+ if (!typeSystem.isAssignableTo2(keyType, mapKeyType!)) {
errorReporter.reportErrorForNode(
CompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE,
expression,
@@ -237,7 +237,7 @@
}
var valueType = mapType.typeArguments[1];
- if (!typeSystem.isAssignableTo2(valueType, mapValueType)) {
+ if (!typeSystem.isAssignableTo2(valueType, mapValueType!)) {
errorReporter.reportErrorForNode(
CompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE,
expression,
diff --git a/pkg/analyzer/lib/src/error/must_call_super_verifier.dart b/pkg/analyzer/lib/src/error/must_call_super_verifier.dart
index f3a5942..ad1ca30 100644
--- a/pkg/analyzer/lib/src/error/must_call_super_verifier.dart
+++ b/pkg/analyzer/lib/src/error/must_call_super_verifier.dart
@@ -19,9 +19,10 @@
if (node.isStatic || node.isAbstract) {
return;
}
- ExecutableElement overridden =
- _findOverriddenMemberWithMustCallSuper(node.declaredElement);
- if (overridden != null && _hasConcreteSuperMethod(node.declaredElement)) {
+ var element = node.declaredElement!;
+ var overridden = _findOverriddenMemberWithMustCallSuper(element);
+ if (overridden != null &&
+ _hasConcreteSuperMethod(element as MethodElement)) {
_SuperCallVerifier verifier = _SuperCallVerifier(overridden.name);
node.accept(verifier);
if (!verifier.superIsCalled) {
@@ -39,28 +40,28 @@
/// `@mustCallSuper`.
///
/// [1]: https://pub.dev/documentation/meta/latest/meta/mustCallSuper-constant.html
- ExecutableElement _findOverriddenMemberWithMustCallSuper(
+ ExecutableElement? _findOverriddenMemberWithMustCallSuper(
ExecutableElement element) {
//Element member = node.declaredElement;
if (element.enclosingElement is! ClassElement) {
return null;
}
- ClassElement classElement = element.enclosingElement;
+ var classElement = element.enclosingElement as ClassElement;
String name = element.name;
// Walk up the type hierarchy from [classElement], ignoring direct
// interfaces.
- Queue<ClassElement> superclasses =
+ Queue<ClassElement?> superclasses =
Queue.of(classElement.mixins.map((i) => i.element))
..addAll(classElement.superclassConstraints.map((i) => i.element))
..add(classElement.supertype?.element);
var visitedClasses = <ClassElement>{};
while (superclasses.isNotEmpty) {
- ClassElement ancestor = superclasses.removeFirst();
+ var ancestor = superclasses.removeFirst();
if (ancestor == null || !visitedClasses.add(ancestor)) {
continue;
}
- ExecutableElement member = ancestor.getMethod(name) ??
+ var member = ancestor.getMethod(name) ??
ancestor.getGetter(name) ??
ancestor.getSetter(name);
if (member is MethodElement && member.hasMustCallSuper) {
@@ -76,7 +77,7 @@
/// Returns whether [node] overrides a concrete method.
bool _hasConcreteSuperMethod(MethodElement element) {
- ClassElement classElement = element.enclosingElement;
+ var classElement = element.enclosingElement as ClassElement;
String name = element.name;
bool isConcrete(ClassElement element) =>
@@ -91,7 +92,7 @@
return true;
}
if (classElement.supertype != null &&
- isConcrete(classElement.supertype.element)) {
+ isConcrete(classElement.supertype!.element)) {
return true;
}
diff --git a/pkg/analyzer/lib/src/error/nullable_dereference_verifier.dart b/pkg/analyzer/lib/src/error/nullable_dereference_verifier.dart
index 1ed2687..e1dd812 100644
--- a/pkg/analyzer/lib/src/error/nullable_dereference_verifier.dart
+++ b/pkg/analyzer/lib/src/error/nullable_dereference_verifier.dart
@@ -9,7 +9,6 @@
import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/dart/element/type_system.dart';
import 'package:analyzer/src/error/codes.dart';
-import 'package:meta/meta.dart';
/// Helper for checking potentially nullable dereferences.
class NullableDereferenceVerifier {
@@ -17,22 +16,23 @@
final ErrorReporter _errorReporter;
NullableDereferenceVerifier({
- @required TypeSystemImpl typeSystem,
- @required ErrorReporter errorReporter,
- }) : _typeSystem = typeSystem,
+ required TypeSystemImpl typeSystem,
+ required ErrorReporter errorReporter,
+ }) : _typeSystem = typeSystem,
_errorReporter = errorReporter;
- bool expression(Expression expression, {DartType type, ErrorCode errorCode}) {
+ bool expression(Expression expression,
+ {DartType? type, ErrorCode? errorCode}) {
if (!_typeSystem.isNonNullableByDefault) {
return false;
}
- type ??= expression.staticType;
+ type ??= expression.staticType!;
return _check(expression, type, errorCode: errorCode);
}
void report(AstNode errorNode, DartType receiverType,
- {ErrorCode errorCode, List<String> arguments = const <String>[]}) {
+ {ErrorCode? errorCode, List<String> arguments = const <String>[]}) {
if (receiverType == _typeSystem.typeProvider.nullType) {
errorCode = CompileTimeErrorCode.INVALID_USE_OF_NULL_VALUE;
} else {
@@ -47,7 +47,8 @@
/// receiver is the implicit `this`, the name of the invocation.
///
/// Returns whether [receiverType] was reported.
- bool _check(AstNode errorNode, DartType receiverType, {ErrorCode errorCode}) {
+ bool _check(AstNode errorNode, DartType receiverType,
+ {ErrorCode? errorCode}) {
if (identical(receiverType, DynamicTypeImpl.instance) ||
!_typeSystem.isPotentiallyNullable(receiverType)) {
return false;
diff --git a/pkg/analyzer/lib/src/error/override_verifier.dart b/pkg/analyzer/lib/src/error/override_verifier.dart
index cf18a55..71a6d88 100644
--- a/pkg/analyzer/lib/src/error/override_verifier.dart
+++ b/pkg/analyzer/lib/src/error/override_verifier.dart
@@ -23,7 +23,7 @@
final ErrorReporter _errorReporter;
/// The current class or mixin.
- ClassElement _currentClass;
+ ClassElement? _currentClass;
OverrideVerifier(
this._inheritance, LibraryElement library, this._errorReporter)
@@ -39,12 +39,12 @@
@override
void visitFieldDeclaration(FieldDeclaration node) {
for (VariableDeclaration field in node.fields.variables) {
- FieldElement fieldElement = field.declaredElement;
+ var fieldElement = field.declaredElement as FieldElement;
if (fieldElement.hasOverride) {
- PropertyAccessorElement getter = fieldElement.getter;
+ var getter = fieldElement.getter;
if (getter != null && _isOverride(getter)) continue;
- PropertyAccessorElement setter = fieldElement.setter;
+ var setter = fieldElement.setter;
if (setter != null && _isOverride(setter)) continue;
_errorReporter.reportErrorForNode(
@@ -57,7 +57,7 @@
@override
void visitMethodDeclaration(MethodDeclaration node) {
- ExecutableElement element = node.declaredElement;
+ var element = node.declaredElement!;
if (element.hasOverride && !_isOverride(element)) {
if (element is MethodElement) {
_errorReporter.reportErrorForNode(
@@ -90,6 +90,6 @@
/// Return `true` if the [member] overrides a member from a superinterface.
bool _isOverride(ExecutableElement member) {
var name = Name(_libraryUri, member.name);
- return _inheritance.getOverridden2(_currentClass, name) != null;
+ return _inheritance.getOverridden2(_currentClass!, name) != null;
}
}
diff --git a/pkg/analyzer/lib/src/error/required_parameters_verifier.dart b/pkg/analyzer/lib/src/error/required_parameters_verifier.dart
index b5f2080..19ca635 100644
--- a/pkg/analyzer/lib/src/error/required_parameters_verifier.dart
+++ b/pkg/analyzer/lib/src/error/required_parameters_verifier.dart
@@ -4,12 +4,12 @@
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/visitor.dart';
-import 'package:analyzer/dart/constant/value.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/error/listener.dart';
import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/error/codes.dart';
+import 'package:collection/collection.dart';
/// Checks for missing arguments for required named parameters.
class RequiredParametersVerifier extends SimpleAstVisitor<void> {
@@ -75,7 +75,7 @@
}
void _check(
- List<ParameterElement> parameters,
+ List<ParameterElement>? parameters,
ArgumentList argumentList,
AstNode node,
) {
@@ -99,7 +99,7 @@
if (annotation != null) {
String parameterName = parameter.name;
if (!_containsNamedExpression(argumentList, parameterName)) {
- String reason = annotation.reason;
+ var reason = annotation.reason;
if (reason != null) {
_errorReporter.reportErrorForNode(
HintCode.MISSING_REQUIRED_PARAM_WITH_DETAILS,
@@ -132,7 +132,7 @@
return false;
}
- static ExecutableElement _executableElement(Element element) {
+ static ExecutableElement? _executableElement(Element? element) {
if (element is ExecutableElement) {
return element;
} else {
@@ -140,11 +140,9 @@
}
}
- static _RequiredAnnotation _requiredAnnotation(ParameterElement element) {
- var annotation = element.metadata.firstWhere(
- (e) => e.isRequired,
- orElse: () => null,
- );
+ static _RequiredAnnotation? _requiredAnnotation(ParameterElement element) {
+ var annotation = element.metadata.firstWhereOrNull((e) => e.isRequired)
+ as ElementAnnotationImpl?;
if (annotation != null) {
return _RequiredAnnotation(annotation);
}
@@ -160,17 +158,17 @@
class _RequiredAnnotation {
/// The instance of `@required` annotation.
/// If `null`, then the parameter is `required` in null safety.
- final ElementAnnotationImpl annotation;
+ final ElementAnnotationImpl? annotation;
_RequiredAnnotation(this.annotation);
- String get reason {
+ String? get reason {
if (annotation == null) {
return null;
}
- DartObject constantValue = annotation.computeConstantValue();
- String value = constantValue?.getField('reason')?.toStringValue();
+ var constantValue = annotation!.computeConstantValue();
+ var value = constantValue?.getField('reason')?.toStringValue();
return (value == null || value.isEmpty) ? null : value;
}
}
diff --git a/pkg/analyzer/lib/src/error/return_type_verifier.dart b/pkg/analyzer/lib/src/error/return_type_verifier.dart
index ce9f2eb..c59865c 100644
--- a/pkg/analyzer/lib/src/error/return_type_verifier.dart
+++ b/pkg/analyzer/lib/src/error/return_type_verifier.dart
@@ -13,20 +13,19 @@
import 'package:analyzer/src/error/analyzer_error_code.dart';
import 'package:analyzer/src/error/codes.dart';
import 'package:analyzer/src/generated/error_verifier.dart';
-import 'package:meta/meta.dart';
class ReturnTypeVerifier {
final TypeProviderImpl _typeProvider;
final TypeSystemImpl _typeSystem;
final ErrorReporter _errorReporter;
- EnclosingExecutableContext enclosingExecutable;
+ late EnclosingExecutableContext enclosingExecutable;
ReturnTypeVerifier({
- @required TypeProviderImpl typeProvider,
- @required TypeSystemImpl typeSystem,
- @required ErrorReporter errorReporter,
- }) : _typeProvider = typeProvider,
+ required TypeProviderImpl typeProvider,
+ required TypeSystemImpl typeSystem,
+ required ErrorReporter errorReporter,
+ }) : _typeProvider = typeProvider,
_typeSystem = typeSystem,
_errorReporter = errorReporter;
@@ -80,7 +79,7 @@
_checkReturnExpression(expression);
}
- void verifyReturnType(TypeAnnotation returnType) {
+ void verifyReturnType(TypeAnnotation? returnType) {
// If no declared type, then the type is `dynamic`, which is valid.
if (returnType == null) {
return;
@@ -152,7 +151,7 @@
// `T` is the declared return type.
// `S` is the static type of the expression.
var T = enclosingExecutable.returnType;
- var S = expression.staticType;
+ var S = expression.staticType!;
void reportTypeError() {
if (enclosingExecutable.catchErrorOnErrorReturnType != null) {
@@ -259,7 +258,7 @@
// `T` is the declared return type.
// `S` is the static type of the expression.
var T = enclosingExecutable.returnType;
- var S = expression.staticType;
+ var S = expression.staticType!;
void reportTypeError() {
if (enclosingExecutable.catchErrorOnErrorReturnType != null) {
diff --git a/pkg/analyzer/lib/src/error/todo_finder.dart b/pkg/analyzer/lib/src/error/todo_finder.dart
index 140a09e..f3e536c 100644
--- a/pkg/analyzer/lib/src/error/todo_finder.dart
+++ b/pkg/analyzer/lib/src/error/todo_finder.dart
@@ -34,16 +34,16 @@
///
/// @param unit the compilation unit containing the to-do comments
void findIn(CompilationUnit unit) {
- _gatherTodoComments(unit.beginToken, unit.lineInfo);
+ _gatherTodoComments(unit.beginToken, unit.lineInfo!);
}
/// Search the comment tokens reachable from the given token and create errors
/// for each to-do comment.
///
/// @param token the head of the list of tokens being searched
- void _gatherTodoComments(Token token, LineInfo lineInfo) {
+ void _gatherTodoComments(Token? token, LineInfo lineInfo) {
while (token != null && token.type != TokenType.EOF) {
- Token commentToken = token.precedingComments;
+ Token? commentToken = token.precedingComments;
while (commentToken != null) {
if (commentToken.type == TokenType.SINGLE_LINE_COMMENT ||
commentToken.type == TokenType.MULTI_LINE_COMMENT) {
@@ -64,7 +64,7 @@
///
/// Returns the next comment token to begin searching from (skipping over
/// any continuations).
- Token _scrapeTodoComment(Token commentToken, LineInfo lineInfo) {
+ Token? _scrapeTodoComment(Token commentToken, LineInfo lineInfo) {
Iterable<Match> matches =
TodoCode.TODO_REGEX.allMatches(commentToken.lexeme);
// Track the comment that will be returned for looking for the next todo.
@@ -74,10 +74,10 @@
final commentLocation = lineInfo.getLocation(commentToken.offset);
for (Match match in matches) {
- int offset = commentToken.offset + match.start + match.group(1).length;
+ int offset = commentToken.offset + match.start + match.group(1)!.length;
int column =
- commentLocation.columnNumber + match.start + match.group(1).length;
- String todoText = match.group(2);
+ commentLocation.columnNumber + match.start + match.group(1)!.length;
+ String todoText = match.group(2)!;
int end = offset + todoText.length;
if (commentToken.type == TokenType.MULTI_LINE_COMMENT) {
diff --git a/pkg/analyzer/lib/src/error/type_arguments_verifier.dart b/pkg/analyzer/lib/src/error/type_arguments_verifier.dart
index cdcbe34..7af6125 100644
--- a/pkg/analyzer/lib/src/error/type_arguments_verifier.dart
+++ b/pkg/analyzer/lib/src/error/type_arguments_verifier.dart
@@ -27,7 +27,8 @@
this._errorReporter,
);
- TypeSystemImpl get _typeSystem => _libraryElement.typeSystem;
+ TypeSystemImpl get _typeSystem =>
+ _libraryElement.typeSystem as TypeSystemImpl;
void checkFunctionExpressionInvocation(FunctionExpressionInvocation node) {
_checkTypeArguments(node);
@@ -35,7 +36,7 @@
}
void checkListLiteral(ListLiteral node) {
- TypeArgumentList typeArguments = node.typeArguments;
+ var typeArguments = node.typeArguments;
if (typeArguments != null) {
if (node.isConst) {
_checkTypeArgumentConst(
@@ -50,7 +51,7 @@
}
void checkMapLiteral(SetOrMapLiteral node) {
- TypeArgumentList typeArguments = node.typeArguments;
+ var typeArguments = node.typeArguments;
if (typeArguments != null) {
if (node.isConst) {
_checkTypeArgumentConst(
@@ -70,7 +71,7 @@
}
void checkSetLiteral(SetOrMapLiteral node) {
- TypeArgumentList typeArguments = node.typeArguments;
+ var typeArguments = node.typeArguments;
if (typeArguments != null) {
if (node.isConst) {
_checkTypeArgumentConst(
@@ -86,29 +87,28 @@
void checkTypeName(TypeName node) {
_checkForTypeArgumentNotMatchingBounds(node);
- if (node.parent is! ConstructorName ||
- node.parent.parent is! InstanceCreationExpression) {
+ var parent = node.parent;
+ if (parent is! ConstructorName ||
+ parent.parent is! InstanceCreationExpression) {
_checkForRawTypeName(node);
}
}
void _checkForImplicitDynamicInvoke(InvocationExpression node) {
- if (_options.implicitDynamic ||
- node == null ||
- node.typeArguments != null) {
+ if (_options.implicitDynamic || node.typeArguments != null) {
return;
}
- DartType invokeType = node.staticInvokeType;
- DartType declaredType = node.function.staticType;
+ var invokeType = node.staticInvokeType;
+ var declaredType = node.function.staticType;
if (invokeType is FunctionType &&
declaredType is FunctionType &&
declaredType.typeFormals.isNotEmpty) {
- List<DartType> typeArgs = node.typeArgumentTypes;
+ List<DartType> typeArgs = node.typeArgumentTypes!;
if (typeArgs.any((t) => t.isDynamic)) {
// Issue an error depending on what we're trying to call.
Expression function = node.function;
if (function is Identifier) {
- Element element = function.staticElement;
+ var element = function.staticElement;
if (element is MethodElement) {
_errorReporter.reportErrorForNode(
LanguageCode.IMPLICIT_DYNAMIC_METHOD,
@@ -138,7 +138,7 @@
if (_options.implicitDynamic || node.typeArguments != null) {
return;
}
- DartType type = node.staticType;
+ DartType type = node.staticType!;
// It's an error if either the key or value was inferred as dynamic.
if (type is InterfaceType && type.typeArguments.any((t) => t.isDynamic)) {
// TODO(brianwilkerson) Add StrongModeCode.IMPLICIT_DYNAMIC_SET_LITERAL
@@ -157,23 +157,23 @@
/// [HintCode.STRICT_RAW_TYPE].
void _checkForRawTypeName(TypeName node) {
AstNode parentEscapingTypeArguments(TypeName node) {
- AstNode parent = node.parent;
+ var parent = node.parent!;
while (parent is TypeArgumentList || parent is TypeName) {
if (parent.parent == null) {
return parent;
}
- parent = parent.parent;
+ parent = parent.parent!;
}
return parent;
}
- if (!_options.strictRawTypes || node == null) return;
+ if (!_options.strictRawTypes) return;
if (node.typeArguments != null) {
// Type has explicit type arguments.
return;
}
if (_isMissingTypeArguments(
- node, node.type, node.name.staticElement, null)) {
+ node, node.type!, node.name.staticElement, null)) {
AstNode unwrappedParent = parentEscapingTypeArguments(node);
if (unwrappedParent is AsExpression || unwrappedParent is IsExpression) {
// Do not report a "Strict raw type" error in this case; too noisy.
@@ -188,14 +188,14 @@
/// Verify that the type arguments in the given [typeName] are all within
/// their bounds.
void _checkForTypeArgumentNotMatchingBounds(TypeName typeName) {
- var type = typeName.type;
+ var type = typeName.type!;
List<TypeParameterElement> typeParameters;
List<DartType> typeArguments;
var aliasElement = type.aliasElement;
if (aliasElement != null) {
typeParameters = aliasElement.typeParameters;
- typeArguments = type.aliasArguments;
+ typeArguments = type.aliasArguments!;
} else if (type is InterfaceType) {
typeParameters = type.element.typeParameters;
typeArguments = type.typeArguments;
@@ -208,7 +208,7 @@
}
// Check for regular-bounded.
- List<_TypeArgumentIssue> issues;
+ List<_TypeArgumentIssue>? issues;
var substitution = Substitution.fromPairs(typeParameters, typeArguments);
for (var i = 0; i < typeArguments.length; i++) {
var typeParameter = typeParameters[i];
@@ -258,7 +258,7 @@
// Prepare type arguments for checking for super-bounded.
type = _typeSystem.replaceTopAndBottom(type);
if (type.aliasElement != null) {
- typeArguments = type.aliasArguments;
+ typeArguments = type.aliasArguments!;
} else if (type is InterfaceType) {
typeArguments = type.typeArguments;
} else {
@@ -323,7 +323,7 @@
/// Verify that the given [typeArguments] are all within their bounds, as
/// defined by the given [element].
void _checkTypeArguments(InvocationExpression node) {
- NodeList<TypeAnnotation> typeArgumentList = node.typeArguments?.arguments;
+ var typeArgumentList = node.typeArguments?.arguments;
if (typeArgumentList == null) {
return;
}
@@ -332,7 +332,7 @@
var instantiatedType = node.staticInvokeType;
if (genericType is FunctionType && instantiatedType is FunctionType) {
var fnTypeParams = genericType.typeFormals;
- var typeArgs = typeArgumentList.map((t) => t.type).toList();
+ var typeArgs = typeArgumentList.map((t) => t.type!).toList();
// If the amount mismatches, clean up the lists to be substitutable. The
// mismatch in size is reported elsewhere, but we must successfully
@@ -393,12 +393,12 @@
/// contain `_`
/// - [type] does not have any `dynamic` type arguments.
/// - the element is marked with `@optionalTypeArgs` from "package:meta".
- bool _isMissingTypeArguments(AstNode node, DartType type, Element element,
- Expression inferenceContextNode) {
+ bool _isMissingTypeArguments(AstNode node, DartType type, Element? element,
+ Expression? inferenceContextNode) {
List<DartType> typeArguments;
var aliasElement = type.aliasElement;
if (aliasElement != null) {
- typeArguments = type.aliasArguments;
+ typeArguments = type.aliasArguments!;
} else if (type is InterfaceType) {
typeArguments = type.typeArguments;
} else {
@@ -418,7 +418,7 @@
return false;
}
}
- if (element.hasOptionalTypeArgs) {
+ if (element != null && element.hasOptionalTypeArgs) {
return false;
}
return true;
diff --git a/pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart b/pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart
index 57c322d..c8b4452 100644
--- a/pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart
+++ b/pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart
@@ -14,14 +14,15 @@
import 'package:analyzer/src/dart/element/inheritance_manager3.dart';
import 'package:analyzer/src/dart/element/member.dart' show ExecutableMember;
import 'package:analyzer/src/error/codes.dart';
+import 'package:collection/collection.dart';
/// An [AstVisitor] that fills [UsedLocalElements].
class GatherUsedLocalElementsVisitor extends RecursiveAstVisitor<void> {
final UsedLocalElements usedElements = UsedLocalElements();
final LibraryElement _enclosingLibrary;
- ClassElement _enclosingClass;
- ExecutableElement _enclosingExec;
+ ClassElement? _enclosingClass;
+ ExecutableElement? _enclosingExec;
GatherUsedLocalElementsVisitor(this._enclosingLibrary);
@@ -37,23 +38,23 @@
@override
void visitBinaryExpression(BinaryExpression node) {
var element = node.staticElement;
- usedElements.members.add(element);
+ usedElements.addMember(element);
super.visitBinaryExpression(node);
}
@override
void visitCatchClause(CatchClause node) {
- SimpleIdentifier exceptionParameter = node.exceptionParameter;
- SimpleIdentifier stackTraceParameter = node.stackTraceParameter;
+ var exceptionParameter = node.exceptionParameter;
+ var stackTraceParameter = node.stackTraceParameter;
if (exceptionParameter != null) {
- Element element = exceptionParameter.staticElement;
+ var element = exceptionParameter.staticElement;
usedElements.addCatchException(element);
if (stackTraceParameter != null || node.onKeyword == null) {
usedElements.addElement(element);
}
}
if (stackTraceParameter != null) {
- Element element = stackTraceParameter.staticElement;
+ var element = stackTraceParameter.staticElement;
usedElements.addCatchStackTrace(element);
}
super.visitCatchClause(node);
@@ -61,7 +62,7 @@
@override
void visitClassDeclaration(ClassDeclaration node) {
- ClassElement enclosingClassOld = _enclosingClass;
+ var enclosingClassOld = _enclosingClass;
try {
_enclosingClass = node.declaredElement;
super.visitClassDeclaration(node);
@@ -72,7 +73,7 @@
@override
void visitFunctionDeclaration(FunctionDeclaration node) {
- ExecutableElement enclosingExecOld = _enclosingExec;
+ var enclosingExecOld = _enclosingExec;
try {
_enclosingExec = node.declaredElement;
super.visitFunctionDeclaration(node);
@@ -84,7 +85,7 @@
@override
void visitFunctionExpression(FunctionExpression node) {
if (node.parent is! FunctionDeclaration) {
- usedElements.addElement(node.declaredElement);
+ usedElements.addElement(node.declaredElement!);
}
super.visitFunctionExpression(node);
}
@@ -92,7 +93,7 @@
@override
void visitIndexExpression(IndexExpression node) {
var element = node.writeOrReadElement;
- usedElements.members.add(element);
+ usedElements.addMember(element);
super.visitIndexExpression(node);
}
@@ -100,14 +101,14 @@
void visitInstanceCreationExpression(InstanceCreationExpression node) {
for (var argument in node.argumentList.arguments) {
var parameter = argument.staticParameterElement;
- usedElements.elements.add(parameter);
+ usedElements.addElement(parameter);
}
super.visitInstanceCreationExpression(node);
}
@override
void visitMethodDeclaration(MethodDeclaration node) {
- ExecutableElement enclosingExecOld = _enclosingExec;
+ var enclosingExecOld = _enclosingExec;
try {
_enclosingExec = node.declaredElement;
super.visitMethodDeclaration(node);
@@ -122,7 +123,7 @@
if (function is FunctionElement || function is MethodElement) {
for (var argument in node.argumentList.arguments) {
var parameter = argument.staticParameterElement;
- usedElements.elements.add(parameter);
+ usedElements.addElement(parameter);
}
}
super.visitMethodInvocation(node);
@@ -131,14 +132,14 @@
@override
void visitPostfixExpression(PostfixExpression node) {
var element = node.staticElement;
- usedElements.members.add(element);
+ usedElements.addMember(element);
super.visitPostfixExpression(node);
}
@override
void visitPrefixExpression(PrefixExpression node) {
var element = node.staticElement;
- usedElements.members.add(element);
+ usedElements.addMember(element);
super.visitPrefixExpression(node);
}
@@ -150,7 +151,7 @@
if (_inCommentReference(node)) {
return;
}
- Element element = node.writeOrReadElement;
+ var element = node.writeOrReadElement;
// Store un-parameterized members.
if (element is ExecutableMember) {
element = element.declaration;
@@ -173,7 +174,7 @@
_useIdentifierElement(node, node.readElement);
_useIdentifierElement(node, node.writeElement);
_useIdentifierElement(node, node.staticElement);
- var parent = node.parent;
+ var parent = node.parent!;
// If [node] is a method tear-off, assume all parameters are used.
var functionReferenceIsCall =
(element is ExecutableElement && parent is MethodInvocation) ||
@@ -184,7 +185,7 @@
// unnamed constructor
(element is ClassElement &&
parent.parent is ConstructorName &&
- parent.parent.parent is InstanceCreationExpression);
+ parent.parent!.parent is InstanceCreationExpression);
if (element is ExecutableElement &&
isIdentifierRead &&
!functionReferenceIsCall) {
@@ -203,7 +204,7 @@
// If the 'values' static accessor of the enum is accessed, then all of
// the enum values have been read.
for (var value in enclosingElement.fields) {
- usedElements.readMembers.add(value.getter);
+ usedElements.readMembers.add(value.getter!);
}
} else if ((enclosingElement is ClassElement ||
enclosingElement is ExtensionElement) &&
@@ -220,15 +221,15 @@
/// corresponding getter as a used member.
void _addMemberAndCorrespondingGetter(Element element) {
if (element is PropertyAccessorElement && element.isSetter) {
- usedElements.members.add(element.correspondingGetter);
- usedElements.readMembers.add(element.correspondingGetter);
+ usedElements.addMember(element.correspondingGetter);
+ usedElements.addReadMember(element.correspondingGetter);
} else {
- usedElements.readMembers.add(element);
+ usedElements.addReadMember(element);
}
}
/// Marks the [element] of [node] as used in the library.
- void _useIdentifierElement(Identifier node, Element element) {
+ void _useIdentifierElement(Identifier node, Element? element) {
if (element == null) {
return;
}
@@ -246,7 +247,7 @@
// Ignore places where the element is not actually used.
if (node.parent is TypeName) {
if (element is ClassElement) {
- AstNode parent2 = node.parent.parent;
+ AstNode parent2 = node.parent!.parent!;
if (parent2 is IsExpression) {
return;
}
@@ -278,7 +279,7 @@
return false;
}
// Check if useless reading.
- AstNode parent = node.parent;
+ AstNode parent = node.parent!;
if (parent.parent is ExpressionStatement) {
if (parent is PrefixExpression || parent is PostfixExpression) {
@@ -290,7 +291,7 @@
// v ??= doSomething();
// vs.
// v += 2;
- TokenType operatorType = parent.operator?.type;
+ var operatorType = parent.operator.type;
return operatorType == TokenType.QUESTION_QUESTION_EQ;
}
}
@@ -323,7 +324,7 @@
@override
void visitFormalParameterList(FormalParameterList node) {
for (var element in node.parameterElements) {
- if (!_isUsedElement(element)) {
+ if (!_isUsedElement(element!)) {
_reportErrorForElement(
HintCode.UNUSED_ELEMENT_PARAMETER, element, [element.displayName]);
}
@@ -361,16 +362,13 @@
/// characters.
bool _isNamedUnderscore(LocalVariableElement element) {
String name = element.name;
- if (name != null) {
- for (int index = name.length - 1; index >= 0; --index) {
- if (name.codeUnitAt(index) != 0x5F) {
- // 0x5F => '_'
- return false;
- }
+ for (int index = name.length - 1; index >= 0; --index) {
+ if (name.codeUnitAt(index) != 0x5F) {
+ // 0x5F => '_'
+ return false;
}
- return true;
}
- return false;
+ return true;
}
bool _isPrivateClassOrExtension(Element element) =>
@@ -401,7 +399,7 @@
bool elementIsStaticVariable =
element is VariableElement && element.isStatic;
if (element.isPublic) {
- if (_isPrivateClassOrExtension(element.enclosingElement) &&
+ if (_isPrivateClassOrExtension(element.enclosingElement!) &&
elementIsStaticVariable) {
// Public static fields of private classes, mixins, and extensions are
// inaccessible from outside the library in which they are declared.
@@ -413,7 +411,11 @@
return true;
}
if (element is FieldElement) {
- element = (element as FieldElement).getter;
+ var getter = element.getter;
+ if (getter == null) {
+ return false;
+ }
+ element = getter;
}
if (_usedElements.readMembers.contains(element) ||
_usedElements.unresolvedReadMembers.contains(element.name)) {
@@ -445,11 +447,13 @@
if (!element.isOptional) {
return true;
}
- if (_isPubliclyAccessible(enclosingElement)) {
- return true;
- }
- if (_overridesUsedParameter(element, enclosingElement)) {
- return true;
+ if (enclosingElement is ExecutableElement) {
+ if (_isPubliclyAccessible(enclosingElement)) {
+ return true;
+ }
+ if (_overridesUsedParameter(element, enclosingElement)) {
+ return true;
+ }
}
} else {
if (element.isPublic) {
@@ -477,9 +481,9 @@
}
Iterable<ExecutableElement> _overriddenElements(Element element) {
- Element enclosingElement = element.enclosingElement;
+ var enclosingElement = element.enclosingElement;
if (enclosingElement is ClassElement) {
- Name name = Name(_libraryUri, element.name);
+ Name name = Name(_libraryUri, element.name!);
var overridden =
_inheritanceManager.getOverridden2(enclosingElement, name);
if (overridden == null) {
@@ -504,10 +508,10 @@
ParameterElement element, ExecutableElement enclosingElement) {
var overriddenElements = _overriddenElements(enclosingElement);
for (var overridden in overriddenElements) {
- ParameterElement correspondingParameter;
+ ParameterElement? correspondingParameter;
if (element.isNamed) {
correspondingParameter = overridden.parameters
- .firstWhere((p) => p.name == element.name, orElse: () => null);
+ .firstWhereOrNull((p) => p.name == element.name);
} else {
var parameterIndex = 0;
var parameterCount = enclosingElement.parameters.length;
@@ -540,9 +544,9 @@
}
void _reportErrorForElement(
- ErrorCode errorCode, Element element, List<Object> arguments) {
+ ErrorCode errorCode, Element? element, List<Object> arguments) {
if (element != null) {
- _errorListener.onError(AnalysisError(element.source, element.nameOffset,
+ _errorListener.onError(AnalysisError(element.source!, element.nameOffset,
element.nameLength, errorCode, arguments));
}
}
@@ -664,24 +668,36 @@
return result;
}
- void addCatchException(LocalVariableElement element) {
- if (element != null) {
+ void addCatchException(Element? element) {
+ if (element is LocalVariableElement) {
catchExceptionElements.add(element);
}
}
- void addCatchStackTrace(LocalVariableElement element) {
- if (element != null) {
+ void addCatchStackTrace(Element? element) {
+ if (element is LocalVariableElement) {
catchStackTraceElements.add(element);
}
}
- void addElement(Element element) {
+ void addElement(Element? element) {
if (element != null) {
elements.add(element);
}
}
+ void addMember(Element? element) {
+ if (element != null) {
+ members.add(element);
+ }
+ }
+
+ void addReadMember(Element? element) {
+ if (element != null) {
+ readMembers.add(element);
+ }
+ }
+
bool isCatchException(LocalVariableElement element) {
return catchExceptionElements.contains(element);
}
diff --git a/pkg/analyzer/lib/src/fasta/ast_builder.dart b/pkg/analyzer/lib/src/fasta/ast_builder.dart
index 3c91d82..786cd50 100644
--- a/pkg/analyzer/lib/src/fasta/ast_builder.dart
+++ b/pkg/analyzer/lib/src/fasta/ast_builder.dart
@@ -49,7 +49,7 @@
show translateErrorToken;
import 'package:_fe_analyzer_shared/src/scanner/scanner.dart' hide StringToken;
import 'package:_fe_analyzer_shared/src/scanner/token.dart'
- show SyntheticStringToken, SyntheticToken;
+ show StringToken, SyntheticStringToken, SyntheticToken;
import 'package:_fe_analyzer_shared/src/scanner/token_constants.dart';
import 'package:analyzer/dart/analysis/features.dart';
import 'package:analyzer/dart/ast/ast.dart';
@@ -67,6 +67,8 @@
TypeParameterImpl;
import 'package:analyzer/src/fasta/error_converter.dart';
import 'package:analyzer/src/generated/utilities_dart.dart';
+import 'package:analyzer/src/summary2/ast_binary_tokens.dart';
+import 'package:collection/collection.dart';
import 'package:pub_semver/pub_semver.dart';
const _invalidCollectionElement = _InvalidCollectionElement._();
@@ -77,7 +79,7 @@
final FastaErrorReporter errorReporter;
final Uri fileUri;
- ScriptTag scriptTag;
+ ScriptTag? scriptTag;
final List<Directive> directives = <Directive>[];
final List<CompilationUnitMember> declarations = <CompilationUnitMember>[];
@@ -86,16 +88,16 @@
/// The parser that uses this listener, used to parse optional parts, e.g.
/// `native` support.
- Parser parser;
+ late Parser parser;
/// The class currently being parsed, or `null` if no class is being parsed.
- ClassDeclarationImpl classDeclaration;
+ ClassDeclarationImpl? classDeclaration;
/// The mixin currently being parsed, or `null` if no mixin is being parsed.
- MixinDeclarationImpl mixinDeclaration;
+ MixinDeclarationImpl? mixinDeclaration;
/// The extension currently being parsed, or `null` if none.
- ExtensionDeclarationImpl extensionDeclaration;
+ ExtensionDeclarationImpl? extensionDeclaration;
/// If true, this is building a full AST. Otherwise, only create method
/// bodies.
@@ -112,7 +114,7 @@
// * The current library has an import that uses the scheme "dart-ext".
bool allowNativeClause = false;
- StringLiteral nativeName;
+ StringLiteral? nativeName;
bool parseFunctionBodies = true;
@@ -138,7 +140,7 @@
AstBuilder(ErrorReporter errorReporter, this.fileUri, this.isFullAst,
this._featureSet,
- [Uri uri])
+ [Uri? uri])
: errorReporter = FastaErrorReporter(errorReporter),
enableNonNullable = _featureSet.isEnabled(Feature.non_nullable),
enableSpreadCollections =
@@ -153,27 +155,27 @@
NodeList<ClassMember> get currentDeclarationMembers {
if (classDeclaration != null) {
- return classDeclaration.members;
+ return classDeclaration!.members;
} else if (mixinDeclaration != null) {
- return mixinDeclaration.members;
+ return mixinDeclaration!.members;
} else {
- return extensionDeclaration.members;
+ return extensionDeclaration!.members;
}
}
- SimpleIdentifier get currentDeclarationName {
+ SimpleIdentifier? get currentDeclarationName {
if (classDeclaration != null) {
- return classDeclaration.name;
+ return classDeclaration!.name;
} else if (mixinDeclaration != null) {
- return mixinDeclaration.name;
+ return mixinDeclaration!.name;
} else {
- return extensionDeclaration.name;
+ return extensionDeclaration!.name;
}
}
@override
void addProblem(Message message, int charOffset, int length,
- {bool wasHandled = false, List<LocatedMessage> context}) {
+ {bool wasHandled = false, List<LocatedMessage>? context}) {
if (directives.isEmpty &&
(message.code.analyzerCodes
?.contains('NON_PART_OF_DIRECTIVE_IN_PART') ??
@@ -191,7 +193,7 @@
assert(optional('..', token) || optional('?..', token));
debugEvent("beginCascade");
- Expression expression = pop();
+ var expression = pop() as Expression;
push(token);
if (expression is CascadeExpression) {
push(expression);
@@ -202,7 +204,7 @@
}
@override
- void beginClassDeclaration(Token begin, Token abstractToken, Token name) {
+ void beginClassDeclaration(Token begin, Token? abstractToken, Token name) {
assert(classDeclaration == null &&
mixinDeclaration == null &&
extensionDeclaration == null);
@@ -215,18 +217,18 @@
}
@override
- void beginExtensionDeclaration(Token extensionKeyword, Token nameToken) {
+ void beginExtensionDeclaration(Token extensionKeyword, Token? nameToken) {
assert(optional('extension', extensionKeyword));
assert(classDeclaration == null &&
mixinDeclaration == null &&
extensionDeclaration == null);
debugEvent("ExtensionHeader");
- TypeParameterList typeParameters = pop();
- List<Annotation> metadata = pop();
- Comment comment = _findComment(metadata, extensionKeyword);
+ var typeParameters = pop() as TypeParameterList?;
+ var metadata = pop() as List<Annotation>?;
+ var comment = _findComment(metadata, extensionKeyword);
- SimpleIdentifier name;
+ SimpleIdentifier? name;
if (nameToken != null) {
name = ast.simpleIdentifier(nameToken, isDeclaration: true);
}
@@ -237,23 +239,30 @@
extensionKeyword: extensionKeyword,
name: name,
typeParameters: typeParameters,
- extendedType: null, // extendedType is set in [endExtensionDeclaration]
+ onKeyword: Tokens.ON,
+ extendedType: ast.typeName(
+ _tmpSimpleIdentifier(),
+ null,
+ ), // extendedType is set in [endExtensionDeclaration]
+ leftBracket: Tokens.OPEN_CURLY_BRACKET,
+ rightBracket: Tokens.CLOSE_CURLY_BRACKET,
+ members: [],
) as ExtensionDeclarationImpl;
- declarations.add(extensionDeclaration);
+ declarations.add(extensionDeclaration!);
}
@override
void beginFactoryMethod(
- Token lastConsumed, Token externalToken, Token constToken) {
+ Token lastConsumed, Token? externalToken, Token? constToken) {
push(_Modifiers()
..externalKeyword = externalToken
..finalConstOrVarKeyword = constToken);
}
@override
- void beginFormalParameter(Token token, MemberKind kind, Token requiredToken,
- Token covariantToken, Token varFinalOrConst) {
+ void beginFormalParameter(Token token, MemberKind kind, Token? requiredToken,
+ Token? covariantToken, Token? varFinalOrConst) {
push(_Modifiers()
..covariantKeyword = covariantToken
..finalConstOrVarKeyword = varFinalOrConst
@@ -285,8 +294,13 @@
}
@override
- void beginMethod(Token externalToken, Token staticToken, Token covariantToken,
- Token varFinalOrConst, Token getOrSet, Token name) {
+ void beginMethod(
+ Token? externalToken,
+ Token? staticToken,
+ Token? covariantToken,
+ Token? varFinalOrConst,
+ Token? getOrSet,
+ Token name) {
_Modifiers modifiers = _Modifiers();
if (externalToken != null) {
assert(externalToken.isModifier);
@@ -294,12 +308,12 @@
}
if (staticToken != null) {
assert(staticToken.isModifier);
- String className = classDeclaration != null
- ? classDeclaration.name.name
+ String? className = classDeclaration != null
+ ? classDeclaration!.name.name
: (mixinDeclaration != null
- ? mixinDeclaration.name.name
- : extensionDeclaration.name?.name);
- if (name?.lexeme != className || getOrSet != null) {
+ ? mixinDeclaration!.name.name
+ : extensionDeclaration!.name?.name);
+ if (name.lexeme != className || getOrSet != null) {
modifiers.staticKeyword = staticToken;
}
}
@@ -323,29 +337,29 @@
@override
void beginNamedMixinApplication(
- Token begin, Token abstractToken, Token name) {
+ Token begin, Token? abstractToken, Token name) {
push(_Modifiers()..abstractKeyword = abstractToken);
}
@override
- void beginTopLevelMethod(Token lastConsumed, Token externalToken) {
+ void beginTopLevelMethod(Token lastConsumed, Token? externalToken) {
push(_Modifiers()..externalKeyword = externalToken);
}
@override
void beginTypeVariable(Token token) {
debugEvent("beginTypeVariable");
- SimpleIdentifier name = pop();
- List<Annotation> metadata = pop();
+ var name = pop() as SimpleIdentifier;
+ var metadata = pop() as List<Annotation>?;
- Comment comment = _findComment(metadata, name.beginToken);
+ var comment = _findComment(metadata, name.beginToken);
var typeParameter = ast.typeParameter(comment, metadata, name, null, null);
push(typeParameter);
}
@override
void beginVariablesDeclaration(
- Token token, Token lateToken, Token varFinalOrConst) {
+ Token token, Token? lateToken, Token? varFinalOrConst) {
debugEvent("beginVariablesDeclaration");
if (varFinalOrConst != null || lateToken != null) {
push(_Modifiers()
@@ -356,7 +370,7 @@
}
}
- ConstructorInitializer buildInitializer(Object initializerObject) {
+ ConstructorInitializer? buildInitializer(Object initializerObject) {
if (initializerObject is FunctionExpressionInvocation) {
Expression function = initializerObject.function;
if (function is SuperExpression) {
@@ -371,7 +385,7 @@
}
if (initializerObject is MethodInvocation) {
- Expression target = initializerObject.target;
+ var target = initializerObject.target;
if (target is SuperExpression) {
return ast.superConstructorInvocation(
target.superKeyword,
@@ -396,12 +410,12 @@
}
if (initializerObject is AssignmentExpression) {
- Token thisKeyword;
- Token period;
+ Token? thisKeyword;
+ Token? period;
SimpleIdentifier fieldName;
Expression left = initializerObject.leftHandSide;
if (left is PropertyAccess) {
- Expression target = left.target;
+ var target = left.target;
if (target is ThisExpression) {
thisKeyword = target.thisKeyword;
period = left.operator;
@@ -416,7 +430,7 @@
} else {
// Recovery:
// Parser has reported invalid assignment.
- SuperExpression superExpression = left;
+ var superExpression = left as SuperExpression;
fieldName = ast.simpleIdentifier(superExpression.superKeyword);
}
return ast.constructorFieldInitializer(thisKeyword, period, fieldName,
@@ -440,19 +454,19 @@
return null;
}
- AstNode buildInitializerTargetExpressionRecovery(
- Expression target, Object initializerObject) {
- ArgumentList argumentList;
+ ConstructorInitializer? buildInitializerTargetExpressionRecovery(
+ Expression? target, Object initializerObject) {
+ ArgumentList? argumentList;
while (true) {
if (target is FunctionExpressionInvocation) {
- argumentList = (target as FunctionExpressionInvocation).argumentList;
- target = (target as FunctionExpressionInvocation).function;
+ argumentList = target.argumentList;
+ target = target.function;
} else if (target is MethodInvocation) {
- argumentList = (target as MethodInvocation).argumentList;
- target = (target as MethodInvocation).target;
+ argumentList = target.argumentList;
+ target = target.target!;
} else if (target is PropertyAccess) {
argumentList = null;
- target = (target as PropertyAccess).target;
+ target = target.target!;
} else {
break;
}
@@ -463,21 +477,22 @@
handleRecoverableError(messageInvalidSuperInInitializer,
target.superKeyword, target.superKeyword);
return ast.superConstructorInvocation(
- target.superKeyword, null, null, argumentList);
+ target.superKeyword, null, null, argumentList!);
} else if (target is ThisExpression) {
// TODO(danrubel): Consider generating this error in the parser
// This error is also reported in the body builder
handleRecoverableError(messageInvalidThisInInitializer,
target.thisKeyword, target.thisKeyword);
return ast.redirectingConstructorInvocation(
- target.thisKeyword, null, null, argumentList);
+ target.thisKeyword, null, null, argumentList!);
}
return null;
}
- void checkFieldFormalParameters(FormalParameterList parameters) {
- if (parameters?.parameters != null) {
- parameters.parameters.forEach((FormalParameter param) {
+ void checkFieldFormalParameters(FormalParameterList? parameterList) {
+ var parameters = parameterList?.parameters;
+ if (parameters != null) {
+ parameters.forEach((FormalParameter param) {
if (param is FieldFormalParameter) {
// This error is reported in the BodyBuilder.endFormalParameter.
handleRecoverableError(messageFieldInitializerOutsideConstructor,
@@ -493,8 +508,8 @@
}
void doDotExpression(Token dot) {
- Expression identifierOrInvoke = pop();
- Expression receiver = pop();
+ var identifierOrInvoke = pop() as Expression;
+ var receiver = pop() as Expression?;
if (identifierOrInvoke is SimpleIdentifier) {
if (receiver is SimpleIdentifier && identical('.', dot.stringValue)) {
push(ast.prefixedIdentifier(receiver, dot, identifierOrInvoke));
@@ -521,8 +536,8 @@
}
void doInvocation(
- TypeArgumentList typeArguments, MethodInvocation arguments) {
- Expression receiver = pop();
+ TypeArgumentList? typeArguments, MethodInvocation arguments) {
+ var receiver = pop() as Expression;
if (receiver is SimpleIdentifier) {
arguments.methodName = receiver;
if (typeArguments != null) {
@@ -543,10 +558,11 @@
assert(optional(')', rightParenthesis));
debugEvent("Arguments");
- List<Expression> expressions = popTypedList(count);
+ var expressions = popTypedList2<Expression>(count);
ArgumentList arguments =
ast.argumentList(leftParenthesis, expressions, rightParenthesis);
- push(ast.methodInvocation(null, null, null, null, arguments));
+ push(ast.methodInvocation(
+ null, null, _tmpSimpleIdentifier(), null, arguments));
}
@override
@@ -556,15 +572,15 @@
@override
void endAssert(Token assertKeyword, Assert kind, Token leftParenthesis,
- Token comma, Token semicolon) {
+ Token? comma, Token semicolon) {
assert(optional('assert', assertKeyword));
assert(optional('(', leftParenthesis));
assert(optionalOrNull(',', comma));
assert(kind != Assert.Statement || optionalOrNull(';', semicolon));
debugEvent("Assert");
- Expression message = popIfNotNull(comma);
- Expression condition = pop();
+ var message = popIfNotNull(comma) as Expression?;
+ var condition = pop() as Expression;
switch (kind) {
case Assert.Expression:
// The parser has already reported an error indicating that assert
@@ -577,15 +593,15 @@
ast.simpleIdentifier(assertKeyword),
null,
ast.argumentList(
- leftParenthesis, arguments, leftParenthesis?.endGroup)));
+ leftParenthesis, arguments, leftParenthesis.endGroup!)));
break;
case Assert.Initializer:
push(ast.assertInitializer(assertKeyword, leftParenthesis, condition,
- comma, message, leftParenthesis?.endGroup));
+ comma, message, leftParenthesis.endGroup!));
break;
case Assert.Statement:
push(ast.assertStatement(assertKeyword, leftParenthesis, condition,
- comma, message, leftParenthesis?.endGroup, semicolon));
+ comma, message, leftParenthesis.endGroup!, semicolon));
break;
}
}
@@ -595,7 +611,8 @@
assert(optional('await', awaitKeyword));
debugEvent("AwaitExpression");
- push(ast.awaitExpression(awaitKeyword, pop()));
+ var expression = pop() as Expression;
+ push(ast.awaitExpression(awaitKeyword, expression));
}
@override
@@ -615,8 +632,8 @@
identical("?..", operatorToken.stringValue)) {
doDotExpression(operatorToken);
} else {
- Expression right = pop();
- Expression left = pop();
+ var right = pop() as Expression;
+ var left = pop() as Expression;
reportErrorIfSuper(right);
push(ast.binaryExpression(left, operatorToken, right));
if (!enableTripleShift && operatorToken.type == TokenType.GT_GT_GT) {
@@ -640,7 +657,7 @@
assert(optional('}', rightBracket));
debugEvent("Block");
- List<Statement> statements = popTypedList(count) ?? <Statement>[];
+ var statements = popTypedList2<Statement>(count);
push(ast.block(leftBracket, statements, rightBracket));
}
@@ -650,10 +667,10 @@
assert(optional('}', rightBracket));
debugEvent("BlockFunctionBody");
- List<Statement> statements = popTypedList(count);
+ var statements = popTypedList2<Statement>(count);
Block block = ast.block(leftBracket, statements, rightBracket);
- Token star = pop();
- Token asyncKeyword = pop();
+ var star = pop() as Token?;
+ var asyncKeyword = pop() as Token?;
if (parseFunctionBodies) {
push(ast.blockFunctionBody(asyncKeyword, star, block));
} else {
@@ -667,35 +684,33 @@
void endCascade() {
debugEvent("Cascade");
- Expression expression = pop();
- CascadeExpression receiver = pop();
+ var expression = pop() as Expression;
+ var receiver = pop() as CascadeExpression;
pop(); // Token.
receiver.cascadeSections.add(expression);
push(receiver);
}
@override
- void endClassConstructor(Token getOrSet, Token beginToken, Token beginParam,
- Token beginInitializers, Token endToken) {
+ void endClassConstructor(Token? getOrSet, Token beginToken, Token beginParam,
+ Token? beginInitializers, Token endToken) {
assert(getOrSet == null ||
optional('get', getOrSet) ||
optional('set', getOrSet));
debugEvent("ClassConstructor");
var bodyObject = pop();
- List<ConstructorInitializer> initializers = pop() ?? const [];
- Token separator = pop();
- FormalParameterList parameters = pop();
- TypeParameterList typeParameters = pop();
+ var initializers = (pop() as List<ConstructorInitializer>?) ?? const [];
+ var separator = pop() as Token?;
+ var parameters = pop() as FormalParameterList;
+ var typeParameters = pop() as TypeParameterList?;
var name = pop();
pop(); // return type
- _Modifiers modifiers = pop();
- List<Annotation> metadata = pop();
- Comment comment = _findComment(metadata, beginToken);
+ var modifiers = pop() as _Modifiers?;
+ var metadata = pop() as List<Annotation>?;
+ var comment = _findComment(metadata, beginToken);
- assert(parameters != null || optional('get', getOrSet));
-
- ConstructorName redirectedConstructor;
+ ConstructorName? redirectedConstructor;
FunctionBody body;
if (bodyObject is FunctionBody) {
body = bodyObject;
@@ -712,8 +727,8 @@
}
SimpleIdentifier prefixOrName;
- Token period;
- SimpleIdentifier nameOrNull;
+ Token? period;
+ SimpleIdentifier? nameOrNull;
if (name is SimpleIdentifier) {
prefixOrName = name;
} else if (name is PrefixedIdentifier) {
@@ -733,10 +748,10 @@
typeParameters.beginToken, typeParameters.endToken);
}
if (modifiers?.constKeyword != null &&
- body != null &&
- (body.length > 1 || body.beginToken?.lexeme != ';')) {
+ (body.length > 1 || body.beginToken.lexeme != ';')) {
// This error is also reported in BodyBuilder.finishFunction
- Token bodyToken = body.beginToken ?? modifiers.constKeyword;
+ Token bodyToken = body.beginToken;
+ // Token bodyToken = body.beginToken ?? modifiers.constKeyword;
handleRecoverableError(
messageConstConstructorWithBody, bodyToken, bodyToken);
}
@@ -775,9 +790,9 @@
debugEvent("ClassFactoryMethod");
FunctionBody body;
- Token separator;
- ConstructorName redirectedConstructor;
- Object bodyObject = pop();
+ Token? separator;
+ ConstructorName? redirectedConstructor;
+ var bodyObject = pop();
if (bodyObject is FunctionBody) {
body = bodyObject;
} else if (bodyObject is _RedirectingFactoryBody) {
@@ -792,14 +807,12 @@
uri);
}
- FormalParameterList parameters = pop();
- TypeParameterList typeParameters = pop();
- Object constructorName = pop();
- _Modifiers modifiers = pop();
- List<Annotation> metadata = pop();
- Comment comment = _findComment(metadata, beginToken);
-
- assert(parameters != null);
+ var parameters = pop() as FormalParameterList;
+ var typeParameters = pop() as TypeParameterList?;
+ var constructorName = pop() as Identifier;
+ var modifiers = pop() as _Modifiers?;
+ var metadata = pop() as List<Annotation>?;
+ var comment = _findComment(metadata, beginToken);
if (typeParameters != null) {
// TODO(danrubel): Update OutlineBuilder to report this error message.
@@ -810,8 +823,8 @@
// Decompose the preliminary ConstructorName into the type name and
// the actual constructor name.
SimpleIdentifier returnType;
- Token period;
- SimpleIdentifier name;
+ Token? period;
+ SimpleIdentifier? name;
Identifier typeName = constructorName;
if (typeName is SimpleIdentifier) {
returnType = typeName;
@@ -820,6 +833,8 @@
period = typeName.period;
name =
ast.simpleIdentifier(typeName.identifier.token, isDeclaration: true);
+ } else {
+ throw UnimplementedError();
}
currentDeclarationMembers.add(ast.constructorDeclaration(
@@ -840,12 +855,12 @@
@override
void endClassFields(
- Token abstractToken,
- Token externalToken,
- Token staticToken,
- Token covariantToken,
- Token lateToken,
- Token varFinalOrConst,
+ Token? abstractToken,
+ Token? externalToken,
+ Token? staticToken,
+ Token? covariantToken,
+ Token? lateToken,
+ Token? varFinalOrConst,
int count,
Token beginToken,
Token semicolon) {
@@ -877,17 +892,17 @@
}
}
- List<VariableDeclaration> variables = popTypedList(count);
- TypeAnnotation type = pop();
+ var variables = popTypedList2<VariableDeclaration>(count);
+ var type = pop() as TypeAnnotation?;
var variableList = ast.variableDeclarationList2(
lateKeyword: lateToken,
keyword: varFinalOrConst,
type: type,
variables: variables,
);
- Token covariantKeyword = covariantToken;
- List<Annotation> metadata = pop();
- Comment comment = _findComment(metadata, beginToken);
+ var covariantKeyword = covariantToken;
+ var metadata = pop() as List<Annotation>?;
+ var comment = _findComment(metadata, beginToken);
currentDeclarationMembers.add(ast.fieldDeclaration2(
comment: comment,
metadata: metadata,
@@ -900,8 +915,8 @@
}
@override
- void endClassMethod(Token getOrSet, Token beginToken, Token beginParam,
- Token beginInitializers, Token endToken) {
+ void endClassMethod(Token? getOrSet, Token beginToken, Token beginParam,
+ Token? beginInitializers, Token endToken) {
assert(getOrSet == null ||
optional('get', getOrSet) ||
optional('set', getOrSet));
@@ -910,15 +925,15 @@
var bodyObject = pop();
pop(); // initializers
pop(); // separator
- FormalParameterList parameters = pop();
- TypeParameterList typeParameters = pop();
+ var parameters = pop() as FormalParameterList?;
+ var typeParameters = pop() as TypeParameterList?;
var name = pop();
- TypeAnnotation returnType = pop();
- _Modifiers modifiers = pop();
- List<Annotation> metadata = pop();
- Comment comment = _findComment(metadata, beginToken);
+ var returnType = pop() as TypeAnnotation?;
+ var modifiers = pop() as _Modifiers?;
+ var metadata = pop() as List<Annotation>?;
+ var comment = _findComment(metadata, beginToken);
- assert(parameters != null || optional('get', getOrSet));
+ assert(parameters != null || optional('get', getOrSet!));
FunctionBody body;
if (bodyObject is FunctionBody) {
@@ -933,7 +948,7 @@
uri);
}
- Token operatorKeyword;
+ Token? operatorKeyword;
SimpleIdentifier nameId;
if (name is SimpleIdentifier) {
nameId = name;
@@ -974,15 +989,15 @@
debugEvent("ClassOrMixinBody");
if (classDeclaration != null) {
- classDeclaration
+ classDeclaration!
..leftBracket = leftBracket
..rightBracket = rightBracket;
} else if (mixinDeclaration != null) {
- mixinDeclaration
+ mixinDeclaration!
..leftBracket = leftBracket
..rightBracket = rightBracket;
} else {
- extensionDeclaration
+ extensionDeclaration!
..leftBracket = leftBracket
..rightBracket = rightBracket;
}
@@ -998,7 +1013,7 @@
void endCompilationUnit(int count, Token endToken) {
debugEvent("CompilationUnit");
- Token beginToken = pop();
+ var beginToken = pop() as Token;
checkEmpty(endToken.charOffset);
CompilationUnitImpl unit = ast.compilationUnit(
@@ -1017,9 +1032,9 @@
assert(optional(':', colon));
debugEvent("ConditionalExpression");
- Expression elseExpression = pop();
- Expression thenExpression = pop();
- Expression condition = pop();
+ var elseExpression = pop() as Expression;
+ var thenExpression = pop() as Expression;
+ var condition = pop() as Expression;
reportErrorIfSuper(elseExpression);
reportErrorIfSuper(thenExpression);
push(ast.conditionalExpression(
@@ -1027,14 +1042,14 @@
}
@override
- void endConditionalUri(Token ifKeyword, Token leftParen, Token equalSign) {
+ void endConditionalUri(Token ifKeyword, Token leftParen, Token? equalSign) {
assert(optional('if', ifKeyword));
assert(optionalOrNull('(', leftParen));
assert(optionalOrNull('==', equalSign));
debugEvent("ConditionalUri");
- StringLiteral libraryUri = pop();
- StringLiteral value = popIfNotNull(equalSign);
+ var libraryUri = pop() as StringLiteral;
+ var value = popIfNotNull(equalSign) as StringLiteral?;
if (value is StringInterpolation) {
for (var child in value.childEntities) {
if (child is InterpolationExpression) {
@@ -1045,9 +1060,9 @@
}
}
}
- DottedName name = pop();
+ var name = pop() as DottedName;
push(ast.configuration(ifKeyword, leftParen, name, equalSign, value,
- leftParen?.endGroup, libraryUri));
+ leftParen.endGroup!, libraryUri));
}
@override
@@ -1072,13 +1087,13 @@
@override
void endConstructorReference(
- Token start, Token periodBeforeName, Token endToken) {
+ Token start, Token? periodBeforeName, Token endToken) {
assert(optionalOrNull('.', periodBeforeName));
debugEvent("ConstructorReference");
- SimpleIdentifier constructorName = pop();
- TypeArgumentList typeArguments = pop();
- Identifier typeNameIdentifier = pop();
+ var constructorName = pop() as SimpleIdentifier?;
+ var typeArguments = pop() as TypeArgumentList?;
+ var typeNameIdentifier = pop() as Identifier;
push(ast.constructorName(ast.typeName(typeNameIdentifier, typeArguments),
periodBeforeName, constructorName));
}
@@ -1091,8 +1106,8 @@
assert(optional(';', semicolon));
debugEvent("DoWhileStatement");
- ParenthesizedExpression condition = pop();
- Statement body = pop();
+ var condition = pop() as ParenthesizedExpression;
+ var body = pop() as Statement;
push(ast.doStatement(
doKeyword,
body,
@@ -1119,12 +1134,12 @@
assert(optional('{', leftBrace));
debugEvent("Enum");
- List<EnumConstantDeclaration> constants = popTypedList(count);
- SimpleIdentifier name = pop();
- List<Annotation> metadata = pop();
- Comment comment = _findComment(metadata, enumKeyword);
+ var constants = popTypedList2<EnumConstantDeclaration>(count);
+ var name = pop() as SimpleIdentifier;
+ var metadata = pop() as List<Annotation>?;
+ var comment = _findComment(metadata, enumKeyword);
declarations.add(ast.enumDeclaration(comment, metadata, enumKeyword, name,
- leftBrace, constants, leftBrace?.endGroup));
+ leftBrace, constants, leftBrace.endGroup!));
}
@override
@@ -1133,18 +1148,18 @@
assert(optional(';', semicolon));
debugEvent("Export");
- List<Combinator> combinators = pop();
- List<Configuration> configurations = pop();
- StringLiteral uri = pop();
- List<Annotation> metadata = pop();
- Comment comment = _findComment(metadata, exportKeyword);
+ var combinators = pop() as List<Combinator>?;
+ var configurations = pop() as List<Configuration>?;
+ var uri = pop() as StringLiteral;
+ var metadata = pop() as List<Annotation>?;
+ var comment = _findComment(metadata, exportKeyword);
directives.add(ast.exportDirective(comment, metadata, exportKeyword, uri,
configurations, combinators, semicolon));
}
@override
- void endExtensionConstructor(Token getOrSet, Token beginToken,
- Token beginParam, Token beginInitializers, Token endToken) {
+ void endExtensionConstructor(Token? getOrSet, Token beginToken,
+ Token beginParam, Token? beginInitializers, Token endToken) {
debugEvent("ExtensionConstructor");
// TODO(danrubel) Decide how to handle constructor declarations within
// extensions. They are invalid and the parser has already reported an
@@ -1164,8 +1179,8 @@
@override
void endExtensionDeclaration(
Token extensionKeyword, Token onKeyword, Token token) {
- TypeAnnotation type = pop();
- extensionDeclaration
+ var type = pop() as TypeAnnotation;
+ extensionDeclaration!
..extendedType = type
..onKeyword = onKeyword;
extensionDeclaration = null;
@@ -1178,12 +1193,12 @@
assert(optional(';', endToken) || optional('}', endToken));
debugEvent("ExtensionFactoryMethod");
- Object bodyObject = pop();
- FormalParameterList parameters = pop();
- TypeParameterList typeParameters = pop();
- Object constructorName = pop();
- _Modifiers modifiers = pop();
- List<Annotation> metadata = pop();
+ var bodyObject = pop();
+ var parameters = pop() as FormalParameterList;
+ var typeParameters = pop() as TypeParameterList?;
+ var constructorName = pop();
+ var modifiers = pop() as _Modifiers?;
+ var metadata = pop() as List<Annotation>?;
FunctionBody body;
if (bodyObject is FunctionBody) {
@@ -1196,9 +1211,7 @@
// don't bother adding this declaration to the AST.
return;
}
- Comment comment = _findComment(metadata, beginToken);
-
- assert(parameters != null);
+ var comment = _findComment(metadata, beginToken);
// Constructor declarations within extensions are invalid and the parser
// has already reported an error at this point, but we include them in as
@@ -1231,12 +1244,12 @@
@override
void endExtensionFields(
- Token abstractToken,
- Token externalToken,
- Token staticToken,
- Token covariantToken,
- Token lateToken,
- Token varFinalOrConst,
+ Token? abstractToken,
+ Token? externalToken,
+ Token? staticToken,
+ Token? covariantToken,
+ Token? lateToken,
+ Token? varFinalOrConst,
int count,
Token beginToken,
Token endToken) {
@@ -1251,8 +1264,8 @@
}
@override
- void endExtensionMethod(Token getOrSet, Token beginToken, Token beginParam,
- Token beginInitializers, Token endToken) {
+ void endExtensionMethod(Token? getOrSet, Token beginToken, Token beginParam,
+ Token? beginInitializers, Token endToken) {
debugEvent("ExtensionMethod");
endClassMethod(
getOrSet, beginToken, beginParam, beginInitializers, endToken);
@@ -1263,18 +1276,18 @@
assert(optional('=', assignment));
debugEvent("FieldInitializer");
- Expression initializer = pop();
- SimpleIdentifier name = pop();
+ var initializer = pop() as Expression;
+ var name = pop() as SimpleIdentifier;
push(_makeVariableDeclaration(name, assignment, initializer));
}
@override
void endForControlFlow(Token token) {
debugEvent("endForControlFlow");
- var entry = pop();
- ForParts forLoopParts = pop();
- Token leftParen = pop();
- Token forToken = pop();
+ var entry = pop() as Object;
+ var forLoopParts = pop() as ForParts;
+ var leftParen = pop() as Token;
+ var forToken = pop() as Token;
pushForControlFlowInfo(null, forToken, leftParen, forLoopParts, entry);
}
@@ -1283,18 +1296,18 @@
void endForIn(Token endToken) {
debugEvent("ForInExpression");
- Statement body = pop();
- ForEachParts forLoopParts = pop();
- Token leftParenthesis = pop();
- Token forToken = pop();
- Token awaitToken = pop(NullValue.AwaitToken);
+ var body = pop() as Statement;
+ var forLoopParts = pop() as ForEachParts;
+ var leftParenthesis = pop() as Token;
+ var forToken = pop() as Token;
+ var awaitToken = pop(NullValue.AwaitToken) as Token?;
push(ast.forStatement(
awaitKeyword: awaitToken,
forKeyword: forToken,
leftParenthesis: leftParenthesis,
forLoopParts: forLoopParts,
- rightParenthesis: leftParenthesis.endGroup,
+ rightParenthesis: leftParenthesis.endGroup!,
body: body,
));
}
@@ -1308,11 +1321,11 @@
void endForInControlFlow(Token token) {
debugEvent("endForInControlFlow");
- var entry = pop();
- ForEachParts forLoopParts = pop();
- Token leftParenthesis = pop();
- Token forToken = pop();
- Token awaitToken = pop(NullValue.AwaitToken);
+ var entry = pop() as Object;
+ var forLoopParts = pop() as ForEachParts;
+ var leftParenthesis = pop() as Token;
+ var forToken = pop() as Token;
+ var awaitToken = pop(NullValue.AwaitToken) as Token?;
pushForControlFlowInfo(
awaitToken, forToken, leftParenthesis, forLoopParts, entry);
@@ -1325,31 +1338,31 @@
@override
void endFormalParameter(
- Token thisKeyword,
- Token periodAfterThis,
+ Token? thisKeyword,
+ Token? periodAfterThis,
Token nameToken,
- Token initializerStart,
- Token initializerEnd,
+ Token? initializerStart,
+ Token? initializerEnd,
FormalParameterKind kind,
MemberKind memberKind) {
assert(optionalOrNull('this', thisKeyword));
assert(thisKeyword == null
? periodAfterThis == null
- : optional('.', periodAfterThis));
+ : optional('.', periodAfterThis!));
debugEvent("FormalParameter");
- _ParameterDefaultValue defaultValue = pop();
- SimpleIdentifier name = pop();
- AstNode typeOrFunctionTypedParameter = pop();
- _Modifiers modifiers = pop();
- Token keyword = modifiers?.finalConstOrVarKeyword;
- Token covariantKeyword = modifiers?.covariantKeyword;
- Token requiredKeyword = modifiers?.requiredToken;
+ var defaultValue = pop() as _ParameterDefaultValue?;
+ var name = pop() as SimpleIdentifier?;
+ var typeOrFunctionTypedParameter = pop() as AstNode?;
+ var modifiers = pop() as _Modifiers?;
+ var keyword = modifiers?.finalConstOrVarKeyword;
+ var covariantKeyword = modifiers?.covariantKeyword;
+ var requiredKeyword = modifiers?.requiredToken;
if (!enableNonNullable) {
reportNonNullableModifierError(requiredKeyword);
}
- List<Annotation> metadata = pop();
- Comment comment = _findComment(metadata,
+ var metadata = pop() as List<Annotation>?;
+ var comment = _findComment(metadata,
thisKeyword ?? typeOrFunctionTypedParameter?.beginToken ?? nameToken);
NormalFormalParameter node;
@@ -1359,7 +1372,7 @@
// the final AST node.
if (thisKeyword == null) {
node = ast.functionTypedFormalParameter2(
- identifier: name,
+ identifier: name!,
comment: comment,
metadata: metadata,
covariantKeyword: covariantKeyword,
@@ -1370,20 +1383,20 @@
question: typeOrFunctionTypedParameter.question);
} else {
node = ast.fieldFormalParameter2(
- identifier: name,
+ identifier: name!,
comment: comment,
metadata: metadata,
covariantKeyword: covariantKeyword,
requiredKeyword: requiredKeyword,
type: typeOrFunctionTypedParameter.returnType,
thisKeyword: thisKeyword,
- period: periodAfterThis,
+ period: periodAfterThis!,
typeParameters: typeOrFunctionTypedParameter.typeParameters,
parameters: typeOrFunctionTypedParameter.parameters,
question: typeOrFunctionTypedParameter.question);
}
} else {
- TypeAnnotation type = typeOrFunctionTypedParameter;
+ var type = typeOrFunctionTypedParameter as TypeAnnotation?;
if (thisKeyword == null) {
node = ast.simpleFormalParameter2(
comment: comment,
@@ -1402,8 +1415,8 @@
keyword: keyword,
type: type,
thisKeyword: thisKeyword,
- period: thisKeyword.next,
- identifier: name);
+ period: thisKeyword.next!,
+ identifier: name!);
}
}
@@ -1434,10 +1447,10 @@
assert(optional(')', rightParen));
debugEvent("FormalParameters");
- List<Object> rawParameters = popTypedList(count) ?? const <Object>[];
+ var rawParameters = popTypedList(count) ?? const <Object>[];
List<FormalParameter> parameters = <FormalParameter>[];
- Token leftDelimiter;
- Token rightDelimiter;
+ Token? leftDelimiter;
+ Token? rightDelimiter;
for (Object raw in rawParameters) {
if (raw is _OptionalFormalParameters) {
parameters.addAll(raw.parameters ?? const <FormalParameter>[]);
@@ -1454,16 +1467,16 @@
@override
void endForStatement(Token endToken) {
debugEvent("ForStatement");
- Statement body = pop();
- ForParts forLoopParts = pop();
- Token leftParen = pop();
- Token forToken = pop();
+ var body = pop() as Statement;
+ var forLoopParts = pop() as ForParts;
+ var leftParen = pop() as Token;
+ var forToken = pop() as Token;
push(ast.forStatement(
forKeyword: forToken,
leftParenthesis: leftParen,
forLoopParts: forLoopParts,
- rightParenthesis: leftParen.endGroup,
+ rightParenthesis: leftParen.endGroup!,
body: body,
));
}
@@ -1481,9 +1494,9 @@
// as possible.
debugEvent("FunctionExpression");
- FunctionBody body = pop();
- FormalParameterList parameters = pop();
- TypeParameterList typeParameters = pop();
+ var body = pop() as FunctionBody;
+ var parameters = pop() as FormalParameterList?;
+ var typeParameters = pop() as TypeParameterList?;
push(ast.functionExpression(typeParameters, parameters, body));
}
@@ -1493,16 +1506,16 @@
}
@override
- void endFunctionType(Token functionToken, Token questionMark) {
+ void endFunctionType(Token functionToken, Token? questionMark) {
assert(optional('Function', functionToken));
debugEvent("FunctionType");
if (!enableNonNullable) {
reportErrorIfNullableType(questionMark);
}
- FormalParameterList parameters = pop();
- TypeAnnotation returnType = pop();
- TypeParameterList typeParameters = pop();
+ var parameters = pop() as FormalParameterList;
+ var returnType = pop() as TypeAnnotation?;
+ var typeParameters = pop() as TypeParameterList?;
push(ast.genericFunctionType(
returnType, functionToken, typeParameters, parameters,
question: questionMark));
@@ -1510,19 +1523,19 @@
@override
void endFunctionTypeAlias(
- Token typedefKeyword, Token equals, Token semicolon) {
+ Token typedefKeyword, Token? equals, Token semicolon) {
assert(optional('typedef', typedefKeyword));
assert(optionalOrNull('=', equals));
assert(optional(';', semicolon));
debugEvent("FunctionTypeAlias");
if (equals == null) {
- FormalParameterList parameters = pop();
- TypeParameterList typeParameters = pop();
- SimpleIdentifier name = pop();
- TypeAnnotation returnType = pop();
- List<Annotation> metadata = pop();
- Comment comment = _findComment(metadata, typedefKeyword);
+ var parameters = pop() as FormalParameterList?;
+ var typeParameters = pop() as TypeParameterList?;
+ var name = pop() as SimpleIdentifier;
+ var returnType = pop() as TypeAnnotation?;
+ var metadata = pop() as List<Annotation>?;
+ var comment = _findComment(metadata, typedefKeyword);
// TODO(scheglov) https://github.com/dart-lang/sdk/issues/41023
if (parameters == null) {
@@ -1532,11 +1545,11 @@
declarations.add(ast.functionTypeAlias(comment, metadata, typedefKeyword,
returnType, name, typeParameters, parameters, semicolon));
} else {
- TypeAnnotation type = pop();
- TypeParameterList templateParameters = pop();
- SimpleIdentifier name = pop();
- List<Annotation> metadata = pop();
- Comment comment = _findComment(metadata, typedefKeyword);
+ var type = pop() as TypeAnnotation;
+ var templateParameters = pop() as TypeParameterList?;
+ var name = pop() as SimpleIdentifier;
+ var metadata = pop() as List<Annotation>?;
+ var comment = _findComment(metadata, typedefKeyword);
if (type is! GenericFunctionType && !enableNonFunctionTypeAliases) {
handleRecoverableError(messageTypedefNotFunction, equals, equals);
}
@@ -1546,20 +1559,22 @@
}
@override
- void endFunctionTypedFormalParameter(Token nameToken, Token question) {
+ void endFunctionTypedFormalParameter(Token nameToken, Token? question) {
debugEvent("FunctionTypedFormalParameter");
if (!enableNonNullable) {
reportErrorIfNullableType(question);
}
- FormalParameterList formalParameters = pop();
- TypeAnnotation returnType = pop();
- TypeParameterList typeParameters = pop();
+ var formalParameters = pop() as FormalParameterList;
+ var returnType = pop() as TypeAnnotation?;
+ var typeParameters = pop() as TypeParameterList?;
// Create a temporary formal parameter that will be dissected later in
// [endFormalParameter].
push(ast.functionTypedFormalParameter2(
- identifier: null,
+ identifier: ast.simpleIdentifier(
+ StringToken(TokenType.IDENTIFIER, '', 0),
+ ),
returnType: returnType,
typeParameters: typeParameters,
parameters: formalParameters,
@@ -1571,37 +1586,37 @@
assert(optional('hide', hideKeyword));
debugEvent("Hide");
- List<SimpleIdentifier> hiddenNames = pop();
+ var hiddenNames = pop() as List<SimpleIdentifier>;
push(ast.hideCombinator(hideKeyword, hiddenNames));
}
@override
void endIfControlFlow(Token token) {
- CollectionElement thenElement = pop();
- ParenthesizedExpression condition = pop();
- Token ifToken = pop();
+ var thenElement = pop() as CollectionElement;
+ var condition = pop() as ParenthesizedExpression;
+ var ifToken = pop() as Token;
pushIfControlFlowInfo(ifToken, condition, thenElement, null, null);
}
@override
void endIfElseControlFlow(Token token) {
- CollectionElement elseElement = pop();
- Token elseToken = pop();
- CollectionElement thenElement = pop();
- ParenthesizedExpression condition = pop();
- Token ifToken = pop();
+ var elseElement = pop() as CollectionElement;
+ var elseToken = pop() as Token;
+ var thenElement = pop() as CollectionElement;
+ var condition = pop() as ParenthesizedExpression;
+ var ifToken = pop() as Token;
pushIfControlFlowInfo(
ifToken, condition, thenElement, elseToken, elseElement);
}
@override
- void endIfStatement(Token ifToken, Token elseToken) {
+ void endIfStatement(Token ifToken, Token? elseToken) {
assert(optional('if', ifToken));
assert(optionalOrNull('else', elseToken));
- Statement elsePart = popIfNotNull(elseToken);
- Statement thenPart = pop();
- ParenthesizedExpression condition = pop();
+ var elsePart = popIfNotNull(elseToken) as Statement?;
+ var thenPart = pop() as Statement;
+ var condition = pop() as ParenthesizedExpression;
push(ast.ifStatement(
ifToken,
condition.leftParenthesis,
@@ -1620,19 +1635,19 @@
}
@override
- void endImport(Token importKeyword, Token semicolon) {
+ void endImport(Token importKeyword, Token? semicolon) {
assert(optional('import', importKeyword));
assert(optionalOrNull(';', semicolon));
debugEvent("Import");
- List<Combinator> combinators = pop();
- Token deferredKeyword = pop(NullValue.Deferred);
- Token asKeyword = pop(NullValue.As);
- SimpleIdentifier prefix = pop(NullValue.Prefix);
- List<Configuration> configurations = pop();
- StringLiteral uri = pop();
- List<Annotation> metadata = pop();
- Comment comment = _findComment(metadata, importKeyword);
+ var combinators = pop() as List<Combinator>?;
+ var deferredKeyword = pop(NullValue.Deferred) as Token?;
+ var asKeyword = pop(NullValue.As) as Token?;
+ var prefix = pop(NullValue.Prefix) as SimpleIdentifier?;
+ var configurations = pop() as List<Configuration>?;
+ var uri = pop() as StringLiteral;
+ var metadata = pop() as List<Annotation>?;
+ var comment = _findComment(metadata, importKeyword);
directives.add(ast.importDirective(
comment,
@@ -1644,14 +1659,14 @@
asKeyword,
prefix,
combinators,
- semicolon));
+ semicolon ?? Tokens.SEMICOLON));
}
@override
void endInitializedIdentifier(Token nameToken) {
debugEvent("InitializedIdentifier");
- AstNode node = pop();
+ var node = pop() as AstNode?;
VariableDeclaration variable;
// TODO(paulberry): This seems kludgy. It would be preferable if we
// could respond to a "handleNoVariableInitializer" event by converting a
@@ -1676,14 +1691,14 @@
assert(optional(':', colon));
debugEvent("Initializers");
- List<Object> initializerObjects = popTypedList(count) ?? const [];
+ var initializerObjects = popTypedList(count) ?? const [];
if (!isFullAst) return;
push(colon);
var initializers = <ConstructorInitializer>[];
for (Object initializerObject in initializerObjects) {
- ConstructorInitializer initializer = buildInitializer(initializerObject);
+ var initializer = buildInitializer(initializerObject);
if (initializer != null) {
initializers.add(initializer);
} else {
@@ -1705,7 +1720,7 @@
}
@override
- void endInvalidYieldStatement(Token yieldKeyword, Token starToken,
+ void endInvalidYieldStatement(Token yieldKeyword, Token? starToken,
Token endToken, MessageCode errorCode) {
debugEvent("InvalidYieldStatement");
endYieldStatement(yieldKeyword, starToken, endToken);
@@ -1720,8 +1735,8 @@
void endLabeledStatement(int labelCount) {
debugEvent("LabeledStatement");
- Statement statement = pop();
- List<Label> labels = popTypedList(labelCount);
+ var statement = pop() as Statement;
+ var labels = popTypedList2<Label>(labelCount);
push(ast.labeledStatement(labels, statement));
}
@@ -1731,10 +1746,10 @@
assert(optional(';', semicolon));
debugEvent("LibraryName");
- List<SimpleIdentifier> libraryName = pop();
+ var libraryName = pop() as List<SimpleIdentifier>;
var name = ast.libraryIdentifier(libraryName);
- List<Annotation> metadata = pop();
- Comment comment = _findComment(metadata, libraryKeyword);
+ var metadata = pop() as List<Annotation>?;
+ var comment = _findComment(metadata, libraryKeyword);
directives.add(ast.libraryDirective(
comment, metadata, libraryKeyword, name, semicolon));
}
@@ -1744,13 +1759,13 @@
debugEvent("endLiteralString");
if (interpolationCount == 0) {
- Token token = pop();
+ var token = pop() as Token;
String value = unescapeString(token.lexeme, token, this);
push(ast.simpleStringLiteral(token, value));
} else {
- List<Object> parts = popTypedList(1 + interpolationCount * 2);
- Token first = parts.first;
- Token last = parts.last;
+ var parts = popTypedList(1 + interpolationCount * 2)!;
+ var first = parts.first as Token;
+ var last = parts.last as Token;
Quote quote = analyzeQuote(first.lexeme);
List<InterpolationElement> elements = <InterpolationElement>[];
elements.add(ast.interpolationString(
@@ -1783,24 +1798,24 @@
assert(optional('#', hashToken));
debugEvent("LiteralSymbol");
- List<Token> components = popTypedList(tokenCount);
+ var components = popTypedList2<Token>(tokenCount);
push(ast.symbolLiteral(hashToken, components));
}
@override
void endLocalFunctionDeclaration(Token token) {
debugEvent("LocalFunctionDeclaration");
- FunctionBody body = pop();
+ var body = pop() as FunctionBody;
if (isFullAst) {
pop(); // constructor initializers
pop(); // separator before constructor initializers
}
- FormalParameterList parameters = pop();
+ var parameters = pop() as FormalParameterList;
checkFieldFormalParameters(parameters);
- SimpleIdentifier name = pop();
- TypeAnnotation returnType = pop();
- TypeParameterList typeParameters = pop();
- List<Annotation> metadata = pop(NullValue.Metadata);
+ var name = pop() as SimpleIdentifier;
+ var returnType = pop() as TypeAnnotation?;
+ var typeParameters = pop() as TypeParameterList?;
+ var metadata = pop(NullValue.Metadata) as List<Annotation>?;
FunctionExpression functionExpression =
ast.functionExpression(typeParameters, parameters, body);
var functionDeclaration = ast.functionDeclaration(
@@ -1814,15 +1829,16 @@
}
@override
- void endMetadata(Token atSign, Token periodBeforeName, Token endToken) {
+ void endMetadata(Token atSign, Token? periodBeforeName, Token endToken) {
assert(optional('@', atSign));
assert(optionalOrNull('.', periodBeforeName));
debugEvent("Metadata");
- MethodInvocation invocation = pop();
- SimpleIdentifier constructorName = periodBeforeName != null ? pop() : null;
+ var invocation = pop() as MethodInvocation?;
+ var constructorName =
+ periodBeforeName != null ? pop() as SimpleIdentifier : null;
pop(); // Type arguments, not allowed.
- Identifier name = pop();
+ var name = pop() as Identifier;
push(ast.annotation(atSign, name, periodBeforeName, constructorName,
invocation?.argumentList));
}
@@ -1835,8 +1851,8 @@
}
@override
- void endMixinConstructor(Token getOrSet, Token beginToken, Token beginParam,
- Token beginInitializers, Token endToken) {
+ void endMixinConstructor(Token? getOrSet, Token beginToken, Token beginParam,
+ Token? beginInitializers, Token endToken) {
debugEvent("MixinConstructor");
// TODO(danrubel) Decide how to handle constructor declarations within
// mixins. They are invalid, but we include them in order to get navigation,
@@ -1861,12 +1877,12 @@
@override
void endMixinFields(
- Token abstractToken,
- Token externalToken,
- Token staticToken,
- Token covariantToken,
- Token lateToken,
- Token varFinalOrConst,
+ Token? abstractToken,
+ Token? externalToken,
+ Token? staticToken,
+ Token? covariantToken,
+ Token? lateToken,
+ Token? varFinalOrConst,
int count,
Token beginToken,
Token endToken) {
@@ -1875,8 +1891,8 @@
}
@override
- void endMixinMethod(Token getOrSet, Token beginToken, Token beginParam,
- Token beginInitializers, Token endToken) {
+ void endMixinMethod(Token? getOrSet, Token beginToken, Token beginParam,
+ Token? beginInitializers, Token endToken) {
debugEvent("MixinMethod");
endClassMethod(
getOrSet, beginToken, beginParam, beginInitializers, endToken);
@@ -1885,40 +1901,40 @@
@override
void endNamedFunctionExpression(Token endToken) {
debugEvent("NamedFunctionExpression");
- FunctionBody body = pop();
+ var body = pop() as FunctionBody;
if (isFullAst) {
pop(); // constructor initializers
pop(); // separator before constructor initializers
}
- FormalParameterList parameters = pop();
+ var parameters = pop() as FormalParameterList;
pop(); // name
pop(); // returnType
- TypeParameterList typeParameters = pop();
+ var typeParameters = pop() as TypeParameterList?;
push(ast.functionExpression(typeParameters, parameters, body));
}
@override
void endNamedMixinApplication(Token beginToken, Token classKeyword,
- Token equalsToken, Token implementsKeyword, Token semicolon) {
+ Token equalsToken, Token? implementsKeyword, Token semicolon) {
assert(optional('class', classKeyword));
assert(optionalOrNull('=', equalsToken));
assert(optionalOrNull('implements', implementsKeyword));
assert(optional(';', semicolon));
debugEvent("NamedMixinApplication");
- ImplementsClause implementsClause;
+ ImplementsClause? implementsClause;
if (implementsKeyword != null) {
- List<TypeName> interfaces = pop();
+ var interfaces = pop() as List<TypeName>;
implementsClause = ast.implementsClause(implementsKeyword, interfaces);
}
- WithClause withClause = pop(NullValue.WithClause);
- TypeName superclass = pop();
- _Modifiers modifiers = pop();
- TypeParameterList typeParameters = pop();
- SimpleIdentifier name = pop();
- Token abstractKeyword = modifiers?.abstractKeyword;
- List<Annotation> metadata = pop();
- Comment comment = _findComment(metadata, beginToken);
+ var withClause = pop(NullValue.WithClause) as WithClause;
+ var superclass = pop() as TypeName;
+ var modifiers = pop() as _Modifiers?;
+ var typeParameters = pop() as TypeParameterList?;
+ var name = pop() as SimpleIdentifier;
+ var abstractKeyword = modifiers?.abstractKeyword;
+ var metadata = pop() as List<Annotation>?;
+ var comment = _findComment(metadata, beginToken);
declarations.add(ast.classTypeAlias(
comment,
metadata,
@@ -1949,7 +1965,7 @@
debugEvent("OptionalFormalParameters");
push(_OptionalFormalParameters(
- popTypedList(count), leftDelimeter, rightDelimeter));
+ popTypedList2<FormalParameter>(count), leftDelimeter, rightDelimeter));
}
@override
@@ -1958,9 +1974,9 @@
assert(optional(';', semicolon));
debugEvent("Part");
- StringLiteral uri = pop();
- List<Annotation> metadata = pop();
- Comment comment = _findComment(metadata, partKeyword);
+ var uri = pop() as StringLiteral;
+ var metadata = pop() as List<Annotation>?;
+ var comment = _findComment(metadata, partKeyword);
directives
.add(ast.partDirective(comment, metadata, partKeyword, uri, semicolon));
}
@@ -1973,15 +1989,15 @@
assert(optional(';', semicolon));
debugEvent("PartOf");
var libraryNameOrUri = pop();
- LibraryIdentifier name;
- StringLiteral uri;
+ LibraryIdentifier? name;
+ StringLiteral? uri;
if (libraryNameOrUri is StringLiteral) {
uri = libraryNameOrUri;
} else {
name = ast.libraryIdentifier(libraryNameOrUri as List<SimpleIdentifier>);
}
- List<Annotation> metadata = pop();
- Comment comment = _findComment(metadata, partKeyword);
+ var metadata = pop() as List<Annotation>?;
+ var comment = _findComment(metadata, partKeyword);
directives.add(ast.partOfDirective(
comment, metadata, partKeyword, ofKeyword, uri, name, semicolon));
}
@@ -1991,9 +2007,9 @@
assert(optional('=', equalToken));
debugEvent("RedirectingFactoryBody");
- ConstructorName constructorName = pop();
- Token starToken = pop();
- Token asyncToken = pop();
+ var constructorName = pop() as ConstructorName;
+ var starToken = pop() as Token?;
+ var asyncToken = pop() as Token?;
push(_RedirectingFactoryBody(
asyncToken, starToken, equalToken, constructorName));
}
@@ -2016,7 +2032,7 @@
assert(optional(';', semicolon));
debugEvent("ReturnStatement");
- Expression expression = hasExpression ? pop() : null;
+ var expression = hasExpression ? pop() as Expression : null;
push(ast.returnStatement(returnKeyword, expression, semicolon));
}
@@ -2025,7 +2041,7 @@
assert(optional('show', showKeyword));
debugEvent("Show");
- List<SimpleIdentifier> shownNames = pop();
+ var shownNames = pop() as List<SimpleIdentifier>;
push(ast.showCombinator(showKeyword, shownNames));
}
@@ -2035,9 +2051,9 @@
assert(optional('}', rightBracket));
debugEvent("SwitchBlock");
- List<List<SwitchMember>> membersList = popTypedList(caseCount);
+ var membersList = popTypedList2<List<SwitchMember>>(caseCount);
List<SwitchMember> members =
- membersList?.expand((members) => members)?.toList() ?? <SwitchMember>[];
+ membersList.expand((members) => members).toList();
Set<String> labels = <String>{};
for (SwitchMember member in members) {
@@ -2061,51 +2077,52 @@
void endSwitchCase(
int labelCount,
int expressionCount,
- Token defaultKeyword,
- Token colonAfterDefault,
+ Token? defaultKeyword,
+ Token? colonAfterDefault,
int statementCount,
Token firstToken,
Token endToken) {
assert(optionalOrNull('default', defaultKeyword));
assert(defaultKeyword == null
? colonAfterDefault == null
- : optional(':', colonAfterDefault));
+ : optional(':', colonAfterDefault!));
debugEvent("SwitchCase");
- List<Statement> statements = popTypedList(statementCount);
- List<SwitchMember> members;
+ var statements = popTypedList2<Statement>(statementCount);
+ List<SwitchMember?> members;
if (labelCount == 0 && defaultKeyword == null) {
// Common situation: case with no default and no labels.
- members = popTypedList<SwitchMember>(expressionCount) ?? [];
+ members = popTypedList2<SwitchMember>(expressionCount);
} else {
// Labels and case statements may be intertwined
if (defaultKeyword != null) {
SwitchDefault member = ast.switchDefault(
- <Label>[], defaultKeyword, colonAfterDefault, <Statement>[]);
+ <Label>[], defaultKeyword, colonAfterDefault!, <Statement>[]);
while (peek() is Label) {
- member.labels.insert(0, pop());
+ member.labels.insert(0, pop() as Label);
--labelCount;
}
- members = List<SwitchMember>.filled(expressionCount + 1, null);
+ members = List<SwitchMember?>.filled(expressionCount + 1, null);
members[expressionCount] = member;
} else {
- members = List<SwitchMember>.filled(expressionCount, null);
+ members = List<SwitchMember?>.filled(expressionCount, null);
}
for (int index = expressionCount - 1; index >= 0; --index) {
- SwitchMember member = pop();
+ var member = pop() as SwitchMember;
while (peek() is Label) {
- member.labels.insert(0, pop());
+ member.labels.insert(0, pop() as Label);
--labelCount;
}
members[index] = member;
}
assert(labelCount == 0);
}
- if (members.isNotEmpty) {
- members.last.statements.addAll(statements);
+ var members2 = members.whereNotNull().toList();
+ if (members2.isNotEmpty) {
+ members2.last.statements.addAll(statements);
}
- push(members);
+ push(members2);
}
@override
@@ -2113,10 +2130,10 @@
assert(optional('switch', switchKeyword));
debugEvent("SwitchStatement");
- Token rightBracket = pop();
- List<SwitchMember> members = pop();
- Token leftBracket = pop();
- ParenthesizedExpression expression = pop();
+ var rightBracket = pop() as Token;
+ var members = pop() as List<SwitchMember>;
+ var leftBracket = pop() as Token;
+ var expression = pop() as ParenthesizedExpression;
push(ast.switchStatement(
switchKeyword,
expression.leftParenthesis,
@@ -2139,11 +2156,11 @@
@override
void endTopLevelFields(
- Token externalToken,
- Token staticToken,
- Token covariantToken,
- Token lateToken,
- Token varFinalOrConst,
+ Token? externalToken,
+ Token? staticToken,
+ Token? covariantToken,
+ Token? lateToken,
+ Token? varFinalOrConst,
int count,
Token beginToken,
Token semicolon) {
@@ -2160,23 +2177,23 @@
}
}
- List<VariableDeclaration> variables = popTypedList(count);
- TypeAnnotation type = pop();
+ var variables = popTypedList2<VariableDeclaration>(count);
+ var type = pop() as TypeAnnotation?;
var variableList = ast.variableDeclarationList2(
lateKeyword: lateToken,
keyword: varFinalOrConst,
type: type,
variables: variables,
);
- List<Annotation> metadata = pop();
- Comment comment = _findComment(metadata, beginToken);
+ var metadata = pop() as List<Annotation>?;
+ var comment = _findComment(metadata, beginToken);
declarations.add(ast.topLevelVariableDeclaration(
comment, metadata, variableList, semicolon,
externalKeyword: externalToken));
}
@override
- void endTopLevelMethod(Token beginToken, Token getOrSet, Token endToken) {
+ void endTopLevelMethod(Token beginToken, Token? getOrSet, Token endToken) {
// TODO(paulberry): set up scopes properly to resolve parameters and type
// variables.
assert(getOrSet == null ||
@@ -2184,15 +2201,15 @@
optional('set', getOrSet));
debugEvent("TopLevelMethod");
- FunctionBody body = pop();
- FormalParameterList parameters = pop();
- TypeParameterList typeParameters = pop();
- SimpleIdentifier name = pop();
- TypeAnnotation returnType = pop();
- _Modifiers modifiers = pop();
- Token externalKeyword = modifiers?.externalKeyword;
- List<Annotation> metadata = pop();
- Comment comment = _findComment(metadata, beginToken);
+ var body = pop() as FunctionBody;
+ var parameters = pop() as FormalParameterList?;
+ var typeParameters = pop() as TypeParameterList?;
+ var name = pop() as SimpleIdentifier;
+ var returnType = pop() as TypeAnnotation?;
+ var modifiers = pop() as _Modifiers?;
+ var externalKeyword = modifiers?.externalKeyword;
+ var metadata = pop() as List<Annotation>?;
+ var comment = _findComment(metadata, beginToken);
declarations.add(ast.functionDeclaration(
comment,
metadata,
@@ -2204,14 +2221,15 @@
}
@override
- void endTryStatement(int catchCount, Token tryKeyword, Token finallyKeyword) {
+ void endTryStatement(
+ int catchCount, Token tryKeyword, Token? finallyKeyword) {
assert(optional('try', tryKeyword));
assert(optionalOrNull('finally', finallyKeyword));
debugEvent("TryStatement");
- Block finallyBlock = popIfNotNull(finallyKeyword);
- List<CatchClause> catchClauses = popTypedList(catchCount);
- Block body = pop();
+ var finallyBlock = popIfNotNull(finallyKeyword) as Block?;
+ var catchClauses = popTypedList2<CatchClause>(catchCount);
+ var body = pop() as Block;
push(ast.tryStatement(
tryKeyword, body, catchClauses, finallyKeyword, finallyBlock));
}
@@ -2222,7 +2240,7 @@
assert(optional('>', rightBracket));
debugEvent("TypeArguments");
- List<TypeAnnotation> arguments = popTypedList(count);
+ var arguments = popTypedList2<TypeAnnotation>(count);
push(ast.typeArgumentList(leftBracket, arguments, rightBracket));
}
@@ -2234,7 +2252,7 @@
@override
void endTypeVariable(
- Token token, int index, Token extendsOrSuper, Token variance) {
+ Token token, int index, Token? extendsOrSuper, Token? variance) {
debugEvent("TypeVariable");
assert(extendsOrSuper == null ||
optional('extends', extendsOrSuper) ||
@@ -2249,10 +2267,10 @@
reportVarianceModifierNotEnabled(variance);
}
- TypeAnnotation bound = pop();
+ var bound = pop() as TypeAnnotation?;
// Peek to leave type parameters on top of stack.
- List<TypeParameter> typeParameters = peek();
+ var typeParameters = peek() as List<TypeParameter>;
// TODO (kallentu) : Clean up TypeParameterImpl casting once variance is
// added to the interface.
@@ -2268,7 +2286,7 @@
assert(optional('>', endToken));
debugEvent("TypeVariables");
- List<TypeParameter> typeParameters = pop();
+ var typeParameters = pop() as List<TypeParameter>;
push(ast.typeParameterList(beginToken, typeParameters, endToken));
}
@@ -2277,24 +2295,25 @@
assert(optionalOrNull('=', assignmentOperator));
debugEvent("VariableInitializer");
- Expression initializer = pop();
- SimpleIdentifier identifier = pop();
+ var initializer = pop() as Expression;
+ var identifier = pop() as SimpleIdentifier;
// TODO(ahe): Don't push initializers, instead install them.
push(_makeVariableDeclaration(identifier, assignmentOperator, initializer));
}
@override
- void endVariablesDeclaration(int count, Token semicolon) {
+ void endVariablesDeclaration(int count, Token? semicolon) {
assert(optionalOrNull(';', semicolon));
debugEvent("VariablesDeclaration");
- List<VariableDeclaration> variables = popTypedList(count);
- _Modifiers modifiers = pop(NullValue.Modifiers);
- TypeAnnotation type = pop();
- Token keyword = modifiers?.finalConstOrVarKeyword;
- List<Annotation> metadata = pop();
- Comment comment = _findComment(metadata,
- variables[0].beginToken ?? type?.beginToken ?? modifiers.beginToken);
+ var variables = popTypedList2<VariableDeclaration>(count);
+ var modifiers = pop(NullValue.Modifiers) as _Modifiers?;
+ var type = pop() as TypeAnnotation?;
+ var keyword = modifiers?.finalConstOrVarKeyword;
+ var metadata = pop() as List<Annotation>?;
+ var comment = _findComment(metadata, variables[0].beginToken);
+ // var comment = _findComment(metadata,
+ // variables[0].beginToken ?? type?.beginToken ?? modifiers.beginToken);
push(ast.variableDeclarationStatement(
ast.variableDeclarationList2(
comment: comment,
@@ -2304,7 +2323,7 @@
type: type,
variables: variables,
),
- semicolon));
+ semicolon ?? Tokens.SEMICOLON));
}
@override
@@ -2312,8 +2331,8 @@
assert(optional('while', whileKeyword));
debugEvent("WhileStatement");
- Statement body = pop();
- ParenthesizedExpression condition = pop();
+ var body = pop() as Statement;
+ var condition = pop() as ParenthesizedExpression;
push(ast.whileStatement(whileKeyword, condition.leftParenthesis,
condition.expression, condition.rightParenthesis, body));
}
@@ -2324,13 +2343,13 @@
}
@override
- void endYieldStatement(Token yieldToken, Token starToken, Token semicolon) {
+ void endYieldStatement(Token yieldToken, Token? starToken, Token semicolon) {
assert(optional('yield', yieldToken));
assert(optionalOrNull('*', starToken));
assert(optional(';', semicolon));
debugEvent("YieldStatement");
- Expression expression = pop();
+ var expression = pop() as Expression;
push(ast.yieldStatement(yieldToken, starToken, expression, semicolon));
}
@@ -2339,8 +2358,8 @@
assert(optional('as', asOperator));
debugEvent("AsOperator");
- TypeAnnotation type = pop();
- Expression expression = pop();
+ var type = pop() as TypeAnnotation;
+ var expression = pop() as Expression;
push(ast.asExpression(expression, asOperator, type));
}
@@ -2349,8 +2368,8 @@
assert(token.type.isAssignmentOperator);
debugEvent("AssignmentExpression");
- Expression rhs = pop();
- Expression lhs = pop();
+ var rhs = pop() as Expression;
+ var lhs = pop() as Expression;
if (!lhs.isAssignable) {
// TODO(danrubel): Update the BodyBuilder to report this error.
handleRecoverableError(
@@ -2371,7 +2390,7 @@
}
@override
- void handleAsyncModifier(Token asyncToken, Token starToken) {
+ void handleAsyncModifier(Token? asyncToken, Token? starToken) {
assert(asyncToken == null ||
optional('async', asyncToken) ||
optional('sync', asyncToken));
@@ -2389,7 +2408,7 @@
assert(optional(';', semicolon));
debugEvent("BreakStatement");
- SimpleIdentifier label = hasTarget ? pop() : null;
+ var label = hasTarget ? pop() as SimpleIdentifier : null;
push(ast.breakStatement(breakKeyword, label, semicolon));
}
@@ -2399,23 +2418,23 @@
assert(optional(':', colon));
debugEvent("CaseMatch");
- Expression expression = pop();
+ var expression = pop() as Expression;
push(ast.switchCase(
<Label>[], caseKeyword, expression, colon, <Statement>[]));
}
@override
- void handleCatchBlock(Token onKeyword, Token catchKeyword, Token comma) {
+ void handleCatchBlock(Token? onKeyword, Token? catchKeyword, Token? comma) {
assert(optionalOrNull('on', onKeyword));
assert(optionalOrNull('catch', catchKeyword));
assert(optionalOrNull(',', comma));
debugEvent("CatchBlock");
- Block body = pop();
- FormalParameterList catchParameterList = popIfNotNull(catchKeyword);
- TypeAnnotation type = popIfNotNull(onKeyword);
- SimpleIdentifier exception;
- SimpleIdentifier stackTrace;
+ var body = pop() as Block;
+ var catchParameterList = popIfNotNull(catchKeyword) as FormalParameterList?;
+ var type = popIfNotNull(onKeyword) as TypeAnnotation?;
+ SimpleIdentifier? exception;
+ SimpleIdentifier? stackTrace;
if (catchParameterList != null) {
List<FormalParameter> catchParameters = catchParameterList.parameters;
if (catchParameters.isNotEmpty) {
@@ -2438,7 +2457,7 @@
}
@override
- void handleClassExtends(Token extendsKeyword, int typeCount) {
+ void handleClassExtends(Token? extendsKeyword, int typeCount) {
assert(extendsKeyword == null || extendsKeyword.isKeywordOrIdentifier);
debugEvent("ClassExtends");
@@ -2448,34 +2467,34 @@
pop();
typeCount--;
}
- TypeName supertype = pop();
+ var supertype = pop() as TypeName?;
if (supertype != null) {
- push(ast.extendsClause(extendsKeyword, supertype));
+ push(ast.extendsClause(extendsKeyword!, supertype));
} else {
push(NullValue.ExtendsClause);
}
}
@override
- void handleClassHeader(Token begin, Token classKeyword, Token nativeToken) {
+ void handleClassHeader(Token begin, Token classKeyword, Token? nativeToken) {
assert(optional('class', classKeyword));
assert(optionalOrNull('native', nativeToken));
assert(classDeclaration == null && mixinDeclaration == null);
debugEvent("ClassHeader");
- NativeClause nativeClause;
+ NativeClause? nativeClause;
if (nativeToken != null) {
nativeClause = ast.nativeClause(nativeToken, nativeName);
}
- ImplementsClause implementsClause = pop(NullValue.IdentifierList);
- WithClause withClause = pop(NullValue.WithClause);
- ExtendsClause extendsClause = pop(NullValue.ExtendsClause);
- _Modifiers modifiers = pop();
- TypeParameterList typeParameters = pop();
- SimpleIdentifier name = pop();
- Token abstractKeyword = modifiers?.abstractKeyword;
- List<Annotation> metadata = pop();
- Comment comment = _findComment(metadata, begin);
+ var implementsClause = pop(NullValue.IdentifierList) as ImplementsClause?;
+ var withClause = pop(NullValue.WithClause) as WithClause?;
+ var extendsClause = pop(NullValue.ExtendsClause) as ExtendsClause?;
+ var modifiers = pop() as _Modifiers?;
+ var typeParameters = pop() as TypeParameterList?;
+ var name = pop() as SimpleIdentifier;
+ var abstractKeyword = modifiers?.abstractKeyword;
+ var metadata = pop() as List<Annotation>?;
+ var comment = _findComment(metadata, begin);
// leftBracket, members, and rightBracket
// are set in [endClassOrMixinBody].
classDeclaration = ast.classDeclaration(
@@ -2488,14 +2507,13 @@
extendsClause,
withClause,
implementsClause,
- null,
- // leftBracket
+ Tokens.OPEN_CURLY_BRACKET, // leftBracket
<ClassMember>[],
- null, // rightBracket
- );
+ Tokens.CLOSE_CURLY_BRACKET, // rightBracket
+ ) as ClassDeclarationImpl;
- classDeclaration.nativeClause = nativeClause;
- declarations.add(classDeclaration);
+ classDeclaration!.nativeClause = nativeClause;
+ declarations.add(classDeclaration!);
}
@override
@@ -2505,12 +2523,12 @@
@override
void handleClassOrMixinImplements(
- Token implementsKeyword, int interfacesCount) {
+ Token? implementsKeyword, int interfacesCount) {
assert(optionalOrNull('implements', implementsKeyword));
debugEvent("ClassImplements");
if (implementsKeyword != null) {
- List<TypeName> interfaces = popTypedList(interfacesCount);
+ var interfaces = popTypedList2<TypeName>(interfacesCount);
push(ast.implementsClause(implementsKeyword, interfaces));
} else {
push(NullValue.IdentifierList);
@@ -2520,17 +2538,17 @@
@override
void handleClassWithClause(Token withKeyword) {
assert(optional('with', withKeyword));
- List<TypeName> mixinTypes = pop();
+ var mixinTypes = pop() as List<TypeName>;
push(ast.withClause(withKeyword, mixinTypes));
}
@override
void handleCommentReference(
- Token newKeyword, Token prefix, Token period, Token token) {
+ Token? newKeyword, Token? prefix, Token? period, Token token) {
Identifier identifier = ast.simpleIdentifier(token);
if (prefix != null) {
- identifier = ast.prefixedIdentifier(
- ast.simpleIdentifier(prefix), period, identifier);
+ identifier = ast.prefixedIdentifier(ast.simpleIdentifier(prefix), period!,
+ identifier as SimpleIdentifier);
}
push(ast.commentReference(newKeyword, identifier));
}
@@ -2548,7 +2566,7 @@
assert(optional(';', semicolon));
debugEvent("ContinueStatement");
- SimpleIdentifier label = hasTarget ? pop() : null;
+ var label = hasTarget ? pop() as SimpleIdentifier : null;
push(ast.continueStatement(continueKeyword, label, semicolon));
}
@@ -2557,7 +2575,7 @@
assert(firstIdentifier.isIdentifier);
debugEvent("DottedName");
- List<SimpleIdentifier> components = popTypedList(count);
+ var components = popTypedList2<SimpleIdentifier>(count);
push(ast.dottedName(components));
}
@@ -2591,19 +2609,19 @@
}
@override
- void handleExpressionFunctionBody(Token arrowToken, Token semicolon) {
+ void handleExpressionFunctionBody(Token arrowToken, Token? semicolon) {
assert(optional('=>', arrowToken) || optional('=', arrowToken));
assert(optionalOrNull(';', semicolon));
debugEvent("ExpressionFunctionBody");
- Expression expression = pop();
+ var expression = pop() as Expression;
pop(); // star (*)
- Token asyncKeyword = pop();
+ var asyncKeyword = pop() as Token?;
if (parseFunctionBodies) {
push(ast.expressionFunctionBody(
asyncKeyword, arrowToken, expression, semicolon));
} else {
- push(ast.emptyFunctionBody(semicolon));
+ push(ast.emptyFunctionBody(semicolon!));
}
}
@@ -2611,10 +2629,10 @@
void handleExpressionStatement(Token semicolon) {
assert(optional(';', semicolon));
debugEvent("ExpressionStatement");
- Expression expression = pop();
+ var expression = pop() as Expression;
reportErrorIfSuper(expression);
if (expression is SimpleIdentifier &&
- expression.token?.keyword?.isBuiltInOrPseudo == false) {
+ expression.token.keyword?.isBuiltInOrPseudo == false) {
// This error is also reported by the body builder.
handleRecoverableError(
messageExpectedStatement, expression.beginToken, expression.endToken);
@@ -2654,15 +2672,15 @@
}
@override
- void handleForInLoopParts(Token awaitToken, Token forToken,
+ void handleForInLoopParts(Token? awaitToken, Token forToken,
Token leftParenthesis, Token inKeyword) {
assert(optionalOrNull('await', awaitToken));
assert(optional('for', forToken));
assert(optional('(', leftParenthesis));
assert(optional('in', inKeyword) || optional(':', inKeyword));
- Expression iterator = pop();
- Object variableOrDeclaration = pop();
+ var iterator = pop() as Expression;
+ var variableOrDeclaration = pop()!;
ForEachParts forLoopParts;
if (variableOrDeclaration is VariableDeclarationStatement) {
@@ -2680,10 +2698,10 @@
} else {
if (variableOrDeclaration is! SimpleIdentifier) {
// Parser has already reported the error.
- if (!leftParenthesis.next.isIdentifier) {
+ if (!leftParenthesis.next!.isIdentifier) {
parser.rewriter.insertSyntheticIdentifier(leftParenthesis);
}
- variableOrDeclaration = ast.simpleIdentifier(leftParenthesis.next);
+ variableOrDeclaration = ast.simpleIdentifier(leftParenthesis.next!);
}
forLoopParts = ast.forEachPartsWithIdentifier(
identifier: variableOrDeclaration,
@@ -2706,15 +2724,15 @@
assert(optional(';', leftSeparator));
assert(updateExpressionCount >= 0);
- List<Expression> updates = popTypedList(updateExpressionCount);
- Statement conditionStatement = pop();
- Object initializerPart = pop();
+ var updates = popTypedList2<Expression>(updateExpressionCount);
+ var conditionStatement = pop() as Statement;
+ var initializerPart = pop();
- Expression condition;
+ Expression? condition;
Token rightSeparator;
if (conditionStatement is ExpressionStatement) {
condition = conditionStatement.expression;
- rightSeparator = conditionStatement.semicolon;
+ rightSeparator = conditionStatement.semicolon!;
} else {
rightSeparator = (conditionStatement as EmptyStatement).semicolon;
}
@@ -2730,7 +2748,7 @@
);
} else {
forLoopParts = ast.forPartsWithExpression(
- initialization: initializerPart as Expression,
+ initialization: initializerPart as Expression?,
leftSeparator: leftSeparator,
condition: condition,
rightSeparator: rightSeparator,
@@ -2769,8 +2787,8 @@
push(identifier);
}
} else if (context == IdentifierContext.enumValueDeclaration) {
- List<Annotation> metadata = pop();
- Comment comment = _findComment(metadata, token);
+ var metadata = pop() as List<Annotation>?;
+ var comment = _findComment(metadata, token);
push(ast.enumConstantDeclaration(comment, metadata, identifier));
} else {
push(identifier);
@@ -2785,7 +2803,7 @@
}
@override
- void handleImportPrefix(Token deferredKeyword, Token asKeyword) {
+ void handleImportPrefix(Token? deferredKeyword, Token? asKeyword) {
assert(optionalOrNull('deferred', deferredKeyword));
assert(optionalOrNull('as', asKeyword));
debugEvent("ImportPrefix");
@@ -2803,7 +2821,7 @@
@override
void handleIndexedExpression(
- Token question, Token leftBracket, Token rightBracket) {
+ Token? question, Token leftBracket, Token rightBracket) {
assert(optional('[', leftBracket) ||
(enableNonNullable && optional('?.[', leftBracket)));
assert(optional(']', rightBracket));
@@ -2813,11 +2831,11 @@
reportErrorIfNullableType(question);
}
- Expression index = pop();
- Expression target = pop();
+ var index = pop() as Expression;
+ var target = pop() as Expression?;
if (target == null) {
- CascadeExpression receiver = pop();
- Token token = peek();
+ var receiver = pop() as CascadeExpression;
+ var token = peek() as Token;
push(receiver);
IndexExpression expression = ast.indexExpressionForCascade2(
period: token,
@@ -2838,8 +2856,8 @@
}
@override
- void handleInterpolationExpression(Token leftBracket, Token rightBracket) {
- Expression expression = pop();
+ void handleInterpolationExpression(Token leftBracket, Token? rightBracket) {
+ var expression = pop() as Expression;
push(ast.interpolationExpression(leftBracket, expression, rightBracket));
}
@@ -2851,11 +2869,11 @@
@override
void handleInvalidFunctionBody(Token leftBracket) {
assert(optional('{', leftBracket));
- assert(optional('}', leftBracket.endGroup));
+ assert(optional('}', leftBracket.endGroup!));
debugEvent("InvalidFunctionBody");
- Block block = ast.block(leftBracket, [], leftBracket.endGroup);
- Token star = pop();
- Token asyncKeyword = pop();
+ Block block = ast.block(leftBracket, [], leftBracket.endGroup!);
+ var star = pop() as Token?;
+ var asyncKeyword = pop() as Token?;
push(ast.blockFunctionBody(asyncKeyword, star, block));
}
@@ -2893,7 +2911,7 @@
@override
void handleInvalidTypeArguments(Token token) {
- TypeArgumentList invalidTypeArgs = pop();
+ var invalidTypeArgs = pop() as TypeArgumentList;
var node = pop();
if (node is ConstructorName) {
push(_ConstructorNameWithInvalidTypeArgs(node, invalidTypeArgs));
@@ -2904,13 +2922,13 @@
}
@override
- void handleIsOperator(Token isOperator, Token not) {
+ void handleIsOperator(Token isOperator, Token? not) {
assert(optional('is', isOperator));
assert(optionalOrNull('!', not));
debugEvent("IsOperator");
- TypeAnnotation type = pop();
- Expression expression = pop();
+ var type = pop() as TypeAnnotation;
+ var expression = pop() as Expression;
push(ast.isExpression(expression, isOperator, not, type));
}
@@ -2919,7 +2937,7 @@
assert(optionalOrNull(':', colon));
debugEvent("Label");
- SimpleIdentifier name = pop();
+ var name = pop() as SimpleIdentifier;
push(ast.label(name, colon));
}
@@ -2951,7 +2969,7 @@
@override
void handleLiteralList(
- int count, Token leftBracket, Token constKeyword, Token rightBracket) {
+ int count, Token leftBracket, Token? constKeyword, Token rightBracket) {
assert(optional('[', leftBracket));
assert(optionalOrNull('const', constKeyword));
assert(optional(']', rightBracket));
@@ -2959,7 +2977,7 @@
if (enableControlFlowCollections || enableSpreadCollections) {
List<CollectionElement> elements = popCollectionElements(count);
- TypeArgumentList typeArguments = pop();
+ var typeArguments = pop() as TypeArgumentList?;
// TODO(danrubel): Remove this and _InvalidCollectionElement
// once control flow and spread collection support is enabled by default
@@ -2968,15 +2986,13 @@
push(ast.listLiteral(
constKeyword, typeArguments, leftBracket, elements, rightBracket));
} else {
- List<dynamic> elements = popTypedList(count);
- TypeArgumentList typeArguments = pop();
+ var elements = popTypedList<Expression>(count) ?? const [];
+ var typeArguments = pop() as TypeArgumentList?;
List<Expression> expressions = <Expression>[];
- if (elements != null) {
- for (var elem in elements) {
- if (elem is Expression) {
- expressions.add(elem);
- }
+ for (var elem in elements) {
+ if (elem is Expression) {
+ expressions.add(elem);
}
}
@@ -2990,8 +3006,8 @@
assert(optional(':', colon));
debugEvent("LiteralMapEntry");
- Expression value = pop();
- Expression key = pop();
+ var value = pop() as Expression;
+ var key = pop() as Expression;
push(ast.mapLiteralEntry(key, colon, value));
}
@@ -3007,7 +3023,7 @@
void handleLiteralSetOrMap(
int count,
Token leftBrace,
- Token constKeyword,
+ Token? constKeyword,
Token rightBrace,
// TODO(danrubel): hasSetEntry parameter exists for replicating existing
// behavior and will be removed once unified collection has been enabled
@@ -3020,7 +3036,7 @@
// once control flow and spread collection support is enabled by default
elements.removeWhere((e) => e == _invalidCollectionElement);
- TypeArgumentList typeArguments = pop();
+ var typeArguments = pop() as TypeArgumentList?;
push(ast.setOrMapLiteral(
constKeyword: constKeyword,
typeArguments: typeArguments,
@@ -3029,16 +3045,16 @@
rightBracket: rightBrace,
));
} else {
- List<dynamic> elements = popTypedList(count);
- TypeArgumentList typeArguments = pop();
+ var elements = popTypedList(count);
+ var typeArguments = pop() as TypeArgumentList?;
// Replicate existing behavior that has been removed from the parser.
// This will be removed once control flow collections
// and spread collections are enabled by default.
// Determine if this is a set or map based on type args and content
- final typeArgCount = typeArguments?.arguments?.length;
- bool isSet = typeArgCount == 1
+ final typeArgCount = typeArguments?.arguments.length;
+ bool? isSet = typeArgCount == 1
? true
: typeArgCount != null
? false
@@ -3075,7 +3091,7 @@
if (elem is MapLiteralEntry) {
mapEntries.add(elem);
} else if (elem is Expression) {
- Token next = elem.endToken.next;
+ Token next = elem.endToken.next!;
int offset = next.offset;
handleRecoverableError(
templateExpectedButGot.withArguments(':'), next, next);
@@ -3107,12 +3123,12 @@
extensionDeclaration == null);
debugEvent("MixinHeader");
- ImplementsClause implementsClause = pop(NullValue.IdentifierList);
- OnClause onClause = pop(NullValue.IdentifierList);
- TypeParameterList typeParameters = pop();
- SimpleIdentifier name = pop();
- List<Annotation> metadata = pop();
- Comment comment = _findComment(metadata, mixinKeyword);
+ var implementsClause = pop(NullValue.IdentifierList) as ImplementsClause?;
+ var onClause = pop(NullValue.IdentifierList) as OnClause?;
+ var typeParameters = pop() as TypeParameterList?;
+ var name = pop() as SimpleIdentifier;
+ var metadata = pop() as List<Annotation>?;
+ var comment = _findComment(metadata, mixinKeyword);
mixinDeclaration = ast.mixinDeclaration(
comment,
@@ -3122,21 +3138,20 @@
typeParameters,
onClause,
implementsClause,
- null,
- // leftBracket
+ Tokens.OPEN_CURLY_BRACKET, // leftBracket
<ClassMember>[],
- null, // rightBracket
- );
- declarations.add(mixinDeclaration);
+ Tokens.CLOSE_CURLY_BRACKET, // rightBracket
+ ) as MixinDeclarationImpl;
+ declarations.add(mixinDeclaration!);
}
@override
- void handleMixinOn(Token onKeyword, int typeCount) {
+ void handleMixinOn(Token? onKeyword, int typeCount) {
assert(onKeyword == null || onKeyword.isKeywordOrIdentifier);
debugEvent("MixinOn");
if (onKeyword != null) {
- List<TypeName> types = popTypedList(typeCount);
+ var types = popTypedList2<TypeName>(typeCount);
push(ast.onClause(onKeyword, types));
} else {
push(NullValue.IdentifierList);
@@ -3148,15 +3163,15 @@
assert(optional(':', colon));
debugEvent("NamedArgument");
- Expression expression = pop();
- SimpleIdentifier name = pop();
+ var expression = pop() as Expression;
+ var name = pop() as SimpleIdentifier;
push(ast.namedExpression(ast.label(name, colon), expression));
}
@override
void handleNamedMixinApplicationWithClause(Token withKeyword) {
assert(optionalOrNull('with', withKeyword));
- List<TypeName> mixinTypes = pop();
+ var mixinTypes = pop() as List<TypeName>;
push(ast.withClause(withKeyword, mixinTypes));
}
@@ -3165,7 +3180,7 @@
debugEvent("NativeClause");
if (hasName) {
- nativeName = pop(); // StringLiteral
+ nativeName = pop() as StringLiteral; // StringLiteral
} else {
nativeName = null;
}
@@ -3194,7 +3209,7 @@
void handleNoFieldInitializer(Token token) {
debugEvent("NoFieldInitializer");
- SimpleIdentifier name = pop();
+ var name = pop() as SimpleIdentifier;
push(_makeVariableDeclaration(name, null, null));
}
@@ -3213,7 +3228,7 @@
if (!enableNonNullable) {
reportNonNullAssertExpressionNotEnabled(bang);
} else {
- push(ast.postfixExpression(pop(), bang));
+ push(ast.postfixExpression(pop() as Expression, bang));
}
}
@@ -3251,16 +3266,16 @@
assert(optional('(', leftParenthesis));
debugEvent("ParenthesizedExpression");
- Expression expression = pop();
+ var expression = pop() as Expression;
push(ast.parenthesizedExpression(
- leftParenthesis, expression, leftParenthesis?.endGroup));
+ leftParenthesis, expression, leftParenthesis.endGroup!));
}
@override
void handleQualified(Token period) {
assert(optional('.', period));
- SimpleIdentifier identifier = pop();
+ var identifier = pop() as SimpleIdentifier;
var prefix = pop();
if (prefix is List) {
// We're just accumulating components into a list.
@@ -3297,10 +3312,10 @@
void handleRecoverClassHeader() {
debugEvent("RecoverClassHeader");
- ImplementsClause implementsClause = pop(NullValue.IdentifierList);
- WithClause withClause = pop(NullValue.WithClause);
- ExtendsClause extendsClause = pop(NullValue.ExtendsClause);
- ClassDeclaration declaration = declarations.last;
+ var implementsClause = pop(NullValue.IdentifierList) as ImplementsClause?;
+ var withClause = pop(NullValue.WithClause) as WithClause?;
+ var extendsClause = pop(NullValue.ExtendsClause) as ExtendsClause?;
+ var declaration = declarations.last as ClassDeclaration;
if (extendsClause != null) {
if (declaration.extendsClause?.superclass == null) {
declaration.extendsClause = extendsClause;
@@ -3310,31 +3325,31 @@
if (declaration.withClause == null) {
declaration.withClause = withClause;
} else {
- declaration.withClause.mixinTypes.addAll(withClause.mixinTypes);
+ declaration.withClause!.mixinTypes.addAll(withClause.mixinTypes);
}
}
if (implementsClause != null) {
if (declaration.implementsClause == null) {
declaration.implementsClause = implementsClause;
} else {
- declaration.implementsClause.interfaces
+ declaration.implementsClause!.interfaces
.addAll(implementsClause.interfaces);
}
}
}
@override
- void handleRecoverImport(Token semicolon) {
+ void handleRecoverImport(Token? semicolon) {
assert(optionalOrNull(';', semicolon));
debugEvent("RecoverImport");
- List<Combinator> combinators = pop();
- Token deferredKeyword = pop(NullValue.Deferred);
- Token asKeyword = pop(NullValue.As);
- SimpleIdentifier prefix = pop(NullValue.Prefix);
- List<Configuration> configurations = pop();
+ var combinators = pop() as List<Combinator>?;
+ var deferredKeyword = pop(NullValue.Deferred) as Token?;
+ var asKeyword = pop(NullValue.As) as Token?;
+ var prefix = pop(NullValue.Prefix) as SimpleIdentifier?;
+ var configurations = pop() as List<Configuration>?;
- ImportDirective directive = directives.last;
+ var directive = directives.last as ImportDirective;
if (combinators != null) {
directive.combinators.addAll(combinators);
}
@@ -3346,27 +3361,29 @@
if (configurations != null) {
directive.configurations.addAll(configurations);
}
- directive.semicolon = semicolon;
+ if (semicolon != null) {
+ directive.semicolon = semicolon;
+ }
}
@override
void handleRecoverMixinHeader() {
- ImplementsClause implementsClause = pop(NullValue.IdentifierList);
- OnClause onClause = pop(NullValue.IdentifierList);
+ var implementsClause = pop(NullValue.IdentifierList) as ImplementsClause?;
+ var onClause = pop(NullValue.IdentifierList) as OnClause?;
if (onClause != null) {
- if (mixinDeclaration.onClause == null) {
- mixinDeclaration.onClause = onClause;
+ if (mixinDeclaration!.onClause == null) {
+ mixinDeclaration!.onClause = onClause;
} else {
- mixinDeclaration.onClause.superclassConstraints
+ mixinDeclaration!.onClause!.superclassConstraints
.addAll(onClause.superclassConstraints);
}
}
if (implementsClause != null) {
- if (mixinDeclaration.implementsClause == null) {
- mixinDeclaration.implementsClause = implementsClause;
+ if (mixinDeclaration!.implementsClause == null) {
+ mixinDeclaration!.implementsClause = implementsClause;
} else {
- mixinDeclaration.implementsClause.interfaces
+ mixinDeclaration!.implementsClause!.interfaces
.addAll(implementsClause.interfaces);
}
}
@@ -3384,8 +3401,8 @@
void handleSend(Token beginToken, Token endToken) {
debugEvent("Send");
- MethodInvocation arguments = pop();
- TypeArgumentList typeArguments = pop();
+ var arguments = pop() as MethodInvocation?;
+ var typeArguments = pop() as TypeArgumentList?;
if (arguments != null) {
doInvocation(typeArguments, arguments);
} else {
@@ -3395,7 +3412,7 @@
@override
void handleSpreadExpression(Token spreadToken) {
- var expression = pop();
+ var expression = pop() as Expression;
if (enableSpreadCollections) {
push(ast.spreadElement(
spreadOperator: spreadToken, expression: expression));
@@ -3404,7 +3421,7 @@
handleRecoverableError(
templateExperimentNotEnabled.withArguments(
feature.enableString,
- _versionAsString(feature.releaseVersion),
+ _versionAsString(feature.releaseVersion!),
),
spreadToken,
spreadToken,
@@ -3417,7 +3434,8 @@
void handleStringJuxtaposition(Token startToken, int literalCount) {
debugEvent("StringJuxtaposition");
- push(ast.adjacentStrings(popTypedList(literalCount)));
+ var strings = popTypedList2<StringLiteral>(literalCount);
+ push(ast.adjacentStrings(strings));
}
@override
@@ -3457,18 +3475,18 @@
assert(optional('throw', throwToken));
debugEvent("ThrowExpression");
- push(ast.throwExpression(throwToken, pop()));
+ push(ast.throwExpression(throwToken, pop() as Expression));
}
@override
- void handleType(Token beginToken, Token questionMark) {
+ void handleType(Token beginToken, Token? questionMark) {
debugEvent("Type");
if (!enableNonNullable) {
reportErrorIfNullableType(questionMark);
}
- TypeArgumentList arguments = pop();
- Identifier name = pop();
+ var arguments = pop() as TypeArgumentList?;
+ var name = pop() as Identifier;
push(ast.typeName(name, arguments, question: questionMark));
}
@@ -3476,7 +3494,7 @@
void handleTypeVariablesDefined(Token token, int count) {
debugEvent("handleTypeVariablesDefined");
assert(count > 0);
- push(popTypedList(count, List<TypeParameter>.filled(count, null)));
+ push(popTypedList<TypeParameter>(count));
}
@override
@@ -3484,7 +3502,7 @@
assert(operator.type.isUnaryPostfixOperator);
debugEvent("UnaryPostfixAssignmentExpression");
- Expression expression = pop();
+ var expression = pop() as Expression;
if (!expression.isAssignable) {
// This error is also reported by the body builder.
handleRecoverableError(
@@ -3498,7 +3516,7 @@
assert(operator.type.isUnaryPrefixOperator);
debugEvent("UnaryPrefixAssignmentExpression");
- Expression expression = pop();
+ var expression = pop() as Expression;
if (!expression.isAssignable) {
// This error is also reported by the body builder.
handleRecoverableError(messageMissingAssignableSelector,
@@ -3512,7 +3530,7 @@
assert(operator.type.isUnaryPrefixOperator);
debugEvent("UnaryPrefixExpression");
- push(ast.prefixExpression(operator, pop()));
+ push(ast.prefixExpression(operator, pop() as Expression));
}
@override
@@ -3520,7 +3538,7 @@
assert(optional('=', equals) || optional(':', equals));
debugEvent("ValuedFormalParameter");
- Expression value = pop();
+ var value = pop() as Expression;
push(_ParameterDefaultValue(equals, value));
}
@@ -3540,7 +3558,7 @@
void handleVoidKeywordWithTypeArguments(Token voidKeyword) {
assert(optional('void', voidKeyword));
debugEvent("VoidKeywordWithTypeArguments");
- TypeArgumentList arguments = pop();
+ var arguments = pop() as TypeArgumentList;
// TODO(paulberry): is this sufficient, or do we need to hook the "void"
// keyword up to an element?
@@ -3550,13 +3568,13 @@
}
@override
- internalProblem(Message message, int charOffset, Uri uri) {
+ Never internalProblem(Message message, int charOffset, Uri uri) {
throw UnsupportedError(message.message);
}
/// Return `true` if [token] is either `null` or is the symbol or keyword
/// [value].
- bool optionalOrNull(String value, Token token) {
+ bool optionalOrNull(String value, Token? token) {
return token == null || identical(value, token.stringValue);
}
@@ -3581,35 +3599,53 @@
}
}
- final references = List<CommentReference>.filled(count, null);
- popTypedList(count, references);
- return references;
+ return popTypedList<CommentReference>(count) ?? const [];
}
List<CollectionElement> popCollectionElements(int count) {
- final elements = <CollectionElement>[]..length = count;
+ // TODO(scheglov) Not efficient.
+ final elements = <CollectionElement>[];
for (int index = count - 1; index >= 0; --index) {
var element = pop();
- elements[index] = element as CollectionElement;
+ elements.add(element as CollectionElement);
}
- return elements;
+ return elements.reversed.toList();
}
- List popList(int n, List list) {
+ List? popList(int n, List list) {
if (n == 0) return null;
return stack.popList(n, list, null);
}
- List<T> popTypedList<T>(int count, [List<T> list]) {
+ List<T>? popTypedList<T extends Object>(int count) {
if (count == 0) return null;
assert(stack.length >= count);
- final tailList = list ?? List<T>.filled(count, null, growable: true);
+ final tailList = List<T?>.filled(count, null, growable: true);
stack.popList(count, tailList, null);
- return tailList;
+ return tailList.whereNotNull().toList();
}
- void pushForControlFlowInfo(Token awaitToken, Token forToken,
+ // List<T?>? popTypedList<T>(int count, [List<T>? list]) {
+ // if (count == 0) return null;
+ // assert(stack.length >= count);
+ //
+ // final tailList = list ?? List<T?>.filled(count, null, growable: true);
+ // stack.popList(count, tailList, null);
+ // return tailList;
+ // }
+
+ /// TODO(scheglov) This is probably not optimal.
+ List<T> popTypedList2<T>(int count) {
+ var result = <T>[];
+ for (var i = 0; i < count; i++) {
+ var element = stack.pop(null) as T;
+ result.add(element);
+ }
+ return result.reversed.toList();
+ }
+
+ void pushForControlFlowInfo(Token? awaitToken, Token forToken,
Token leftParenthesis, ForLoopParts forLoopParts, Object entry) {
if (entry == _invalidCollectionElement) {
push(_invalidCollectionElement);
@@ -3619,7 +3655,7 @@
forKeyword: forToken,
leftParenthesis: leftParenthesis,
forLoopParts: forLoopParts,
- rightParenthesis: leftParenthesis.endGroup,
+ rightParenthesis: leftParenthesis.endGroup!,
body: entry as CollectionElement,
));
} else {
@@ -3627,7 +3663,7 @@
handleRecoverableError(
templateExperimentNotEnabled.withArguments(
feature.enableString,
- _versionAsString(feature.releaseVersion),
+ _versionAsString(feature.releaseVersion!),
),
forToken,
forToken,
@@ -3640,8 +3676,8 @@
Token ifToken,
ParenthesizedExpression condition,
CollectionElement thenElement,
- Token elseToken,
- CollectionElement elseElement) {
+ Token? elseToken,
+ CollectionElement? elseElement) {
if (thenElement == _invalidCollectionElement ||
elseElement == _invalidCollectionElement) {
push(_invalidCollectionElement);
@@ -3660,7 +3696,7 @@
handleRecoverableError(
templateExperimentNotEnabled.withArguments(
feature.enableString,
- _versionAsString(feature.releaseVersion),
+ _versionAsString(feature.releaseVersion!),
),
ifToken,
ifToken,
@@ -3669,14 +3705,14 @@
}
}
- void reportErrorIfNullableType(Token questionMark) {
+ void reportErrorIfNullableType(Token? questionMark) {
if (questionMark != null) {
assert(optional('?', questionMark));
var feature = ExperimentalFeatures.non_nullable;
handleRecoverableError(
templateExperimentNotEnabled.withArguments(
feature.enableString,
- _versionAsString(feature.releaseVersion),
+ _versionAsString(feature.releaseVersion!),
),
questionMark,
questionMark,
@@ -3692,13 +3728,13 @@
}
}
- void reportNonNullableModifierError(Token modifierToken) {
+ void reportNonNullableModifierError(Token? modifierToken) {
if (modifierToken != null) {
var feature = ExperimentalFeatures.non_nullable;
handleRecoverableError(
templateExperimentNotEnabled.withArguments(
feature.enableString,
- _versionAsString(feature.releaseVersion),
+ _versionAsString(feature.releaseVersion!),
),
modifierToken,
modifierToken,
@@ -3711,16 +3747,16 @@
handleRecoverableError(
templateExperimentNotEnabled.withArguments(
feature.enableString,
- _versionAsString(feature.releaseVersion),
+ _versionAsString(feature.releaseVersion!),
),
bang,
bang,
);
}
- Comment _findComment(List<Annotation> metadata, Token tokenAfterMetadata) {
+ Comment? _findComment(List<Annotation>? metadata, Token tokenAfterMetadata) {
// Find the dartdoc tokens
- Token dartdoc = parser.findDartDoc(tokenAfterMetadata);
+ var dartdoc = parser.findDartDoc(tokenAfterMetadata);
if (dartdoc == null) {
if (metadata == null) {
return null;
@@ -3753,16 +3789,16 @@
return ast.documentationComment(tokens, references);
}
- void _handleInstanceCreation(Token token) {
- MethodInvocation arguments = pop();
+ void _handleInstanceCreation(Token? token) {
+ var arguments = pop() as MethodInvocation;
ConstructorName constructorName;
- TypeArgumentList typeArguments;
+ TypeArgumentList? typeArguments;
var object = pop();
if (object is _ConstructorNameWithInvalidTypeArgs) {
constructorName = object.name;
typeArguments = object.invalidTypeArgs;
} else {
- constructorName = object;
+ constructorName = object as ConstructorName;
}
push(ast.instanceCreationExpression(
token, constructorName, arguments.argumentList,
@@ -3770,12 +3806,18 @@
}
VariableDeclaration _makeVariableDeclaration(
- SimpleIdentifier name, Token equals, Expression initializer) {
+ SimpleIdentifier name, Token? equals, Expression? initializer) {
return ast.variableDeclaration(name, equals, initializer);
}
+ SimpleIdentifier _tmpSimpleIdentifier() {
+ return ast.simpleIdentifier(
+ StringToken(TokenType.STRING, '__tmp', -1),
+ );
+ }
+
ParameterKind _toAnalyzerParameterKind(
- FormalParameterKind type, Token requiredKeyword) {
+ FormalParameterKind type, Token? requiredKeyword) {
if (type == FormalParameterKind.optionalPositional) {
return ParameterKind.POSITIONAL;
} else if (type == FormalParameterKind.optionalNamed) {
@@ -3816,18 +3858,18 @@
/// Data structure placed on the stack to represent a non-empty sequence
/// of modifiers.
class _Modifiers {
- Token abstractKeyword;
- Token externalKeyword;
- Token finalConstOrVarKeyword;
- Token staticKeyword;
- Token covariantKeyword;
- Token requiredToken;
- Token lateToken;
+ Token? abstractKeyword;
+ Token? externalKeyword;
+ Token? finalConstOrVarKeyword;
+ Token? staticKeyword;
+ Token? covariantKeyword;
+ Token? requiredToken;
+ Token? lateToken;
/// Return the token that is lexically first.
- Token get beginToken {
- Token firstToken;
- for (Token token in [
+ Token? get beginToken {
+ Token? firstToken;
+ for (Token? token in [
abstractKeyword,
externalKeyword,
finalConstOrVarKeyword,
@@ -3848,7 +3890,7 @@
}
/// Return the `const` keyword or `null`.
- Token get constKeyword {
+ Token? get constKeyword {
return identical('const', finalConstOrVarKeyword?.lexeme)
? finalConstOrVarKeyword
: null;
@@ -3866,7 +3908,7 @@
/// Data structure placed on the stack as a container for optional parameters.
class _OptionalFormalParameters {
- final List<FormalParameter> parameters;
+ final List<FormalParameter>? parameters;
final Token leftDelimiter;
final Token rightDelimiter;
@@ -3885,8 +3927,8 @@
/// Data structure placed on stack to represent the redirected constructor.
class _RedirectingFactoryBody {
- final Token asyncKeyword;
- final Token starKeyword;
+ final Token? asyncKeyword;
+ final Token? starKeyword;
final Token equalToken;
final ConstructorName constructorName;
diff --git a/pkg/analyzer/lib/src/fasta/error_converter.dart b/pkg/analyzer/lib/src/fasta/error_converter.dart
index bfc91e0..145508c 100644
--- a/pkg/analyzer/lib/src/fasta/error_converter.dart
+++ b/pkg/analyzer/lib/src/fasta/error_converter.dart
@@ -13,14 +13,14 @@
/// error.
class FastaErrorReporter {
/// The underlying error reporter to which errors are reported.
- final ErrorReporter errorReporter;
+ final ErrorReporter? errorReporter;
/// Initialize a newly created error reporter to report errors to the given
/// [errorReporter].
FastaErrorReporter(this.errorReporter);
void reportByCode(
- String analyzerCode, int offset, int length, Message message) {
+ String? analyzerCode, int offset, int length, Message message) {
Map<String, dynamic> arguments = message.arguments;
String lexeme() => (arguments['lexeme'] as Token).lexeme;
@@ -347,11 +347,11 @@
void reportMessage(Message message, int offset, int length) {
Code code = message.code;
int index = code.index;
- if (index != null && index > 0 && index < fastaAnalyzerErrorCodes.length) {
- ErrorCode errorCode = fastaAnalyzerErrorCodes[index];
+ if (index > 0 && index < fastaAnalyzerErrorCodes.length) {
+ var errorCode = fastaAnalyzerErrorCodes[index];
if (errorCode != null) {
- errorReporter.reportError(AnalysisError.withNamedArguments(
- errorReporter.source,
+ errorReporter!.reportError(AnalysisError.withNamedArguments(
+ errorReporter!.source,
offset,
length,
errorCode,
@@ -363,7 +363,7 @@
}
void reportScannerError(
- ScannerErrorCode errorCode, int offset, List<Object> arguments) {
+ ScannerErrorCode errorCode, int offset, List<Object?>? arguments) {
// TODO(danrubel): update client to pass length in addition to offset.
int length = 1;
errorReporter?.reportErrorForOffset(errorCode, offset, length, arguments);
@@ -372,8 +372,8 @@
void _reportByCode(
ErrorCode errorCode, Message message, int offset, int length) {
if (errorReporter != null) {
- errorReporter.reportError(AnalysisError.withNamedArguments(
- errorReporter.source, offset, length, errorCode, message.arguments));
+ errorReporter!.reportError(AnalysisError.withNamedArguments(
+ errorReporter!.source, offset, length, errorCode, message.arguments));
}
}
}
diff --git a/pkg/analyzer/lib/src/fasta/token_utils.dart b/pkg/analyzer/lib/src/fasta/token_utils.dart
index f7a5b56..acd33f3 100644
--- a/pkg/analyzer/lib/src/fasta/token_utils.dart
+++ b/pkg/analyzer/lib/src/fasta/token_utils.dart
@@ -8,13 +8,13 @@
/// Search for the token before [target] starting the search with [start].
/// Return `null` if [target] is a comment token
/// or the previous token cannot be found.
-Token findPrevious(Token start, Token target) {
+Token? findPrevious(Token start, Token? target) {
if (start == target || target is CommentToken) {
return null;
}
- Token token = start is CommentToken ? start.parent : start;
+ Token token = start is CommentToken ? start.parent! : start;
do {
- Token next = token.next;
+ Token next = token.next!;
if (next == target) {
return token;
}
diff --git a/pkg/analyzer/lib/src/file_system/file_system.dart b/pkg/analyzer/lib/src/file_system/file_system.dart
index 4709f04..d3d9189 100644
--- a/pkg/analyzer/lib/src/file_system/file_system.dart
+++ b/pkg/analyzer/lib/src/file_system/file_system.dart
@@ -18,7 +18,7 @@
ResourceProvider get provider => _provider;
@override
- Source resolveAbsolute(Uri uri, [Uri actualUri]) {
+ Source? resolveAbsolute(Uri uri, [Uri? actualUri]) {
if (!isFileUri(uri)) {
return null;
}
diff --git a/pkg/analyzer/lib/src/generated/constant.dart b/pkg/analyzer/lib/src/generated/constant.dart
index cb4d7fb..faa2ee3 100644
--- a/pkg/analyzer/lib/src/generated/constant.dart
+++ b/pkg/analyzer/lib/src/generated/constant.dart
@@ -4,11 +4,10 @@
import 'package:analyzer/dart/analysis/declared_variables.dart';
import 'package:analyzer/dart/ast/ast.dart';
-import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/error/error.dart';
import 'package:analyzer/error/listener.dart';
import 'package:analyzer/src/dart/constant/evaluation.dart';
-import 'package:analyzer/src/dart/constant/value.dart';
+import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/generated/engine.dart';
import 'package:analyzer/src/generated/engine.dart' show RecordingErrorListener;
import 'package:analyzer/src/generated/source.dart' show Source;
@@ -99,12 +98,12 @@
final Source _source;
/// The library containing the expression(s) that will be evaluated.
- final LibraryElement _library;
+ final LibraryElementImpl _library;
/// Initialize a newly created evaluator to evaluate expressions in the given
/// [source]. The [typeProvider] is the type provider used to access known
/// types.
- ConstantEvaluator(this._source, LibraryElement library) : _library = library;
+ ConstantEvaluator(this._source, this._library);
EvaluationResult evaluate(Expression expression) {
RecordingErrorListener errorListener = RecordingErrorListener();
@@ -113,7 +112,7 @@
_source,
isNonNullableByDefault: _library.isNonNullableByDefault,
);
- DartObjectImpl result = expression.accept(ConstantVisitor(
+ var result = expression.accept(ConstantVisitor(
ConstantEvaluationEngine(
DeclaredVariables(),
),
diff --git a/pkg/analyzer/lib/src/generated/declaration_resolver.dart b/pkg/analyzer/lib/src/generated/declaration_resolver.dart
index 5737b9d..acb699c 100644
--- a/pkg/analyzer/lib/src/generated/declaration_resolver.dart
+++ b/pkg/analyzer/lib/src/generated/declaration_resolver.dart
@@ -11,27 +11,27 @@
/// The element whose child elements are being walked.
final Element element;
- List<PropertyAccessorElement> _accessors;
+ List<PropertyAccessorElement>? _accessors;
int _accessorIndex = 0;
- List<ClassElement> _classes;
+ List<ClassElement>? _classes;
int _classIndex = 0;
- List<ConstructorElement> _constructors;
+ List<ConstructorElement>? _constructors;
int _constructorIndex = 0;
- List<ClassElement> _enums;
+ List<ClassElement>? _enums;
int _enumIndex = 0;
- List<ExtensionElement> _extensions;
+ List<ExtensionElement>? _extensions;
int _extensionIndex = 0;
- List<ExecutableElement> _functions;
+ List<ExecutableElement>? _functions;
int _functionIndex = 0;
- List<ClassElement> _mixins;
+ List<ClassElement>? _mixins;
int _mixinIndex = 0;
- List<ParameterElement> _parameters;
+ List<ParameterElement>? _parameters;
int _parameterIndex = 0;
- List<TypeAliasElement> _typedefs;
+ List<TypeAliasElement>? _typedefs;
int _typedefIndex = 0;
- List<TypeParameterElement> _typeParameters;
+ List<TypeParameterElement>? _typeParameters;
int _typeParameterIndex = 0;
- List<VariableElement> _variables;
+ List<VariableElement>? _variables;
int _variableIndex = 0;
/// Creates an [ElementWalker] which walks the child elements of a class
@@ -104,63 +104,69 @@
_typeParameters = element.typeParameters;
void consumeLocalElements() {
- _functionIndex = _functions.length;
+ _functionIndex = _functions!.length;
}
void consumeParameters() {
- _parameterIndex = _parameters.length;
+ _parameterIndex = _parameters!.length;
}
/// Returns the next non-synthetic child of [element] which is an accessor;
/// throws an [IndexError] if there are no more.
- PropertyAccessorElement getAccessor() => _accessors[_accessorIndex++];
+ PropertyAccessorElementImpl getAccessor() =>
+ _accessors![_accessorIndex++] as PropertyAccessorElementImpl;
/// Returns the next non-synthetic child of [element] which is a class; throws
/// an [IndexError] if there are no more.
- ClassElement getClass() => _classes[_classIndex++];
+ ClassElementImpl getClass() => _classes![_classIndex++] as ClassElementImpl;
/// Returns the next non-synthetic child of [element] which is a constructor;
/// throws an [IndexError] if there are no more.
- ConstructorElement getConstructor() => _constructors[_constructorIndex++];
+ ConstructorElementImpl getConstructor() =>
+ _constructors![_constructorIndex++] as ConstructorElementImpl;
/// Returns the next non-synthetic child of [element] which is an enum; throws
/// an [IndexError] if there are no more.
- ClassElement getEnum() => _enums[_enumIndex++];
+ EnumElementImpl getEnum() => _enums![_enumIndex++] as EnumElementImpl;
- ExtensionElement getExtension() => _extensions[_extensionIndex++];
+ ExtensionElement getExtension() => _extensions![_extensionIndex++];
/// Returns the next non-synthetic child of [element] which is a top level
/// function, method, or local function; throws an [IndexError] if there are
/// no more.
- ExecutableElement getFunction() => _functions[_functionIndex++];
+ ExecutableElementImpl getFunction() =>
+ _functions![_functionIndex++] as ExecutableElementImpl;
/// Returns the next non-synthetic child of [element] which is a mixin; throws
/// an [IndexError] if there are no more.
- ClassElement getMixin() => _mixins[_mixinIndex++];
+ ClassElement getMixin() => _mixins![_mixinIndex++];
/// Returns the next non-synthetic child of [element] which is a parameter;
/// throws an [IndexError] if there are no more.
- ParameterElement getParameter() => _parameters[_parameterIndex++];
+ ParameterElementImpl getParameter() =>
+ _parameters![_parameterIndex++] as ParameterElementImpl;
/// Returns the next non-synthetic child of [element] which is a typedef;
/// throws an [IndexError] if there are no more.
- TypeAliasElement getTypedef() => _typedefs[_typedefIndex++];
+ TypeAliasElementImpl getTypedef() =>
+ _typedefs![_typedefIndex++] as TypeAliasElementImpl;
/// Returns the next non-synthetic child of [element] which is a type
/// parameter; throws an [IndexError] if there are no more.
- TypeParameterElement getTypeParameter() =>
- _typeParameters[_typeParameterIndex++];
+ TypeParameterElementImpl getTypeParameter() =>
+ _typeParameters![_typeParameterIndex++] as TypeParameterElementImpl;
/// Returns the next non-synthetic child of [element] which is a top level
/// variable, field, or local variable; throws an [IndexError] if there are no
/// more.
- VariableElement getVariable() => _variables[_variableIndex++];
+ VariableElementImpl getVariable() =>
+ _variables![_variableIndex++] as VariableElementImpl;
/// Verifies that all non-synthetic children of [element] have been obtained
/// from their corresponding "get" method calls; if not, throws a
/// [StateError].
void validate() {
- void check(List<Element> elements, int index) {
+ void check(List<Element>? elements, int index) {
if (elements != null && elements.length != index) {
throw StateError(
'Unmatched ${elements[index].runtimeType} ${elements[index]}');
diff --git a/pkg/analyzer/lib/src/generated/element_resolver.dart b/pkg/analyzer/lib/src/generated/element_resolver.dart
index eba129d..48c3f46 100644
--- a/pkg/analyzer/lib/src/generated/element_resolver.dart
+++ b/pkg/analyzer/lib/src/generated/element_resolver.dart
@@ -7,6 +7,7 @@
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/error/listener.dart';
+import 'package:analyzer/src/dart/ast/ast.dart';
import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/dart/element/type_provider.dart';
import 'package:analyzer/src/dart/resolver/method_invocation_resolver.dart';
@@ -87,7 +88,7 @@
/// Helper for resolving properties on types.
final TypePropertyResolver _typePropertyResolver;
- MethodInvocationResolver _methodInvocationResolver;
+ late final MethodInvocationResolver _methodInvocationResolver;
/// Initialize a newly created visitor to work for the given [_resolver] to
/// resolve the nodes in a compilation unit.
@@ -107,7 +108,7 @@
/// Return `true` iff the current enclosing function is a constant constructor
/// declaration.
bool get isInConstConstructor {
- ExecutableElement function = _resolver.enclosingFunction;
+ var function = _resolver.enclosingFunction;
if (function is ConstructorElement) {
return function.isConst;
}
@@ -137,7 +138,7 @@
void visitCommentReference(CommentReference node) {
Identifier identifier = node.identifier;
if (identifier is SimpleIdentifier) {
- Element element = _resolveSimpleIdentifier(identifier);
+ var element = _resolveSimpleIdentifier(identifier);
if (element == null) {
// TODO(brianwilkerson) Report this error?
// resolver.reportError(
@@ -151,7 +152,7 @@
identifier.staticElement = element;
if (node.newKeyword != null) {
if (element is ClassElement) {
- ConstructorElement constructor = element.unnamedConstructor;
+ var constructor = element.unnamedConstructor;
if (constructor == null) {
// TODO(brianwilkerson) Report this error.
} else {
@@ -164,7 +165,7 @@
}
} else if (identifier is PrefixedIdentifier) {
SimpleIdentifier prefix = identifier.prefix;
- Element prefixElement = _resolveSimpleIdentifier(prefix);
+ var prefixElement = _resolveSimpleIdentifier(prefix);
prefix.staticElement = prefixElement;
SimpleIdentifier name = identifier.identifier;
@@ -183,7 +184,7 @@
return;
}
- LibraryElement library = prefixElement.library;
+ var library = prefixElement.library;
if (library != _definingLibrary) {
// TODO(brianwilkerson) Report this error.
}
@@ -213,18 +214,18 @@
@override
void visitConstructorDeclaration(ConstructorDeclaration node) {
super.visitConstructorDeclaration(node);
- ConstructorElement element = node.declaredElement;
+ ConstructorElement element = node.declaredElement!;
if (element is ConstructorElementImpl) {
- ConstructorName redirectedNode = node.redirectedConstructor;
+ var redirectedNode = node.redirectedConstructor;
if (redirectedNode != null) {
// set redirected factory constructor
- ConstructorElement redirectedElement = redirectedNode.staticElement;
+ var redirectedElement = redirectedNode.staticElement;
element.redirectedConstructor = redirectedElement;
} else {
// set redirected generative constructor
for (ConstructorInitializer initializer in node.initializers) {
if (initializer is RedirectingConstructorInvocation) {
- ConstructorElement redirectedElement = initializer.staticElement;
+ var redirectedElement = initializer.staticElement;
element.redirectedConstructor = redirectedElement;
}
}
@@ -236,20 +237,20 @@
@override
void visitConstructorFieldInitializer(ConstructorFieldInitializer node) {
SimpleIdentifier fieldName = node.fieldName;
- ClassElement enclosingClass = _resolver.enclosingClass;
- FieldElement fieldElement = enclosingClass.getField(fieldName.name);
+ ClassElement enclosingClass = _resolver.enclosingClass!;
+ var fieldElement = enclosingClass.getField(fieldName.name);
fieldName.staticElement = fieldElement;
}
@override
void visitConstructorName(ConstructorName node) {
- DartType type = node.type.type;
- if (type != null && type.isDynamic) {
+ DartType type = node.type.type!;
+ if (type.isDynamic) {
// Nothing to do.
} else if (type is InterfaceType) {
// look up ConstructorElement
- ConstructorElement constructor;
- SimpleIdentifier name = node.name;
+ ConstructorElement? constructor;
+ var name = node.name;
if (name == null) {
constructor = type.lookUpConstructor(null, _definingLibrary);
constructor = _resolver.toLegacyElement(constructor);
@@ -296,7 +297,7 @@
@override
void visitExportDirective(ExportDirective node) {
- ExportElement exportElement = node.element;
+ var exportElement = node.element;
if (exportElement != null) {
// The element is null when the URI is invalid
// TODO(brianwilkerson) Figure out whether the element can ever be
@@ -344,7 +345,7 @@
@override
void visitImportDirective(ImportDirective node) {
- SimpleIdentifier prefixNode = node.prefix;
+ var prefixNode = node.prefix;
if (prefixNode != null) {
String prefixName = prefixNode.name;
List<PrefixElement> prefixes = _definingLibrary.prefixes;
@@ -357,10 +358,10 @@
}
}
}
- ImportElement importElement = node.element;
+ var importElement = node.element;
if (importElement != null) {
// The element is null when the URI is invalid
- LibraryElement library = importElement.importedLibrary;
+ var library = importElement.importedLibrary;
if (library != null) {
_resolveCombinators(library, node.combinators);
}
@@ -370,9 +371,9 @@
@override
void visitInstanceCreationExpression(InstanceCreationExpression node) {
- ConstructorElement invokedConstructor = node.constructorName.staticElement;
+ var invokedConstructor = node.constructorName.staticElement;
ArgumentList argumentList = node.argumentList;
- List<ParameterElement> parameters =
+ var parameters =
_resolveArgumentsToFunction(argumentList, invokedConstructor);
if (parameters != null) {
argumentList.correspondingStaticParameters = parameters;
@@ -391,7 +392,7 @@
@override
void visitMethodInvocation(MethodInvocation node) {
- _methodInvocationResolver.resolve(node);
+ _methodInvocationResolver.resolve(node as MethodInvocationImpl);
}
@override
@@ -407,13 +408,13 @@
@override
void visitRedirectingConstructorInvocation(
RedirectingConstructorInvocation node) {
- ClassElement enclosingClass = _resolver.enclosingClass;
+ var enclosingClass = _resolver.enclosingClass;
if (enclosingClass == null) {
// TODO(brianwilkerson) Report this error.
return;
}
- SimpleIdentifier name = node.constructorName;
- ConstructorElement element;
+ ConstructorElement? element;
+ var name = node.constructorName;
if (name == null) {
element = enclosingClass.unnamedConstructor;
} else {
@@ -429,8 +430,7 @@
}
node.staticElement = element;
ArgumentList argumentList = node.argumentList;
- List<ParameterElement> parameters =
- _resolveArgumentsToFunction(argumentList, element);
+ var parameters = _resolveArgumentsToFunction(argumentList, element);
if (parameters != null) {
argumentList.correspondingStaticParameters = parameters;
}
@@ -448,15 +448,14 @@
// TODO(brianwilkerson) Report this error.
return;
}
- InterfaceType superType = enclosingClass.supertype;
+ var superType = enclosingClass.supertype;
if (superType == null) {
// TODO(brianwilkerson) Report this error.
return;
}
- SimpleIdentifier name = node.constructorName;
- String superName = name?.name;
- ConstructorElement element =
- superType.lookUpConstructor(superName, _definingLibrary);
+ var name = node.constructorName;
+ var superName = name?.name;
+ var element = superType.lookUpConstructor(superName, _definingLibrary);
element = _resolver.toLegacyElement(element);
if (element == null || !element.isAccessibleIn(_definingLibrary)) {
if (name != null) {
@@ -486,16 +485,14 @@
node.staticElement = element;
// TODO(brianwilkerson) Defer this check until we know there's an error (by
// in-lining _resolveArgumentsToFunction below).
- ClassDeclaration declaration =
- node.thisOrAncestorOfType<ClassDeclaration>();
- Identifier superclassName = declaration?.extendsClause?.superclass?.name;
+ var declaration = node.thisOrAncestorOfType<ClassDeclaration>();
+ var superclassName = declaration?.extendsClause?.superclass.name;
if (superclassName != null &&
_resolver.nameScope.shouldIgnoreUndefined(superclassName)) {
return;
}
ArgumentList argumentList = node.argumentList;
- List<ParameterElement> parameters =
- _resolveArgumentsToFunction(argumentList, element);
+ var parameters = _resolveArgumentsToFunction(argumentList, element);
if (parameters != null) {
argumentList.correspondingStaticParameters = parameters;
}
@@ -534,12 +531,12 @@
/// break or continue statement. The [labelNode] is the label contained in
/// that statement (if any). The flag [isContinue] is `true` if the node being
/// visited is a continue statement.
- AstNode _lookupBreakOrContinueTarget(
- AstNode parentNode, SimpleIdentifier labelNode, bool isContinue) {
+ AstNode? _lookupBreakOrContinueTarget(
+ AstNode parentNode, SimpleIdentifier? labelNode, bool isContinue) {
if (labelNode == null) {
return _resolver.implicitLabelScope.getTarget(isContinue);
} else {
- LabelScope labelScope = _resolver.labelScope;
+ var labelScope = _resolver.labelScope;
if (labelScope == null) {
// There are no labels in scope, so by definition the label is
// undefined.
@@ -547,7 +544,7 @@
CompileTimeErrorCode.LABEL_UNDEFINED, labelNode, [labelNode.name]);
return null;
}
- LabelScope definingScope = labelScope.lookup(labelNode.name);
+ var definingScope = labelScope.lookup(labelNode.name);
if (definingScope == null) {
// No definition of the given label name could be found in any
// enclosing scope.
@@ -557,7 +554,7 @@
}
// The target has been found.
labelNode.staticElement = definingScope.element;
- ExecutableElement labelContainer =
+ ExecutableElement? labelContainer =
definingScope.element.thisOrAncestorOfType();
if (!identical(labelContainer, _resolver.enclosingFunction)) {
_errorReporter.reportErrorForNode(
@@ -574,8 +571,8 @@
/// the list of arguments. An error will be reported if any of the arguments
/// cannot be matched to a parameter. Return the parameters that correspond to
/// the arguments, or `null` if no correspondence could be computed.
- List<ParameterElement> _resolveArgumentsToFunction(
- ArgumentList argumentList, ExecutableElement executableElement) {
+ List<ParameterElement?>? _resolveArgumentsToFunction(
+ ArgumentList argumentList, ExecutableElement? executableElement) {
if (executableElement == null) {
return null;
}
@@ -588,7 +585,7 @@
/// correspond to the list of arguments. An error will be reported if any of
/// the arguments cannot be matched to a parameter. Return the parameters that
/// correspond to the arguments.
- List<ParameterElement> _resolveArgumentsToParameters(
+ List<ParameterElement?> _resolveArgumentsToParameters(
ArgumentList argumentList, List<ParameterElement> parameters) {
return ResolverVisitor.resolveArgumentsToParameters(
argumentList, parameters, _errorReporter.reportErrorForNode);
@@ -597,7 +594,7 @@
/// Resolve the names in the given [combinators] in the scope of the given
/// [library].
void _resolveCombinators(
- LibraryElement library, NodeList<Combinator> combinators) {
+ LibraryElement? library, NodeList<Combinator> combinators) {
if (library == null) {
//
// The library will be null if the directive containing the combinators
@@ -616,7 +613,7 @@
}
for (SimpleIdentifier name in names) {
String nameStr = name.name;
- Element element = namespace.get(nameStr) ?? namespace.get("$nameStr=");
+ var element = namespace.get(nameStr) ?? namespace.get("$nameStr=");
if (element != null) {
// Ensure that the name always resolves to a top-level variable
// rather than a getter or setter
@@ -639,10 +636,10 @@
/// Resolve the given simple [identifier] if possible. Return the element to
/// which it could be resolved, or `null` if it could not be resolved. This
/// does not record the results of the resolution.
- Element _resolveSimpleIdentifier(SimpleIdentifier identifier) {
+ Element? _resolveSimpleIdentifier(SimpleIdentifier identifier) {
var lookupResult = _resolver.nameScope.lookup(identifier.name);
- Element element = lookupResult.getter;
+ var element = lookupResult.getter;
element = _resolver.toLegacyElement(element);
if (element is PropertyAccessorElement && identifier.inSetterContext()) {
@@ -652,7 +649,7 @@
// Check to see whether there might be a locally defined getter and
// an inherited setter.
//
- ClassElement enclosingClass = _resolver.enclosingClass;
+ var enclosingClass = _resolver.enclosingClass;
if (enclosingClass != null) {
var result = _typePropertyResolver.resolve(
receiver: null,
@@ -676,7 +673,7 @@
}
if (element == null) {
InterfaceType enclosingType;
- ClassElement enclosingClass = _resolver.enclosingClass;
+ var enclosingClass = _resolver.enclosingClass;
if (enclosingClass == null) {
var enclosingExtension = _resolver.enclosingExtension;
if (enclosingExtension == null) {
@@ -694,7 +691,7 @@
} else {
enclosingType = enclosingClass.thisType;
}
- if (element == null && enclosingType != null) {
+ if (element == null) {
var result = _typePropertyResolver.resolve(
receiver: null,
receiverType: enclosingType,
@@ -716,12 +713,12 @@
/// should be used when looking up members. Otherwise, return the original
/// type.
DartType _resolveTypeParameter(DartType type) =>
- type?.resolveToBound(_typeProvider.objectType);
+ type.resolveToBound(_typeProvider.objectType);
/// Checks whether the given [expression] is a reference to a class. If it is
/// then the element representing the class is returned, otherwise `null` is
/// returned.
- static ClassElement getTypeReference(Expression expression) {
+ static ClassElement? getTypeReference(Expression expression) {
if (expression is Identifier) {
var element = expression.staticElement;
if (element is ClassElement) {
@@ -740,7 +737,7 @@
static void _resolveAnnotations(NodeList<Annotation> annotations) {
for (Annotation annotation in annotations) {
var elementAnnotation =
- annotation.elementAnnotation as ElementAnnotationImpl;
+ annotation.elementAnnotation as ElementAnnotationImpl?;
if (elementAnnotation != null) {
elementAnnotation.element = annotation.element;
}
diff --git a/pkg/analyzer/lib/src/generated/element_type_provider.dart b/pkg/analyzer/lib/src/generated/element_type_provider.dart
index cd56719..ba2554c 100644
--- a/pkg/analyzer/lib/src/generated/element_type_provider.dart
+++ b/pkg/analyzer/lib/src/generated/element_type_provider.dart
@@ -62,7 +62,7 @@
element.typeInternal;
/// Queries the bound of a type parameter.
- DartType getTypeParameterBound(TypeParameterElementImpl element) =>
+ DartType? getTypeParameterBound(TypeParameterElementImpl element) =>
element.boundInternal;
/// Queries the type of a variable element.
diff --git a/pkg/analyzer/lib/src/generated/engine.dart b/pkg/analyzer/lib/src/generated/engine.dart
index 63e7b03..3974134 100644
--- a/pkg/analyzer/lib/src/generated/engine.dart
+++ b/pkg/analyzer/lib/src/generated/engine.dart
@@ -126,7 +126,7 @@
/// Set the instrumentation service that is to be used by this analysis engine
/// to the given [service].
- set instrumentationService(InstrumentationService service) {
+ set instrumentationService(InstrumentationService? service) {
if (service == null) {
_instrumentationService = InstrumentationService.NULL_SERVICE;
} else {
@@ -148,8 +148,8 @@
void processRequiredPlugins() {}
/// Return `true` if the given [fileName] is an analysis options file.
- static bool isAnalysisOptionsFileName(String fileName,
- [pathos.Context context]) {
+ static bool isAnalysisOptionsFileName(String? fileName,
+ [pathos.Context? context]) {
if (fileName == null) {
return false;
}
@@ -159,7 +159,7 @@
/// Return `true` if the given [fileName] is assumed to contain Dart source
/// code.
- static bool isDartFileName(String fileName) {
+ static bool isDartFileName(String? fileName) {
if (fileName == null) {
return false;
}
@@ -168,7 +168,7 @@
}
/// Return `true` if the given [fileName] is AndroidManifest.xml
- static bool isManifestFileName(String fileName) {
+ static bool isManifestFileName(String? fileName) {
if (fileName == null) {
return false;
}
@@ -242,7 +242,7 @@
/// The version range for the SDK specified in `pubspec.yaml`, or `null` if
/// there is no `pubspec.yaml` or if it does not contain an SDK range.
- VersionConstraint get sdkVersionConstraint;
+ VersionConstraint? get sdkVersionConstraint;
/// Return the opaque signature of the options.
///
@@ -278,16 +278,16 @@
static const int signatureLength = 4;
/// The cached [unlinkedSignature].
- Uint32List _unlinkedSignature;
+ Uint32List? _unlinkedSignature;
/// The cached [signature].
- Uint32List _signature;
+ Uint32List? _signature;
/// The cached [signatureForElements].
- Uint32List _signatureForElements;
+ Uint32List? _signatureForElements;
@override
- VersionConstraint sdkVersionConstraint;
+ VersionConstraint? sdkVersionConstraint;
ExperimentStatus _contextFeatures = ExperimentStatus();
@@ -312,10 +312,10 @@
/// A list of error processors that are to be used when reporting errors in
/// some analysis context.
- List<ErrorProcessor> _errorProcessors;
+ List<ErrorProcessor>? _errorProcessors;
/// A list of exclude patterns used to exclude some sources from analysis.
- List<String> _excludePatterns;
+ List<String>? _excludePatterns;
@override
bool hint = true;
@@ -325,7 +325,7 @@
/// The lint rules that are to be run in an analysis context if [lint] returns
/// `true`.
- List<Linter> _lintRules;
+ List<Linter>? _lintRules;
@override
bool useFastaParser = true;
@@ -477,7 +477,7 @@
List<int> bytes = buffer.toByteList();
_signature = Uint8List.fromList(bytes).buffer.asUint32List();
}
- return _signature;
+ return _signature!;
}
Uint32List get signatureForElements {
@@ -494,7 +494,7 @@
List<int> bytes = buffer.toByteList();
_signatureForElements = Uint8List.fromList(bytes).buffer.asUint32List();
}
- return _signatureForElements;
+ return _signatureForElements!;
}
/// Return the opaque signature of the options that affect unlinked data.
@@ -521,7 +521,7 @@
List<int> bytes = buffer.toByteList();
_unlinkedSignature = Uint8List.fromList(bytes).buffer.asUint32List();
}
- return _unlinkedSignature;
+ return _unlinkedSignature!;
}
@override
diff --git a/pkg/analyzer/lib/src/generated/error_verifier.dart b/pkg/analyzer/lib/src/generated/error_verifier.dart
index a14bdfb..912da39 100644
--- a/pkg/analyzer/lib/src/generated/error_verifier.dart
+++ b/pkg/analyzer/lib/src/generated/error_verifier.dart
@@ -40,12 +40,11 @@
import 'package:analyzer/src/generated/engine.dart';
import 'package:analyzer/src/generated/java_engine.dart';
import 'package:analyzer/src/generated/parser.dart' show ParserErrorCode;
-import 'package:analyzer/src/generated/sdk.dart' show DartSdk, SdkLibrary;
import 'package:analyzer/src/generated/this_access_tracker.dart';
-import 'package:meta/meta.dart';
+import 'package:collection/collection.dart';
class EnclosingExecutableContext {
- final ExecutableElement element;
+ final ExecutableElement? element;
final bool isAsynchronous;
final bool isConstConstructor;
final bool isGenerativeConstructor;
@@ -57,7 +56,7 @@
/// invocation of [Future.catchError], returns the return type expected for
/// `Future<T>.catchError`'s `onError` parameter, which is `FutureOr<T>`,
/// otherwise `null`.
- final InterfaceType catchErrorOnErrorReturnType;
+ final InterfaceType? catchErrorOnErrorReturnType;
/// The return statements that have a value.
final List<ReturnStatement> _returnsWith = [];
@@ -70,7 +69,7 @@
bool hasLegalReturnType = true;
EnclosingExecutableContext(this.element,
- {bool isAsynchronous, this.catchErrorOnErrorReturnType})
+ {bool? isAsynchronous, this.catchErrorOnErrorReturnType})
: isAsynchronous =
isAsynchronous ?? (element != null && element.isAsynchronous),
isConstConstructor = element is ConstructorElement && element.isConst,
@@ -82,7 +81,7 @@
EnclosingExecutableContext.empty() : this(null);
- String get displayName {
+ String? get displayName {
var element = this.element;
if (element is ConstructorElement) {
var className = element.enclosingElement.displayName;
@@ -96,14 +95,14 @@
}
bool get isClosure {
- return element is FunctionElement && element.displayName.isEmpty;
+ return element is FunctionElement && element!.displayName.isEmpty;
}
bool get isConstructor => element is ConstructorElement;
bool get isFunction {
if (element is FunctionElement) {
- return element.displayName.isNotEmpty;
+ return element!.displayName.isNotEmpty;
}
return element is PropertyAccessorElement;
}
@@ -112,9 +111,11 @@
bool get isSynchronous => !isAsynchronous;
- DartType get returnType => catchErrorOnErrorReturnType ?? element.returnType;
+ DartType get returnType {
+ return catchErrorOnErrorReturnType ?? element!.returnType;
+ }
- static bool _inFactoryConstructor(Element element) {
+ static bool _inFactoryConstructor(Element? element) {
var enclosing = element?.enclosingElement;
if (enclosing == null) {
return false;
@@ -125,7 +126,7 @@
return _inFactoryConstructor(enclosing);
}
- static bool _inStaticMethod(Element element) {
+ static bool _inStaticMethod(Element? element) {
var enclosing = element?.enclosingElement;
if (enclosing == null) {
return false;
@@ -146,19 +147,19 @@
final ErrorReporter _errorReporter;
/// The current library that is being analyzed.
- final LibraryElement _currentLibrary;
+ final LibraryElementImpl _currentLibrary;
/// The type representing the type 'int'.
- InterfaceType _intType;
+ late final InterfaceType _intType;
/// The options for verification.
- AnalysisOptionsImpl _options;
+ late final AnalysisOptionsImpl _options;
/// The object providing access to the types defined by the language.
final TypeProvider _typeProvider;
/// The type system primitives
- TypeSystemImpl _typeSystem;
+ late final TypeSystemImpl _typeSystem;
/// The manager for the inheritance mappings.
final InheritanceManager3 _inheritanceManager;
@@ -206,15 +207,15 @@
/// The class containing the AST nodes being visited, or `null` if we are not
/// in the scope of a class.
- ClassElementImpl _enclosingClass;
+ ClassElementImpl? _enclosingClass;
/// The enum containing the AST nodes being visited, or `null` if we are not
/// in the scope of an enum.
- ClassElement _enclosingEnum;
+ ClassElement? _enclosingEnum;
/// The element of the extension being visited, or `null` if we are not
/// in the scope of an extension.
- ExtensionElement _enclosingExtension;
+ ExtensionElement? _enclosingExtension;
/// The helper for tracking if the current location has access to `this`.
final ThisAccessTracker _thisAccessTracker = ThisAccessTracker.unit();
@@ -233,18 +234,18 @@
/// The elements that will be defined later in the current scope, but right
/// now are not declared.
- HiddenElements _hiddenElements;
+ HiddenElements? _hiddenElements;
final _UninstantiatedBoundChecker _uninstantiatedBoundChecker;
/// The features enabled in the unit currently being checked for errors.
- FeatureSet _featureSet;
+ FeatureSet? _featureSet;
final RequiredParametersVerifier _requiredParametersVerifier;
final DuplicateDefinitionVerifier _duplicateDefinitionVerifier;
- TypeArgumentsVerifier _typeArgumentsVerifier;
- ConstructorFieldsVerifier _constructorFieldsVerifier;
- ReturnTypeVerifier _returnTypeVerifier;
+ late final TypeArgumentsVerifier _typeArgumentsVerifier;
+ late final ConstructorFieldsVerifier _constructorFieldsVerifier;
+ late final ReturnTypeVerifier _returnTypeVerifier;
/// Initialize a newly created error verifier.
ErrorVerifier(ErrorReporter errorReporter, this._currentLibrary,
@@ -261,7 +262,7 @@
_isInStaticVariableDeclaration = false;
_isInConstructorInitializer = false;
_intType = _typeProvider.intType;
- _typeSystem = _currentLibrary.typeSystem as TypeSystemImpl;
+ _typeSystem = _currentLibrary.typeSystem;
_options = _currentLibrary.context.analysisOptions as AnalysisOptionsImpl;
_typeArgumentsVerifier =
TypeArgumentsVerifier(_options, _currentLibrary, _errorReporter);
@@ -276,7 +277,7 @@
);
}
- ClassElement get enclosingClass => _enclosingClass;
+ ClassElement? get enclosingClass => _enclosingClass;
/// For consumers of error verification as a library, (currently just the
/// angular plugin), expose a setter that can make the errors reported more
@@ -284,7 +285,7 @@
/// context. Note that this setter is very defensive for potential misuse; it
/// should not be modified in the middle of visiting a tree and requires an
/// analyzer-provided Impl instance to work.
- set enclosingClass(ClassElement classElement) {
+ set enclosingClass(ClassElement? classElement) {
assert(classElement is ClassElementImpl);
assert(_enclosingClass == null);
assert(_enclosingEnum == null);
@@ -356,8 +357,8 @@
if (lhs is IndexExpression) {
_checkIndexExpressionIndex(
lhs.index,
- readElement: node.readElement as ExecutableElement,
- writeElement: node.writeElement as ExecutableElement,
+ readElement: node.readElement as ExecutableElement?,
+ writeElement: node.writeElement as ExecutableElement?,
);
}
super.visitAssignmentExpression(node);
@@ -421,9 +422,9 @@
@override
void visitBreakStatement(BreakStatement node) {
- SimpleIdentifier labelNode = node.label;
+ var labelNode = node.label;
if (labelNode != null) {
- Element labelElement = labelNode.staticElement;
+ var labelElement = labelNode.staticElement;
if (labelElement is LabelElementImpl && labelElement.isOnSwitchMember) {
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.BREAK_LABEL_ON_SWITCH_MEMBER, labelNode);
@@ -446,7 +447,7 @@
@override
void visitClassDeclaration(ClassDeclaration node) {
- ClassElementImpl outerClass = _enclosingClass;
+ var outerClass = _enclosingClass;
try {
_isInNativeClass = node.nativeClause != null;
_enclosingClass = node.declaredElement as ClassElementImpl;
@@ -456,9 +457,9 @@
_checkForBuiltInIdentifierAsName(
node.name, CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME);
_checkForConflictingClassTypeVariableErrorCodes();
- TypeName superclass = node.extendsClause?.superclass;
- ImplementsClause implementsClause = node.implementsClause;
- WithClause withClause = node.withClause;
+ var superclass = node.extendsClause?.superclass;
+ var implementsClause = node.implementsClause;
+ var withClause = node.withClause;
// Only do error checks on the clause nodes if there is a non-null clause
if (implementsClause != null ||
@@ -485,7 +486,7 @@
void visitClassTypeAlias(ClassTypeAlias node) {
_checkForBuiltInIdentifierAsName(
node.name, CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME);
- ClassElementImpl outerClassElement = _enclosingClass;
+ var outerClassElement = _enclosingClass;
try {
_enclosingClass = node.declaredElement as ClassElementImpl;
_checkClassInheritance(
@@ -519,10 +520,10 @@
@override
void visitConstructorDeclaration(ConstructorDeclaration node) {
- ConstructorElement element = node.declaredElement;
+ var element = node.declaredElement!;
_withEnclosingExecutable(element, () {
_checkForInvalidModifierOnBody(
- node.body, CompileTimeErrorCode.INVALID_MODIFIER_ON_CONSTRUCTOR);
+ node.body!, CompileTimeErrorCode.INVALID_MODIFIER_ON_CONSTRUCTOR);
_checkForConstConstructorWithNonFinalField(node, element);
_checkForConstConstructorWithNonConstSuper(node);
_constructorFieldsVerifier.verify(node);
@@ -543,7 +544,7 @@
_isInConstructorInitializer = true;
try {
SimpleIdentifier fieldName = node.fieldName;
- Element staticElement = fieldName.staticElement;
+ var staticElement = fieldName.staticElement;
_checkForInvalidField(node, fieldName, staticElement);
if (staticElement is FieldElement) {
_checkForFieldInitializerNotAssignable(node, staticElement);
@@ -558,9 +559,9 @@
@override
void visitContinueStatement(ContinueStatement node) {
- SimpleIdentifier labelNode = node.label;
+ var labelNode = node.label;
if (labelNode != null) {
- Element labelElement = labelNode.staticElement;
+ var labelElement = labelNode.staticElement;
if (labelElement is LabelElementImpl &&
labelElement.isOnSwitchStatement) {
_errorReporter.reportErrorForNode(
@@ -577,9 +578,9 @@
@override
void visitEnumDeclaration(EnumDeclaration node) {
- ClassElement outerEnum = _enclosingEnum;
+ var outerEnum = _enclosingEnum;
try {
- _enclosingEnum = node.declaredElement;
+ _enclosingEnum = node.declaredElement!;
_duplicateDefinitionVerifier.checkEnum(node);
super.visitEnumDeclaration(node);
} finally {
@@ -591,7 +592,7 @@
void visitExportDirective(ExportDirective node) {
var exportElement = node.element;
if (exportElement != null) {
- LibraryElement exportedLibrary = exportElement.exportedLibrary;
+ var exportedLibrary = exportElement.exportedLibrary;
_checkForAmbiguousExport(node, exportElement, exportedLibrary);
_checkForExportInternalLibrary(node, exportElement);
_checkForExportLegacySymbol(node);
@@ -641,7 +642,7 @@
if (!_isInStaticVariableDeclaration) {
if (fields.isConst) {
_errorReporter.reportErrorForToken(
- CompileTimeErrorCode.CONST_INSTANCE_FIELD, fields.keyword);
+ CompileTimeErrorCode.CONST_INSTANCE_FIELD, fields.keyword!);
}
}
try {
@@ -662,9 +663,9 @@
_checkForPrivateOptionalParameter(node);
_checkForFieldInitializingFormalRedirectingConstructor(node);
_checkForTypeAnnotationDeferredClass(node.type);
- ParameterElement element = node.declaredElement;
+ ParameterElement element = node.declaredElement!;
if (element is FieldFormalParameterElement) {
- FieldElement fieldElement = element.field;
+ var fieldElement = element.field;
if (fieldElement != null) {
_checkForAbstractOrExternalFieldConstructorInitializer(
node.identifier, fieldElement);
@@ -676,15 +677,11 @@
@override
void visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node) {
DeclaredIdentifier loopVariable = node.loopVariable;
- if (loopVariable == null) {
- // Ignore malformed for statements.
- return;
- }
if (_checkForEachParts(node, loopVariable.identifier)) {
if (loopVariable.isConst) {
_errorReporter.reportErrorForToken(
CompileTimeErrorCode.FOR_IN_WITH_CONST_VARIABLE,
- loopVariable.keyword);
+ loopVariable.keyword!);
}
}
super.visitForEachPartsWithDeclaration(node);
@@ -693,10 +690,6 @@
@override
void visitForEachPartsWithIdentifier(ForEachPartsWithIdentifier node) {
SimpleIdentifier identifier = node.identifier;
- if (identifier == null) {
- // Ignore malformed for statements.
- return;
- }
if (_checkForEachParts(node, identifier)) {
_checkForAssignmentToFinal(identifier);
}
@@ -713,23 +706,20 @@
@override
void visitForPartsWithDeclarations(ForPartsWithDeclarations node) {
- if (node.variables != null) {
- _duplicateDefinitionVerifier.checkForVariables(node.variables);
- }
+ _duplicateDefinitionVerifier.checkForVariables(node.variables);
super.visitForPartsWithDeclarations(node);
}
@override
void visitFunctionDeclaration(FunctionDeclaration node) {
- ExecutableElement functionElement = node.declaredElement;
- if (functionElement != null &&
- functionElement.enclosingElement is! CompilationUnitElement) {
- _hiddenElements.declare(functionElement);
+ ExecutableElement functionElement = node.declaredElement!;
+ if (functionElement.enclosingElement is! CompilationUnitElement) {
+ _hiddenElements!.declare(functionElement);
}
_withEnclosingExecutable(functionElement, () {
SimpleIdentifier identifier = node.name;
- TypeAnnotation returnType = node.returnType;
+ TypeAnnotation? returnType = node.returnType;
if (node.isGetter) {
GetterSetterTypesVerifier(
typeSystem: _typeSystem,
@@ -739,15 +729,13 @@
}
if (node.isSetter) {
FunctionExpression functionExpression = node.functionExpression;
- if (functionExpression != null) {
- _checkForWrongNumberOfParametersForSetter(
- identifier, functionExpression.parameters);
- }
+ _checkForWrongNumberOfParametersForSetter(
+ identifier, functionExpression.parameters);
_checkForNonVoidReturnTypeForSetter(returnType);
}
_checkForTypeAnnotationDeferredClass(returnType);
_returnTypeVerifier.verifyReturnType(returnType);
- _checkForImplicitDynamicReturn(node.name, node.declaredElement);
+ _checkForImplicitDynamicReturn(node.name, node.declaredElement!);
_checkForMainFunction(node.name);
super.visitFunctionDeclaration(node);
});
@@ -760,7 +748,7 @@
if (node.parent is FunctionDeclaration) {
super.visitFunctionExpression(node);
} else {
- _withEnclosingExecutable(node.declaredElement, () {
+ _withEnclosingExecutable(node.declaredElement!, () {
super.visitFunctionExpression(node);
});
}
@@ -776,7 +764,7 @@
return super.visitFunctionExpressionInvocation(node);
}
- DartType expressionType = functionExpression.staticType;
+ DartType expressionType = functionExpression.staticType!;
if (!_checkForUseOfVoidResult(functionExpression) &&
!_checkForUseOfNever(functionExpression) &&
node.staticElement == null &&
@@ -812,7 +800,7 @@
// we can get the function element via `node?.element?.type?.element` but
// it doesn't have hasImplicitReturnType set correctly.
if (!_options.implicitDynamic && node.returnType == null) {
- DartType parameterType = node.declaredElement.type;
+ DartType parameterType = node.declaredElement!.type;
if (parameterType is FunctionType &&
parameterType.returnType.isDynamic) {
_errorReporter.reportErrorForNode(
@@ -848,8 +836,8 @@
void visitImportDirective(ImportDirective node) {
var importElement = node.element;
if (node.prefix != null) {
- _checkForBuiltInIdentifierAsName(
- node.prefix, CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_PREFIX_NAME);
+ _checkForBuiltInIdentifierAsName(node.prefix!,
+ CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_PREFIX_NAME);
}
if (importElement != null) {
_checkForImportInternalLibrary(node, importElement);
@@ -882,7 +870,7 @@
void visitInstanceCreationExpression(InstanceCreationExpression node) {
ConstructorName constructorName = node.constructorName;
TypeName typeName = constructorName.type;
- DartType type = typeName.type;
+ DartType type = typeName.type!;
if (type is InterfaceType) {
_checkForConstOrNewWithAbstractClass(node, typeName, type);
_checkForConstOrNewWithEnum(node, typeName, type);
@@ -930,8 +918,8 @@
@override
void visitMethodDeclaration(MethodDeclaration node) {
- _withEnclosingExecutable(node.declaredElement, () {
- TypeAnnotation returnType = node.returnType;
+ _withEnclosingExecutable(node.declaredElement!, () {
+ var returnType = node.returnType;
if (node.isStatic && node.isGetter) {
GetterSetterTypesVerifier(
typeSystem: _typeSystem,
@@ -950,7 +938,7 @@
_checkForExtensionDeclaresMemberOfObject(node);
_checkForTypeAnnotationDeferredClass(returnType);
_returnTypeVerifier.verifyReturnType(returnType);
- _checkForImplicitDynamicReturn(node, node.declaredElement);
+ _checkForImplicitDynamicReturn(node, node.declaredElement!);
_checkForWrongTypeParameterVarianceInMethod(node);
super.visitMethodDeclaration(node);
});
@@ -958,14 +946,14 @@
@override
void visitMethodInvocation(MethodInvocation node) {
- Expression target = node.realTarget;
+ var target = node.realTarget;
SimpleIdentifier methodName = node.methodName;
if (target != null) {
- ClassElement typeReference = ElementResolver.getTypeReference(target);
+ var typeReference = ElementResolver.getTypeReference(target);
_checkForStaticAccessToInstanceMember(typeReference, methodName);
_checkForInstanceAccessToStaticMember(
typeReference, node.target, methodName);
- _checkForUnnecessaryNullAware(target, node.operator);
+ _checkForUnnecessaryNullAware(target, node.operator!);
} else {
_checkForUnqualifiedReferenceToNonLocalStaticMember(methodName);
}
@@ -977,7 +965,7 @@
@override
void visitMixinDeclaration(MixinDeclaration node) {
// TODO(scheglov) Verify for all mixin errors.
- ClassElementImpl outerClass = _enclosingClass;
+ var outerClass = _enclosingClass;
try {
_enclosingClass = node.declaredElement as ClassElementImpl;
@@ -987,8 +975,8 @@
node.name, CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME);
_checkForConflictingClassTypeVariableErrorCodes();
- OnClause onClause = node.onClause;
- ImplementsClause implementsClause = node.implementsClause;
+ var onClause = node.onClause;
+ var implementsClause = node.implementsClause;
// Only do error checks only if there is a non-null clause.
if (onClause != null || implementsClause != null) {
@@ -1036,8 +1024,8 @@
if (operand is IndexExpression) {
_checkIndexExpressionIndex(
operand.index,
- readElement: node.readElement as ExecutableElement,
- writeElement: node.writeElement as ExecutableElement,
+ readElement: node.readElement as ExecutableElement?,
+ writeElement: node.writeElement as ExecutableElement?,
);
}
super.visitPostfixExpression(node);
@@ -1046,8 +1034,7 @@
@override
void visitPrefixedIdentifier(PrefixedIdentifier node) {
if (node.parent is! Annotation) {
- ClassElement typeReference =
- ElementResolver.getTypeReference(node.prefix);
+ var typeReference = ElementResolver.getTypeReference(node.prefix);
SimpleIdentifier name = node.identifier;
_checkForStaticAccessToInstanceMember(typeReference, name);
_checkForInstanceAccessToStaticMember(typeReference, node.prefix, name);
@@ -1069,8 +1056,8 @@
if (operand is IndexExpression) {
_checkIndexExpressionIndex(
operand.index,
- readElement: node.readElement as ExecutableElement,
- writeElement: node.writeElement as ExecutableElement,
+ readElement: node.readElement as ExecutableElement?,
+ writeElement: node.writeElement as ExecutableElement?,
);
}
super.visitPrefixExpression(node);
@@ -1079,7 +1066,7 @@
@override
void visitPropertyAccess(PropertyAccess node) {
var target = node.realTarget;
- ClassElement typeReference = ElementResolver.getTypeReference(target);
+ var typeReference = ElementResolver.getTypeReference(target);
SimpleIdentifier propertyName = node.propertyName;
_checkForStaticAccessToInstanceMember(typeReference, propertyName);
_checkForInstanceAccessToStaticMember(
@@ -1264,7 +1251,7 @@
@override
void visitVariableDeclaration(VariableDeclaration node) {
SimpleIdentifier nameNode = node.name;
- Expression initializerNode = node.initializer;
+ var initializerNode = node.initializer;
// do checks
_checkForInvalidAssignment(nameNode, initializerNode);
_checkForImplicitDynamicIdentifier(node, nameNode);
@@ -1282,15 +1269,13 @@
_namesForReferenceToDeclaredVariableInInitializer.remove(name);
}
// declare the variable
- AstNode grandparent = node.parent.parent;
+ AstNode grandparent = node.parent!.parent!;
if (grandparent is! TopLevelVariableDeclaration &&
grandparent is! FieldDeclaration) {
- VariableElement element = node.declaredElement;
- if (element != null) {
- // There is no hidden elements if we are outside of a function body,
- // which will happen for variables declared in control flow elements.
- _hiddenElements?.declare(element);
- }
+ VariableElement element = node.declaredElement!;
+ // There is no hidden elements if we are outside of a function body,
+ // which will happen for variables declared in control flow elements.
+ _hiddenElements?.declare(element);
}
}
@@ -1320,9 +1305,9 @@
/// interfaces.
void _checkClassInheritance(
NamedCompilationUnitMember node,
- TypeName superclass,
- WithClause withClause,
- ImplementsClause implementsClause) {
+ TypeName? superclass,
+ WithClause? withClause,
+ ImplementsClause? implementsClause) {
// Only check for all of the inheritance logic around clauses if there
// isn't an error code such as "Cannot extend double" already on the
// class.
@@ -1353,7 +1338,7 @@
int count = directives.length;
if (count > 1) {
for (int i = 0; i < count; i++) {
- Token deferredToken = directives[i].deferredKeyword;
+ var deferredToken = directives[i].deferredKeyword;
if (deferredToken != null) {
_errorReporter.reportErrorForToken(
CompileTimeErrorCode.SHARED_DEFERRED_PREFIX, deferredToken);
@@ -1400,7 +1385,7 @@
///
/// See [CompileTimeErrorCode.MIXIN_CLASS_DECLARES_CONSTRUCTOR],
/// [CompileTimeErrorCode.MIXIN_INHERITS_FROM_NOT_OBJECT].
- bool _checkForAllMixinErrorCodes(WithClause withClause) {
+ bool _checkForAllMixinErrorCodes(WithClause? withClause) {
if (withClause == null) {
return false;
}
@@ -1410,7 +1395,7 @@
mixinNameIndex < withClause.mixinTypes.length;
mixinNameIndex++) {
TypeName mixinName = withClause.mixinTypes[mixinNameIndex];
- DartType mixinType = mixinName.type;
+ DartType mixinType = mixinName.type!;
if (mixinType is InterfaceType) {
mixinTypeIndex++;
if (_checkForExtendsOrImplementsDisallowedClass(
@@ -1449,25 +1434,23 @@
void _checkForAllRedirectConstructorErrorCodes(
ConstructorDeclaration declaration) {
// Prepare redirected constructor node
- ConstructorName redirectedConstructor = declaration.redirectedConstructor;
+ var redirectedConstructor = declaration.redirectedConstructor;
if (redirectedConstructor == null) {
return;
}
// Prepare redirected constructor type
- ConstructorElement redirectedElement = redirectedConstructor.staticElement;
+ var redirectedElement = redirectedConstructor.staticElement;
if (redirectedElement == null) {
// If the element is null, we check for the
// REDIRECT_TO_MISSING_CONSTRUCTOR case
TypeName constructorTypeName = redirectedConstructor.type;
- DartType redirectedType = constructorTypeName.type;
- if (redirectedType != null &&
- redirectedType.element != null &&
- !redirectedType.isDynamic) {
+ DartType redirectedType = constructorTypeName.type!;
+ if (redirectedType.element != null && !redirectedType.isDynamic) {
// Prepare the constructor name
String constructorStrName = constructorTypeName.name.name;
if (redirectedConstructor.name != null) {
- constructorStrName += ".${redirectedConstructor.name.name}";
+ constructorStrName += ".${redirectedConstructor.name!.name}";
}
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.REDIRECT_TO_MISSING_CONSTRUCTOR,
@@ -1480,7 +1463,7 @@
DartType redirectedReturnType = redirectedType.returnType;
// Report specific problem when return type is incompatible
- FunctionType constructorType = declaration.declaredElement.type;
+ FunctionType constructorType = declaration.declaredElement!.type;
DartType constructorReturnType = constructorType.returnType;
if (!_typeSystem.isAssignableTo2(
redirectedReturnType, constructorReturnType)) {
@@ -1506,7 +1489,7 @@
///
/// See [CompileTimeErrorCode.AMBIGUOUS_EXPORT].
void _checkForAmbiguousExport(ExportDirective directive,
- ExportElement exportElement, LibraryElement exportedLibrary) {
+ ExportElement exportElement, LibraryElement? exportedLibrary) {
if (exportedLibrary == null) {
return;
}
@@ -1515,14 +1498,14 @@
NamespaceBuilder().createExportNamespaceForDirective(exportElement);
Map<String, Element> definedNames = namespace.definedNames;
for (String name in definedNames.keys) {
- Element element = definedNames[name];
- Element prevElement = _exportedElements[name];
- if (element != null && prevElement != null && prevElement != element) {
+ var element = definedNames[name]!;
+ var prevElement = _exportedElements[name];
+ if (prevElement != null && prevElement != element) {
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.AMBIGUOUS_EXPORT, directive.uri, [
name,
- prevElement.library.definingCompilationUnit.source.uri,
- element.library.definingCompilationUnit.source.uri
+ prevElement.library!.definingCompilationUnit.source.uri,
+ element.library!.definingCompilationUnit.source.uri
]);
return;
} else {
@@ -1534,15 +1517,12 @@
/// Check the given node to see whether it was ambiguous because the name was
/// imported from two or more imports.
void _checkForAmbiguousImport(SimpleIdentifier node) {
- Element element = node.writeOrReadElement;
+ var element = node.writeOrReadElement;
if (element is MultiplyDefinedElementImpl) {
String name = element.displayName;
List<Element> conflictingMembers = element.conflictingElements;
- int count = conflictingMembers.length;
- List<String> libraryNames = List<String>.filled(count, null);
- for (int i = 0; i < count; i++) {
- libraryNames[i] = _getLibraryName(conflictingMembers[i]);
- }
+ var libraryNames =
+ conflictingMembers.map((e) => _getLibraryName(e)).toList();
libraryNames.sort();
_errorReporter.reportErrorForNode(CompileTimeErrorCode.AMBIGUOUS_IMPORT,
node, [name, StringUtilities.printListOfQuotedNames(libraryNames)]);
@@ -1555,11 +1535,11 @@
/// argument.
void _checkForArgumentTypeNotAssignable(
Expression expression,
- DartType expectedStaticType,
+ DartType? expectedStaticType,
DartType actualStaticType,
ErrorCode errorCode) {
// Warning case: test static type information
- if (actualStaticType != null && expectedStaticType != null) {
+ if (expectedStaticType != null) {
if (!expectedStaticType.isVoid && _checkForUseOfVoidResult(expression)) {
return;
}
@@ -1578,11 +1558,6 @@
/// See [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE].
void _checkForArgumentTypeNotAssignableForArgument(Expression argument,
{bool promoteParameterToNullable = false}) {
- // TODO(scheglov) probably cannot happen
- if (argument == null) {
- return;
- }
-
_checkForArgumentTypeNotAssignableForArgument2(
argument: argument,
parameter: argument.staticParameterElement,
@@ -1591,11 +1566,11 @@
}
void _checkForArgumentTypeNotAssignableForArgument2({
- @required Expression argument,
- @required ParameterElement parameter,
- @required bool promoteParameterToNullable,
+ required Expression argument,
+ required ParameterElement? parameter,
+ required bool promoteParameterToNullable,
}) {
- DartType staticParameterType = parameter?.type;
+ var staticParameterType = parameter?.type;
if (promoteParameterToNullable && staticParameterType != null) {
staticParameterType =
_typeSystem.makeNullable(staticParameterType as TypeImpl);
@@ -1615,9 +1590,11 @@
/// [StaticWarningCode.MAP_KEY_TYPE_NOT_ASSIGNABLE], and
/// [StaticWarningCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE].
void _checkForArgumentTypeNotAssignableWithExpectedTypes(
- Expression expression, DartType expectedStaticType, ErrorCode errorCode) {
+ Expression expression,
+ DartType? expectedStaticType,
+ ErrorCode errorCode) {
_checkForArgumentTypeNotAssignable(
- expression, expectedStaticType, expression.staticType, errorCode);
+ expression, expectedStaticType, expression.staticType!, errorCode);
}
/// Verify that the arguments in the given [argumentList] can be assigned to
@@ -1628,10 +1605,6 @@
///
/// See [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE].
void _checkForArgumentTypesNotAssignableInList(ArgumentList argumentList) {
- if (argumentList == null) {
- return;
- }
-
for (Expression argument in argumentList.arguments) {
_checkForArgumentTypeNotAssignableForArgument(argument);
}
@@ -1639,10 +1612,9 @@
bool _checkForAssignableExpression(
Expression expression, DartType expectedStaticType, ErrorCode errorCode) {
- DartType actualStaticType = expression.staticType;
- return actualStaticType != null &&
- _checkForAssignableExpressionAtType(
- expression, actualStaticType, expectedStaticType, errorCode);
+ DartType actualStaticType = expression.staticType!;
+ return _checkForAssignableExpressionAtType(
+ expression, actualStaticType, expectedStaticType, errorCode);
}
bool _checkForAssignableExpressionAtType(
@@ -1687,16 +1659,18 @@
}
// prepare element
- Element element;
+ Element? element;
AstNode highlightedNode = expression;
if (expression is Identifier) {
element = expression.staticElement;
if (expression is PrefixedIdentifier) {
- highlightedNode = expression.identifier;
+ var prefixedIdentifier = expression as PrefixedIdentifier;
+ highlightedNode = prefixedIdentifier.identifier;
}
} else if (expression is PropertyAccess) {
- element = expression.propertyName.staticElement;
- highlightedNode = expression.propertyName;
+ var propertyAccess = expression as PropertyAccess;
+ element = propertyAccess.propertyName.staticElement;
+ highlightedNode = propertyAccess.propertyName;
}
// check if element is assignable
if (element is VariableElement) {
@@ -1763,8 +1737,8 @@
/// Verifies that the class is not named `Function` and that it doesn't
/// extends/implements/mixes in `Function`.
void _checkForBadFunctionUse(ClassDeclaration node) {
- ExtendsClause extendsClause = node.extendsClause;
- WithClause withClause = node.withClause;
+ var extendsClause = node.extendsClause;
+ var withClause = node.withClause;
if (node.name.name == "Function") {
_errorReporter.reportErrorForNode(
@@ -1772,7 +1746,7 @@
}
if (extendsClause != null) {
- Element superElement = extendsClause.superclass.name.staticElement;
+ var superElement = extendsClause.superclass.name.staticElement;
if (superElement != null && superElement.name == "Function") {
_errorReporter.reportErrorForNode(
HintCode.DEPRECATED_EXTENDS_FUNCTION, extendsClause.superclass);
@@ -1781,7 +1755,7 @@
if (withClause != null) {
for (TypeName type in withClause.mixinTypes) {
- Element mixinElement = type.name.staticElement;
+ var mixinElement = type.name.staticElement;
if (mixinElement != null && mixinElement.name == "Function") {
_errorReporter.reportErrorForNode(
HintCode.DEPRECATED_MIXIN_FUNCTION, type);
@@ -1814,7 +1788,7 @@
NodeList<Statement> statements = switchCase.statements;
if (statements.isEmpty) {
// fall-through without statements at all
- AstNode parent = switchCase.parent;
+ var parent = switchCase.parent;
if (parent is SwitchStatement) {
NodeList<SwitchMember> members = parent.members;
int index = members.indexOf(switchCase);
@@ -1878,26 +1852,26 @@
Uri libraryUri = _currentLibrary.source.uri;
// method declared in the enclosing class vs. inherited getter/setter
- for (MethodElement method in _enclosingClass.methods) {
+ for (MethodElement method in _enclosingClass!.methods) {
String name = method.name;
// find inherited property accessor
- ExecutableElement inherited = _inheritanceManager.getInherited2(
- _enclosingClass, Name(libraryUri, name));
+ var inherited = _inheritanceManager.getInherited2(
+ _enclosingClass!, Name(libraryUri, name));
inherited ??= _inheritanceManager.getInherited2(
- _enclosingClass, Name(libraryUri, '$name='));
+ _enclosingClass!, Name(libraryUri, '$name='));
if (method.isStatic && inherited != null) {
_errorReporter.reportErrorForElement(
CompileTimeErrorCode.CONFLICTING_STATIC_AND_INSTANCE, method, [
- _enclosingClass.displayName,
+ _enclosingClass!.displayName,
name,
inherited.enclosingElement.displayName,
]);
} else if (inherited is PropertyAccessorElement) {
_errorReporter.reportErrorForElement(
CompileTimeErrorCode.CONFLICTING_METHOD_AND_FIELD, method, [
- _enclosingClass.displayName,
+ _enclosingClass!.displayName,
name,
inherited.enclosingElement.displayName
]);
@@ -1905,26 +1879,26 @@
}
// getter declared in the enclosing class vs. inherited method
- for (PropertyAccessorElement accessor in _enclosingClass.accessors) {
+ for (PropertyAccessorElement accessor in _enclosingClass!.accessors) {
String name = accessor.displayName;
// find inherited method or property accessor
- ExecutableElement inherited = _inheritanceManager.getInherited2(
- _enclosingClass, Name(libraryUri, name));
+ var inherited = _inheritanceManager.getInherited2(
+ _enclosingClass!, Name(libraryUri, name));
inherited ??= _inheritanceManager.getInherited2(
- _enclosingClass, Name(libraryUri, '$name='));
+ _enclosingClass!, Name(libraryUri, '$name='));
if (accessor.isStatic && inherited != null) {
_errorReporter.reportErrorForElement(
CompileTimeErrorCode.CONFLICTING_STATIC_AND_INSTANCE, accessor, [
- _enclosingClass.displayName,
+ _enclosingClass!.displayName,
name,
inherited.enclosingElement.displayName,
]);
} else if (inherited is MethodElement) {
_errorReporter.reportErrorForElement(
CompileTimeErrorCode.CONFLICTING_FIELD_AND_METHOD, accessor, [
- _enclosingClass.displayName,
+ _enclosingClass!.displayName,
name,
inherited.enclosingElement.displayName
]);
@@ -1938,19 +1912,20 @@
/// See [CompileTimeErrorCode.CONFLICTING_TYPE_VARIABLE_AND_CLASS], and
/// [CompileTimeErrorCode.CONFLICTING_TYPE_VARIABLE_AND_MEMBER].
void _checkForConflictingClassTypeVariableErrorCodes() {
- for (TypeParameterElement typeParameter in _enclosingClass.typeParameters) {
+ for (TypeParameterElement typeParameter
+ in _enclosingClass!.typeParameters) {
String name = typeParameter.name;
// name is same as the name of the enclosing class
- if (_enclosingClass.name == name) {
+ if (_enclosingClass!.name == name) {
_errorReporter.reportErrorForElement(
CompileTimeErrorCode.CONFLICTING_TYPE_VARIABLE_AND_CLASS,
typeParameter,
[name]);
}
// check members
- if (_enclosingClass.getMethod(name) != null ||
- _enclosingClass.getGetter(name) != null ||
- _enclosingClass.getSetter(name) != null) {
+ if (_enclosingClass!.getMethod(name) != null ||
+ _enclosingClass!.getGetter(name) != null ||
+ _enclosingClass!.getSetter(name) != null) {
_errorReporter.reportErrorForElement(
CompileTimeErrorCode.CONFLICTING_TYPE_VARIABLE_AND_MEMBER_CLASS,
typeParameter,
@@ -1965,19 +1940,19 @@
/// [CompileTimeErrorCode.CONFLICTING_TYPE_VARIABLE_AND_EXTENSION_MEMBER].
void _checkForConflictingExtensionTypeVariableErrorCodes() {
for (TypeParameterElement typeParameter
- in _enclosingExtension.typeParameters) {
+ in _enclosingExtension!.typeParameters) {
String name = typeParameter.name;
// name is same as the name of the enclosing class
- if (_enclosingExtension.name == name) {
+ if (_enclosingExtension!.name == name) {
_errorReporter.reportErrorForElement(
CompileTimeErrorCode.CONFLICTING_TYPE_VARIABLE_AND_EXTENSION,
typeParameter,
[name]);
}
// check members
- if (_enclosingExtension.getMethod(name) != null ||
- _enclosingExtension.getGetter(name) != null ||
- _enclosingExtension.getSetter(name) != null) {
+ if (_enclosingExtension!.getMethod(name) != null ||
+ _enclosingExtension!.getGetter(name) != null ||
+ _enclosingExtension!.getSetter(name) != null) {
_errorReporter.reportErrorForElement(
CompileTimeErrorCode.CONFLICTING_TYPE_VARIABLE_AND_MEMBER_EXTENSION,
typeParameter,
@@ -1998,7 +1973,7 @@
CompileTimeErrorCode.CONFLICTING_GENERIC_INTERFACES,
node,
[
- _enclosingClass.name,
+ _enclosingClass!.name,
error.first.getDisplayString(withNullability: true),
error.second.getDisplayString(withNullability: true),
],
@@ -2027,7 +2002,7 @@
// check for mixins
var instanceFields = <FieldElement>[];
- for (var mixin in _enclosingClass.mixins) {
+ for (var mixin in _enclosingClass!.mixins) {
instanceFields.addAll(mixin.element.fields
.where((field) => !field.isStatic && !field.isSynthetic));
}
@@ -2052,7 +2027,7 @@
// try to find and check super constructor invocation
for (ConstructorInitializer initializer in constructor.initializers) {
if (initializer is SuperConstructorInvocation) {
- ConstructorElement element = initializer.staticElement;
+ var element = initializer.staticElement;
if (element == null || element.isConst) {
return;
}
@@ -2064,15 +2039,14 @@
}
}
// no explicit super constructor invocation, check default constructor
- InterfaceType supertype = _enclosingClass.supertype;
+ var supertype = _enclosingClass!.supertype;
if (supertype == null) {
return;
}
if (supertype.isDartCoreObject) {
return;
}
- ConstructorElement unnamedConstructor =
- supertype.element.unnamedConstructor;
+ var unnamedConstructor = supertype.element.unnamedConstructor;
if (unnamedConstructor == null || unnamedConstructor.isConst) {
return;
}
@@ -2144,7 +2118,7 @@
TypeName typeName,
InterfaceType type) {
if (type.element.isAbstract && !type.element.isMixin) {
- ConstructorElement element = expression.constructorName.staticElement;
+ var element = expression.constructorName.staticElement;
if (element != null && !element.isFactory) {
bool isImplicit =
(expression as InstanceCreationExpressionImpl).isImplicit;
@@ -2191,12 +2165,11 @@
///
/// See [CompileTimeErrorCode.CONST_WITH_NON_CONST].
void _checkForConstWithNonConst(InstanceCreationExpression expression) {
- ConstructorElement constructorElement =
- expression.constructorName.staticElement;
+ var constructorElement = expression.constructorName.staticElement;
if (constructorElement != null && !constructorElement.isConst) {
if (expression.keyword != null) {
_errorReporter.reportErrorForToken(
- CompileTimeErrorCode.CONST_WITH_NON_CONST, expression.keyword);
+ CompileTimeErrorCode.CONST_WITH_NON_CONST, expression.keyword!);
} else {
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.CONST_WITH_NON_CONST, expression);
@@ -2222,17 +2195,17 @@
if (constructorName.staticElement != null) {
return;
}
- DartType type = typeName.type;
+ DartType type = typeName.type!;
if (type is InterfaceType) {
ClassElement element = type.element;
- if (element != null && element.isEnum) {
+ if (element.isEnum) {
// We have already reported the error.
return;
}
}
Identifier className = typeName.name;
// report as named or default constructor absence
- SimpleIdentifier name = constructorName.name;
+ var name = constructorName.name;
if (name != null) {
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.CONST_WITH_UNDEFINED_CONSTRUCTOR,
@@ -2285,11 +2258,11 @@
for (int i = 0; i < count; i++) {
Directive directive = directives[i];
if (directive is ImportDirective) {
- SimpleIdentifier prefix = directive.prefix;
+ var prefix = directive.prefix;
if (prefix != null) {
- Element element = prefix.staticElement;
+ var element = prefix.staticElement;
if (element is PrefixElement) {
- List<ImportDirective> elements = prefixToDirectivesMap[element];
+ var elements = prefixToDirectivesMap[element];
if (elements == null) {
elements = <ImportDirective>[];
prefixToDirectivesMap[element] = elements;
@@ -2312,7 +2285,7 @@
return false;
}
- DartType iterableType = node.iterable.staticType;
+ DartType iterableType = node.iterable.staticType!;
// TODO(scheglov) use NullableDereferenceVerifier
if (_isNonNullableByDefault) {
@@ -2330,8 +2303,8 @@
return false;
}
- AstNode parent = node.parent;
- Token awaitKeyword;
+ Token? awaitKeyword;
+ var parent = node.parent;
if (parent is ForStatement) {
awaitKeyword = parent.awaitKeyword;
} else if (parent is ForElement) {
@@ -2363,7 +2336,7 @@
return false;
}
- DartType sequenceElementType;
+ DartType? sequenceElementType;
{
var sequenceElement = awaitKeyword != null
? _typeProvider.streamElement
@@ -2401,15 +2374,15 @@
return;
}
- LibraryElement exportedLibrary = exportElement.exportedLibrary;
+ var exportedLibrary = exportElement.exportedLibrary;
if (exportedLibrary == null) {
return;
}
// should be private
- DartSdk sdk = _currentLibrary.context.sourceFactory.dartSdk;
- String uri = exportedLibrary.source.uri.toString();
- SdkLibrary sdkLibrary = sdk.getSdkLibrary(uri);
+ var sdk = _currentLibrary.context.sourceFactory.dartSdk!;
+ var uri = exportedLibrary.source.uri.toString();
+ var sdkLibrary = sdk.getSdkLibrary(uri);
if (sdkLibrary == null) {
return;
}
@@ -2429,7 +2402,7 @@
return;
}
- var element = node.element;
+ var element = node.element!;
// TODO(scheglov) Expose from ExportElement.
var namespace =
NamespaceBuilder().createExportNamespaceForDirective(element);
@@ -2439,7 +2412,7 @@
element == NeverElementImpl.instance) {
continue;
}
- if (!element.library.isNonNullableByDefault) {
+ if (!element.library!.isNonNullableByDefault) {
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.EXPORT_LEGACY_SYMBOL,
node.uri,
@@ -2455,7 +2428,7 @@
/// Verify that the given extends [clause] does not extend a deferred class.
///
/// See [CompileTimeErrorCode.EXTENDS_DEFERRED_CLASS].
- void _checkForExtendsDeferredClass(TypeName superclass) {
+ void _checkForExtendsDeferredClass(TypeName? superclass) {
if (superclass == null) {
return;
}
@@ -2467,7 +2440,7 @@
/// 'num' or 'String'.
///
/// See [CompileTimeErrorCode.EXTENDS_DISALLOWED_CLASS].
- bool _checkForExtendsDisallowedClass(TypeName superclass) {
+ bool _checkForExtendsDisallowedClass(TypeName? superclass) {
if (superclass == null) {
return false;
}
@@ -2515,7 +2488,7 @@
return false;
}
return typeName.type is InterfaceType &&
- _typeProvider.nonSubtypableClasses.contains(typeName.type.element);
+ _typeProvider.nonSubtypableClasses.contains(typeName.type!.element);
}
void _checkForExtensionDeclaresMemberOfObject(MethodDeclaration node) {
@@ -2546,14 +2519,8 @@
DartType fieldType = fieldElement.type;
// prepare expression type
Expression expression = initializer.expression;
- if (expression == null) {
- return;
- }
// test the static type of the expression
- DartType staticType = expression.staticType;
- if (staticType == null) {
- return;
- }
+ DartType staticType = expression.staticType!;
if (_typeSystem.isAssignableTo2(staticType, fieldType)) {
return;
}
@@ -2601,11 +2568,11 @@
void _checkForFieldInitializingFormalRedirectingConstructor(
FieldFormalParameter parameter) {
// prepare the node that should be a ConstructorDeclaration
- AstNode formalParameterList = parameter.parent;
+ var formalParameterList = parameter.parent;
if (formalParameterList is! FormalParameterList) {
formalParameterList = formalParameterList?.parent;
}
- AstNode constructor = formalParameterList?.parent;
+ var constructor = formalParameterList?.parent;
// now check whether the node is actually a ConstructorDeclaration
if (constructor is ConstructorDeclaration) {
// constructor cannot be a factory
@@ -2706,11 +2673,11 @@
}
}
- void _checkForGenericFunctionType(TypeAnnotation node) {
+ void _checkForGenericFunctionType(TypeAnnotation? node) {
if (node == null) {
return;
}
- DartType type = node.type;
+ DartType type = node.type!;
if (type is FunctionType && type.typeFormals.isNotEmpty) {
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.GENERIC_FUNCTION_TYPE_CANNOT_BE_BOUND,
@@ -2724,7 +2691,7 @@
///
/// See [CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS],
/// [CompileTimeErrorCode.IMPLEMENTS_DEFERRED_CLASS].
- bool _checkForImplementsClauseErrorCodes(ImplementsClause clause) {
+ bool _checkForImplementsClauseErrorCodes(ImplementsClause? clause) {
if (clause == null) {
return false;
}
@@ -2741,11 +2708,11 @@
return foundError;
}
- void _checkForImplicitDynamicIdentifier(AstNode node, Identifier id) {
+ void _checkForImplicitDynamicIdentifier(AstNode node, Identifier? id) {
if (_options.implicitDynamic) {
return;
}
- VariableElement variable = getVariableElement(id);
+ var variable = getVariableElement(id);
if (variable != null &&
variable.hasImplicitType &&
variable.type.isDynamic) {
@@ -2769,21 +2736,19 @@
if (element is PropertyAccessorElement && element.isSetter) {
return;
}
- if (element != null &&
- element.hasImplicitReturnType &&
- element.returnType.isDynamic) {
+ if (element.hasImplicitReturnType && element.returnType.isDynamic) {
_errorReporter.reportErrorForNode(LanguageCode.IMPLICIT_DYNAMIC_RETURN,
functionName, [element.displayName]);
}
}
- void _checkForImplicitDynamicType(TypeAnnotation node) {
+ void _checkForImplicitDynamicType(TypeAnnotation? node) {
if (_options.implicitDynamic ||
node == null ||
(node is TypeName && node.typeArguments != null)) {
return;
}
- DartType type = node.type;
+ DartType type = node.type!;
if (type is ParameterizedType &&
type.typeArguments.isNotEmpty &&
type.typeArguments.any((t) => t.isDynamic)) {
@@ -2804,15 +2769,15 @@
return;
}
- LibraryElement importedLibrary = importElement.importedLibrary;
+ var importedLibrary = importElement.importedLibrary;
if (importedLibrary == null) {
return;
}
// should be private
- DartSdk sdk = _currentLibrary.context.sourceFactory.dartSdk;
- String uri = importedLibrary.source.uri.toString();
- SdkLibrary sdkLibrary = sdk.getSdkLibrary(uri);
+ var sdk = _currentLibrary.context.sourceFactory.dartSdk!;
+ var uri = importedLibrary.source.uri.toString();
+ var sdkLibrary = sdk.getSdkLibrary(uri);
if (sdkLibrary == null || !sdkLibrary.isInternal) {
return;
}
@@ -2828,13 +2793,13 @@
///
/// See [CompileTimeErrorCode.INSTANCE_ACCESS_TO_STATIC_MEMBER].
void _checkForInstanceAccessToStaticMember(
- ClassElement typeReference, Expression target, SimpleIdentifier name) {
+ ClassElement? typeReference, Expression? target, SimpleIdentifier name) {
if (_isInComment) {
// OK, in comment
return;
}
// prepare member Element
- Element element = name.writeOrReadElement;
+ var element = name.writeOrReadElement;
if (element is ExecutableElement) {
if (!element.isStatic) {
// OK, instance member
@@ -2875,11 +2840,8 @@
///
/// See [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE].
void _checkForIntNotAssignable(Expression argument) {
- if (argument == null) {
- return;
- }
- ParameterElement staticParameterElement = argument.staticParameterElement;
- DartType staticParameterType = staticParameterElement?.type;
+ var staticParameterElement = argument.staticParameterElement;
+ var staticParameterType = staticParameterElement?.type;
_checkForArgumentTypeNotAssignable(argument, staticParameterType, _intType,
CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE);
}
@@ -2900,7 +2862,7 @@
/// represent a valid assignment.
///
/// See [CompileTimeErrorCode.INVALID_ASSIGNMENT].
- void _checkForInvalidAssignment(Expression lhs, Expression rhs) {
+ void _checkForInvalidAssignment(Expression? lhs, Expression? rhs) {
if (lhs == null || rhs == null) {
return;
}
@@ -2917,11 +2879,11 @@
DartType leftType;
var parent = lhs.parent;
if (parent is AssignmentExpression && parent.leftHandSide == lhs) {
- leftType = parent.writeType;
+ leftType = parent.writeType!;
} else {
- VariableElement leftVariableElement = getVariableElement(lhs);
+ var leftVariableElement = getVariableElement(lhs);
leftType = (leftVariableElement == null)
- ? lhs.staticType
+ ? lhs.staticType!
: leftVariableElement.type;
}
@@ -2938,7 +2900,7 @@
/// [ConstructorFieldInitializer]. The [staticElement] is the static element
/// from the name in the [ConstructorFieldInitializer].
void _checkForInvalidField(ConstructorFieldInitializer initializer,
- SimpleIdentifier fieldName, Element staticElement) {
+ SimpleIdentifier fieldName, Element? staticElement) {
if (staticElement is FieldElement) {
if (staticElement.isSynthetic) {
_errorReporter.reportErrorForNode(
@@ -2978,7 +2940,7 @@
return;
}
// prepare element
- Element element = identifier.writeOrReadElement;
+ var element = identifier.writeOrReadElement;
if (!(element is MethodElement || element is PropertyAccessorElement)) {
return;
}
@@ -2994,7 +2956,7 @@
return;
}
// qualified method invocation
- AstNode parent = identifier.parent;
+ var parent = identifier.parent;
if (parent is MethodInvocation) {
if (identical(parent.methodName, identifier) &&
parent.realTarget != null) {
@@ -3003,8 +2965,7 @@
}
// qualified property access
if (parent is PropertyAccess) {
- if (identical(parent.propertyName, identifier) &&
- parent.realTarget != null) {
+ if (identical(parent.propertyName, identifier)) {
return;
}
}
@@ -3032,7 +2993,7 @@
/// with it, and report it as an error if it does.
void _checkForInvalidModifierOnBody(
FunctionBody body, CompileTimeErrorCode errorCode) {
- Token keyword = body.keyword;
+ var keyword = body.keyword;
if (keyword != null) {
_errorReporter.reportErrorForToken(errorCode, keyword, [keyword.lexeme]);
}
@@ -3058,7 +3019,7 @@
if (lateKeyword == null) return;
var hasConstConstructor =
- _enclosingClass.constructors.any((c) => c.isConst);
+ _enclosingClass!.constructors.any((c) => c.isConst);
if (!hasConstConstructor) return;
_errorReporter.reportErrorForToken(
@@ -3088,7 +3049,7 @@
// Determine the list's element type. We base this on the static type and
// not the literal's type arguments because in strong mode, the type
// arguments may be inferred.
- DartType listType = literal.staticType;
+ DartType listType = literal.staticType!;
assert(listType is InterfaceTypeImpl);
List<DartType> typeArguments =
@@ -3105,7 +3066,7 @@
_checkForUseOfVoidResult,
forList: true,
elementType: listElementType,
- featureSet: _featureSet,
+ featureSet: _featureSet!,
);
for (CollectionElement element in literal.elements) {
verifier.verify(element);
@@ -3117,7 +3078,7 @@
return;
}
- var element = nameNode.staticElement;
+ var element = nameNode.staticElement!;
// We should only check exported declarations, i.e. top-level.
if (element.enclosingElement is! CompilationUnitElement) {
@@ -3138,7 +3099,7 @@
var functionDeclaration = nameNode.parent as FunctionDeclaration;
var functionExpression = functionDeclaration.functionExpression;
- var parameters = functionExpression.parameters.parameters;
+ var parameters = functionExpression.parameters!.parameters;
var positional = parameters.where((e) => e.isPositional).toList();
var requiredPositional =
parameters.where((e) => e.isRequiredPositional).toList();
@@ -3159,7 +3120,7 @@
if (positional.isNotEmpty) {
var first = positional.first;
- var type = first.declaredElement.type;
+ var type = first.declaredElement!.type;
var listOfString = _typeProvider.listType2(_typeProvider.stringType);
if (!_typeSystem.isSubtypeOf2(listOfString, type)) {
_errorReporter.reportErrorForNode(
@@ -3174,12 +3135,7 @@
// Determine the map's key and value types. We base this on the static type
// and not the literal's type arguments because in strong mode, the type
// arguments may be inferred.
- DartType mapType = literal.staticType;
- if (mapType == null) {
- // This is known to happen when the literal is the default value in an
- // optional parameter in a generic function type alias.
- return;
- }
+ DartType mapType = literal.staticType!;
assert(mapType is InterfaceTypeImpl);
List<DartType> typeArguments = (mapType as InterfaceTypeImpl).typeArguments;
@@ -3199,7 +3155,7 @@
forMap: true,
mapKeyType: keyType,
mapValueType: valueType,
- featureSet: _featureSet,
+ featureSet: _featureSet!,
);
for (CollectionElement element in literal.elements) {
verifier.verify(element);
@@ -3300,7 +3256,7 @@
/// See [CompileTimeErrorCode.MIXIN_INHERITS_FROM_NOT_OBJECT].
bool _checkForMixinInheritsNotFromObject(
TypeName mixinName, ClassElement mixinElement) {
- InterfaceType mixinSupertype = mixinElement.supertype;
+ var mixinSupertype = mixinElement.supertype;
if (mixinSupertype != null) {
if (!mixinSupertype.isDartCoreObject ||
!mixinElement.isMixinApplication && mixinElement.mixins.isNotEmpty) {
@@ -3320,7 +3276,7 @@
bool _checkForMixinSuperclassConstraints(int mixinIndex, TypeName mixinName) {
InterfaceType mixinType = mixinName.type as InterfaceType;
for (var constraint in mixinType.superclassConstraints) {
- var superType = _enclosingClass.supertype as InterfaceTypeImpl;
+ var superType = _enclosingClass!.supertype as InterfaceTypeImpl;
if (_currentLibrary.isNonNullableByDefault) {
superType = superType.withNullability(NullabilitySuffix.none);
}
@@ -3329,7 +3285,7 @@
if (!isSatisfied) {
for (int i = 0; i < mixinIndex && !isSatisfied; i++) {
isSatisfied =
- _typeSystem.isSubtypeOf2(_enclosingClass.mixins[i], constraint);
+ _typeSystem.isSubtypeOf2(_enclosingClass!.mixins[i], constraint);
}
}
if (!isSatisfied) {
@@ -3363,7 +3319,7 @@
var nameObject = Name(mixinLibraryUri, name);
var superMember = _inheritanceManager.getMember2(
- _enclosingClass, nameObject,
+ _enclosingClass!, nameObject,
forMixinIndex: mixinIndex, concrete: true, forSuper: true);
if (superMember == null) {
@@ -3375,7 +3331,7 @@
return true;
}
- ExecutableElement mixinMember =
+ var mixinMember =
_inheritanceManager.getMember(mixinType, nameObject, forSuper: true);
if (mixinMember != null) {
@@ -3403,11 +3359,11 @@
/// library that defines a private member that conflicts with a private name
/// from the same library but from a superclass or a different mixin.
void _checkForMixinWithConflictingPrivateMember(
- WithClause withClause, TypeName superclassName) {
+ WithClause? withClause, TypeName? superclassName) {
if (withClause == null) {
return;
}
- DartType declaredSupertype = superclassName?.type;
+ var declaredSupertype = superclassName?.type;
if (declaredSupertype is! InterfaceType) {
return;
}
@@ -3430,7 +3386,7 @@
return true;
}
names[name] = typeName.name.name;
- ExecutableElement inheritedMember = _inheritanceManager.getMember2(
+ var inheritedMember = _inheritanceManager.getMember2(
declaredSupertype.element,
Name(library.source.uri, name),
concrete: true,
@@ -3450,7 +3406,7 @@
}
for (TypeName mixinType in withClause.mixinTypes) {
- DartType type = mixinType.type;
+ DartType type = mixinType.type!;
if (type is InterfaceType) {
LibraryElement library = type.element.library;
if (library != _currentLibrary) {
@@ -3517,7 +3473,7 @@
if (constructorName.staticElement != null) {
return;
}
- DartType type = typeName.type;
+ DartType type = typeName.type!;
if (type is InterfaceType) {
ClassElement element = type.element;
if (element.isEnum || element.isMixin) {
@@ -3528,7 +3484,7 @@
// prepare class name
Identifier className = typeName.name;
// report as named or default constructor absence
- SimpleIdentifier name = constructorName.name;
+ var name = constructorName.name;
if (name != null) {
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.NEW_WITH_UNDEFINED_CONSTRUCTOR,
@@ -3550,27 +3506,30 @@
void _checkForNoDefaultSuperConstructorImplicit(
ClassDeclaration declaration) {
// do nothing if there is explicit constructor
- List<ConstructorElement> constructors = _enclosingClass.constructors;
+ List<ConstructorElement> constructors = _enclosingClass!.constructors;
if (!constructors[0].isSynthetic) {
return;
}
// prepare super
- InterfaceType superType = _enclosingClass.supertype;
+ var superType = _enclosingClass!.supertype;
if (superType == null) {
return;
}
ClassElement superElement = superType.element;
// try to find default generative super constructor
- ConstructorElement superUnnamedConstructor =
- superElement.unnamedConstructor;
- superUnnamedConstructor =
- _currentLibrary.toLegacyElementIfOptOut(superUnnamedConstructor);
+ var superUnnamedConstructor = superElement.unnamedConstructor;
+ superUnnamedConstructor = superUnnamedConstructor != null
+ ? _currentLibrary.toLegacyElementIfOptOut(superUnnamedConstructor)
+ : superUnnamedConstructor;
if (superUnnamedConstructor != null) {
if (superUnnamedConstructor.isFactory) {
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.NON_GENERATIVE_IMPLICIT_CONSTRUCTOR,
- declaration.name,
- [superElement.name, _enclosingClass.name, superUnnamedConstructor]);
+ declaration.name, [
+ superElement.name,
+ _enclosingClass!.name,
+ superUnnamedConstructor
+ ]);
return;
}
if (superUnnamedConstructor.isDefaultConstructor) {
@@ -3584,16 +3543,16 @@
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT,
declaration.name,
- [superType, _enclosingClass.displayName]);
+ [superType, _enclosingClass!.displayName]);
}
}
- bool _checkForNoGenerativeConstructorsInSuperclass(TypeName superclass) {
- InterfaceType superType = _enclosingClass.supertype;
+ bool _checkForNoGenerativeConstructorsInSuperclass(TypeName? superclass) {
+ var superType = _enclosingClass!.supertype;
if (superType == null) {
return false;
}
- if (_enclosingClass.constructors
+ if (_enclosingClass!.constructors
.every((constructor) => constructor.isFactory)) {
// A class with no generative constructors *can* be extended if the
// subclass has only factory constructors.
@@ -3610,8 +3569,8 @@
// no generative constructors. State this clearly to users.
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.NO_GENERATIVE_CONSTRUCTORS_IN_SUPERCLASS,
- superclass,
- [_enclosingClass.name, superElement.name]);
+ superclass!,
+ [_enclosingClass!.name, superElement.name]);
return true;
}
return false;
@@ -3633,7 +3592,7 @@
return;
}
// prepare statement
- Statement statement = literal.thisOrAncestorOfType<ExpressionStatement>();
+ var statement = literal.thisOrAncestorOfType<ExpressionStatement>();
if (statement == null) {
return;
}
@@ -3658,10 +3617,10 @@
return;
}
// check return type
- TypeAnnotation annotation = declaration.returnType;
+ var annotation = declaration.returnType;
if (annotation != null) {
- DartType type = annotation.type;
- if (type != null && !type.isVoid) {
+ DartType type = annotation.type!;
+ if (!type.isVoid) {
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.NON_VOID_RETURN_FOR_OPERATOR, annotation);
}
@@ -3672,10 +3631,10 @@
/// (either `null` or the type 'void').
///
/// See [StaticWarningCode.NON_VOID_RETURN_FOR_SETTER].
- void _checkForNonVoidReturnTypeForSetter(TypeAnnotation typeName) {
+ void _checkForNonVoidReturnTypeForSetter(TypeAnnotation? typeName) {
if (typeName != null) {
- DartType type = typeName.type;
- if (type != null && !type.isVoid) {
+ DartType type = typeName.type!;
+ if (!type.isVoid) {
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.NON_VOID_RETURN_FOR_SETTER, typeName);
}
@@ -3748,7 +3707,7 @@
if (node.type == null) {
return;
}
- var type = node.type.type;
+ var type = node.type!.type!;
if (!_typeSystem.isPotentiallyNonNullable(type)) {
return;
@@ -3769,13 +3728,13 @@
///
/// See [CompileTimeErrorCode.MIXIN_SUPER_CLASS_CONSTRAINT_DISALLOWED_CLASS],
/// [CompileTimeErrorCode.MIXIN_SUPER_CLASS_CONSTRAINT_DEFERRED_CLASS].
- bool _checkForOnClauseErrorCodes(OnClause onClause) {
+ bool _checkForOnClauseErrorCodes(OnClause? onClause) {
if (onClause == null) {
return false;
}
bool problemReported = false;
for (TypeName typeName in onClause.superclassConstraints) {
- DartType type = typeName.type;
+ DartType type = typeName.type!;
if (type is InterfaceType) {
if (_checkForExtendsOrImplementsDisallowedClass(
typeName,
@@ -3803,7 +3762,7 @@
///
/// See [CompileTimeErrorCode.OPTIONAL_PARAMETER_IN_OPERATOR].
void _checkForOptionalParameterInOperator(MethodDeclaration declaration) {
- FormalParameterList parameterList = declaration.parameters;
+ var parameterList = declaration.parameters;
if (parameterList == null) {
return;
}
@@ -3872,13 +3831,13 @@
return;
}
// name should start with '_'
- SimpleIdentifier name = parameter.identifier;
+ var name = parameter.identifier;
if (name == null || name.isSynthetic || !name.name.startsWith('_')) {
return;
}
_errorReporter.reportErrorForNode(
- CompileTimeErrorCode.PRIVATE_OPTIONAL_PARAMETER, parameter.identifier);
+ CompileTimeErrorCode.PRIVATE_OPTIONAL_PARAMETER, name);
}
/// Check whether the given constructor [declaration] is the redirecting
@@ -3913,8 +3872,7 @@
bool _checkForRecursiveFactoryRedirect(
ConstructorDeclaration declaration, ConstructorElement element) {
// prepare redirected constructor
- ConstructorName redirectedConstructorNode =
- declaration.redirectedConstructor;
+ var redirectedConstructorNode = declaration.redirectedConstructor;
if (redirectedConstructorNode == null) {
return false;
}
@@ -3942,7 +3900,7 @@
void _checkForRedirectingConstructorErrorCodes(
ConstructorDeclaration declaration) {
// Check for default values in the parameters
- ConstructorName redirectedConstructor = declaration.redirectedConstructor;
+ var redirectedConstructor = declaration.redirectedConstructor;
if (redirectedConstructor != null) {
for (FormalParameter parameter in declaration.parameters.parameters) {
if (parameter is DefaultFormalParameter &&
@@ -3950,23 +3908,24 @@
_errorReporter.reportErrorForNode(
CompileTimeErrorCode
.DEFAULT_VALUE_IN_REDIRECTING_FACTORY_CONSTRUCTOR,
- parameter.identifier);
+ parameter.identifier!);
}
}
+ var redirectedElement = redirectedConstructor.staticElement;
_checkForRedirectToNonConstConstructor(
- declaration.declaredElement,
- redirectedConstructor.staticElement,
+ declaration.declaredElement!,
+ redirectedElement,
redirectedConstructor,
);
- var redirectedClass =
- redirectedConstructor.staticElement?.enclosingElement;
+ var redirectedClass = redirectedElement?.enclosingElement;
if (redirectedClass is ClassElement &&
redirectedClass.isAbstract &&
- !redirectedConstructor.staticElement.isFactory) {
- String enclosingTypeName = _enclosingClass.displayName;
+ redirectedElement != null &&
+ !redirectedElement.isFactory) {
+ String enclosingTypeName = _enclosingClass!.displayName;
String constructorStrName = enclosingTypeName;
if (declaration.name != null) {
- constructorStrName += ".${declaration.name.name}";
+ constructorStrName += ".${declaration.name!.name}";
}
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.REDIRECT_TO_ABSTRACT_CLASS_CONSTRUCTOR,
@@ -3985,12 +3944,12 @@
}
if (declaration.factoryKeyword == null) {
RedirectingConstructorInvocation invocation = initializer;
- ConstructorElement redirectingElement = invocation.staticElement;
+ var redirectingElement = invocation.staticElement;
if (redirectingElement == null) {
- String enclosingTypeName = _enclosingClass.displayName;
+ String enclosingTypeName = _enclosingClass!.displayName;
String constructorStrName = enclosingTypeName;
if (invocation.constructorName != null) {
- constructorStrName += ".${invocation.constructorName.name}";
+ constructorStrName += ".${invocation.constructorName!.name}";
}
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.REDIRECT_GENERATIVE_TO_MISSING_CONSTRUCTOR,
@@ -4008,7 +3967,7 @@
// [declaration] is a redirecting constructor via a redirecting
// initializer.
_checkForRedirectToNonConstConstructor(
- declaration.declaredElement,
+ declaration.declaredElement!,
initializer.staticElement,
initializer.constructorName ?? initializer.thisKeyword,
);
@@ -4043,7 +4002,7 @@
/// See [CompileTimeErrorCode.REDIRECT_TO_NON_CONST_CONSTRUCTOR].
void _checkForRedirectToNonConstConstructor(
ConstructorElement element,
- ConstructorElement redirectedElement,
+ ConstructorElement? redirectedElement,
SyntacticEntity errorEntity,
) {
// This constructor is const, but it redirects to a non-const constructor.
@@ -4059,16 +4018,18 @@
}
void _checkForReferenceBeforeDeclaration(SimpleIdentifier node) {
+ var element = node.staticElement;
if (!node.inDeclarationContext() &&
+ element != null &&
_hiddenElements != null &&
- _hiddenElements.contains(node.staticElement) &&
+ _hiddenElements!.contains(element) &&
node.parent is! CommentReference) {
_errorReporter.reportError(DiagnosticFactory()
.referencedBeforeDeclaration(_errorReporter.source, node));
}
}
- void _checkForRepeatedType(List<TypeName> typeNames, ErrorCode errorCode) {
+ void _checkForRepeatedType(List<TypeName>? typeNames, ErrorCode errorCode) {
if (typeNames == null) {
return;
}
@@ -4080,7 +4041,7 @@
}
for (int i = 0; i < count; i++) {
if (!detectedRepeatOnIndex[i]) {
- Element element = typeNames[i].name.staticElement;
+ var element = typeNames[i].name.staticElement;
for (int j = i + 1; j < count; j++) {
TypeName typeName = typeNames[j];
if (typeName.name.staticElement == element) {
@@ -4114,7 +4075,7 @@
return;
}
// block body (with possible return statement) is checked elsewhere
- FunctionBody body = declaration.body;
+ FunctionBody body = declaration.body!;
if (body is! ExpressionFunctionBody) {
return;
}
@@ -4132,7 +4093,7 @@
// Determine the set's element type. We base this on the static type and
// not the literal's type arguments because in strong mode, the type
// arguments may be inferred.
- DartType setType = literal.staticType;
+ DartType setType = literal.staticType!;
assert(setType is InterfaceTypeImpl);
List<DartType> typeArguments = (setType as InterfaceTypeImpl).typeArguments;
@@ -4151,7 +4112,7 @@
_checkForUseOfVoidResult,
forSet: true,
elementType: setElementType,
- featureSet: _featureSet,
+ featureSet: _featureSet!,
);
for (CollectionElement element in literal.elements) {
verifier.verify(element);
@@ -4164,7 +4125,7 @@
///
/// See [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER].
void _checkForStaticAccessToInstanceMember(
- ClassElement typeReference, SimpleIdentifier name) {
+ ClassElement? typeReference, SimpleIdentifier name) {
// OK, in comment
if (_isInComment) {
return;
@@ -4174,7 +4135,7 @@
return;
}
// prepare member Element
- Element element = name.staticElement;
+ var element = name.staticElement;
if (element is ExecutableElement) {
// OK, static
if (element.isStatic || element is ConstructorElement) {
@@ -4203,20 +4164,16 @@
}
// prepare 'switch' expression type
- DartType expressionType = expression.staticType;
- if (expressionType == null) {
- return;
- }
+ DartType expressionType = expression.staticType!;
// compare with type of the first non-default 'case'
- SwitchCase switchCase = statement.members
- .firstWhere((member) => member is SwitchCase, orElse: () => null);
+ var switchCase = statement.members.whereType<SwitchCase>().firstOrNull;
if (switchCase == null) {
return;
}
Expression caseExpression = switchCase.expression;
- DartType caseType = caseExpression.staticType;
+ DartType caseType = caseExpression.staticType!;
// check types
if (!_typeSystem.isAssignableTo2(expressionType, caseType)) {
@@ -4231,7 +4188,7 @@
if (!_isNonNullableByDefault) return;
var expression = node.expression;
- var type = node.expression.staticType;
+ var type = node.expression.staticType!;
if (!_typeSystem.isAssignableTo2(type, _typeSystem.objectNone)) {
_errorReporter.reportErrorForNode(
@@ -4261,7 +4218,7 @@
/// Verify that the [type] is not a deferred type.
///
/// See [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS].
- void _checkForTypeAnnotationDeferredClass(TypeAnnotation type) {
+ void _checkForTypeAnnotationDeferredClass(TypeAnnotation? type) {
if (type is TypeName && type.isDeferred) {
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.TYPE_ANNOTATION_DEFERRED_CLASS,
@@ -4274,17 +4231,17 @@
///
/// See [CompileTimeErrorCode.TYPE_PARAMETER_SUPERTYPE_OF_ITS_BOUND].
void _checkForTypeParameterBoundRecursion(List<TypeParameter> parameters) {
- Map<TypeParameterElement, TypeParameter> elementToNode;
+ Map<TypeParameterElement, TypeParameter>? elementToNode;
for (var parameter in parameters) {
if (parameter.bound != null) {
if (elementToNode == null) {
elementToNode = {};
for (var parameter in parameters) {
- elementToNode[parameter.declaredElement] = parameter;
+ elementToNode[parameter.declaredElement!] = parameter;
}
}
- TypeParameter current = parameter;
+ TypeParameter? current = parameter;
for (var step = 0; current != null; step++) {
var bound = current.bound;
if (bound is TypeName) {
@@ -4293,7 +4250,7 @@
current = null;
}
if (step == parameters.length) {
- var element = parameter.declaredElement;
+ var element = parameter.declaredElement!;
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.TYPE_PARAMETER_SUPERTYPE_OF_ITS_BOUND,
parameter,
@@ -4357,7 +4314,7 @@
// Check to see whether the superclass has a non-factory unnamed
// constructor.
- InterfaceType superType = _enclosingClass.supertype;
+ var superType = _enclosingClass!.supertype;
if (superType == null) {
return;
}
@@ -4367,10 +4324,10 @@
// Already reported [NO_GENERATIVE_CONSTRUCTORS_IN_SUPERCLASS].
return;
}
- ConstructorElement superUnnamedConstructor =
- superElement.unnamedConstructor;
- superUnnamedConstructor =
- _currentLibrary.toLegacyElementIfOptOut(superUnnamedConstructor);
+ var superUnnamedConstructor = superElement.unnamedConstructor;
+ superUnnamedConstructor = superUnnamedConstructor != null
+ ? _currentLibrary.toLegacyElementIfOptOut(superUnnamedConstructor)
+ : superUnnamedConstructor;
if (superUnnamedConstructor != null) {
if (superUnnamedConstructor.isFactory) {
_errorReporter.reportErrorForNode(
@@ -4379,7 +4336,7 @@
[superUnnamedConstructor]);
} else if (!superUnnamedConstructor.isDefaultConstructor) {
Identifier returnType = constructor.returnType;
- SimpleIdentifier name = constructor.name;
+ var name = constructor.name;
int offset = returnType.offset;
int length = (name != null ? name.end : returnType.end) - offset;
_errorReporter.reportErrorForOffset(
@@ -4410,7 +4367,7 @@
List<Object> arguments = const [];
if (operator.type == TokenType.QUESTION) {
errorCode = StaticWarningCode.INVALID_NULL_AWARE_OPERATOR;
- endToken = operator.next;
+ endToken = operator.next!;
arguments = ['?[', '['];
} else if (operator.type == TokenType.QUESTION_PERIOD) {
errorCode = StaticWarningCode.INVALID_NULL_AWARE_OPERATOR;
@@ -4429,7 +4386,7 @@
/// If the operator is not valid because the target already makes use of a
/// null aware operator, return the null aware operator from the target.
- Token previousShortCircuitingOperator(Expression target) {
+ Token? previousShortCircuitingOperator(Expression? target) {
if (target is PropertyAccess) {
var operator = target.operator;
var type = operator.type;
@@ -4457,7 +4414,7 @@
if (target is ExtensionOverride) {
var arguments = target.argumentList.arguments;
if (arguments.length == 1) {
- targetType = arguments[0].staticType;
+ targetType = arguments[0].staticType!;
} else {
return;
}
@@ -4495,11 +4452,11 @@
/// [CompileTimeErrorCode.UNQUALIFIED_REFERENCE_TO_NON_LOCAL_STATIC_MEMBER].
void _checkForUnqualifiedReferenceToNonLocalStaticMember(
SimpleIdentifier name) {
- Element element = name.writeOrReadElement;
+ var element = name.writeOrReadElement;
if (element == null || element is TypeParameterElement) {
return;
}
- Element enclosingElement = element.enclosingElement;
+ var enclosingElement = element.enclosingElement;
if (identical(enclosingElement, _enclosingClass)) {
return;
}
@@ -4539,8 +4496,7 @@
///
/// See [StaticWarningCode.RECEIVER_OF_TYPE_NEVER].
bool _checkForUseOfNever(Expression expression) {
- if (expression == null ||
- !identical(expression.staticType, NeverTypeImpl.instance)) {
+ if (!identical(expression.staticType, NeverTypeImpl.instance)) {
return false;
}
@@ -4556,8 +4512,7 @@
///
/// See [StaticWarningCode.USE_OF_VOID_RESULT].
bool _checkForUseOfVoidResult(Expression expression) {
- if (expression == null ||
- !identical(expression.staticType, VoidTypeImpl.instance)) {
+ if (!identical(expression.staticType, VoidTypeImpl.instance)) {
return false;
}
@@ -4574,21 +4529,21 @@
}
void _checkForValidField(FieldFormalParameter parameter) {
- AstNode parent2 = parameter.parent?.parent;
+ var parent2 = parameter.parent?.parent;
if (parent2 is! ConstructorDeclaration &&
parent2?.parent is! ConstructorDeclaration) {
return;
}
- ParameterElement element = parameter.declaredElement;
+ ParameterElement element = parameter.declaredElement!;
if (element is FieldFormalParameterElement) {
- FieldElement fieldElement = element.field;
+ var fieldElement = element.field;
if (fieldElement == null || fieldElement.isSynthetic) {
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_NON_EXISTENT_FIELD,
parameter,
[parameter.identifier.name]);
} else {
- ParameterElement parameterElement = parameter.declaredElement;
+ var parameterElement = parameter.declaredElement!;
if (parameterElement is FieldFormalParameterElementImpl) {
DartType declaredType = parameterElement.type;
DartType fieldType = fieldElement.type;
@@ -4639,16 +4594,13 @@
void _checkForWrongNumberOfParametersForOperator(
MethodDeclaration declaration) {
// prepare number of parameters
- FormalParameterList parameterList = declaration.parameters;
+ var parameterList = declaration.parameters;
if (parameterList == null) {
return;
}
int numParameters = parameterList.parameters.length;
// prepare operator name
SimpleIdentifier nameNode = declaration.name;
- if (nameNode == null) {
- return;
- }
String name = nameNode.name;
// check for exact number of parameters
int expected = -1;
@@ -4696,8 +4648,8 @@
///
/// See [CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER].
void _checkForWrongNumberOfParametersForSetter(
- SimpleIdentifier setterName, FormalParameterList parameterList) {
- if (setterName == null || parameterList == null) {
+ SimpleIdentifier setterName, FormalParameterList? parameterList) {
+ if (parameterList == null) {
return;
}
@@ -4711,12 +4663,12 @@
void _checkForWrongTypeParameterVarianceInField(FieldDeclaration node) {
if (_enclosingClass != null) {
- for (var typeParameter in _enclosingClass.typeParameters) {
+ for (var typeParameter in _enclosingClass!.typeParameters) {
// TODO (kallentu) : Clean up TypeParameterElementImpl casting once
// variance is added to the interface.
if (!(typeParameter as TypeParameterElementImpl).isLegacyCovariant) {
var fields = node.fields;
- var fieldElement = fields.variables.first.declaredElement;
+ var fieldElement = fields.variables.first.declaredElement!;
var fieldName = fields.variables.first.name;
Variance fieldVariance = Variance(typeParameter, fieldElement.type);
@@ -4740,7 +4692,7 @@
return;
}
- for (var typeParameter in _enclosingClass.typeParameters) {
+ for (var typeParameter in _enclosingClass!.typeParameters) {
// TODO (kallentu) : Clean up TypeParameterElementImpl casting once
// variance is added to the interface.
if ((typeParameter as TypeParameterElementImpl).isLegacyCovariant) {
@@ -4754,7 +4706,7 @@
continue;
}
var methodTypeParameterVariance = Variance.invariant.combine(
- Variance(typeParameter, methodTypeParameter.bound.type),
+ Variance(typeParameter, methodTypeParameter.bound!.type!),
);
_checkForWrongVariancePosition(
methodTypeParameterVariance, typeParameter, methodTypeParameter);
@@ -4764,7 +4716,7 @@
var methodParameters = method.parameters?.parameters;
if (methodParameters != null) {
for (var methodParameter in methodParameters) {
- var methodParameterElement = methodParameter.declaredElement;
+ var methodParameterElement = methodParameter.declaredElement!;
if (methodParameterElement.isCovariant) {
continue;
}
@@ -4778,7 +4730,8 @@
var returnType = method.returnType;
if (returnType != null) {
- var methodReturnTypeVariance = Variance(typeParameter, returnType.type);
+ var methodReturnTypeVariance =
+ Variance(typeParameter, returnType.type!);
_checkForWrongVariancePosition(
methodReturnTypeVariance, typeParameter, returnType);
}
@@ -4786,9 +4739,9 @@
}
void _checkForWrongTypeParameterVarianceInSuperinterfaces() {
- void checkOne(DartType superInterface) {
+ void checkOne(DartType? superInterface) {
if (superInterface != null) {
- for (var typeParameter in _enclosingClass.typeParameters) {
+ for (var typeParameter in _enclosingClass!.typeParameters) {
var superVariance = Variance(typeParameter, superInterface);
// TODO (kallentu) : Clean up TypeParameterElementImpl casting once
// variance is added to the interface.
@@ -4830,10 +4783,10 @@
}
}
- checkOne(_enclosingClass.supertype);
- _enclosingClass.interfaces.forEach(checkOne);
- _enclosingClass.mixins.forEach(checkOne);
- _enclosingClass.superclassConstraints.forEach(checkOne);
+ checkOne(_enclosingClass!.supertype);
+ _enclosingClass!.interfaces.forEach(checkOne);
+ _enclosingClass!.mixins.forEach(checkOne);
+ _enclosingClass!.superclassConstraints.forEach(checkOne);
}
/// Check for invalid variance positions in members of a class or mixin.
@@ -4870,18 +4823,18 @@
/// 'extends' and 'implements' clauses.
///
/// See [CompileTimeErrorCode.IMPLEMENTS_SUPER_CLASS].
- void _checkImplementsSuperClass(ImplementsClause implementsClause) {
+ void _checkImplementsSuperClass(ImplementsClause? implementsClause) {
if (implementsClause == null) {
return;
}
- var superElement = _enclosingClass.supertype?.element;
+ var superElement = _enclosingClass!.supertype?.element;
if (superElement == null) {
return;
}
for (var interfaceNode in implementsClause.interfaces) {
- if (interfaceNode.type.element == superElement) {
+ if (interfaceNode.type!.element == superElement) {
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.IMPLEMENTS_SUPER_CLASS,
interfaceNode,
@@ -4893,8 +4846,8 @@
void _checkIndexExpressionIndex(
Expression index, {
- @required ExecutableElement readElement,
- @required ExecutableElement writeElement,
+ required ExecutableElement? readElement,
+ required ExecutableElement? writeElement,
}) {
if (readElement is MethodElement) {
var parameters = readElement.parameters;
@@ -4920,7 +4873,7 @@
}
void _checkMixinInference(
- NamedCompilationUnitMember node, WithClause withClause) {
+ NamedCompilationUnitMember node, WithClause? withClause) {
if (withClause == null) {
return;
}
@@ -4969,8 +4922,8 @@
/// Checks the class for problems with the superclass, mixins, or implemented
/// interfaces.
- void _checkMixinInheritance(MixinDeclaration node, OnClause onClause,
- ImplementsClause implementsClause) {
+ void _checkMixinInheritance(MixinDeclaration node, OnClause? onClause,
+ ImplementsClause? implementsClause) {
// Only check for all of the inheritance logic around clauses if there
// isn't an error code such as "Cannot implement double" already.
if (!_checkForOnClauseErrorCodes(onClause) &&
@@ -4992,18 +4945,18 @@
/// 'extends' and 'with' clauses.
///
/// See [CompileTimeErrorCode.IMPLEMENTS_SUPER_CLASS].
- void _checkMixinsSuperClass(WithClause withClause) {
+ void _checkMixinsSuperClass(WithClause? withClause) {
if (withClause == null) {
return;
}
- var superElement = _enclosingClass.supertype?.element;
+ var superElement = _enclosingClass!.supertype?.element;
if (superElement == null) {
return;
}
for (var mixinNode in withClause.mixinTypes) {
- if (mixinNode.type.element == superElement) {
+ if (mixinNode.type!.element == superElement) {
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.MIXINS_SUPER_CLASS,
mixinNode,
@@ -5014,7 +4967,7 @@
}
void _checkUseOfCovariantInParameters(FormalParameterList node) {
- AstNode parent = node.parent;
+ var parent = node.parent;
if (_enclosingClass != null &&
parent is MethodDeclaration &&
!parent.isStatic) {
@@ -5026,9 +4979,9 @@
for (int i = 0; i < length; i++) {
FormalParameter parameter = parameters[i];
if (parameter is DefaultFormalParameter) {
- parameter = (parameter as DefaultFormalParameter).parameter;
+ parameter = parameter.parameter;
}
- Token keyword = parameter.covariantKeyword;
+ var keyword = parameter.covariantKeyword;
if (keyword != null) {
if (_enclosingExtension != null) {
// Reported by the parser.
@@ -5087,7 +5040,7 @@
);
}
} else if (defaultValuesAreExpected && parameter.defaultValue == null) {
- var type = parameter.declaredElement.type;
+ var type = parameter.declaredElement!.type;
if (_typeSystem.isPotentiallyNonNullable(type)) {
var parameterName = _parameterName(parameter);
_errorReporter.reportErrorForNode(
@@ -5101,10 +5054,10 @@
}
}
- InterfaceType _findInterfaceTypeForMixin(TypeName mixin,
+ InterfaceType? _findInterfaceTypeForMixin(TypeName mixin,
InterfaceType supertypeConstraint, List<InterfaceType> interfaceTypes) {
var element = supertypeConstraint.element;
- InterfaceType foundInterfaceType;
+ InterfaceType? foundInterfaceType;
for (var interfaceType in interfaceTypes) {
if (interfaceType.element != element) continue;
if (foundInterfaceType == null) {
@@ -5128,7 +5081,7 @@
return foundInterfaceType;
}
- List<InterfaceType> _findInterfaceTypesForConstraints(
+ List<InterfaceType>? _findInterfaceTypesForConstraints(
TypeName mixin,
List<InterfaceType> supertypeConstraints,
List<InterfaceType> interfaceTypes) {
@@ -5148,7 +5101,7 @@
/// Given an [expression] in a switch case whose value is expected to be an
/// enum constant, return the name of the constant.
- String _getConstantName(Expression expression) {
+ String? _getConstantName(Expression expression) {
// TODO(brianwilkerson) Convert this to return the element representing the
// constant.
if (expression is SimpleIdentifier) {
@@ -5186,11 +5139,11 @@
}
/// Return the name of the library that defines given [element].
- String _getLibraryName(Element element) {
+ String _getLibraryName(Element? element) {
if (element == null) {
return StringUtilities.EMPTY;
}
- LibraryElement library = element.library;
+ var library = element.library;
if (library == null) {
return StringUtilities.EMPTY;
}
@@ -5203,7 +5156,7 @@
}
List<String> indirectSources = <String>[];
for (int i = 0; i < count; i++) {
- LibraryElement importedLibrary = imports[i].importedLibrary;
+ var importedLibrary = imports[i].importedLibrary;
if (importedLibrary != null) {
for (LibraryElement exportedLibrary
in importedLibrary.exportedLibraries) {
@@ -5234,7 +5187,7 @@
/// indirectly.
bool _hasRedirectingFactoryConstructorCycle(ConstructorElement constructor) {
Set<ConstructorElement> constructors = HashSet<ConstructorElement>();
- ConstructorElement current = constructor;
+ ConstructorElement? current = constructor;
while (current != null) {
if (constructors.contains(current)) {
return identical(current, constructor);
@@ -5251,7 +5204,7 @@
} else if (type is FunctionType || type.isDartCoreFunction) {
return true;
} else if (type is InterfaceType) {
- MethodElement callMethod =
+ var callMethod =
type.lookUpMethod2(FunctionElement.CALL_METHOD_NAME, _currentLibrary);
return callMethod != null;
}
@@ -5265,7 +5218,7 @@
if (identifier.inDeclarationContext()) {
return true;
}
- AstNode parent = identifier.parent;
+ var parent = identifier.parent;
if (parent is Annotation) {
return identical(parent.constructorName, identifier);
}
@@ -5292,7 +5245,7 @@
/// Return the name of the [parameter], or `null` if the parameter does not
/// have a name.
- SimpleIdentifier _parameterName(FormalParameter parameter) {
+ SimpleIdentifier? _parameterName(FormalParameter parameter) {
if (parameter is NormalFormalParameter) {
return parameter.identifier;
} else if (parameter is DefaultFormalParameter) {
@@ -5321,7 +5274,7 @@
try {
f();
} finally {
- _hiddenElements = _hiddenElements.outerElements;
+ _hiddenElements = _hiddenElements!.outerElements;
}
}
@@ -5341,10 +5294,10 @@
}
}
- List<FormalParameter> parameters = constructor.parameters?.parameters ?? [];
+ List<FormalParameter> parameters = constructor.parameters.parameters;
for (FormalParameter parameter in parameters) {
if (parameter is DefaultFormalParameter) {
- parameter = (parameter as DefaultFormalParameter).parameter;
+ parameter = parameter.parameter;
}
if (parameter is FieldFormalParameter) {
FieldFormalParameterElement element =
@@ -5364,9 +5317,9 @@
/// Return the variable element represented by the given [expression], or
/// `null` if there is no such element.
- static VariableElement getVariableElement(Expression expression) {
+ static VariableElement? getVariableElement(Expression? expression) {
if (expression is Identifier) {
- Element element = expression.staticElement;
+ var element = expression.staticElement;
if (element is VariableElement) {
return element;
}
@@ -5380,7 +5333,7 @@
class HiddenElements {
/// The elements hidden in outer scopes, or `null` if this is the outermost
/// scope.
- final HiddenElements outerElements;
+ final HiddenElements? outerElements;
/// A set containing the elements that will be declared in this scope, but are
/// not yet declared.
@@ -5398,7 +5351,7 @@
if (_elements.contains(element)) {
return true;
} else if (outerElements != null) {
- return outerElements.contains(element);
+ return outerElements!.contains(element);
}
return false;
}
diff --git a/pkg/analyzer/lib/src/generated/ffi_verifier.dart b/pkg/analyzer/lib/src/generated/ffi_verifier.dart
index 7693984..299afe7 100644
--- a/pkg/analyzer/lib/src/generated/ffi_verifier.dart
+++ b/pkg/analyzer/lib/src/generated/ffi_verifier.dart
@@ -56,14 +56,14 @@
void visitClassDeclaration(ClassDeclaration node) {
inStruct = false;
// Only the Allocator, Opaque and Struct class may be extended.
- ExtendsClause extendsClause = node.extendsClause;
+ var extendsClause = node.extendsClause;
if (extendsClause != null) {
final TypeName superclass = extendsClause.superclass;
if (_isDartFfiClass(superclass)) {
- final className = superclass.name.staticElement.name;
+ final className = superclass.name.staticElement!.name;
if (className == _structClassName) {
inStruct = true;
- if (_isEmptyStruct(node.declaredElement)) {
+ if (_isEmptyStruct(node.declaredElement!)) {
_errorReporter.reportErrorForNode(
FfiCode.EMPTY_STRUCT_WARNING, node, [node.name]);
}
@@ -85,7 +85,7 @@
// No classes from the FFI may be explicitly implemented.
void checkSupertype(TypeName typename, FfiCode subtypeOfFfiCode,
FfiCode subtypeOfStructCode) {
- final superName = typename.name?.staticElement?.name;
+ final superName = typename.name.staticElement?.name;
if (superName == _allocatorClassName) {
return;
}
@@ -98,14 +98,14 @@
}
}
- ImplementsClause implementsClause = node.implementsClause;
+ var implementsClause = node.implementsClause;
if (implementsClause != null) {
for (TypeName type in implementsClause.interfaces) {
checkSupertype(type, FfiCode.SUBTYPE_OF_FFI_CLASS_IN_IMPLEMENTS,
FfiCode.SUBTYPE_OF_STRUCT_CLASS_IN_IMPLEMENTS);
}
}
- WithClause withClause = node.withClause;
+ var withClause = node.withClause;
if (withClause != null) {
for (TypeName type in withClause.mixinTypes) {
checkSupertype(type, FfiCode.SUBTYPE_OF_FFI_CLASS_IN_WITH,
@@ -113,7 +113,7 @@
}
}
- if (inStruct && node.declaredElement.typeParameters.isNotEmpty) {
+ if (inStruct && node.declaredElement!.typeParameters.isNotEmpty) {
_errorReporter.reportErrorForNode(
FfiCode.GENERIC_STRUCT_SUBCLASS, node.name, [node.name]);
}
@@ -139,9 +139,9 @@
@override
void visitFunctionExpressionInvocation(FunctionExpressionInvocation node) {
- Element element = node?.staticElement;
+ var element = node.staticElement;
if (element is MethodElement) {
- Element enclosingElement = element?.enclosingElement;
+ var enclosingElement = element.enclosingElement;
if (enclosingElement is ExtensionElement) {
if (_isAllocatorExtension(enclosingElement) &&
element.name == _allocateExtensionMethodName) {
@@ -154,12 +154,14 @@
@override
void visitIndexExpression(IndexExpression node) {
- Element element = node?.staticElement;
- Element enclosingElement = element?.enclosingElement;
- if (enclosingElement is ExtensionElement) {
- if (_isNativeStructPointerExtension(enclosingElement)) {
- if (element.name == '[]') {
- _validateRefIndexed(node);
+ var element = node.staticElement;
+ if (element is MethodElement) {
+ var enclosingElement = element.enclosingElement;
+ if (enclosingElement is ExtensionElement) {
+ if (_isNativeStructPointerExtension(enclosingElement)) {
+ if (element.name == '[]') {
+ _validateRefIndexed(node);
+ }
}
}
}
@@ -167,7 +169,7 @@
@override
void visitMethodInvocation(MethodInvocation node) {
- Element element = node.methodName?.staticElement;
+ var element = node.methodName.staticElement;
if (element is MethodElement) {
Element enclosingElement = element.enclosingElement;
if (enclosingElement is ClassElement) {
@@ -190,7 +192,7 @@
}
}
} else if (element is FunctionElement) {
- Element enclosingElement = element?.enclosingElement;
+ var enclosingElement = element.enclosingElement;
if (enclosingElement is CompilationUnitElement) {
if (element.library.name == 'dart.ffi') {
if (element.name == 'sizeOf') {
@@ -204,12 +206,14 @@
@override
void visitPrefixedIdentifier(PrefixedIdentifier node) {
- Element element = node.staticElement;
- Element enclosingElement = element?.enclosingElement;
- if (enclosingElement is ExtensionElement) {
- if (_isNativeStructPointerExtension(enclosingElement)) {
- if (element.name == 'ref') {
- _validateRefPrefixedIdentifier(node);
+ var element = node.staticElement;
+ if (element != null) {
+ var enclosingElement = element.enclosingElement;
+ if (enclosingElement is ExtensionElement) {
+ if (_isNativeStructPointerExtension(enclosingElement)) {
+ if (element.name == 'ref') {
+ _validateRefPrefixedIdentifier(node);
+ }
}
}
}
@@ -218,12 +222,14 @@
@override
void visitPropertyAccess(PropertyAccess node) {
- Element element = node.propertyName.staticElement;
- Element enclosingElement = element?.enclosingElement;
- if (enclosingElement is ExtensionElement) {
- if (_isNativeStructPointerExtension(enclosingElement)) {
- if (element.name == 'ref') {
- _validateRefPropertyAccess(node);
+ var element = node.propertyName.staticElement;
+ if (element != null) {
+ var enclosingElement = element.enclosingElement;
+ if (enclosingElement is ExtensionElement) {
+ if (_isNativeStructPointerExtension(enclosingElement)) {
+ if (element.name == 'ref') {
+ _validateRefPropertyAccess(node);
+ }
}
}
}
@@ -234,14 +240,14 @@
/// `AllocatorAlloc`.
bool _isAllocatorExtension(Element element) =>
element.name == _allocatorExtensionName &&
- element.library.name == _dartFfiLibraryName;
+ element.library?.name == _dartFfiLibraryName;
/// Return `true` if the [typeName] is the name of a type from `dart:ffi`.
bool _isDartFfiClass(TypeName typeName) =>
_isDartFfiElement(typeName.name.staticElement);
/// Return `true` if the [element] is a class element from `dart:ffi`.
- bool _isDartFfiElement(Element element) {
+ bool _isDartFfiElement(Element? element) {
if (element is ConstructorElement) {
element = element.enclosingElement;
}
@@ -253,7 +259,7 @@
/// `DynamicLibraryExtension`.
bool _isDynamicLibraryExtension(Element element) =>
element.name == 'DynamicLibraryExtension' &&
- element.library.name == _dartFfiLibraryName;
+ element.library?.name == _dartFfiLibraryName;
bool _isEmptyStruct(ClassElement classElement) {
final fields = classElement.fields;
@@ -273,8 +279,10 @@
return structFieldCount == 0;
}
- bool _isHandle(Element element) =>
- element.name == 'Handle' && element.library.name == _dartFfiLibraryName;
+ bool _isHandle(Element? element) =>
+ element != null &&
+ element.name == 'Handle' &&
+ element.library?.name == _dartFfiLibraryName;
/// Returns `true` iff [nativeType] is a `ffi.NativeFunction<???>` type.
bool _isNativeFunctionInterfaceType(DartType nativeType) {
@@ -282,18 +290,19 @@
final element = nativeType.element;
if (element.library.name == _dartFfiLibraryName) {
return element.name == 'NativeFunction' &&
- nativeType.typeArguments?.length == 1;
+ nativeType.typeArguments.length == 1;
}
}
return false;
}
- bool _isNativeFunctionPointerExtension(Element element) =>
+ bool _isNativeFunctionPointerExtension(Element? element) =>
+ element != null &&
element.name == 'NativeFunctionPointer' &&
- element.library.name == _dartFfiLibraryName;
+ element.library?.name == _dartFfiLibraryName;
bool _isNativeStructPointerExtension(Element element) =>
- element.name == 'StructPointer' && element.library.name == 'dart.ffi';
+ element.name == 'StructPointer' && element.library?.name == 'dart.ffi';
/// Returns `true` iff [nativeType] is a `ffi.NativeType` type.
bool _isNativeTypeInterfaceType(DartType nativeType) {
@@ -322,8 +331,10 @@
}
/// Return `true` if the given [element] represents the class `Pointer`.
- bool _isPointer(Element element) =>
- element.name == 'Pointer' && element.library.name == _dartFfiLibraryName;
+ bool _isPointer(Element? element) =>
+ element != null &&
+ element.name == 'Pointer' &&
+ element.library?.name == _dartFfiLibraryName;
/// Returns `true` iff [nativeType] is a `ffi.Pointer<???>` type.
bool _isPointerInterfaceType(DartType nativeType) {
@@ -331,7 +342,7 @@
final element = nativeType.element;
if (element.library.name == _dartFfiLibraryName) {
return element.name == 'Pointer' &&
- nativeType.typeArguments?.length == 1;
+ nativeType.typeArguments.length == 1;
}
}
return false;
@@ -347,7 +358,7 @@
final superClassElement = superType.element;
if (superClassElement.library.name == _dartFfiLibraryName) {
return superClassElement.name == _structClassName &&
- nativeType.typeArguments?.isEmpty == true;
+ nativeType.typeArguments.isEmpty;
}
}
return false;
@@ -355,9 +366,9 @@
/// Return `true` if the [typeName] represents a subtype of `Struct`.
bool _isSubtypeOfStruct(TypeName typeName) {
- Element superType = typeName.name.staticElement;
+ var superType = typeName.name.staticElement;
if (superType is ClassElement) {
- bool isStruct(InterfaceType type) {
+ bool isStruct(InterfaceType? type) {
return type != null &&
type.element.name == _structClassName &&
type.element.library.name == _dartFfiLibraryName;
@@ -395,7 +406,7 @@
/// Validates that the given [nativeType] is a valid dart:ffi native type.
// TODO(https://dartbug.com/44747): Change to named arguments.
bool _isValidFfiNativeType(
- DartType nativeType, bool allowVoid, bool allowEmptyStruct) {
+ DartType? nativeType, bool allowVoid, bool allowEmptyStruct) {
if (nativeType is InterfaceType) {
// Is it a primitive integer/double type (or ffi.Void if we allow it).
final primitiveType = _primitiveNativeType(nativeType);
@@ -455,7 +466,7 @@
/// Return an indication of the Dart type associated with the [annotation].
_PrimitiveDartType _typeForAnnotation(Annotation annotation) {
- Element element = annotation.element;
+ var element = annotation.element;
if (element is ConstructorElement) {
String name = element.enclosingElement.name;
if (_primitiveIntegerNativeTypes.contains(name)) {
@@ -468,10 +479,11 @@
}
void _validateAllocate(FunctionExpressionInvocation node) {
- if (node.typeArgumentTypes.length != 1) {
+ final typeArgumentTypes = node.typeArgumentTypes;
+ if (typeArgumentTypes == null || typeArgumentTypes.length != 1) {
return;
}
- final DartType dartType = node.typeArgumentTypes[0];
+ final DartType dartType = typeArgumentTypes[0];
if (!_isValidFfiNativeType(dartType, true, true)) {
final AstNode errorNode = node;
_errorReporter.reportErrorForNode(
@@ -521,14 +533,14 @@
/// Validate the invocation of the instance method
/// `Pointer<T>.asFunction<F>()`.
void _validateAsFunction(MethodInvocation node, MethodElement element) {
- NodeList<TypeAnnotation> typeArguments = node.typeArguments?.arguments;
+ var typeArguments = node.typeArguments?.arguments;
if (typeArguments != null && typeArguments.length == 1) {
if (_validateTypeArgument(typeArguments[0], 'asFunction')) {
return;
}
}
- Expression target = node.realTarget;
- DartType targetType = target.staticType;
+ var target = node.realTarget!;
+ var targetType = target.staticType;
if (targetType is InterfaceType &&
_isPointer(targetType.element) &&
targetType.typeArguments.length == 1) {
@@ -545,8 +557,8 @@
return;
}
- final DartType TPrime = (T as InterfaceType).typeArguments[0];
- final DartType F = node.typeArgumentTypes[0];
+ final DartType TPrime = T.typeArguments[0];
+ final DartType F = node.typeArgumentTypes![0];
if (!_validateCompatibleFunctionTypes(F, TPrime)) {
_errorReporter.reportErrorForNode(
FfiCode.MUST_BE_A_SUBTYPE, node, [TPrime, F, 'asFunction']);
@@ -566,36 +578,32 @@
return false;
}
- final dartFType = dartType as FunctionType;
- final nativeFType = nativeType as FunctionType;
-
// We disallow any optional parameters.
- final int parameterCount = dartFType.normalParameterTypes.length;
- if (parameterCount != nativeFType.normalParameterTypes.length) {
+ final int parameterCount = dartType.normalParameterTypes.length;
+ if (parameterCount != nativeType.normalParameterTypes.length) {
return false;
}
// We disallow generic function types.
- if (dartFType.typeFormals.isNotEmpty ||
- nativeFType.typeFormals.isNotEmpty) {
+ if (dartType.typeFormals.isNotEmpty || nativeType.typeFormals.isNotEmpty) {
return false;
}
- if (dartFType.namedParameterTypes.isNotEmpty ||
- dartFType.optionalParameterTypes.isNotEmpty ||
- nativeFType.namedParameterTypes.isNotEmpty ||
- nativeFType.optionalParameterTypes.isNotEmpty) {
+ if (dartType.namedParameterTypes.isNotEmpty ||
+ dartType.optionalParameterTypes.isNotEmpty ||
+ nativeType.namedParameterTypes.isNotEmpty ||
+ nativeType.optionalParameterTypes.isNotEmpty) {
return false;
}
// Validate that the return types are compatible.
if (!_validateCompatibleNativeType(
- dartFType.returnType, nativeFType.returnType, false)) {
+ dartType.returnType, nativeType.returnType, false)) {
return false;
}
// Validate that the parameter types are compatible.
for (int i = 0; i < parameterCount; ++i) {
- if (!_validateCompatibleNativeType(dartFType.normalParameterTypes[i],
- nativeFType.normalParameterTypes[i], true)) {
+ if (!_validateCompatibleNativeType(dartType.normalParameterTypes[i],
+ nativeType.normalParameterTypes[i], true)) {
return false;
}
}
@@ -633,8 +641,7 @@
}
void _validateElementAt(MethodInvocation node) {
- Expression target = node.realTarget;
- DartType targetType = target?.staticType;
+ var targetType = node.realTarget?.staticType;
if (targetType is InterfaceType &&
_isPointer(targetType.element) &&
targetType.typeArguments.length == 1) {
@@ -658,12 +665,12 @@
}
VariableDeclarationList fields = node.fields;
NodeList<Annotation> annotations = node.metadata;
- TypeAnnotation fieldType = fields.type;
+ var fieldType = fields.type;
if (fieldType == null) {
_errorReporter.reportErrorForNode(
FfiCode.MISSING_FIELD_TYPE_IN_STRUCT, fields.variables[0].name);
} else {
- DartType declaredType = fieldType.type;
+ DartType declaredType = fieldType.type!;
if (declaredType.isDartCoreInt) {
_validateAnnotations(fieldType, annotations, _PrimitiveDartType.int);
} else if (declaredType.isDartCoreDouble) {
@@ -699,7 +706,7 @@
return;
}
- final DartType T = node.typeArgumentTypes[0];
+ final DartType T = node.typeArgumentTypes![0];
if (!_isValidFfiNativeFunctionType(T)) {
_errorReporter.reportErrorForNode(
FfiCode.MUST_BE_A_NATIVE_FUNCTION_TYPE, node, [T, 'fromFunction']);
@@ -707,7 +714,7 @@
}
Expression f = node.argumentList.arguments[0];
- DartType FT = f.staticType;
+ DartType FT = f.staticType!;
if (!_validateCompatibleFunctionTypes(FT, T)) {
_errorReporter.reportErrorForNode(
FfiCode.MUST_BE_A_SUBTYPE, f, [f.staticType, T, 'fromFunction']);
@@ -730,7 +737,7 @@
} else {
Expression e = node.argumentList.arguments[1];
// TODO(brianwilkerson) Validate that `e` is a constant expression.
- if (!_validateCompatibleNativeType(e.staticType, R, true)) {
+ if (!_validateCompatibleNativeType(e.staticType!, R, true)) {
_errorReporter.reportErrorForNode(
FfiCode.MUST_BE_A_SUBTYPE, e, [e.staticType, R, 'fromFunction']);
}
@@ -740,25 +747,24 @@
/// Validate the invocation of the instance method
/// `DynamicLibrary.lookupFunction<S, F>()`.
void _validateLookupFunction(MethodInvocation node) {
- final NodeList<TypeAnnotation> typeArguments =
- node.typeArguments?.arguments;
+ final typeArguments = node.typeArguments?.arguments;
if (typeArguments?.length != 2) {
// There are other diagnostics reported against the invocation and the
// diagnostics generated below might be inaccurate, so don't report them.
return;
}
- final List<DartType> argTypes = node.typeArgumentTypes;
+ final List<DartType> argTypes = node.typeArgumentTypes!;
final DartType S = argTypes[0];
final DartType F = argTypes[1];
if (!_isValidFfiNativeFunctionType(S)) {
- final AstNode errorNode = typeArguments[0];
+ final AstNode errorNode = typeArguments![0];
_errorReporter.reportErrorForNode(FfiCode.MUST_BE_A_NATIVE_FUNCTION_TYPE,
errorNode, [S, 'lookupFunction']);
return;
}
if (!_validateCompatibleFunctionTypes(F, S)) {
- final AstNode errorNode = typeArguments[1];
+ final AstNode errorNode = typeArguments![1];
_errorReporter.reportErrorForNode(
FfiCode.MUST_BE_A_SUBTYPE, errorNode, [S, F, 'lookupFunction']);
}
@@ -775,7 +781,7 @@
}
void _validateRefIndexed(IndexExpression node) {
- DartType targetType = node.realTarget?.staticType;
+ var targetType = node.realTarget.staticType;
if (!_isValidFfiNativeType(targetType, false, true)) {
final AstNode errorNode = node;
_errorReporter.reportErrorForNode(
@@ -786,7 +792,7 @@
/// Validate the invocation of the extension method
/// `Pointer<T extends Struct>.ref`.
void _validateRefPrefixedIdentifier(PrefixedIdentifier node) {
- DartType targetType = node.prefix.staticType;
+ var targetType = node.prefix.staticType!;
if (!_isValidFfiNativeType(targetType, false, true)) {
final AstNode errorNode = node;
_errorReporter.reportErrorForNode(
@@ -795,7 +801,7 @@
}
void _validateRefPropertyAccess(PropertyAccess node) {
- DartType targetType = node.realTarget?.staticType;
+ var targetType = node.realTarget.staticType;
if (!_isValidFfiNativeType(targetType, false, true)) {
final AstNode errorNode = node;
_errorReporter.reportErrorForNode(
@@ -804,10 +810,11 @@
}
void _validateSizeOf(MethodInvocation node) {
- if (node.typeArgumentTypes.length != 1) {
+ final typeArgumentTypes = node.typeArgumentTypes;
+ if (typeArgumentTypes == null || typeArgumentTypes.length != 1) {
return;
}
- final DartType T = node.typeArgumentTypes[0];
+ final DartType T = typeArgumentTypes[0];
if (!_isValidFfiNativeType(T, true, true)) {
final AstNode errorNode = node;
_errorReporter.reportErrorForNode(
diff --git a/pkg/analyzer/lib/src/generated/interner.dart b/pkg/analyzer/lib/src/generated/interner.dart
index bef468c..dbba6bc 100644
--- a/pkg/analyzer/lib/src/generated/interner.dart
+++ b/pkg/analyzer/lib/src/generated/interner.dart
@@ -17,7 +17,7 @@
@override
String intern(String string) {
- String original = _table[string];
+ var original = _table[string];
if (original == null) {
_table[string] = string;
return string;
diff --git a/pkg/analyzer/lib/src/generated/java_core.dart b/pkg/analyzer/lib/src/generated/java_core.dart
index d5457b2..75fa4d3 100644
--- a/pkg/analyzer/lib/src/generated/java_core.dart
+++ b/pkg/analyzer/lib/src/generated/java_core.dart
@@ -8,14 +8,14 @@
/// format('{0} are you {1}ing?', 'How', 'do') = 'How are you doing?'
/// format('{0} are you {1}ing?', 'What', 'read') = 'What are you reading?'
String format(String pattern,
- [Object arg0,
- Object arg1,
- Object arg2,
- Object arg3,
- Object arg4,
- Object arg5,
- Object arg6,
- Object arg7]) {
+ [Object? arg0,
+ Object? arg1,
+ Object? arg2,
+ Object? arg3,
+ Object? arg4,
+ Object? arg5,
+ Object? arg6,
+ Object? arg7]) {
// TODO(rnystrom): This is not used by analyzer, but is called by
// analysis_server. Move this code there and remove it from here.
return formatList(pattern, [arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7]);
@@ -27,18 +27,16 @@
/// format('{0} are you {1}ing?', ['How', 'do']) = 'How are you doing?'
/// format('{0} are you {1}ing?', ['What', 'read']) =
/// 'What are you reading?'
-String formatList(String pattern, List<Object> arguments) {
+String formatList(String pattern, List<Object?>? arguments) {
if (arguments == null || arguments.isEmpty) {
assert(!pattern.contains(RegExp(r'\{(\d+)\}')),
'Message requires arguments, but none were provided.');
return pattern;
}
return pattern.replaceAllMapped(RegExp(r'\{(\d+)\}'), (match) {
- String indexStr = match.group(1);
+ String indexStr = match.group(1)!;
int index = int.parse(indexStr);
- Object arg = arguments[index];
- assert(arg != null);
- return arg?.toString();
+ return arguments[index].toString();
});
}
diff --git a/pkg/analyzer/lib/src/generated/java_engine.dart b/pkg/analyzer/lib/src/generated/java_engine.dart
index c88230d..4457470 100644
--- a/pkg/analyzer/lib/src/generated/java_engine.dart
+++ b/pkg/analyzer/lib/src/generated/java_engine.dart
@@ -11,7 +11,7 @@
typedef Predicate<E> = bool Function(E argument);
class FileNameUtilities {
- static String getExtension(String fileName) {
+ static String getExtension(String? fileName) {
if (fileName == null) {
return "";
}
@@ -141,11 +141,11 @@
}
static String intern(String string) => INTERNER.intern(string);
- static bool isEmpty(String s) {
+ static bool isEmpty(String? s) {
return s == null || s.isEmpty;
}
- static bool isTagName(String s) {
+ static bool isTagName(String? s) {
if (s == null || s.isEmpty) {
return false;
}
@@ -171,7 +171,7 @@
///
/// @param names the names to be printed
/// @return the result of printing the names
- static String printListOfQuotedNames(List<String> names) {
+ static String printListOfQuotedNames(List<String>? names) {
if (names == null) {
throw ArgumentError("The list must not be null");
}
@@ -237,7 +237,7 @@
str.codeUnitAt(start + 5) == c6;
}
- static String substringBefore(String str, String separator) {
+ static String? substringBefore(String? str, String? separator) {
if (str == null || str.isEmpty) {
return str;
}
diff --git a/pkg/analyzer/lib/src/generated/java_io.dart b/pkg/analyzer/lib/src/generated/java_io.dart
index efd679e7..3ab4863 100644
--- a/pkg/analyzer/lib/src/generated/java_io.dart
+++ b/pkg/analyzer/lib/src/generated/java_io.dart
@@ -11,7 +11,7 @@
static path.Context pathContext = path.context;
static final String separator = Platform.pathSeparator;
static final int separatorChar = Platform.pathSeparator.codeUnitAt(0);
- String _path;
+ late final String _path;
JavaFile(String path) {
_path = path;
}
@@ -53,14 +53,14 @@
}
String getName() => path.context.basename(_path);
- String getParent() {
+ String? getParent() {
var result = path.context.dirname(_path);
// "." or "/" or "C:\"
if (result.length < 4) return null;
return result;
}
- JavaFile getParentFile() {
+ JavaFile? getParentFile() {
var parent = getParent();
if (parent == null) return null;
return JavaFile(parent);
diff --git a/pkg/analyzer/lib/src/generated/migration.dart b/pkg/analyzer/lib/src/generated/migration.dart
index 93d82cc..6bd94fa 100644
--- a/pkg/analyzer/lib/src/generated/migration.dart
+++ b/pkg/analyzer/lib/src/generated/migration.dart
@@ -18,7 +18,7 @@
///
/// If the condition is known to evaluate to `true` or `false`, then the value
/// it is known to evaluate to is returned. Otherwise `null` is returned.
- bool getConditionalKnownValue(AstNode node);
+ bool? getConditionalKnownValue(AstNode node);
/// Called after the resolver has determined the type of an expression node.
/// Should return the type that the expression has after migrations have been
@@ -38,6 +38,6 @@
/// Called when the resolver starts or stops making use of a [FlowAnalysis]
/// instance.
void setFlowAnalysis(
- FlowAnalysis<AstNode, Statement, Expression, PromotableElement, DartType>
+ FlowAnalysis<AstNode, Statement, Expression, PromotableElement, DartType>?
flowAnalysis);
}
diff --git a/pkg/analyzer/lib/src/generated/parser.dart b/pkg/analyzer/lib/src/generated/parser.dart
index 9b05a6f..ef73ade 100644
--- a/pkg/analyzer/lib/src/generated/parser.dart
+++ b/pkg/analyzer/lib/src/generated/parser.dart
@@ -18,7 +18,6 @@
import 'package:analyzer/src/dart/scanner/scanner.dart';
import 'package:analyzer/src/fasta/ast_builder.dart';
import 'package:analyzer/src/generated/source.dart';
-import 'package:meta/meta.dart';
export 'package:analyzer/src/dart/ast/utilities.dart' show ResolutionCopier;
export 'package:analyzer/src/dart/error/syntactic_errors.dart';
@@ -26,16 +25,16 @@
/// A simple data-holder for a method that needs to return multiple values.
class CommentAndMetadata {
/// The documentation comment that was parsed, or `null` if none was given.
- final Comment comment;
+ final Comment? comment;
/// The metadata that was parsed, or `null` if none was given.
- final List<Annotation> metadata;
+ final List<Annotation>? metadata;
/// Initialize a newly created holder with the given [comment] and [metadata].
CommentAndMetadata(this.comment, this.metadata);
/// Return `true` if some metadata was parsed.
- bool get hasMetadata => metadata != null && metadata.isNotEmpty;
+ bool get hasMetadata => metadata != null && metadata!.isNotEmpty;
}
/// A simple data-holder for a method that needs to return multiple values.
@@ -54,35 +53,35 @@
class Modifiers {
/// The token representing the keyword 'abstract', or `null` if the keyword
/// was not found.
- Token abstractKeyword;
+ Token? abstractKeyword;
/// The token representing the keyword 'const', or `null` if the keyword was
/// not found.
- Token constKeyword;
+ Token? constKeyword;
/// The token representing the keyword 'covariant', or `null` if the keyword
/// was not found.
- Token covariantKeyword;
+ Token? covariantKeyword;
/// The token representing the keyword 'external', or `null` if the keyword
/// was not found.
- Token externalKeyword;
+ Token? externalKeyword;
/// The token representing the keyword 'factory', or `null` if the keyword was
/// not found.
- Token factoryKeyword;
+ Token? factoryKeyword;
/// The token representing the keyword 'final', or `null` if the keyword was
/// not found.
- Token finalKeyword;
+ Token? finalKeyword;
/// The token representing the keyword 'static', or `null` if the keyword was
/// not found.
- Token staticKeyword;
+ Token? staticKeyword;
/// The token representing the keyword 'var', or `null` if the keyword was not
/// found.
- Token varKeyword;
+ Token? varKeyword;
@override
String toString() {
@@ -100,7 +99,7 @@
/// If the given [keyword] is not `null`, append it to the given [builder],
/// prefixing it with a space if [needsSpace] is `true`. Return `true` if
/// subsequent keywords need to be prefixed with a space.
- bool _appendKeyword(StringBuffer buffer, bool needsSpace, Token keyword) {
+ bool _appendKeyword(StringBuffer buffer, bool needsSpace, Token? keyword) {
if (keyword != null) {
if (needsSpace) {
buffer.writeCharCode(0x20);
@@ -114,17 +113,17 @@
/// A parser used to parse tokens into an AST structure.
class Parser {
- Token currentToken;
+ late Token currentToken;
/// The fasta parser being wrapped.
- /*late final*/ fasta.Parser fastaParser;
+ late final fasta.Parser fastaParser;
/// The builder which creates the analyzer AST data structures
/// based on the Fasta parser.
final AstBuilder astBuilder;
Parser(Source source, AnalysisErrorListener errorListener,
- {@required FeatureSet featureSet, bool allowNativeClause = true})
+ {required FeatureSet featureSet, bool allowNativeClause = true})
: astBuilder = AstBuilder(
ErrorReporter(
errorListener,
@@ -160,12 +159,12 @@
/// Append the given token to the end of the token stream,
/// and update the token's offset.
void appendToken(Token token, Token newToken) {
- while (!token.next.isEof) {
- token = token.next;
+ while (!token.next!.isEof) {
+ token = token.next!;
}
newToken
..offset = token.end
- ..setNext(token.next);
+ ..setNext(token.next!);
token.setNext(newToken);
}
@@ -176,7 +175,7 @@
appendToken(currentToken, SimpleToken(TokenType.CLOSE_PAREN, 0));
currentToken = fastaParser
.parseArguments(fastaParser.syntheticPreviousToken(currentToken))
- .next;
+ .next!;
var invocation = astBuilder.pop() as MethodInvocation;
return invocation.argumentList.arguments[0];
}
@@ -205,7 +204,7 @@
Configuration parseConfiguration() {
currentToken = fastaParser
.parseConditionalUri(fastaParser.syntheticPreviousToken(currentToken))
- .next;
+ .next!;
return astBuilder.pop() as Configuration;
}
@@ -224,7 +223,7 @@
DottedName parseDottedName() {
currentToken = fastaParser
.parseDottedName(fastaParser.syntheticPreviousToken(currentToken))
- .next;
+ .next!;
return astBuilder.pop() as DottedName;
}
@@ -238,7 +237,7 @@
Expression parseExpression2() {
currentToken = fastaParser
.parseExpression(fastaParser.syntheticPreviousToken(currentToken))
- .next;
+ .next!;
return astBuilder.pop() as Expression;
}
@@ -251,7 +250,7 @@
inFunctionType
? fasta.MemberKind.GeneralizedFunctionType
: fasta.MemberKind.NonStaticMethod)
- .next;
+ .next!;
return astBuilder.pop() as FormalParameterList;
}
@@ -284,7 +283,7 @@
currentToken = fastaParser
.parsePrimary(fastaParser.syntheticPreviousToken(currentToken),
fasta.IdentifierContext.expression)
- .next;
+ .next!;
return astBuilder.pop() as Expression;
}
@@ -306,7 +305,7 @@
Statement parseStatement2() {
currentToken = fastaParser
.parseStatement(fastaParser.syntheticPreviousToken(currentToken))
- .next;
+ .next!;
return astBuilder.pop() as Statement;
}
@@ -329,7 +328,7 @@
currentToken = fasta
.computeType(previous, true, !inExpression)
.parseType(previous, fastaParser)
- .next;
+ .next!;
return astBuilder.pop() as TypeAnnotation;
}
@@ -338,7 +337,7 @@
currentToken = fasta
.computeTypeParamOrArg(previous)
.parseArguments(previous, fastaParser)
- .next;
+ .next!;
return astBuilder.pop() as TypeArgumentList;
}
@@ -347,7 +346,7 @@
currentToken = fasta
.computeType(previous, true, !inExpression)
.parseType(previous, fastaParser)
- .next;
+ .next!;
return astBuilder.pop() as TypeName;
}
@@ -355,18 +354,18 @@
currentToken = SyntheticBeginToken(TokenType.LT, 0)
..endGroup = SyntheticToken(TokenType.GT, 0)
..setNext(currentToken);
- appendToken(currentToken, currentToken.endGroup);
- TypeParameterList typeParams = parseTypeParameterList();
+ appendToken(currentToken, currentToken.endGroup!);
+ TypeParameterList typeParams = parseTypeParameterList()!;
return typeParams.typeParameters[0];
}
- TypeParameterList parseTypeParameterList() {
+ TypeParameterList? parseTypeParameterList() {
Token token = fastaParser.syntheticPreviousToken(currentToken);
currentToken = fasta
.computeTypeParamOrArg(token, true)
.parseVariables(token, fastaParser)
- .next;
- return astBuilder.pop() as TypeParameterList;
+ .next!;
+ return astBuilder.pop() as TypeParameterList?;
}
Expression parseUnaryExpression() => parseExpression2();
diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart
index 949d7d3..14bea1b 100644
--- a/pkg/analyzer/lib/src/generated/resolver.dart
+++ b/pkg/analyzer/lib/src/generated/resolver.dart
@@ -82,7 +82,7 @@
: _resolver = resolver,
_typeSystem = resolver.typeSystem;
- BodyInferenceContext get bodyContext {
+ BodyInferenceContext? get bodyContext {
if (_bodyContexts.isNotEmpty) {
return _bodyContexts.last;
} else {
@@ -114,7 +114,7 @@
}
/// Clear the type information associated with [node].
- static void clearType(AstNode node) {
+ static void clearType(AstNode? node) {
node?.setProperty(_typeProperty, null);
}
@@ -126,11 +126,12 @@
/// You can use [TypeSystemImpl.upperBoundForType] or
/// [TypeSystemImpl.lowerBoundForType] if you would prefer a known type
/// that represents the bound of the context type.
- static DartType getContext(AstNode node) => node?.getProperty(_typeProperty);
+ static DartType? getContext(AstNode? node) =>
+ node?.getProperty(_typeProperty);
/// Attach contextual type information [type] to [node] for use during
/// inference.
- static void setType(AstNode node, DartType type) {
+ static void setType(AstNode? node, DartType? type) {
if (type == null || type.isDynamic) {
clearType(node);
} else {
@@ -156,77 +157,78 @@
final MigratableAstInfoProvider _migratableAstInfoProvider;
- final MigrationResolutionHooks migrationResolutionHooks;
+ final MigrationResolutionHooks? migrationResolutionHooks;
/// Helper for checking expression that should have the `bool` type.
- BoolExpressionVerifier boolExpressionVerifier;
+ late final BoolExpressionVerifier boolExpressionVerifier;
/// Helper for checking potentially nullable dereferences.
- NullableDereferenceVerifier nullableDereferenceVerifier;
+ late final NullableDereferenceVerifier nullableDereferenceVerifier;
/// Helper for extension method resolution.
- ExtensionMemberResolver extensionResolver;
+ late final ExtensionMemberResolver extensionResolver;
/// Helper for resolving properties on types.
- TypePropertyResolver typePropertyResolver;
+ late final TypePropertyResolver typePropertyResolver;
/// Helper for resolving [ListLiteral] and [SetOrMapLiteral].
- TypedLiteralResolver _typedLiteralResolver;
+ late final TypedLiteralResolver _typedLiteralResolver;
- AssignmentExpressionResolver _assignmentExpressionResolver;
- BinaryExpressionResolver _binaryExpressionResolver;
- FunctionExpressionInvocationResolver _functionExpressionInvocationResolver;
- FunctionExpressionResolver _functionExpressionResolver;
- ForResolver _forResolver;
- PostfixExpressionResolver _postfixExpressionResolver;
- PrefixedIdentifierResolver _prefixedIdentifierResolver;
- PrefixExpressionResolver _prefixExpressionResolver;
- VariableDeclarationResolver _variableDeclarationResolver;
- YieldStatementResolver _yieldStatementResolver;
+ late final AssignmentExpressionResolver _assignmentExpressionResolver;
+ late final BinaryExpressionResolver _binaryExpressionResolver;
+ late final FunctionExpressionInvocationResolver
+ _functionExpressionInvocationResolver;
+ late final FunctionExpressionResolver _functionExpressionResolver;
+ late final ForResolver _forResolver;
+ late final PostfixExpressionResolver _postfixExpressionResolver;
+ late final PrefixedIdentifierResolver _prefixedIdentifierResolver;
+ late final PrefixExpressionResolver _prefixExpressionResolver;
+ late final VariableDeclarationResolver _variableDeclarationResolver;
+ late final YieldStatementResolver _yieldStatementResolver;
- NullSafetyDeadCodeVerifier nullSafetyDeadCodeVerifier;
+ late final NullSafetyDeadCodeVerifier nullSafetyDeadCodeVerifier;
- InvocationInferenceHelper inferenceHelper;
+ late final InvocationInferenceHelper inferenceHelper;
/// The object used to resolve the element associated with the current node.
- ElementResolver elementResolver;
+ late final ElementResolver elementResolver;
/// The object used to compute the type associated with the current node.
- StaticTypeAnalyzer typeAnalyzer;
+ late final StaticTypeAnalyzer typeAnalyzer;
/// The type system in use during resolution.
final TypeSystemImpl typeSystem;
/// The class declaration representing the class containing the current node,
/// or `null` if the current node is not contained in a class.
- ClassDeclaration _enclosingClassDeclaration;
+ ClassDeclaration? _enclosingClassDeclaration;
/// The function type alias representing the function type containing the
/// current node, or `null` if the current node is not contained in a function
/// type alias.
- FunctionTypeAlias _enclosingFunctionTypeAlias;
+ FunctionTypeAlias? _enclosingFunctionTypeAlias;
/// The element representing the function containing the current node, or
/// `null` if the current node is not contained in a function.
- ExecutableElement _enclosingFunction;
+ ExecutableElement? _enclosingFunction;
/// The mixin declaration representing the class containing the current node,
/// or `null` if the current node is not contained in a mixin.
- MixinDeclaration _enclosingMixinDeclaration;
+ MixinDeclaration? _enclosingMixinDeclaration;
/// The helper for tracking if the current location has access to `this`.
final ThisAccessTracker _thisAccessTracker = ThisAccessTracker.unit();
- InferenceContext inferenceContext;
+ late final InferenceContext inferenceContext;
/// If a class, or mixin, is being resolved, the type of the class.
/// Otherwise `null`.
- DartType _thisType;
+ DartType? _thisType;
/// The object keeping track of which elements have had their types promoted.
- TypePromotionManager _promoteManager;
+ late final TypePromotionManager _promoteManager;
- final FlowAnalysisHelper flowAnalysis;
+ final FlowAnalysisHelper? flowAnalysis;
/// A comment before a function should be resolved in the context of the
/// function. But when we incrementally resolve a comment, we don't want to
@@ -238,14 +240,14 @@
/// The type of the expression of the immediately enclosing [SwitchStatement],
/// or `null` if not in a [SwitchStatement].
- DartType _enclosingSwitchStatementExpressionType;
+ DartType? _enclosingSwitchStatementExpressionType;
/// Stack of expressions which we have not yet finished visiting, that should
/// terminate a null-shorting expression.
///
/// The stack contains a `null` sentinel as its first entry so that it is
/// always safe to use `.last` to examine the top of the stack.
- final List<Expression> _unfinishedNullShorts = [null];
+ final List<Expression?> _unfinishedNullShorts = [null];
/// Initialize a newly created visitor to resolve the nodes in an AST node.
///
@@ -267,10 +269,10 @@
Source source,
TypeProvider typeProvider,
AnalysisErrorListener errorListener,
- {FeatureSet featureSet,
- Scope nameScope,
+ {FeatureSet? featureSet,
+ Scope? nameScope,
bool reportConstEvaluationErrors = true,
- FlowAnalysisHelper flowAnalysisHelper})
+ FlowAnalysisHelper? flowAnalysisHelper})
: this._(
inheritanceManager,
definingLibrary,
@@ -294,11 +296,11 @@
TypeProvider typeProvider,
AnalysisErrorListener errorListener,
FeatureSet featureSet,
- Scope nameScope,
+ Scope? nameScope,
bool reportConstEvaluationErrors,
this.flowAnalysis,
this._migratableAstInfoProvider,
- MigrationResolutionHooks migrationResolutionHooks)
+ MigrationResolutionHooks? migrationResolutionHooks)
: _featureSet = featureSet,
migrationResolutionHooks = migrationResolutionHooks,
super(definingLibrary, source, typeProvider as TypeProviderImpl,
@@ -377,12 +379,12 @@
/// or `null` if the current node is not contained in a function.
///
/// @return the element representing the function containing the current node
- ExecutableElement get enclosingFunction => _enclosingFunction;
+ ExecutableElement? get enclosingFunction => _enclosingFunction;
/// Return the object providing promoted or declared types of variables.
LocalVariableTypeProvider get localVariableTypeProvider {
if (flowAnalysis != null) {
- return flowAnalysis.localVariableTypeProvider;
+ return flowAnalysis!.localVariableTypeProvider;
} else {
return _promoteManager.localVariableTypeProvider;
}
@@ -400,7 +402,7 @@
/// extended type, or promoted.
///
/// Otherwise `null`.
- DartType get thisType {
+ DartType? get thisType {
return _thisType;
}
@@ -409,11 +411,11 @@
_featureSet.isEnabled(Feature.non_nullable);
void checkForBodyMayCompleteNormally({
- @required DartType returnType,
- @required FunctionBody body,
- @required AstNode errorNode,
+ required DartType? returnType,
+ required FunctionBody body,
+ required AstNode errorNode,
}) {
- if (!flowAnalysis.flow.isReachable) {
+ if (!flowAnalysis!.flow!.isReachable) {
return;
}
@@ -449,7 +451,7 @@
void checkReadOfNotAssignedLocalVariable(
SimpleIdentifier node,
- Element element,
+ Element? element,
) {
if (flowAnalysis?.flow == null) {
return;
@@ -460,9 +462,9 @@
}
if (element is VariableElement) {
- var assigned =
- flowAnalysis.isDefinitelyAssigned(node, element as PromotableElement);
- var unassigned = flowAnalysis.isDefinitelyUnassigned(node, element);
+ var assigned = flowAnalysis!
+ .isDefinitelyAssigned(node, element as PromotableElement);
+ var unassigned = flowAnalysis!.isDefinitelyUnassigned(node, element);
if (element.isLate) {
if (unassigned) {
@@ -508,8 +510,8 @@
///
/// @param expression the expression with which the element is associated
/// @return the element associated with the given expression
- VariableElement getOverridableStaticElement(Expression expression) {
- Element element;
+ VariableElement? getOverridableStaticElement(Expression expression) {
+ Element? element;
if (expression is SimpleIdentifier) {
element = expression.staticElement;
} else if (expression is PrefixedIdentifier) {
@@ -527,8 +529,8 @@
///
/// Implements `16.35 Lexical Lookup` from the language specification.
LexicalLookupResult lexicalLookup({
- @required SimpleIdentifier node,
- @required bool setter,
+ required SimpleIdentifier node,
+ required bool setter,
}) {
return LexicalLookup(this).perform(node: node, setter: setter);
}
@@ -541,7 +543,7 @@
if (identical(_unfinishedNullShorts.last, node)) {
do {
_unfinishedNullShorts.removeLast();
- flowAnalysis.flow.nullAwareAccess_end();
+ flowAnalysis!.flow!.nullAwareAccess_end();
} while (identical(_unfinishedNullShorts.last, node));
if (node is! CascadeExpression && !discardType) {
node.staticType = typeSystem.makeNullable(node.staticType as TypeImpl);
@@ -570,8 +572,8 @@
/// Set information about enclosing declarations.
void prepareEnclosingDeclarations({
- ClassElement enclosingClassElement,
- ExecutableElement enclosingExecutableElement,
+ ClassElement? enclosingClassElement,
+ ExecutableElement? enclosingExecutableElement,
}) {
_enclosingClassDeclaration = null;
enclosingClass = enclosingClassElement;
@@ -607,12 +609,12 @@
}
if (parent is ClassDeclaration) {
- forClassElement(parent.declaredElement);
+ forClassElement(parent.declaredElement!);
return true;
}
if (parent is MixinDeclaration) {
- forClassElement(parent.declaredElement);
+ forClassElement(parent.declaredElement!);
return true;
}
@@ -622,8 +624,8 @@
/// Resolve LHS [node] of an assignment, an explicit [AssignmentExpression],
/// or implicit [PrefixExpression] or [PostfixExpression].
PropertyElementResolverResult resolveForWrite({
- @required AstNode node,
- @required bool hasRead,
+ required AstNode node,
+ required bool hasRead,
}) {
if (node is IndexExpression) {
node.target?.accept(this);
@@ -641,7 +643,7 @@
return result;
} else if (node is PrefixedIdentifier) {
- node.prefix?.accept(this);
+ node.prefix.accept(this);
var resolver = PropertyElementResolver(this);
return resolver.resolvePrefixedIdentifier(
@@ -683,13 +685,13 @@
}
/// Visit the given [comment] if it is not `null`.
- void safelyVisitComment(Comment comment) {
+ void safelyVisitComment(Comment? comment) {
if (comment != null) {
super.visitComment(comment);
}
}
- void setReadElement(Expression node, Element element) {
+ void setReadElement(Expression node, Element? element) {
DartType readType = DynamicTypeImpl.instance;
if (node is IndexExpression) {
if (element is MethodElement) {
@@ -725,7 +727,7 @@
_thisType = thisType;
}
- void setWriteElement(Expression node, Element element) {
+ void setWriteElement(Expression node, Element? element) {
DartType writeType = DynamicTypeImpl.instance;
if (node is IndexExpression) {
if (element is MethodElement) {
@@ -796,8 +798,9 @@
/// If in a legacy library, return the legacy view on the [element].
/// Otherwise, return the original element.
- T toLegacyElement<T extends Element>(T element) {
+ T toLegacyElement<T extends Element?>(T element) {
if (_isNonNullableByDefault) return element;
+ if (element == null) return element;
return Member.legacy(element) as T;
}
@@ -821,7 +824,7 @@
@override
void visitArgumentList(ArgumentList node, {bool isIdentical = false}) {
- DartType callerType = InferenceContext.getContext(node);
+ var callerType = InferenceContext.getContext(node);
NodeList<Expression> arguments = node.arguments;
if (callerType is FunctionType) {
Map<String, DartType> namedParameterTypes =
@@ -839,9 +842,9 @@
Iterable<Expression> named =
arguments.skipWhile((l) => l is! NamedExpression);
var parent = node.parent;
- DartType targetType;
- Element methodElement;
- DartType invocationContext;
+ DartType? targetType;
+ Element? methodElement;
+ DartType? invocationContext;
if (parent is MethodInvocation) {
targetType = parent.realTarget?.staticType;
methodElement = parent.methodName.staticElement;
@@ -853,10 +856,15 @@
// setup correctly with inference.
int index = 0;
for (Expression argument in required) {
- InferenceContext.setType(
- argument,
- typeSystem.refineNumericInvocationContext(targetType, methodElement,
- invocationContext, normalParameterTypes[index++]));
+ var parameterType = normalParameterTypes[index++];
+ if (targetType != null) {
+ InferenceContext.setType(
+ argument,
+ typeSystem.refineNumericInvocationContext(
+ targetType, methodElement, invocationContext, parameterType));
+ } else {
+ InferenceContext.setType(argument, parameterType);
+ }
}
index = 0;
for (Expression argument in optional) {
@@ -865,7 +873,7 @@
for (Expression argument in named) {
if (argument is NamedExpression) {
- DartType type = namedParameterTypes[argument.name.label.name];
+ var type = namedParameterTypes[argument.name.label.name];
if (type != null) {
InferenceContext.setType(argument, type);
}
@@ -878,14 +886,14 @@
if (isIdentical && length > 1 && i == 1) {
var firstArg = arguments[0];
flowAnalysis?.flow
- ?.equalityOp_rightBegin(firstArg, firstArg.staticType);
+ ?.equalityOp_rightBegin(firstArg, firstArg.staticType!);
}
arguments[i].accept(this);
}
if (isIdentical && length > 1) {
var secondArg = arguments[1];
- flowAnalysis?.flow
- ?.equalityOp_end(node.parent, secondArg, secondArg.staticType);
+ flowAnalysis?.flow?.equalityOp_end(
+ node.parent as Expression, secondArg, secondArg.staticType!);
}
node.accept(elementResolver);
node.accept(typeAnalyzer);
@@ -901,7 +909,7 @@
void visitAssertInitializer(AssertInitializer node) {
InferenceContext.setType(node.condition, typeProvider.boolType);
flowAnalysis?.flow?.assert_begin();
- node.condition?.accept(this);
+ node.condition.accept(this);
boolExpressionVerifier.checkForNonBoolExpression(
node.condition,
errorCode: CompileTimeErrorCode.NON_BOOL_EXPRESSION,
@@ -915,7 +923,7 @@
void visitAssertStatement(AssertStatement node) {
InferenceContext.setType(node.condition, typeProvider.boolType);
flowAnalysis?.flow?.assert_begin();
- node.condition?.accept(this);
+ node.condition.accept(this);
boolExpressionVerifier.checkForNonBoolExpression(
node.condition,
errorCode: CompileTimeErrorCode.NON_BOOL_EXPRESSION,
@@ -932,7 +940,7 @@
@override
void visitAwaitExpression(AwaitExpression node) {
- DartType contextType = InferenceContext.getContext(node);
+ var contextType = InferenceContext.getContext(node);
if (contextType != null) {
var futureUnion = _createFutureOr(contextType);
InferenceContext.setType(node.expression, futureUnion);
@@ -981,7 +989,7 @@
node.target.accept(this);
if (node.isNullAware && flowAnalysis != null) {
- flowAnalysis.flow.nullAwareAccess_rightBegin(
+ flowAnalysis!.flow!.nullAwareAccess_rightBegin(
node.target, node.target.staticType ?? typeProvider.dynamicType);
_unfinishedNullShorts.add(node.nullShortingTermination);
}
@@ -999,12 +1007,12 @@
//
// Resolve the metadata in the library scope.
//
- node.metadata?.accept(this);
+ node.metadata.accept(this);
_enclosingClassDeclaration = node;
//
// Continue the class resolution.
//
- ClassElement outerType = enclosingClass;
+ var outerType = enclosingClass;
try {
enclosingClass = node.declaredElement;
_thisType = enclosingClass?.thisType;
@@ -1020,7 +1028,7 @@
@override
void visitComment(Comment node) {
- AstNode parent = node.parent;
+ var parent = node.parent;
if (parent is FunctionDeclaration ||
parent is FunctionTypeAlias ||
parent is ConstructorDeclaration) {
@@ -1051,7 +1059,7 @@
} else if (parent is MethodDeclaration) {
var outerScope = nameScope;
try {
- var element = parent.declaredElement;
+ var element = parent.declaredElement!;
nameScope = FormalParameterScope(nameScope, element.parameters);
super.visitComment(node);
@@ -1097,7 +1105,7 @@
flow?.conditional_conditionBegin();
// TODO(scheglov) Do we need these checks for null?
- condition?.accept(this);
+ condition.accept(this);
condition = node.condition;
boolExpressionVerifier.checkForNonBoolCondition(condition);
@@ -1110,7 +1118,7 @@
checkUnreachableNode(thenExpression);
}
thenExpression.accept(this);
- nullSafetyDeadCodeVerifier?.flowEnd(thenExpression);
+ nullSafetyDeadCodeVerifier.flowEnd(thenExpression);
} else {
_promoteManager.visitConditionalExpression_then(
condition,
@@ -1129,7 +1137,7 @@
checkUnreachableNode(elseExpression);
elseExpression.accept(this);
flow.conditional_end(node, elseExpression);
- nullSafetyDeadCodeVerifier?.flowEnd(elseExpression);
+ nullSafetyDeadCodeVerifier.flowEnd(elseExpression);
} else {
elseExpression.accept(this);
}
@@ -1146,33 +1154,34 @@
@override
void visitConstructorDeclaration(ConstructorDeclaration node) {
- ExecutableElement outerFunction = _enclosingFunction;
- _enclosingFunction = node.declaredElement;
+ var outerFunction = _enclosingFunction;
+ _enclosingFunction = node.declaredElement!;
if (flowAnalysis != null) {
- flowAnalysis.topLevelDeclaration_enter(node, node.parameters, node.body);
- flowAnalysis.executableDeclaration_enter(node, node.parameters, false);
+ flowAnalysis!
+ .topLevelDeclaration_enter(node, node.parameters, node.body);
+ flowAnalysis!.executableDeclaration_enter(node, node.parameters, false);
} else {
- _promoteManager.enterFunctionBody(node.body);
+ _promoteManager.enterFunctionBody(node.body!);
}
- var returnType = _enclosingFunction.type.returnType;
+ var returnType = _enclosingFunction!.type.returnType;
InferenceContext.setType(node.body, returnType);
super.visitConstructorDeclaration(node);
if (flowAnalysis != null) {
if (node.factoryKeyword != null) {
- var bodyContext = BodyInferenceContext.of(node.body);
+ var bodyContext = BodyInferenceContext.of(node.body!);
checkForBodyMayCompleteNormally(
returnType: bodyContext?.contextType,
- body: node.body,
+ body: node.body!,
errorNode: node,
);
}
- flowAnalysis.executableDeclaration_exit(node.body, false);
- flowAnalysis.topLevelDeclaration_exit();
- nullSafetyDeadCodeVerifier?.flowEnd(node);
+ flowAnalysis!.executableDeclaration_exit(node.body!, false);
+ flowAnalysis!.topLevelDeclaration_exit();
+ nullSafetyDeadCodeVerifier.flowEnd(node);
} else {
_promoteManager.exitFunctionBody();
}
@@ -1202,9 +1211,9 @@
// We visit the expression, but do not visit the field name because it needs
// to be visited in the context of the constructor field initializer node.
//
- FieldElement fieldElement = enclosingClass.getField(node.fieldName.name);
+ var fieldElement = enclosingClass!.getField(node.fieldName.name);
InferenceContext.setType(node.expression, fieldElement?.type);
- node.expression?.accept(this);
+ node.expression.accept(this);
node.accept(elementResolver);
node.accept(typeAnalyzer);
}
@@ -1236,14 +1245,14 @@
void visitDefaultFormalParameter(DefaultFormalParameter node) {
InferenceContext.setType(node.defaultValue, node.declaredElement?.type);
super.visitDefaultFormalParameter(node);
- ParameterElement element = node.declaredElement;
+ ParameterElement element = node.declaredElement!;
// Clone the ASTs for default formal parameters, so that we can use them
// during constant evaluation.
if (element is ConstVariableElement &&
!_hasSerializedConstantInitializer(element)) {
(element as ConstVariableElement).constantInitializer =
- _createCloner().cloneNode(node.defaultValue);
+ _createCloner().cloneNullableNode(node.defaultValue);
}
}
@@ -1276,7 +1285,7 @@
@override
void visitEnumConstantDeclaration(EnumConstantDeclaration node) {
- node.metadata?.accept(this);
+ node.metadata.accept(this);
super.visitEnumConstantDeclaration(node);
}
@@ -1286,11 +1295,11 @@
// Resolve the metadata in the library scope
// and associate the annotations with the element.
//
- node.metadata?.accept(this);
+ node.metadata.accept(this);
//
// Continue the enum resolution.
//
- ClassElement outerType = enclosingClass;
+ var outerType = enclosingClass;
try {
enclosingClass = node.declaredElement;
_thisType = enclosingClass?.thisType;
@@ -1314,7 +1323,7 @@
inferenceContext.pushFunctionBodyContext(node);
InferenceContext.setType(
node.expression,
- inferenceContext.bodyContext.contextType,
+ inferenceContext.bodyContext!.contextType,
);
_thisAccessTracker.enterFunctionBody(node);
@@ -1322,7 +1331,7 @@
flowAnalysis?.flow?.handleExit();
- inferenceContext.bodyContext.addReturnExpression(node.expression);
+ inferenceContext.bodyContext!.addReturnExpression(node.expression);
} finally {
_thisAccessTracker.exitFunctionBody(node);
inferenceContext.popFunctionBodyContext(node);
@@ -1332,7 +1341,7 @@
@override
void visitExtensionDeclaration(ExtensionDeclaration node) {
try {
- _thisType = node.declaredElement.extendedType;
+ _thisType = node.declaredElement!.extendedType;
super.visitExtensionDeclaration(node);
node.accept(elementResolver);
node.accept(typeAnalyzer);
@@ -1371,36 +1380,36 @@
@override
void visitForStatementInScope(ForStatement node) {
_forResolver.resolveStatement(node as ForStatementImpl);
- nullSafetyDeadCodeVerifier?.flowEnd(node.body);
+ nullSafetyDeadCodeVerifier.flowEnd(node.body);
}
@override
void visitFunctionDeclaration(FunctionDeclaration node) {
- ExecutableElement outerFunction = _enclosingFunction;
+ var outerFunction = _enclosingFunction;
_enclosingFunction = node.declaredElement;
bool isLocal = node.parent is FunctionDeclarationStatement;
if (flowAnalysis != null) {
if (isLocal) {
- flowAnalysis.flow.functionExpression_begin(node);
+ flowAnalysis!.flow!.functionExpression_begin(node);
} else {
- flowAnalysis.topLevelDeclaration_enter(
+ flowAnalysis!.topLevelDeclaration_enter(
node,
node.functionExpression.parameters,
node.functionExpression.body,
);
}
- flowAnalysis.executableDeclaration_enter(
+ flowAnalysis!.executableDeclaration_enter(
node,
node.functionExpression.parameters,
isLocal,
);
} else {
- _promoteManager.enterFunctionBody(node.functionExpression.body);
+ _promoteManager.enterFunctionBody(node.functionExpression.body!);
}
- var functionType = _enclosingFunction.type;
+ var functionType = _enclosingFunction!.type;
InferenceContext.setType(node.functionExpression, functionType);
super.visitFunctionDeclaration(node);
@@ -1408,23 +1417,23 @@
if (flowAnalysis != null) {
// TODO(scheglov) encapsulate
var bodyContext = BodyInferenceContext.of(
- node.functionExpression.body,
+ node.functionExpression.body!,
);
checkForBodyMayCompleteNormally(
returnType: bodyContext?.contextType,
- body: node.functionExpression.body,
+ body: node.functionExpression.body!,
errorNode: node.name,
);
- flowAnalysis.executableDeclaration_exit(
- node.functionExpression.body,
+ flowAnalysis!.executableDeclaration_exit(
+ node.functionExpression.body!,
isLocal,
);
if (isLocal) {
- flowAnalysis.flow.functionExpression_end();
+ flowAnalysis!.flow!.functionExpression_end();
} else {
- flowAnalysis.topLevelDeclaration_exit();
+ flowAnalysis!.topLevelDeclaration_exit();
}
- nullSafetyDeadCodeVerifier?.flowEnd(node);
+ nullSafetyDeadCodeVerifier.flowEnd(node);
} else {
_promoteManager.exitFunctionBody();
}
@@ -1440,15 +1449,15 @@
@override
void visitFunctionExpression(FunctionExpression node) {
- ExecutableElement outerFunction = _enclosingFunction;
- _enclosingFunction = node.declaredElement;
+ var outerFunction = _enclosingFunction;
+ _enclosingFunction = node.declaredElement!;
if (node.parent is FunctionDeclaration) {
_functionExpressionResolver.resolve(node);
} else {
Scope outerScope = nameScope;
try {
- ExecutableElement element = node.declaredElement;
+ ExecutableElement element = node.declaredElement!;
nameScope = FormalParameterScope(
TypeParameterScope(nameScope, element.typeParameters),
element.parameters,
@@ -1464,7 +1473,7 @@
@override
void visitFunctionExpressionInvocation(FunctionExpressionInvocation node) {
- node.function?.accept(this);
+ node.function.accept(this);
_functionExpressionInvocationResolver
.resolve(node as FunctionExpressionInvocationImpl);
nullShortingTermination(node);
@@ -1473,10 +1482,8 @@
@override
void visitFunctionTypeAlias(FunctionTypeAlias node) {
// Resolve the metadata in the library scope.
- if (node.metadata != null) {
- node.metadata.accept(this);
- }
- FunctionTypeAlias outerAlias = _enclosingFunctionTypeAlias;
+ node.metadata.accept(this);
+ var outerAlias = _enclosingFunctionTypeAlias;
_enclosingFunctionTypeAlias = node;
try {
super.visitFunctionTypeAlias(node);
@@ -1505,15 +1512,14 @@
flowAnalysis?.flow?.ifStatement_conditionBegin();
Expression condition = node.condition;
InferenceContext.setType(condition, typeProvider.boolType);
- // TODO(scheglov) Do we need these checks for null?
- condition?.accept(this);
+ condition.accept(this);
condition = node.condition;
boolExpressionVerifier.checkForNonBoolCondition(condition);
CollectionElement thenElement = node.thenElement;
if (flowAnalysis != null) {
- flowAnalysis.flow?.ifStatement_thenBegin(condition, node);
+ flowAnalysis!.flow?.ifStatement_thenBegin(condition, node);
thenElement.accept(this);
} else {
_promoteManager.visitIfElement_thenElement(
@@ -1545,17 +1551,16 @@
Expression condition = node.condition;
InferenceContext.setType(condition, typeProvider.boolType);
- // TODO(scheglov) Do we need these checks for null?
- condition?.accept(this);
+ condition.accept(this);
condition = node.condition;
boolExpressionVerifier.checkForNonBoolCondition(condition);
Statement thenStatement = node.thenStatement;
if (flowAnalysis != null) {
- flowAnalysis.flow?.ifStatement_thenBegin(condition, node);
+ flowAnalysis!.flow?.ifStatement_thenBegin(condition, node);
visitStatementInScope(thenStatement);
- nullSafetyDeadCodeVerifier?.flowEnd(thenStatement);
+ nullSafetyDeadCodeVerifier.flowEnd(thenStatement);
} else {
_promoteManager.visitIfStatement_thenStatement(
condition,
@@ -1566,11 +1571,11 @@
);
}
- Statement elseStatement = node.elseStatement;
+ var elseStatement = node.elseStatement;
if (elseStatement != null) {
flowAnalysis?.flow?.ifStatement_elseBegin();
visitStatementInScope(elseStatement);
- nullSafetyDeadCodeVerifier?.flowEnd(elseStatement);
+ nullSafetyDeadCodeVerifier.flowEnd(elseStatement);
}
flowAnalysis?.flow?.ifStatement_end(elseStatement != null);
@@ -1592,10 +1597,10 @@
);
var element = result.readElement;
- node.staticElement = element as MethodElement;
+ node.staticElement = element as MethodElement?;
InferenceContext.setType(node.index, result.indexContextType);
- node.index?.accept(this);
+ node.index.accept(this);
DartType type;
if (identical(node.realTarget.staticType, NeverTypeImpl.instance)) {
@@ -1612,9 +1617,9 @@
@override
void visitInstanceCreationExpression(InstanceCreationExpression node) {
- node.constructorName?.accept(this);
+ node.constructorName.accept(this);
_inferArgumentTypesForInstanceCreate(node);
- node.argumentList?.accept(this);
+ node.argumentList.accept(this);
node.accept(elementResolver);
node.accept(typeAnalyzer);
}
@@ -1646,17 +1651,18 @@
@override
void visitMethodDeclaration(MethodDeclaration node) {
- ExecutableElement outerFunction = _enclosingFunction;
- _enclosingFunction = node.declaredElement;
+ var outerFunction = _enclosingFunction;
+ _enclosingFunction = node.declaredElement!;
if (flowAnalysis != null) {
- flowAnalysis.topLevelDeclaration_enter(node, node.parameters, node.body);
- flowAnalysis.executableDeclaration_enter(node, node.parameters, false);
+ flowAnalysis!
+ .topLevelDeclaration_enter(node, node.parameters, node.body);
+ flowAnalysis!.executableDeclaration_enter(node, node.parameters, false);
} else {
_promoteManager.enterFunctionBody(node.body);
}
- DartType returnType = _enclosingFunction?.returnType;
+ DartType returnType = _enclosingFunction!.returnType;
InferenceContext.setType(node.body, returnType);
super.visitMethodDeclaration(node);
@@ -1669,9 +1675,9 @@
body: node.body,
errorNode: node.name,
);
- flowAnalysis.executableDeclaration_exit(node.body, false);
- flowAnalysis.topLevelDeclaration_exit();
- nullSafetyDeadCodeVerifier?.flowEnd(node);
+ flowAnalysis!.executableDeclaration_exit(node.body, false);
+ flowAnalysis!.topLevelDeclaration_exit();
+ nullSafetyDeadCodeVerifier.flowEnd(node);
} else {
_promoteManager.exitFunctionBody();
}
@@ -1692,7 +1698,7 @@
// `?.` to access static methods is equivalent to `.`, so do nothing.
} else {
flow.nullAwareAccess_rightBegin(
- target, node.realTarget.staticType ?? typeProvider.dynamicType);
+ target, node.realTarget!.staticType ?? typeProvider.dynamicType);
_unfinishedNullShorts.add(node.nullShortingTermination);
}
}
@@ -1715,12 +1721,12 @@
//
// Resolve the metadata in the library scope.
//
- node.metadata?.accept(this);
+ node.metadata.accept(this);
_enclosingMixinDeclaration = node;
//
// Continue the class resolution.
//
- ClassElement outerType = enclosingClass;
+ var outerType = enclosingClass;
try {
enclosingClass = node.declaredElement;
_thisType = enclosingClass?.thisType;
@@ -1799,7 +1805,7 @@
} else if (element is PropertyAccessorElement && element.isGetter) {
type = element.returnType;
} else if (result.functionTypeCallType != null) {
- type = result.functionTypeCallType;
+ type = result.functionTypeCallType!;
} else {
type = DynamicTypeImpl.instance;
}
@@ -1822,7 +1828,7 @@
//
node.accept(elementResolver);
InferenceContext.setType(node.argumentList, node.staticElement?.type);
- node.argumentList?.accept(this);
+ node.argumentList.accept(this);
node.accept(typeAnalyzer);
}
@@ -1879,7 +1885,7 @@
//
node.accept(elementResolver);
InferenceContext.setType(node.argumentList, node.staticElement?.type);
- node.argumentList?.accept(this);
+ node.argumentList.accept(this);
node.accept(typeAnalyzer);
}
@@ -1902,13 +1908,13 @@
}
}
- nullSafetyDeadCodeVerifier?.flowEnd(node);
+ nullSafetyDeadCodeVerifier.flowEnd(node);
}
@override
void visitSwitchDefault(SwitchDefault node) {
super.visitSwitchDefault(node);
- nullSafetyDeadCodeVerifier?.flowEnd(node);
+ nullSafetyDeadCodeVerifier.flowEnd(node);
}
@override
@@ -1919,15 +1925,17 @@
try {
var expression = node.expression;
expression.accept(this);
- _enclosingSwitchStatementExpressionType = expression.staticType;
+ expression = node.expression;
+
+ _enclosingSwitchStatementExpressionType = expression.staticType!;
if (flowAnalysis != null) {
- var flow = flowAnalysis.flow;
+ var flow = flowAnalysis!.flow!;
flow.switchStatement_expressionEnd(node);
var exhaustiveness = _SwitchExhaustiveness(
- _enclosingSwitchStatementExpressionType,
+ _enclosingSwitchStatementExpressionType!,
);
var members = node.members;
@@ -1960,7 +1968,7 @@
}
checkUnreachableNode(node);
- var flow = flowAnalysis.flow;
+ var flow = flowAnalysis!.flow!;
var body = node.body;
var catchClauses = node.catchClauses;
@@ -1976,7 +1984,7 @@
body.accept(this);
if (catchClauses.isNotEmpty) {
flow.tryCatchStatement_bodyEnd(body);
- nullSafetyDeadCodeVerifier?.flowEnd(node.body);
+ nullSafetyDeadCodeVerifier.flowEnd(node.body);
nullSafetyDeadCodeVerifier.tryStatementEnter(node);
var catchLength = catchClauses.length;
@@ -1984,12 +1992,12 @@
var catchClause = catchClauses[i];
nullSafetyDeadCodeVerifier.verifyCatchClause(catchClause);
flow.tryCatchStatement_catchBegin(
- catchClause.exceptionParameter?.staticElement as PromotableElement,
- catchClause.stackTraceParameter?.staticElement as PromotableElement,
+ catchClause.exceptionParameter?.staticElement as PromotableElement?,
+ catchClause.stackTraceParameter?.staticElement as PromotableElement?,
);
catchClause.accept(this);
flow.tryCatchStatement_catchEnd();
- nullSafetyDeadCodeVerifier?.flowEnd(catchClause.body);
+ nullSafetyDeadCodeVerifier.flowEnd(catchClause.body);
}
flow.tryCatchStatement_end();
@@ -2011,16 +2019,16 @@
void visitVariableDeclaration(VariableDeclaration node) {
_variableDeclarationResolver.resolve(node as VariableDeclarationImpl);
- var declaredElement = node.declaredElement;
- if (node.parent.parent is ForParts) {
+ var declaredElement = node.declaredElement!;
+ if (node.parent!.parent is ForParts) {
_define(declaredElement);
}
var initializer = node.initializer;
var parent = node.parent as VariableDeclarationList;
- TypeAnnotation declaredType = parent.type;
+ var declaredType = parent.type;
if (initializer != null) {
- var initializerStaticType = initializer.staticType;
+ var initializerStaticType = initializer.staticType!;
if (declaredType == null) {
if (initializerStaticType is TypeParameterType) {
flowAnalysis?.flow?.promote(
@@ -2038,8 +2046,8 @@
void visitVariableDeclarationList(VariableDeclarationList node) {
flowAnalysis?.variableDeclarationList(node);
for (VariableDeclaration decl in node.variables) {
- VariableElement variableElement = decl.declaredElement;
- InferenceContext.setType(decl, variableElement?.type);
+ VariableElement variableElement = decl.declaredElement!;
+ InferenceContext.setType(decl, variableElement.type);
}
super.visitVariableDeclarationList(node);
}
@@ -2058,17 +2066,15 @@
InferenceContext.setType(condition, typeProvider.boolType);
flowAnalysis?.flow?.whileStatement_conditionBegin(node);
- condition?.accept(this);
+ condition.accept(this);
boolExpressionVerifier.checkForNonBoolCondition(node.condition);
Statement body = node.body;
- if (body != null) {
- flowAnalysis?.flow?.whileStatement_bodyBegin(node, condition);
- visitStatementInScope(body);
- flowAnalysis?.flow?.whileStatement_end();
- nullSafetyDeadCodeVerifier?.flowEnd(node.body);
- }
+ flowAnalysis?.flow?.whileStatement_bodyBegin(node, condition);
+ visitStatementInScope(body);
+ flowAnalysis?.flow?.whileStatement_end();
+ nullSafetyDeadCodeVerifier.flowEnd(node.body);
} finally {
_implicitLabelScope = outerImplicitScope;
}
@@ -2102,7 +2108,7 @@
/// is resynthesized and is an API-level, not local, so has its initializer
/// serialized.
bool _hasSerializedConstantInitializer(ParameterElement parameter) {
- Element executable = parameter.enclosingElement;
+ var executable = parameter.enclosingElement;
if (executable is MethodElement ||
executable is FunctionElement &&
executable.enclosingElement is CompilationUnitElement) {
@@ -2113,13 +2119,13 @@
void _inferArgumentTypesForInstanceCreate(InstanceCreationExpression node) {
ConstructorName constructor = node.constructorName;
- TypeName classTypeName = constructor?.type;
- if (classTypeName == null) {
- return;
- }
+ TypeName classTypeName = constructor.type;
+ // if (classTypeName == null) {
+ // return;
+ // }
- ConstructorElement originalElement = constructor.staticElement;
- FunctionType inferred;
+ var originalElement = constructor.staticElement;
+ FunctionType? inferred;
// If the constructor is generic, we'll have a ConstructorMember that
// substitutes in type arguments (possibly `dynamic`) from earlier in
// resolution.
@@ -2170,7 +2176,7 @@
if (inferred == null) {
var type = originalElement?.type;
- type = toLegacyTypeIfOptOut(type) as FunctionType;
+ type = type != null ? toLegacyTypeIfOptOut(type) as FunctionType : null;
InferenceContext.setType(node.argumentList, type);
}
}
@@ -2194,7 +2200,7 @@
if (target is SimpleIdentifier && target.staticElement is ClassElement) {
// `?.` to access static methods is equivalent to `.`, so do nothing.
} else {
- flowAnalysis.flow.nullAwareAccess_rightBegin(function,
+ flowAnalysis!.flow!.nullAwareAccess_rightBegin(function,
function.realTarget.staticType ?? typeProvider.dynamicType);
_unfinishedNullShorts.add(node.nullShortingTermination);
}
@@ -2216,10 +2222,11 @@
///
/// Returns the parameters that correspond to the arguments. If no parameter
/// matched an argument, that position will be `null` in the list.
- static List<ParameterElement> resolveArgumentsToParameters(
+ static List<ParameterElement?> resolveArgumentsToParameters(
ArgumentList argumentList,
List<ParameterElement> parameters,
- void Function(ErrorCode errorCode, AstNode node, [List<Object> arguments])
+ void Function(ErrorCode errorCode, AstNode node,
+ [List<Object> arguments])?
onError) {
if (parameters.isEmpty && argumentList.arguments.isEmpty) {
return const <ParameterElement>[];
@@ -2227,7 +2234,7 @@
int requiredParameterCount = 0;
int unnamedParameterCount = 0;
List<ParameterElement> unnamedParameters = <ParameterElement>[];
- Map<String, ParameterElement> namedParameters;
+ Map<String, ParameterElement>? namedParameters;
int length = parameters.length;
for (int i = 0; i < length; i++) {
ParameterElement parameter = parameters[i];
@@ -2246,19 +2253,18 @@
int unnamedIndex = 0;
NodeList<Expression> arguments = argumentList.arguments;
int argumentCount = arguments.length;
- List<ParameterElement> resolvedParameters =
- List<ParameterElement>.filled(argumentCount, null);
+ List<ParameterElement?> resolvedParameters =
+ List<ParameterElement?>.filled(argumentCount, null);
int positionalArgumentCount = 0;
- HashSet<String> usedNames;
+ HashSet<String>? usedNames;
bool noBlankArguments = true;
- Expression firstUnresolvedArgument;
+ Expression? firstUnresolvedArgument;
for (int i = 0; i < argumentCount; i++) {
Expression argument = arguments[i];
if (argument is NamedExpression) {
SimpleIdentifier nameNode = argument.name.label;
String name = nameNode.name;
- ParameterElement element =
- namedParameters != null ? namedParameters[name] : null;
+ var element = namedParameters != null ? namedParameters[name] : null;
if (element == null) {
if (onError != null) {
onError(CompileTimeErrorCode.UNDEFINED_NAMED_PARAMETER, nameNode,
@@ -2304,7 +2310,7 @@
errorCode = CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS;
}
if (onError != null) {
- onError(errorCode, firstUnresolvedArgument,
+ onError(errorCode, firstUnresolvedArgument!,
[unnamedParameterCount, positionalArgumentCount]);
}
}
@@ -2353,7 +2359,7 @@
var subexpressionToKeep =
conditionalKnownValue ? node.thenExpression : node.elseExpression;
subexpressionToKeep.accept(this);
- typeAnalyzer.recordStaticType(node, subexpressionToKeep.staticType);
+ typeAnalyzer.recordStaticType(node, subexpressionToKeep.staticType!);
}
}
@@ -2403,22 +2409,22 @@
final ErrorReporter errorReporter;
/// The scope used to resolve identifiers.
- Scope nameScope;
+ late Scope nameScope;
/// The scope used to resolve unlabeled `break` and `continue` statements.
ImplicitLabelScope _implicitLabelScope = ImplicitLabelScope.ROOT;
/// The scope used to resolve labels for `break` and `continue` statements, or
/// `null` if no labels have been defined in the current context.
- LabelScope labelScope;
+ LabelScope? labelScope;
/// The class containing the AST nodes being visited,
/// or `null` if we are not in the scope of a class.
- ClassElement enclosingClass;
+ ClassElement? enclosingClass;
/// The element representing the extension containing the AST nodes being
/// visited, or `null` if we are not in the scope of an extension.
- ExtensionElement enclosingExtension;
+ ExtensionElement? enclosingExtension;
/// Initialize a newly created visitor to resolve the nodes in a compilation
/// unit.
@@ -2435,7 +2441,7 @@
/// created based on [definingLibrary] and [typeProvider].
ScopedVisitor(this.definingLibrary, Source source, this.typeProvider,
AnalysisErrorListener errorListener,
- {Scope nameScope})
+ {Scope? nameScope})
: source = source,
errorReporter = ErrorReporter(
errorListener,
@@ -2490,15 +2496,15 @@
@override
void visitCatchClause(CatchClause node) {
- SimpleIdentifier exception = node.exceptionParameter;
+ var exception = node.exceptionParameter;
if (exception != null) {
Scope outerScope = nameScope;
try {
nameScope = LocalScope(nameScope);
- _define(exception.staticElement);
- SimpleIdentifier stackTrace = node.stackTraceParameter;
+ _define(exception.staticElement!);
+ var stackTrace = node.stackTraceParameter;
if (stackTrace != null) {
- _define(stackTrace.staticElement);
+ _define(stackTrace.staticElement!);
}
super.visitCatchClause(node);
} finally {
@@ -2512,9 +2518,9 @@
@override
void visitClassDeclaration(ClassDeclaration node) {
Scope outerScope = nameScope;
- ClassElement outerClass = enclosingClass;
+ var outerClass = enclosingClass;
try {
- ClassElement element = node.declaredElement;
+ ClassElement element = node.declaredElement!;
enclosingClass = node.declaredElement;
nameScope = TypeParameterScope(
@@ -2532,7 +2538,7 @@
}
void visitClassDeclarationInScope(ClassDeclaration node) {
- node.name?.accept(this);
+ node.name.accept(this);
node.typeParameters?.accept(this);
node.extendsClause?.accept(this);
node.withClause?.accept(this);
@@ -2550,7 +2556,7 @@
void visitClassTypeAlias(ClassTypeAlias node) {
Scope outerScope = nameScope;
try {
- ClassElement element = node.declaredElement;
+ ClassElement element = node.declaredElement!;
nameScope = ClassScope(
TypeParameterScope(nameScope, element.typeParameters),
element,
@@ -2571,13 +2577,13 @@
void visitConstructorDeclaration(ConstructorDeclaration node) {
Scope outerScope = nameScope;
try {
- ConstructorElement element = node.declaredElement;
+ ConstructorElement element = node.declaredElement!;
node.documentationComment?.accept(this);
node.metadata.accept(this);
- node.returnType?.accept(this);
+ node.returnType.accept(this);
node.name?.accept(this);
- node.parameters?.accept(this);
+ node.parameters.accept(this);
try {
nameScope = ConstructorInitializerScope(
@@ -2607,7 +2613,7 @@
@override
void visitDeclaredIdentifier(DeclaredIdentifier node) {
- _define(node.declaredElement);
+ _define(node.declaredElement!);
super.visitDeclaredIdentifier(node);
}
@@ -2624,15 +2630,15 @@
void visitDoStatementInScope(DoStatement node) {
visitStatementInScope(node.body);
- node.condition?.accept(this);
+ node.condition.accept(this);
}
@override
void visitEnumDeclaration(EnumDeclaration node) {
Scope outerScope = nameScope;
- ClassElement outerClass = enclosingClass;
+ var outerClass = enclosingClass;
try {
- ClassElement element = node.declaredElement;
+ ClassElement element = node.declaredElement!;
enclosingClass = node.declaredElement;
nameScope = ClassScope(nameScope, element);
@@ -2658,9 +2664,9 @@
@override
void visitExtensionDeclaration(ExtensionDeclaration node) {
Scope outerScope = nameScope;
- ExtensionElement outerExtension = enclosingExtension;
+ var outerExtension = enclosingExtension;
try {
- ExtensionElement element = node.declaredElement;
+ ExtensionElement element = node.declaredElement!;
enclosingExtension = element;
nameScope = TypeParameterScope(
@@ -2680,7 +2686,7 @@
void visitExtensionDeclarationInScope(ExtensionDeclaration node) {
node.name?.accept(this);
node.typeParameters?.accept(this);
- node.extendedType?.accept(this);
+ node.extendedType.accept(this);
}
void visitExtensionMembersInScope(ExtensionDeclaration node) {
@@ -2695,8 +2701,8 @@
// We visit the iterator before the loop variable because the loop variable
// cannot be in scope while visiting the iterator.
//
- node.iterable?.accept(this);
- node.loopVariable?.accept(this);
+ node.iterable.accept(this);
+ node.loopVariable.accept(this);
}
@override
@@ -2717,8 +2723,8 @@
void visitForElementInScope(ForElement node) {
// TODO(brianwilkerson) Investigate the possibility of removing the
// visit...InScope methods now that type propagation is no longer done.
- node.forLoopParts?.accept(this);
- node.body?.accept(this);
+ node.forLoopParts.accept(this);
+ node.body.accept(this);
}
@override
@@ -2732,10 +2738,10 @@
if (parent is FunctionExpression) {
nameScope = FormalParameterScope(
nameScope,
- parent.declaredElement.parameters,
+ parent.declaredElement!.parameters,
);
} else if (parent is FunctionTypeAlias) {
- var aliasedElement = parent.declaredElement.aliasedElement;
+ var aliasedElement = parent.declaredElement!.aliasedElement;
var functionElement = aliasedElement as GenericFunctionTypeElement;
nameScope = FormalParameterScope(
nameScope,
@@ -2744,7 +2750,7 @@
} else if (parent is MethodDeclaration) {
nameScope = FormalParameterScope(
nameScope,
- parent.declaredElement.parameters,
+ parent.declaredElement!.parameters,
);
}
}
@@ -2770,7 +2776,7 @@
void visitForStatementInScope(ForStatement node) {
// TODO(brianwilkerson) Investigate the possibility of removing the
// visit...InScope methods now that type propagation is no longer done.
- node.forLoopParts?.accept(this);
+ node.forLoopParts.accept(this);
visitStatementInScope(node.body);
}
@@ -2778,7 +2784,7 @@
void visitFunctionDeclaration(FunctionDeclaration node) {
Scope outerScope = nameScope;
try {
- var element = node.declaredElement;
+ var element = node.declaredElement!;
nameScope = TypeParameterScope(
nameScope,
element.typeParameters,
@@ -2803,7 +2809,7 @@
Scope outerScope = nameScope;
try {
- ExecutableElement element = node.declaredElement;
+ ExecutableElement element = node.declaredElement!;
nameScope = FormalParameterScope(
TypeParameterScope(nameScope, element.typeParameters),
element.parameters,
@@ -2818,7 +2824,7 @@
void visitFunctionTypeAlias(FunctionTypeAlias node) {
Scope outerScope = nameScope;
try {
- var element = node.declaredElement;
+ var element = node.declaredElement!;
nameScope = TypeParameterScope(nameScope, element.typeParameters);
visitFunctionTypeAliasInScope(node);
} finally {
@@ -2834,7 +2840,7 @@
void visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) {
Scope outerScope = nameScope;
try {
- ParameterElement element = node.declaredElement;
+ ParameterElement element = node.declaredElement!;
nameScope = TypeParameterScope(
nameScope,
element.typeParameters,
@@ -2847,7 +2853,7 @@
@override
void visitGenericFunctionType(GenericFunctionType node) {
- DartType type = node.type;
+ var type = node.type;
if (type == null) {
// The function type hasn't been resolved yet, so we can't create a scope
// for its parameters.
@@ -2858,7 +2864,7 @@
Scope outerScope = nameScope;
try {
GenericFunctionTypeElement element =
- (node as GenericFunctionTypeImpl).declaredElement;
+ (node as GenericFunctionTypeImpl).declaredElement!;
nameScope = TypeParameterScope(nameScope, element.typeParameters);
super.visitGenericFunctionType(node);
} finally {
@@ -2888,14 +2894,14 @@
@override
void visitIfStatement(IfStatement node) {
- node.condition?.accept(this);
+ node.condition.accept(this);
visitStatementInScope(node.thenStatement);
visitStatementInScope(node.elseStatement);
}
@override
void visitLabeledStatement(LabeledStatement node) {
- LabelScope outerScope = _addScopesFor(node.labels, node.unlabeled);
+ var outerScope = _addScopesFor(node.labels, node.unlabeled);
try {
super.visitLabeledStatement(node);
} finally {
@@ -2907,7 +2913,7 @@
void visitMethodDeclaration(MethodDeclaration node) {
Scope outerScope = nameScope;
try {
- ExecutableElement element = node.declaredElement;
+ ExecutableElement element = node.declaredElement!;
nameScope = TypeParameterScope(
nameScope,
element.typeParameters,
@@ -2925,9 +2931,9 @@
@override
void visitMixinDeclaration(MixinDeclaration node) {
Scope outerScope = nameScope;
- ClassElement outerClass = enclosingClass;
+ var outerClass = enclosingClass;
try {
- ClassElement element = node.declaredElement;
+ ClassElement element = node.declaredElement!;
enclosingClass = element;
nameScope = TypeParameterScope(nameScope, element.typeParameters);
@@ -2942,7 +2948,7 @@
}
void visitMixinDeclarationInScope(MixinDeclaration node) {
- node.name?.accept(this);
+ node.name.accept(this);
node.typeParameters?.accept(this);
node.onClause?.accept(this);
node.implementsClause?.accept(this);
@@ -2959,7 +2965,7 @@
/// an 'if' statement.
///
/// @param node the statement to be visited
- void visitStatementInScope(Statement node) {
+ void visitStatementInScope(Statement? node) {
if (node is Block) {
// Don't create a scope around a block because the block will create it's
// own scope.
@@ -2993,7 +2999,7 @@
@override
void visitSwitchStatement(SwitchStatement node) {
- LabelScope outerScope = labelScope;
+ var outerScope = labelScope;
ImplicitLabelScope outerImplicitScope = _implicitLabelScope;
try {
_implicitLabelScope = _implicitLabelScope.nest(node);
@@ -3020,14 +3026,14 @@
void visitVariableDeclaration(VariableDeclaration node) {
super.visitVariableDeclaration(node);
- if (node.parent.parent is ForParts) {
- _define(node.declaredElement);
+ if (node.parent!.parent is ForParts) {
+ _define(node.declaredElement!);
}
}
@override
void visitWhileStatement(WhileStatement node) {
- node.condition?.accept(this);
+ node.condition.accept(this);
ImplicitLabelScope outerImplicitScope = _implicitLabelScope;
try {
_implicitLabelScope = _implicitLabelScope.nest(node);
@@ -3041,8 +3047,8 @@
///
/// @param labels the labels for which new scopes are to be added
/// @return the scope that was in effect before the new scopes were added
- LabelScope _addScopesFor(NodeList<Label> labels, AstNode node) {
- LabelScope outerScope = labelScope;
+ LabelScope? _addScopesFor(NodeList<Label> labels, AstNode node) {
+ var outerScope = labelScope;
for (Label label in labels) {
SimpleIdentifier labelNameNode = label.label;
String labelName = labelNameNode.name;
@@ -3080,7 +3086,7 @@
/// Not every node has the scope set, for example we set the scopes for
/// blocks, but statements don't have separate scopes. The compilation unit
/// has the library scope.
- static Scope getNodeNameScope(AstNode node) {
+ static Scope? getNodeNameScope(AstNode node) {
return node.getProperty(_nameScopeProperty);
}
@@ -3095,7 +3101,7 @@
class VariableResolverVisitor extends ScopedVisitor {
/// The method or function that we are currently visiting, or `null` if we are
/// not inside a method or function.
- ExecutableElement _enclosingFunction;
+ ExecutableElement? _enclosingFunction;
/// The container with information about local variables.
final LocalVariableInfo _localVariableInfo = LocalVariableInfo();
@@ -3115,20 +3121,14 @@
/// created based on [definingLibrary] and [typeProvider].
VariableResolverVisitor(LibraryElement definingLibrary, Source source,
TypeProvider typeProvider, AnalysisErrorListener errorListener,
- {Scope nameScope})
+ {Scope? nameScope})
: super(definingLibrary, source, typeProvider as TypeProviderImpl,
errorListener,
nameScope: nameScope);
@override
- void visitBlockFunctionBody(BlockFunctionBody node) {
- assert(_localVariableInfo != null);
- super.visitBlockFunctionBody(node);
- }
-
- @override
void visitConstructorDeclaration(ConstructorDeclaration node) {
- ExecutableElement outerFunction = _enclosingFunction;
+ var outerFunction = _enclosingFunction;
try {
(node.body as FunctionBodyImpl).localVariableInfo = _localVariableInfo;
_enclosingFunction = node.declaredElement;
@@ -3142,14 +3142,8 @@
void visitExportDirective(ExportDirective node) {}
@override
- void visitExpressionFunctionBody(ExpressionFunctionBody node) {
- assert(_localVariableInfo != null);
- super.visitExpressionFunctionBody(node);
- }
-
- @override
void visitFunctionDeclaration(FunctionDeclaration node) {
- ExecutableElement outerFunction = _enclosingFunction;
+ var outerFunction = _enclosingFunction;
try {
(node.functionExpression.body as FunctionBodyImpl).localVariableInfo =
_localVariableInfo;
@@ -3163,7 +3157,7 @@
@override
void visitFunctionExpression(FunctionExpression node) {
if (node.parent is! FunctionDeclaration) {
- ExecutableElement outerFunction = _enclosingFunction;
+ var outerFunction = _enclosingFunction;
try {
(node.body as FunctionBodyImpl).localVariableInfo = _localVariableInfo;
_enclosingFunction = node.declaredElement;
@@ -3181,7 +3175,7 @@
@override
void visitMethodDeclaration(MethodDeclaration node) {
- ExecutableElement outerFunction = _enclosingFunction;
+ var outerFunction = _enclosingFunction;
try {
(node.body as FunctionBodyImpl).localVariableInfo = _localVariableInfo;
_enclosingFunction = node.declaredElement;
@@ -3198,7 +3192,7 @@
return;
}
// Ignore if it cannot be a reference to a local variable.
- AstNode parent = node.parent;
+ var parent = node.parent;
if (parent is FieldFormalParameter) {
return;
} else if (parent is ConstructorDeclaration && parent.returnType == node) {
@@ -3226,7 +3220,7 @@
return;
}
// Prepare VariableElement.
- Element element = nameScope.lookup(node.name).getter;
+ var element = nameScope.lookup(node.name).getter;
if (element is! VariableElement) {
return;
}
@@ -3252,7 +3246,7 @@
class _SwitchExhaustiveness {
/// If the switch is on an enumeration, the set of enum constants to cover.
/// Otherwise `null`.
- final Set<FieldElement> _enumConstants;
+ final Set<FieldElement>? _enumConstants;
/// If the switch is on an enumeration, is `true` if the null value is
/// covered, because the switch expression type is non-nullable, or `null`
@@ -3280,14 +3274,14 @@
if (_enumConstants != null && node is SwitchCase) {
var element = _referencedElement(node.expression);
if (element is PropertyAccessorElement) {
- _enumConstants.remove(element.variable);
+ _enumConstants!.remove(element.variable);
}
if (node.expression is NullLiteral) {
_isNullEnumValueCovered = true;
}
- if (_enumConstants.isEmpty && _isNullEnumValueCovered) {
+ if (_enumConstants!.isEmpty && _isNullEnumValueCovered) {
isExhaustive = true;
}
} else if (node is SwitchDefault) {
@@ -3295,7 +3289,7 @@
}
}
- static Element _referencedElement(Expression expression) {
+ static Element? _referencedElement(Expression expression) {
if (expression is PrefixedIdentifier) {
return expression.staticElement;
} else if (expression is PropertyAccess) {
diff --git a/pkg/analyzer/lib/src/generated/sdk.dart b/pkg/analyzer/lib/src/generated/sdk.dart
index 2ac5298..1fd1ec8 100644
--- a/pkg/analyzer/lib/src/generated/sdk.dart
+++ b/pkg/analyzer/lib/src/generated/sdk.dart
@@ -29,7 +29,7 @@
/// Return the content of the `allowed_experiments.json` file, or `null`
/// if the file cannot be read, e.g. does not exist.
- String get allowedExperimentsJson;
+ String? get allowedExperimentsJson;
/// Return the language version of this SDK, or throws an exception.
///
@@ -50,15 +50,15 @@
/// Return a source representing the given 'file:' [uri] if the file is in
/// this SDK, or `null` if the file is not in this SDK.
- Source fromFileUri(Uri uri);
+ Source? fromFileUri(Uri uri);
/// Return the library representing the library with the given 'dart:' [uri],
/// or `null` if the given URI does not denote a library in this SDK.
- SdkLibrary getSdkLibrary(String uri);
+ SdkLibrary? getSdkLibrary(String uri);
/// Return the source representing the library with the given 'dart:' [uri],
/// or `null` if the given URI does not denote a library in this SDK.
- Source mapDartUri(String uri);
+ Source? mapDartUri(String uri);
}
/// Manages the DartSdk's that have been created. Clients need to create
@@ -73,11 +73,11 @@
Map<SdkDescription, DartSdk> sdkMap = HashMap<SdkDescription, DartSdk>();
/// Initialize a newly created manager.
- DartSdkManager(this.defaultSdkDirectory, [@deprecated bool canUseSummaries]);
+ DartSdkManager(this.defaultSdkDirectory, [@deprecated bool? canUseSummaries]);
/// Return any SDK that has been created, or `null` if no SDKs have been
/// created.
- DartSdk get anySdk {
+ DartSdk? get anySdk {
if (sdkMap.isEmpty) {
return null;
}
@@ -103,7 +103,7 @@
final Map<String, SdkLibraryImpl> _libraryMap = <String, SdkLibraryImpl>{};
/// Return a list containing all of the sdk libraries in this mapping.
- List<SdkLibrary> get sdkLibraries => List.from(_libraryMap.values);
+ List<SdkLibraryImpl> get sdkLibraries => List.from(_libraryMap.values);
/// Return a list containing the library URI's for which a mapping is
/// available.
@@ -112,8 +112,9 @@
/// Return info for debugging https://github.com/dart-lang/sdk/issues/35226.
Map<String, Object> debugInfo() {
var map = <String, Object>{};
- for (var uri in _libraryMap.keys) {
- var lib = _libraryMap[uri];
+ for (var entry in _libraryMap.entries) {
+ var uri = entry.key;
+ var lib = entry.value;
map[uri] = <String, Object>{
'path': lib.path,
'shortName': lib.shortName,
@@ -124,7 +125,7 @@
/// Return the library with the given 'dart:' [uri], or `null` if the URI does
/// not map to a library.
- SdkLibrary getLibrary(String uri) => _libraryMap[uri];
+ SdkLibrary? getLibrary(String uri) => _libraryMap[uri];
/// Set the library with the given 'dart:' [uri] to the given [library].
void setLibrary(String dartUri, SdkLibraryImpl library) {
@@ -218,11 +219,9 @@
@override
void visitMapLiteralEntry(MapLiteralEntry node) {
- String libraryName;
- Expression key = node.key;
- if (key is SimpleStringLiteral) {
- libraryName = "$_LIBRARY_PREFIX${key.value}";
- }
+ var key = node.key as SimpleStringLiteral;
+ var libraryName = "$_LIBRARY_PREFIX${key.value}";
+
Expression value = node.value;
if (value is InstanceCreationExpression) {
SdkLibraryImpl library = SdkLibraryImpl(libraryName);
@@ -234,8 +233,8 @@
String name = argument.name.label.name;
Expression expression = argument.expression;
if (name == _CATEGORIES) {
- library.category =
- convertCategories((expression as StringLiteral).stringValue);
+ var value = (expression as StringLiteral).stringValue!;
+ library.category = convertCategories(value);
} else if (name == _IMPLEMENTATION) {
library._implementation = (expression as BooleanLiteral).value;
} else if (name == _DOCUMENTED) {
@@ -310,7 +309,7 @@
/// The path to the file defining the library. The path is relative to the
/// 'lib' directory within the SDK.
@override
- String path;
+ late String path;
/// The name of the category containing the library. Unless otherwise
/// specified in the libraries file all libraries are assumed to be shared
diff --git a/pkg/analyzer/lib/src/generated/source.dart b/pkg/analyzer/lib/src/generated/source.dart
index 96a1e96..c90e2cf 100644
--- a/pkg/analyzer/lib/src/generated/source.dart
+++ b/pkg/analyzer/lib/src/generated/source.dart
@@ -61,7 +61,7 @@
/// Visit all entries of this cache.
void accept(ContentCacheVisitor visitor) {
_contentMap.forEach((String fullPath, String contents) {
- int stamp = _stampMap[fullPath];
+ int stamp = _stampMap[fullPath]!;
visitor(fullPath, stamp, contents);
});
}
@@ -71,14 +71,14 @@
///
/// <b>Note:</b> This method is not intended to be used except by
/// [AnalysisContext.getContents].
- String getContents(Source source) => _contentMap[source.fullName];
+ String? getContents(Source source) => _contentMap[source.fullName];
/// Return `true` if the given [source] exists, `false` if it does not exist,
/// or `null` if this cache does not override existence of the source.
///
/// <b>Note:</b> This method is not intended to be used except by
/// [AnalysisContext.exists].
- bool getExists(Source source) {
+ bool? getExists(Source source) {
return _contentMap.containsKey(source.fullName) ? true : null;
}
@@ -87,20 +87,20 @@
///
/// <b>Note:</b> This method is not intended to be used except by
/// [AnalysisContext.getModificationStamp].
- int getModificationStamp(Source source) => _stampMap[source.fullName];
+ int? getModificationStamp(Source source) => _stampMap[source.fullName];
/// Set the contents of the given [source] to the given [contents]. This has
/// the effect of overriding the default contents of the source. If the
/// contents are `null` the override is removed so that the default contents
/// will be returned.
- String setContents(Source source, String contents) {
+ String? setContents(Source source, String? contents) {
String fullName = source.fullName;
if (contents == null) {
_stampMap.remove(fullName);
return _contentMap.remove(fullName);
} else {
int newStamp = _nextStamp++;
- int oldStamp = _stampMap[fullName];
+ var oldStamp = _stampMap[fullName];
_stampMap[fullName] = newStamp;
// Occasionally, if this method is called in rapid succession, the
// timestamps are equal. Guard against this by artificially incrementing
@@ -108,7 +108,7 @@
if (newStamp == oldStamp) {
_stampMap[fullName] = newStamp + 1;
}
- String oldContent = _contentMap[fullName];
+ var oldContent = _contentMap[fullName];
_contentMap[fullName] = contents;
return oldContent;
}
@@ -137,7 +137,7 @@
DartSdk get dartSdk => _sdk;
@override
- Source resolveAbsolute(Uri uri, [Uri actualUri]) {
+ Source? resolveAbsolute(Uri uri, [Uri? actualUri]) {
if (!isDartUri(uri)) {
return null;
}
@@ -145,8 +145,8 @@
}
@override
- Uri restoreAbsolute(Source source) {
- Source dartSource = _sdk.fromFileUri(source.uri);
+ Uri? restoreAbsolute(Source source) {
+ var dartSource = _sdk.fromFileUri(source.uri);
return dartSource?.uri;
}
@@ -154,7 +154,7 @@
///
/// @param uriContent the textual representation of the URI being tested
/// @return `true` if the given URI is a `dart-ext:` URI
- static bool isDartExtUri(String uriContent) =>
+ static bool isDartExtUri(String? uriContent) =>
uriContent != null && uriContent.startsWith(_DART_EXT_SCHEME);
/// Return `true` if the given URI is a `dart:` URI.
@@ -294,7 +294,7 @@
bool get isInSystemLibrary;
@override
- Source get librarySource => null;
+ Source get librarySource => throw UnimplementedError();
/// Return the modification stamp for this source, or a negative value if the
/// source does not exist. A modification stamp is a non-negative integer with
@@ -366,11 +366,11 @@
///
/// @return the [DartSdk] associated with this [SourceFactory], or `null` if
/// there is no such SDK
- DartSdk get dartSdk;
+ DartSdk? get dartSdk;
/// A table mapping package names to paths of directories containing
/// the package (or [null] if there is no registered package URI resolver).
- Map<String, List<Folder>> get packageMap;
+ Map<String, List<Folder>>? get packageMap;
/// Clear any cached URI resolution information in the [SourceFactory] itself,
/// and also ask each [UriResolver]s to clear its caches.
@@ -381,28 +381,28 @@
///
/// @param absoluteUri the absolute URI to be resolved
/// @return a source object representing the absolute URI
- Source forUri(String absoluteUri);
+ Source? forUri(String absoluteUri);
/// Return a source object representing the given absolute URI, or `null` if
/// the URI is not an absolute URI.
///
/// @param absoluteUri the absolute URI to be resolved
/// @return a source object representing the absolute URI
- Source forUri2(Uri absoluteUri);
+ Source? forUri2(Uri absoluteUri);
/// Return a source representing the URI that results from resolving the given
/// (possibly relative) [containedUri] against the URI associated with the
/// [containingSource], whether or not the resulting source exists, or `null`
/// if either the [containedUri] is invalid or if it cannot be resolved
/// against the [containingSource]'s URI.
- Source resolveUri(Source containingSource, String containedUri);
+ Source? resolveUri(Source? containingSource, String? containedUri);
/// Return an absolute URI that represents the given source, or `null` if a
/// valid URI cannot be computed.
///
/// @param source the source to get URI for
/// @return the absolute URI representing the given source
- Uri restoreUri(Source source);
+ Uri? restoreUri(Source source);
}
/// The enumeration `SourceKind` defines the different kinds of sources that are
@@ -484,7 +484,7 @@
/// Return the URI kind represented by the given [encoding], or `null` if
/// there is no kind with the given encoding.
- static UriKind fromEncoding(int encoding) {
+ static UriKind? fromEncoding(int encoding) {
while (true) {
if (encoding == 0x64) {
return DART_URI;
@@ -532,11 +532,11 @@
/// @param actualUri the actual uri for this source -- if `null`, the value of
/// [uri] will be used
/// @return a [Source] representing the file to which given URI was resolved
- Source resolveAbsolute(Uri uri, [Uri actualUri]);
+ Source? resolveAbsolute(Uri uri, [Uri actualUri]);
/// Return an absolute URI that represents the given [source], or `null` if a
/// valid URI cannot be computed.
///
/// The computation should be based solely on [source.fullName].
- Uri restoreAbsolute(Source source) => null;
+ Uri? restoreAbsolute(Source source) => null;
}
diff --git a/pkg/analyzer/lib/src/generated/source_io.dart b/pkg/analyzer/lib/src/generated/source_io.dart
index fb337a8..906a677 100644
--- a/pkg/analyzer/lib/src/generated/source_io.dart
+++ b/pkg/analyzer/lib/src/generated/source_io.dart
@@ -31,15 +31,15 @@
final JavaFile file;
/// The cached absolute path of this source.
- String _absolutePath;
+ String? _absolutePath;
/// The cached encoding for this source.
- String _encoding;
+ String? _encoding;
/// Initialize a newly created source object to represent the given [file]. If
/// a [uri] is given, then it will be used as the URI from which the source
/// was derived, otherwise a `file:` URI will be created based on the [file].
- FileBasedSource(JavaFile file, [Uri uri])
+ FileBasedSource(JavaFile file, [Uri? uri])
: uri = uri ?? file.toURI(),
file = file,
id = _idTable.putIfAbsent(
@@ -108,9 +108,6 @@
@override
String toString() {
- if (file == null) {
- return "<unknown source>";
- }
return file.getAbsolutePath();
}
}
diff --git a/pkg/analyzer/lib/src/generated/static_type_analyzer.dart b/pkg/analyzer/lib/src/generated/static_type_analyzer.dart
index 036e46d..e7d2de5 100644
--- a/pkg/analyzer/lib/src/generated/static_type_analyzer.dart
+++ b/pkg/analyzer/lib/src/generated/static_type_analyzer.dart
@@ -26,16 +26,16 @@
/// The resolver driving the resolution and type analysis.
final ResolverVisitor _resolver;
- final MigrationResolutionHooks _migrationResolutionHooks;
+ final MigrationResolutionHooks? _migrationResolutionHooks;
/// The object providing access to the types defined by the language.
- TypeProviderImpl _typeProvider;
+ late TypeProviderImpl _typeProvider;
/// The type system in use for static type analysis.
- TypeSystemImpl _typeSystem;
+ late TypeSystemImpl _typeSystem;
/// The type representing the type 'dynamic'.
- DartType _dynamicType;
+ late DartType _dynamicType;
/// Initialize a newly created static type analyzer to analyze types for the
/// [_resolver] based on the
@@ -76,22 +76,14 @@
///
/// TODO(scheglov) this is duplication
void recordStaticType(Expression expression, DartType type) {
- if (_migrationResolutionHooks != null) {
- // TODO(scheglov) type cannot be null
- type = _migrationResolutionHooks.modifyExpressionType(
- expression,
- type ?? DynamicTypeImpl.instance,
- );
+ var hooks = _migrationResolutionHooks;
+ if (hooks != null) {
+ type = hooks.modifyExpressionType(expression, type);
}
- // TODO(scheglov) type cannot be null
- if (type == null) {
- expression.staticType = DynamicTypeImpl.instance;
- } else {
- expression.staticType = type;
- if (_typeSystem.isBottom(type)) {
- _resolver.flowAnalysis?.flow?.handleExit();
- }
+ expression.staticType = type;
+ if (_typeSystem.isBottom(type)) {
+ _resolver.flowAnalysis?.flow?.handleExit();
}
}
@@ -119,8 +111,8 @@
/// the static type of e.
@override
void visitAwaitExpression(AwaitExpression node) {
- DartType resultType = node.expression.staticType;
- if (resultType != null) resultType = _typeSystem.flatten(resultType);
+ var resultType = node.expression.staticType!;
+ resultType = _typeSystem.flatten(resultType);
recordStaticType(node, resultType);
}
@@ -136,7 +128,7 @@
/// t;}(e)</i>.</blockquote>
@override
void visitCascadeExpression(CascadeExpression node) {
- recordStaticType(node, node.target.staticType);
+ recordStaticType(node, node.target.staticType!);
}
/// The Dart Language Specification, 12.19: <blockquote> ... a conditional expression <i>c</i> of
@@ -204,7 +196,7 @@
@override
void visitInstanceCreationExpression(InstanceCreationExpression node) {
_inferInstanceCreationExpression(node);
- recordStaticType(node, node.constructorName.type.type);
+ recordStaticType(node, node.constructorName.type.type!);
}
/// <blockquote>
@@ -253,7 +245,7 @@
@override
void visitNamedExpression(NamedExpression node) {
Expression expression = node.expression;
- recordStaticType(node, expression.staticType);
+ recordStaticType(node, expression.staticType!);
}
/// The Dart Language Specification, 12.2: <blockquote>The static type of `null` is bottom.
@@ -266,7 +258,7 @@
@override
void visitParenthesizedExpression(ParenthesizedExpression node) {
Expression expression = node.expression;
- recordStaticType(node, expression.staticType);
+ recordStaticType(node, expression.staticType!);
}
/// The Dart Language Specification, 12.9: <blockquote>The static type of a rethrow expression is
@@ -292,13 +284,14 @@
@override
void visitSuperExpression(SuperExpression node) {
- if (_resolver.thisType == null ||
+ var thisType = _resolver.thisType;
+ if (thisType == null ||
node.thisOrAncestorOfType<ExtensionDeclaration>() != null) {
// TODO(brianwilkerson) Report this error if it hasn't already been
// reported.
recordStaticType(node, _dynamicType);
} else {
- recordStaticType(node, _resolver.thisType);
+ recordStaticType(node, thisType);
}
}
@@ -311,12 +304,13 @@
/// interface of the immediately enclosing class.</blockquote>
@override
void visitThisExpression(ThisExpression node) {
- if (_resolver.thisType == null) {
+ var thisType = _resolver.thisType;
+ if (thisType == null) {
// TODO(brianwilkerson) Report this error if it hasn't already been
// reported.
recordStaticType(node, _dynamicType);
} else {
- recordStaticType(node, _resolver.thisType);
+ recordStaticType(node, thisType);
}
}
@@ -331,8 +325,8 @@
/// types of subexpressions [expr1] and [expr2].
void _analyzeLeastUpperBound(
Expression node, Expression expr1, Expression expr2) {
- DartType staticType1 = expr1.staticType;
- DartType staticType2 = expr2.staticType;
+ var staticType1 = expr1.staticType!;
+ var staticType2 = expr2.staticType!;
_analyzeLeastUpperBoundTypes(node, staticType1, staticType2);
}
@@ -341,15 +335,8 @@
/// types [staticType1] and [staticType2].
void _analyzeLeastUpperBoundTypes(
Expression node, DartType staticType1, DartType staticType2) {
- // TODO(brianwilkerson) Determine whether this can still happen.
- staticType1 ??= _dynamicType;
-
- // TODO(brianwilkerson) Determine whether this can still happen.
- staticType2 ??= _dynamicType;
-
DartType staticType =
- _typeSystem.getLeastUpperBound(staticType1, staticType2) ??
- _dynamicType;
+ _typeSystem.getLeastUpperBound(staticType1, staticType2);
staticType = _resolver.toLegacyTypeIfOptOut(staticType);
@@ -358,7 +345,7 @@
/// Return the type represented by the given type [annotation].
DartType _getType(TypeAnnotation annotation) {
- DartType type = annotation.type;
+ var type = annotation.type;
if (type == null) {
//TODO(brianwilkerson) Determine the conditions for which the type is
// null.
@@ -371,7 +358,7 @@
/// arguments using the current context type as well as the argument types.
void _inferInstanceCreationExpression(InstanceCreationExpression node) {
ConstructorName constructor = node.constructorName;
- ConstructorElement originalElement = constructor.staticElement;
+ var originalElement = constructor.staticElement;
// If the constructor is generic, we'll have a ConstructorMember that
// substitutes in type arguments (possibly `dynamic`) from earlier in
// resolution.
@@ -398,7 +385,7 @@
FunctionType constructorType = constructorToGenericFunctionType(rawElement);
ArgumentList arguments = node.argumentList;
- FunctionType inferred = _resolver.inferenceHelper.inferGenericInvoke(
+ var inferred = _resolver.inferenceHelper.inferGenericInvoke(
node,
constructorType,
constructor.type.typeArguments,
diff --git a/pkg/analyzer/lib/src/generated/super_context.dart b/pkg/analyzer/lib/src/generated/super_context.dart
index bee205b..461d250 100644
--- a/pkg/analyzer/lib/src/generated/super_context.dart
+++ b/pkg/analyzer/lib/src/generated/super_context.dart
@@ -28,7 +28,7 @@
/// Return an indication of the context in which the super [expression] is
/// being used.
factory SuperContext.of(SuperExpression expression) {
- for (AstNode node = expression; node != null; node = node.parent) {
+ for (AstNode? node = expression; node != null; node = node.parent) {
if (node is Annotation) {
return SuperContext.annotation;
} else if (node is CompilationUnit) {
diff --git a/pkg/analyzer/lib/src/generated/testing/ast_test_factory.dart b/pkg/analyzer/lib/src/generated/testing/ast_test_factory.dart
index a76d625..d2f99c2 100644
--- a/pkg/analyzer/lib/src/generated/testing/ast_test_factory.dart
+++ b/pkg/analyzer/lib/src/generated/testing/ast_test_factory.dart
@@ -12,7 +12,6 @@
import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/generated/testing/token_factory.dart';
import 'package:analyzer/src/generated/utilities_dart.dart';
-import 'package:meta/meta.dart';
/// The class `AstTestFactory` defines utility methods that can be used to
/// create AST nodes. The nodes that are created are complete in the sense that
@@ -35,7 +34,7 @@
TokenFactory.tokenFromType(TokenType.AT), name, null, null, null);
static Annotation annotation2(Identifier name,
- SimpleIdentifier constructorName, ArgumentList arguments) =>
+ SimpleIdentifier? constructorName, ArgumentList arguments) =>
astFactory.annotation(
TokenFactory.tokenFromType(TokenType.AT),
name,
@@ -45,7 +44,7 @@
constructorName,
arguments);
- static ArgumentList argumentList([List<Expression> arguments]) =>
+ static ArgumentList argumentList([List<Expression> arguments = const []]) =>
astFactory.argumentList(TokenFactory.tokenFromType(TokenType.OPEN_PAREN),
arguments, TokenFactory.tokenFromType(TokenType.CLOSE_PAREN));
@@ -65,7 +64,7 @@
TokenFactory.tokenFromType(TokenType.CLOSE_PAREN));
static AssertStatement assertStatement(Expression condition,
- [Expression message]) =>
+ [Expression? message]) =>
astFactory.assertStatement(
TokenFactory.tokenFromKeyword(Keyword.ASSERT),
TokenFactory.tokenFromType(TokenType.OPEN_PAREN),
@@ -81,7 +80,7 @@
leftHandSide, TokenFactory.tokenFromType(operator), rightHandSide);
static BlockFunctionBody asyncBlockFunctionBody(
- [List<Statement> statements]) =>
+ [List<Statement> statements = const []]) =>
astFactory.blockFunctionBody(
TokenFactory.tokenFromTypeAndString(TokenType.IDENTIFIER, "async"),
null,
@@ -96,7 +95,7 @@
TokenFactory.tokenFromType(TokenType.SEMICOLON));
static BlockFunctionBody asyncGeneratorBlockFunctionBody(
- [List<Statement> statements]) =>
+ [List<Statement> statements = const []]) =>
astFactory.blockFunctionBody(
TokenFactory.tokenFromTypeAndString(TokenType.IDENTIFIER, "async"),
TokenFactory.tokenFromType(TokenType.STAR),
@@ -112,15 +111,17 @@
astFactory.binaryExpression(
leftOperand, TokenFactory.tokenFromType(operator), rightOperand);
- static Block block([List<Statement> statements]) => astFactory.block(
- TokenFactory.tokenFromType(TokenType.OPEN_CURLY_BRACKET),
- statements,
- TokenFactory.tokenFromType(TokenType.CLOSE_CURLY_BRACKET));
+ static Block block([List<Statement> statements = const []]) =>
+ astFactory.block(
+ TokenFactory.tokenFromType(TokenType.OPEN_CURLY_BRACKET),
+ statements,
+ TokenFactory.tokenFromType(TokenType.CLOSE_CURLY_BRACKET));
static BlockFunctionBody blockFunctionBody(Block block) =>
astFactory.blockFunctionBody(null, null, block);
- static BlockFunctionBody blockFunctionBody2([List<Statement> statements]) =>
+ static BlockFunctionBody blockFunctionBody2(
+ [List<Statement> statements = const []]) =>
astFactory.blockFunctionBody(null, null, block(statements));
static BooleanLiteral booleanLiteral(bool value) => astFactory.booleanLiteral(
@@ -148,7 +149,7 @@
TokenFactory.tokenFromType(TokenType.CLOSE_SQUARE_BRACKET));
static MethodInvocation cascadedMethodInvocation(String methodName,
- [List<Expression> arguments]) =>
+ [List<Expression> arguments = const []]) =>
astFactory.methodInvocation(
null,
TokenFactory.tokenFromType(TokenType.PERIOD_PERIOD),
@@ -163,33 +164,33 @@
identifier3(propertyName));
static CascadeExpression cascadeExpression(Expression target,
- [List<Expression> cascadeSections]) {
+ [List<Expression> cascadeSections = const []]) {
var cascade = astFactory.cascadeExpression(target, cascadeSections);
cascade.target.endToken.next = cascadeSections.first.beginToken;
return cascade;
}
static CatchClause catchClause(String exceptionParameter,
- [List<Statement> statements]) =>
+ [List<Statement> statements = const []]) =>
catchClause5(null, exceptionParameter, null, statements);
static CatchClause catchClause2(
String exceptionParameter, String stackTraceParameter,
- [List<Statement> statements]) =>
+ [List<Statement> statements = const []]) =>
catchClause5(null, exceptionParameter, stackTraceParameter, statements);
static CatchClause catchClause3(TypeAnnotation exceptionType,
- [List<Statement> statements]) =>
+ [List<Statement> statements = const []]) =>
catchClause5(exceptionType, null, null, statements);
static CatchClause catchClause4(
TypeAnnotation exceptionType, String exceptionParameter,
- [List<Statement> statements]) =>
+ [List<Statement> statements = const []]) =>
catchClause5(exceptionType, exceptionParameter, null, statements);
- static CatchClause catchClause5(TypeAnnotation exceptionType,
- String exceptionParameter, String stackTraceParameter,
- [List<Statement> statements]) =>
+ static CatchClause catchClause5(TypeAnnotation? exceptionType,
+ String? exceptionParameter, String? stackTraceParameter,
+ [List<Statement> statements = const []]) =>
astFactory.catchClause(
exceptionType == null
? null
@@ -212,13 +213,13 @@
block(statements));
static ClassDeclaration classDeclaration(
- Keyword abstractKeyword,
+ Keyword? abstractKeyword,
String name,
- TypeParameterList typeParameters,
- ExtendsClause extendsClause,
- WithClause withClause,
- ImplementsClause implementsClause,
- [List<ClassMember> members]) =>
+ TypeParameterList? typeParameters,
+ ExtendsClause? extendsClause,
+ WithClause? withClause,
+ ImplementsClause? implementsClause,
+ [List<ClassMember> members = const []]) =>
astFactory.classDeclaration(
null,
null,
@@ -237,11 +238,11 @@
static ClassTypeAlias classTypeAlias(
String name,
- TypeParameterList typeParameters,
- Keyword abstractKeyword,
+ TypeParameterList? typeParameters,
+ Keyword? abstractKeyword,
TypeName superclass,
WithClause withClause,
- ImplementsClause implementsClause) =>
+ ImplementsClause? implementsClause) =>
astFactory.classTypeAlias(
null,
null,
@@ -257,55 +258,54 @@
implementsClause,
TokenFactory.tokenFromType(TokenType.SEMICOLON));
- static CompilationUnit compilationUnit() =>
- compilationUnit8(null, null, null);
+ static CompilationUnit compilationUnit() => compilationUnit8(null, [], []);
static CompilationUnit compilationUnit2(
List<CompilationUnitMember> declarations) =>
- compilationUnit8(null, null, declarations);
+ compilationUnit8(null, [], declarations);
static CompilationUnit compilationUnit3(List<Directive> directives) =>
- compilationUnit8(null, directives, null);
+ compilationUnit8(null, directives, []);
static CompilationUnit compilationUnit4(List<Directive> directives,
List<CompilationUnitMember> declarations) =>
compilationUnit8(null, directives, declarations);
static CompilationUnit compilationUnit5(String scriptTag) =>
- compilationUnit8(scriptTag, null, null);
+ compilationUnit8(scriptTag, [], []);
static CompilationUnit compilationUnit6(
String scriptTag, List<CompilationUnitMember> declarations) =>
- compilationUnit8(scriptTag, null, declarations);
+ compilationUnit8(scriptTag, [], declarations);
static CompilationUnit compilationUnit7(
String scriptTag, List<Directive> directives) =>
- compilationUnit8(scriptTag, directives, null);
+ compilationUnit8(scriptTag, directives, []);
static CompilationUnit compilationUnit8(
- String scriptTag,
+ String? scriptTag,
List<Directive> directives,
List<CompilationUnitMember> declarations) =>
astFactory.compilationUnit(
beginToken: TokenFactory.tokenFromType(TokenType.EOF),
scriptTag:
scriptTag == null ? null : AstTestFactory.scriptTag(scriptTag),
- directives: directives ?? <Directive>[],
- declarations: declarations ?? <CompilationUnitMember>[],
+ directives: directives,
+ declarations: declarations,
endToken: TokenFactory.tokenFromType(TokenType.EOF),
- featureSet: null);
+ featureSet: FeatureSet.latestLanguageVersion());
static CompilationUnit compilationUnit9(
- {String scriptTag,
- List<Directive> directives,
- List<CompilationUnitMember> declarations,
- FeatureSet featureSet}) =>
+ {String? scriptTag,
+ List<Directive> directives = const [],
+ List<CompilationUnitMember> declarations = const [],
+ required FeatureSet featureSet}) =>
astFactory.compilationUnit(
beginToken: TokenFactory.tokenFromType(TokenType.EOF),
scriptTag:
scriptTag == null ? null : AstTestFactory.scriptTag(scriptTag),
- directives: directives ?? <Directive>[],
- declarations: declarations ?? <CompilationUnitMember>[],
+ directives: directives,
+ declarations: declarations,
endToken: TokenFactory.tokenFromType(TokenType.EOF),
featureSet: featureSet);
@@ -320,7 +320,7 @@
static ConstructorDeclaration constructorDeclaration(
Identifier returnType,
- String name,
+ String? name,
FormalParameterList parameters,
List<ConstructorInitializer> initializers) =>
astFactory.constructorDeclaration(
@@ -333,18 +333,18 @@
name == null ? null : TokenFactory.tokenFromType(TokenType.PERIOD),
name == null ? null : identifier3(name),
parameters,
- initializers == null || initializers.isEmpty
+ initializers.isEmpty
? null
: TokenFactory.tokenFromType(TokenType.PERIOD),
- initializers ?? <ConstructorInitializer>[],
+ initializers,
null,
emptyFunctionBody());
static ConstructorDeclaration constructorDeclaration2(
- Keyword constKeyword,
- Keyword factoryKeyword,
+ Keyword? constKeyword,
+ Keyword? factoryKeyword,
Identifier returnType,
- String name,
+ String? name,
FormalParameterList parameters,
List<ConstructorInitializer> initializers,
FunctionBody body) =>
@@ -362,10 +362,10 @@
name == null ? null : TokenFactory.tokenFromType(TokenType.PERIOD),
name == null ? null : identifier3(name),
parameters,
- initializers == null || initializers.isEmpty
+ initializers.isEmpty
? null
: TokenFactory.tokenFromType(TokenType.PERIOD),
- initializers ?? <ConstructorInitializer>[],
+ initializers,
null,
body);
@@ -380,13 +380,13 @@
TokenFactory.tokenFromType(TokenType.EQ),
expression);
- static ConstructorName constructorName(TypeName type, String name) =>
+ static ConstructorName constructorName(TypeName type, String? name) =>
astFactory.constructorName(
type,
name == null ? null : TokenFactory.tokenFromType(TokenType.PERIOD),
name == null ? null : identifier3(name));
- static ContinueStatement continueStatement([String label]) =>
+ static ContinueStatement continueStatement([String? label]) =>
astFactory.continueStatement(
TokenFactory.tokenFromKeyword(Keyword.CONTINUE),
label == null ? null : identifier3(label),
@@ -397,7 +397,7 @@
declaredIdentifier2(keyword, null, identifier);
static DeclaredIdentifier declaredIdentifier2(
- Keyword keyword, TypeAnnotation type, String identifier) =>
+ Keyword? keyword, TypeAnnotation? type, String identifier) =>
astFactory.declaredIdentifier(
null,
null,
@@ -449,18 +449,18 @@
static EnumDeclaration enumDeclaration2(
String name, List<String> constantNames) {
- int count = constantNames.length;
- List<EnumConstantDeclaration> constants =
- List<EnumConstantDeclaration>.filled(count, null);
- for (int i = 0; i < count; i++) {
- constants[i] = astFactory.enumConstantDeclaration(
- null, null, identifier3(constantNames[i]));
- }
+ var constants = constantNames.map((name) {
+ return astFactory.enumConstantDeclaration(
+ null,
+ null,
+ identifier3(name),
+ );
+ }).toList();
return enumDeclaration(identifier3(name), constants);
}
static ExportDirective exportDirective(List<Annotation> metadata, String uri,
- [List<Combinator> combinators]) =>
+ [List<Combinator> combinators = const []]) =>
astFactory.exportDirective(
null,
metadata,
@@ -471,8 +471,8 @@
TokenFactory.tokenFromType(TokenType.SEMICOLON));
static ExportDirective exportDirective2(String uri,
- [List<Combinator> combinators]) =>
- exportDirective(null, uri, combinators);
+ [List<Combinator> combinators = const []]) =>
+ exportDirective([], uri, combinators);
static ExpressionFunctionBody expressionFunctionBody(Expression expression) =>
astFactory.expressionFunctionBody(
@@ -489,10 +489,10 @@
TokenFactory.tokenFromKeyword(Keyword.EXTENDS), type);
static ExtensionDeclaration extensionDeclaration(
- {@required String name,
- TypeParameterList typeParameters,
- @required TypeAnnotation extendedType,
- List<ClassMember> members}) =>
+ {required String name,
+ TypeParameterList? typeParameters,
+ required TypeAnnotation extendedType,
+ List<ClassMember> members = const []}) =>
astFactory.extensionDeclaration(
comment: null,
metadata: null,
@@ -507,16 +507,16 @@
TokenFactory.tokenFromType(TokenType.CLOSE_CURLY_BRACKET));
static ExtensionOverride extensionOverride(
- {@required Identifier extensionName,
- TypeArgumentList typeArguments,
- @required ArgumentList argumentList}) =>
+ {required Identifier extensionName,
+ TypeArgumentList? typeArguments,
+ required ArgumentList argumentList}) =>
astFactory.extensionOverride(
extensionName: extensionName,
typeArguments: typeArguments,
argumentList: argumentList);
- static FieldDeclaration fieldDeclaration(bool isStatic, Keyword keyword,
- TypeAnnotation type, List<VariableDeclaration> variables,
+ static FieldDeclaration fieldDeclaration(bool isStatic, Keyword? keyword,
+ TypeAnnotation? type, List<VariableDeclaration> variables,
{bool isAbstract = false, bool isExternal = false}) =>
astFactory.fieldDeclaration2(
abstractKeyword: isAbstract
@@ -530,13 +530,13 @@
fieldList: variableDeclarationList(keyword, type, variables),
semicolon: TokenFactory.tokenFromType(TokenType.SEMICOLON));
- static FieldDeclaration fieldDeclaration2(bool isStatic, Keyword keyword,
+ static FieldDeclaration fieldDeclaration2(bool isStatic, Keyword? keyword,
List<VariableDeclaration> variables) =>
fieldDeclaration(isStatic, keyword, null, variables);
static FieldFormalParameter fieldFormalParameter(
- Keyword keyword, TypeAnnotation type, String identifier,
- [FormalParameterList parameterList]) =>
+ Keyword? keyword, TypeAnnotation? type, String identifier,
+ [FormalParameterList? parameterList]) =>
astFactory.fieldFormalParameter2(
keyword:
keyword == null ? null : TokenFactory.tokenFromKeyword(keyword),
@@ -576,7 +576,7 @@
body: body);
static FormalParameterList formalParameterList(
- [List<FormalParameter> parameters]) =>
+ [List<FormalParameter> parameters = const []]) =>
astFactory.formalParameterList(
TokenFactory.tokenFromType(TokenType.OPEN_PAREN),
parameters,
@@ -586,8 +586,8 @@
static ForPartsWithDeclarations forPartsWithDeclarations(
VariableDeclarationList variables,
- Expression condition,
- List<Expression> updaters) =>
+ Expression? condition,
+ List<Expression>? updaters) =>
astFactory.forPartsWithDeclarations(
variables: variables,
leftSeparator: TokenFactory.tokenFromType(TokenType.SEMICOLON),
@@ -596,9 +596,9 @@
updaters: updaters);
static ForPartsWithExpression forPartsWithExpression(
- Expression initialization,
- Expression condition,
- List<Expression> updaters) =>
+ Expression? initialization,
+ Expression? condition,
+ List<Expression>? updaters) =>
astFactory.forPartsWithExpression(
initialization: initialization,
leftSeparator: TokenFactory.tokenFromType(TokenType.SEMICOLON),
@@ -615,8 +615,8 @@
body: body);
static FunctionDeclaration functionDeclaration(
- TypeAnnotation type,
- Keyword keyword,
+ TypeAnnotation? type,
+ Keyword? keyword,
String name,
FunctionExpression functionExpression) =>
astFactory.functionDeclaration(
@@ -629,8 +629,8 @@
functionExpression);
static FunctionDeclarationStatement functionDeclarationStatement(
- TypeAnnotation type,
- Keyword keyword,
+ TypeAnnotation? type,
+ Keyword? keyword,
String name,
FunctionExpression functionExpression) =>
astFactory.functionDeclarationStatement(
@@ -651,19 +651,19 @@
static FunctionExpressionInvocation functionExpressionInvocation(
Expression function,
- [List<Expression> arguments]) =>
+ [List<Expression> arguments = const []]) =>
functionExpressionInvocation2(function, null, arguments);
static FunctionExpressionInvocation functionExpressionInvocation2(
Expression function,
- [TypeArgumentList typeArguments,
- List<Expression> arguments]) =>
+ [TypeArgumentList? typeArguments,
+ List<Expression> arguments = const []]) =>
astFactory.functionExpressionInvocation(
function, typeArguments, argumentList(arguments));
static FunctionTypedFormalParameter functionTypedFormalParameter(
- TypeAnnotation returnType, String identifier,
- [List<FormalParameter> parameters]) =>
+ TypeAnnotation? returnType, String identifier,
+ [List<FormalParameter> parameters = const []]) =>
astFactory.functionTypedFormalParameter2(
returnType: returnType,
identifier: identifier3(identifier),
@@ -718,9 +718,6 @@
identifier3(identifier));
static List<SimpleIdentifier> identifierList(List<String> identifiers) {
- if (identifiers == null) {
- return null;
- }
return identifiers
.map((String identifier) => identifier3(identifier))
.toList();
@@ -728,7 +725,7 @@
static IfElement ifElement(
Expression condition, CollectionElement thenElement,
- [CollectionElement elseElement]) =>
+ [CollectionElement? elseElement]) =>
astFactory.ifElement(
ifKeyword: TokenFactory.tokenFromKeyword(Keyword.IF),
leftParenthesis: TokenFactory.tokenFromType(TokenType.OPEN_PAREN),
@@ -745,7 +742,7 @@
ifStatement2(condition, thenStatement, null);
static IfStatement ifStatement2(Expression condition, Statement thenStatement,
- Statement elseStatement) =>
+ Statement? elseStatement) =>
astFactory.ifStatement(
TokenFactory.tokenFromKeyword(Keyword.IF),
TokenFactory.tokenFromType(TokenType.OPEN_PAREN),
@@ -761,9 +758,9 @@
astFactory.implementsClause(
TokenFactory.tokenFromKeyword(Keyword.IMPLEMENTS), types);
- static ImportDirective importDirective(
- List<Annotation> metadata, String uri, bool isDeferred, String prefix,
- [List<Combinator> combinators]) =>
+ static ImportDirective importDirective(List<Annotation> metadata, String uri,
+ bool isDeferred, String? prefix,
+ [List<Combinator> combinators = const []]) =>
astFactory.importDirective(
null,
metadata,
@@ -778,17 +775,17 @@
static ImportDirective importDirective2(
String uri, bool isDeferred, String prefix,
- [List<Combinator> combinators]) =>
- importDirective(null, uri, isDeferred, prefix, combinators);
+ [List<Combinator> combinators = const []]) =>
+ importDirective([], uri, isDeferred, prefix, combinators);
- static ImportDirective importDirective3(String uri, String prefix,
- [List<Combinator> combinators]) =>
- importDirective(null, uri, false, prefix, combinators);
+ static ImportDirective importDirective3(String uri, String? prefix,
+ [List<Combinator> combinators = const []]) =>
+ importDirective([], uri, false, prefix, combinators);
static IndexExpression indexExpression({
- @required Expression target,
+ required Expression target,
bool hasQuestion = false,
- @required Expression index,
+ required Expression index,
}) {
return astFactory.indexExpressionForTarget2(
target: target,
@@ -817,21 +814,21 @@
TokenFactory.tokenFromType(TokenType.CLOSE_SQUARE_BRACKET));
static InstanceCreationExpression instanceCreationExpression(
- Keyword keyword, ConstructorName name,
- [List<Expression> arguments]) =>
+ Keyword? keyword, ConstructorName name,
+ [List<Expression> arguments = const []]) =>
astFactory.instanceCreationExpression(
keyword == null ? null : TokenFactory.tokenFromKeyword(keyword),
name,
argumentList(arguments));
static InstanceCreationExpression instanceCreationExpression2(
- Keyword keyword, TypeName type,
- [List<Expression> arguments]) =>
+ Keyword? keyword, TypeName type,
+ [List<Expression> arguments = const []]) =>
instanceCreationExpression3(keyword, type, null, arguments);
static InstanceCreationExpression instanceCreationExpression3(
- Keyword keyword, TypeName type, String identifier,
- [List<Expression> arguments]) =>
+ Keyword? keyword, TypeName type, String? identifier,
+ [List<Expression> arguments = const []]) =>
instanceCreationExpression(
keyword,
astFactory.constructorName(
@@ -905,12 +902,12 @@
return elements;
}
- static ListLiteral listLiteral([List<Expression> elements]) =>
+ static ListLiteral listLiteral([List<Expression> elements = const []]) =>
listLiteral2(null, null, elements);
static ListLiteral listLiteral2(
- Keyword keyword, TypeArgumentList typeArguments,
- [List<CollectionElement> elements]) =>
+ Keyword? keyword, TypeArgumentList? typeArguments,
+ [List<CollectionElement> elements = const []]) =>
astFactory.listLiteral(
keyword == null ? null : TokenFactory.tokenFromKeyword(keyword),
typeArguments,
@@ -931,12 +928,12 @@
TokenFactory.tokenFromType(TokenType.COLON), string2(value));
static MethodDeclaration methodDeclaration(
- Keyword modifier,
- TypeAnnotation returnType,
- Keyword property,
- Keyword operator,
+ Keyword? modifier,
+ TypeAnnotation? returnType,
+ Keyword? property,
+ Keyword? operator,
SimpleIdentifier name,
- FormalParameterList parameters) =>
+ FormalParameterList? parameters) =>
astFactory.methodDeclaration(
null,
null,
@@ -951,12 +948,12 @@
emptyFunctionBody());
static MethodDeclaration methodDeclaration2(
- Keyword modifier,
- TypeAnnotation returnType,
- Keyword property,
- Keyword operator,
+ Keyword? modifier,
+ TypeAnnotation? returnType,
+ Keyword? property,
+ Keyword? operator,
SimpleIdentifier name,
- FormalParameterList parameters,
+ FormalParameterList? parameters,
FunctionBody body) =>
astFactory.methodDeclaration(
null,
@@ -972,13 +969,13 @@
body);
static MethodDeclaration methodDeclaration3(
- Keyword modifier,
- TypeAnnotation returnType,
- Keyword property,
- Keyword operator,
+ Keyword? modifier,
+ TypeAnnotation? returnType,
+ Keyword? property,
+ Keyword? operator,
SimpleIdentifier name,
- TypeParameterList typeParameters,
- FormalParameterList parameters,
+ TypeParameterList? typeParameters,
+ FormalParameterList? parameters,
FunctionBody body) =>
astFactory.methodDeclaration(
null,
@@ -995,13 +992,13 @@
static MethodDeclaration methodDeclaration4(
{bool external = false,
- Keyword modifier,
- TypeAnnotation returnType,
- Keyword property,
+ Keyword? modifier,
+ TypeAnnotation? returnType,
+ Keyword? property,
bool operator = false,
- String name,
- FormalParameterList parameters,
- FunctionBody body}) =>
+ required String name,
+ FormalParameterList? parameters,
+ required FunctionBody body}) =>
astFactory.methodDeclaration(
null,
null,
@@ -1015,8 +1012,9 @@
parameters,
body);
- static MethodInvocation methodInvocation(Expression target, String methodName,
- [List<Expression> arguments,
+ static MethodInvocation methodInvocation(
+ Expression? target, String methodName,
+ [List<Expression> arguments = const [],
TokenType operator = TokenType.PERIOD]) =>
astFactory.methodInvocation(
target,
@@ -1026,12 +1024,12 @@
argumentList(arguments));
static MethodInvocation methodInvocation2(String methodName,
- [List<Expression> arguments]) =>
+ [List<Expression> arguments = const []]) =>
methodInvocation(null, methodName, arguments);
- static MethodInvocation methodInvocation3(
- Expression target, String methodName, TypeArgumentList typeArguments,
- [List<Expression> arguments,
+ static MethodInvocation methodInvocation3(Expression? target,
+ String methodName, TypeArgumentList? typeArguments,
+ [List<Expression> arguments = const [],
TokenType operator = TokenType.PERIOD]) =>
astFactory.methodInvocation(
target,
@@ -1048,7 +1046,7 @@
namedExpression(label2(label), expression);
static DefaultFormalParameter namedFormalParameter(
- NormalFormalParameter parameter, Expression expression) =>
+ NormalFormalParameter parameter, Expression? expression) =>
astFactory.defaultFormalParameter(
parameter,
ParameterKind.NAMED,
@@ -1103,7 +1101,7 @@
TokenFactory.tokenFromType(TokenType.SEMICOLON));
static DefaultFormalParameter positionalFormalParameter(
- NormalFormalParameter parameter, Expression expression) =>
+ NormalFormalParameter parameter, Expression? expression) =>
astFactory.defaultFormalParameter(
parameter,
ParameterKind.POSITIONAL,
@@ -1121,22 +1119,22 @@
TokenFactory.tokenFromType(operator), expression);
static PropertyAccess propertyAccess(
- Expression target, SimpleIdentifier propertyName) =>
+ Expression? target, SimpleIdentifier propertyName) =>
astFactory.propertyAccess(
target, TokenFactory.tokenFromType(TokenType.PERIOD), propertyName);
- static PropertyAccess propertyAccess2(Expression target, String propertyName,
+ static PropertyAccess propertyAccess2(Expression? target, String propertyName,
[TokenType operator = TokenType.PERIOD]) =>
astFactory.propertyAccess(target, TokenFactory.tokenFromType(operator),
identifier3(propertyName));
static RedirectingConstructorInvocation redirectingConstructorInvocation(
- [List<Expression> arguments]) =>
+ [List<Expression> arguments = const []]) =>
redirectingConstructorInvocation2(null, arguments);
static RedirectingConstructorInvocation redirectingConstructorInvocation2(
- String constructorName,
- [List<Expression> arguments]) =>
+ String? constructorName,
+ [List<Expression> arguments = const []]) =>
astFactory.redirectingConstructorInvocation(
TokenFactory.tokenFromKeyword(Keyword.THIS),
constructorName == null
@@ -1150,7 +1148,7 @@
static ReturnStatement returnStatement() => returnStatement2(null);
- static ReturnStatement returnStatement2(Expression expression) =>
+ static ReturnStatement returnStatement2(Expression? expression) =>
astFactory.returnStatement(TokenFactory.tokenFromKeyword(Keyword.RETURN),
expression, TokenFactory.tokenFromType(TokenType.SEMICOLON));
@@ -1158,13 +1156,16 @@
astFactory.scriptTag(TokenFactory.tokenFromString(scriptTag));
static SetOrMapLiteral setOrMapLiteral(
- Keyword keyword, TypeArgumentList typeArguments,
- [List<CollectionElement> elements]) =>
+ Keyword? keyword, TypeArgumentList? typeArguments,
+ [List<CollectionElement> elements = const []]) =>
astFactory.setOrMapLiteral(
- constKeyword:
- keyword == null ? null : TokenFactory.tokenFromKeyword(keyword),
- typeArguments: typeArguments,
- elements: elements);
+ constKeyword:
+ keyword == null ? null : TokenFactory.tokenFromKeyword(keyword),
+ typeArguments: typeArguments,
+ leftBracket: TokenFactory.tokenFromType(TokenType.OPEN_CURLY_BRACKET),
+ elements: elements,
+ rightBracket: TokenFactory.tokenFromType(TokenType.CLOSE_CURLY_BRACKET),
+ );
static ShowCombinator showCombinator(List<SimpleIdentifier> identifiers) =>
astFactory.showCombinator(
@@ -1179,7 +1180,7 @@
simpleFormalParameter2(keyword, null, parameterName);
static SimpleFormalParameter simpleFormalParameter2(
- Keyword keyword, TypeAnnotation type, String parameterName) =>
+ Keyword? keyword, TypeAnnotation? type, String? parameterName) =>
astFactory.simpleFormalParameter2(
keyword:
keyword == null ? null : TokenFactory.tokenFromKeyword(keyword),
@@ -1191,7 +1192,7 @@
simpleFormalParameter2(null, null, parameterName);
static SimpleFormalParameter simpleFormalParameter4(
- TypeAnnotation type, String parameterName) =>
+ TypeAnnotation type, String? parameterName) =>
simpleFormalParameter2(null, type, parameterName);
static SpreadElement spreadElement(
@@ -1200,18 +1201,19 @@
spreadOperator: TokenFactory.tokenFromType(operator),
expression: expression);
- static StringInterpolation string([List<InterpolationElement> elements]) =>
+ static StringInterpolation string(
+ [List<InterpolationElement> elements = const []]) =>
astFactory.stringInterpolation(elements);
static SimpleStringLiteral string2(String content) => astFactory
.simpleStringLiteral(TokenFactory.tokenFromString("'$content'"), content);
static SuperConstructorInvocation superConstructorInvocation(
- [List<Expression> arguments]) =>
+ [List<Expression> arguments = const []]) =>
superConstructorInvocation2(null, arguments);
- static SuperConstructorInvocation superConstructorInvocation2(String name,
- [List<Expression> arguments]) =>
+ static SuperConstructorInvocation superConstructorInvocation2(String? name,
+ [List<Expression> arguments = const []]) =>
astFactory.superConstructorInvocation(
TokenFactory.tokenFromKeyword(Keyword.SUPER),
name == null ? null : TokenFactory.tokenFromType(TokenType.PERIOD),
@@ -1263,14 +1265,14 @@
}
static BlockFunctionBody syncBlockFunctionBody(
- [List<Statement> statements]) =>
+ [List<Statement> statements = const []]) =>
astFactory.blockFunctionBody(
TokenFactory.tokenFromTypeAndString(TokenType.IDENTIFIER, "sync"),
null,
block(statements));
static BlockFunctionBody syncGeneratorBlockFunctionBody(
- [List<Statement> statements]) =>
+ [List<Statement> statements = const []]) =>
astFactory.blockFunctionBody(
TokenFactory.tokenFromTypeAndString(TokenType.IDENTIFIER, "sync"),
TokenFactory.tokenFromType(TokenType.STAR),
@@ -1279,15 +1281,13 @@
static ThisExpression thisExpression() =>
astFactory.thisExpression(TokenFactory.tokenFromKeyword(Keyword.THIS));
- static ThrowExpression throwExpression() => throwExpression2(null);
-
static ThrowExpression throwExpression2(Expression expression) =>
astFactory.throwExpression(
TokenFactory.tokenFromKeyword(Keyword.THROW), expression);
static TopLevelVariableDeclaration topLevelVariableDeclaration(
- Keyword keyword,
- TypeAnnotation type,
+ Keyword? keyword,
+ TypeAnnotation? type,
List<VariableDeclaration> variables) =>
astFactory.topLevelVariableDeclaration(
null,
@@ -1296,7 +1296,7 @@
TokenFactory.tokenFromType(TokenType.SEMICOLON));
static TopLevelVariableDeclaration topLevelVariableDeclaration2(
- Keyword keyword, List<VariableDeclaration> variables,
+ Keyword? keyword, List<VariableDeclaration> variables,
{bool isExternal = false}) =>
astFactory.topLevelVariableDeclaration(
null,
@@ -1315,7 +1315,7 @@
tryStatement3(body, catchClauses, null);
static TryStatement tryStatement3(
- Block body, List<CatchClause> catchClauses, Block finallyClause) =>
+ Block body, List<CatchClause> catchClauses, Block? finallyClause) =>
astFactory.tryStatement(
TokenFactory.tokenFromKeyword(Keyword.TRY),
body,
@@ -1326,7 +1326,7 @@
finallyClause);
static FunctionTypeAlias typeAlias(TypeAnnotation returnType, String name,
- TypeParameterList typeParameters, FormalParameterList parameters) =>
+ TypeParameterList? typeParameters, FormalParameterList parameters) =>
astFactory.functionTypeAlias(
null,
null,
@@ -1337,10 +1337,14 @@
parameters,
TokenFactory.tokenFromType(TokenType.SEMICOLON));
- static TypeArgumentList typeArgumentList(List<TypeAnnotation> types) {
+ static TypeArgumentList? typeArgumentList(List<TypeAnnotation>? types) {
if (types == null || types.isEmpty) {
return null;
}
+ return typeArgumentList2(types);
+ }
+
+ static TypeArgumentList typeArgumentList2(List<TypeAnnotation> types) {
return astFactory.typeArgumentList(TokenFactory.tokenFromType(TokenType.LT),
types, TokenFactory.tokenFromType(TokenType.GT));
}
@@ -1351,7 +1355,7 @@
/// <b>Note:</b> This method does not correctly handle class elements that
/// have type parameters.
static TypeName typeName(ClassElement element,
- [List<TypeAnnotation> arguments]) {
+ [List<TypeAnnotation>? arguments]) {
SimpleIdentifier name = identifier3(element.name);
name.staticElement = element;
TypeName typeName = typeName3(name, arguments);
@@ -1366,11 +1370,11 @@
}
static TypeName typeName3(Identifier name,
- [List<TypeAnnotation> arguments]) =>
+ [List<TypeAnnotation>? arguments]) =>
astFactory.typeName(name, typeArgumentList(arguments));
static TypeName typeName4(String name,
- [List<TypeAnnotation> arguments, bool question = false]) =>
+ [List<TypeAnnotation>? arguments, bool question = false]) =>
astFactory.typeName(identifier3(name), typeArgumentList(arguments),
question:
question ? TokenFactory.tokenFromType(TokenType.QUESTION) : null);
@@ -1393,14 +1397,19 @@
bound: null,
varianceKeyword: TokenFactory.tokenFromString(varianceLexeme));
- static TypeParameterList typeParameterList([List<String> typeNames]) {
- List<TypeParameter> typeParameters;
- if (typeNames != null && typeNames.isNotEmpty) {
- typeParameters = <TypeParameter>[];
- for (String typeName in typeNames) {
- typeParameters.add(typeParameter(typeName));
- }
+ static TypeParameterList? typeParameterList([List<String>? typeNames]) {
+ if (typeNames == null || typeNames.isEmpty) {
+ return null;
}
+ return typeParameterList2(typeNames);
+ }
+
+ static TypeParameterList typeParameterList2(List<String> typeNames) {
+ var typeParameters = <TypeParameter>[];
+ for (String typeName in typeNames) {
+ typeParameters.add(typeParameter(typeName));
+ }
+
return astFactory.typeParameterList(
TokenFactory.tokenFromType(TokenType.LT),
typeParameters,
@@ -1415,8 +1424,8 @@
astFactory.variableDeclaration(identifier3(name),
TokenFactory.tokenFromType(TokenType.EQ), initializer);
- static VariableDeclarationList variableDeclarationList(Keyword keyword,
- TypeAnnotation type, List<VariableDeclaration> variables) =>
+ static VariableDeclarationList variableDeclarationList(Keyword? keyword,
+ TypeAnnotation? type, List<VariableDeclaration> variables) =>
astFactory.variableDeclarationList(
null,
null,
@@ -1425,12 +1434,12 @@
variables);
static VariableDeclarationList variableDeclarationList2(
- Keyword keyword, List<VariableDeclaration> variables) =>
+ Keyword? keyword, List<VariableDeclaration> variables) =>
variableDeclarationList(keyword, null, variables);
static VariableDeclarationStatement variableDeclarationStatement(
- Keyword keyword,
- TypeAnnotation type,
+ Keyword? keyword,
+ TypeAnnotation? type,
List<VariableDeclaration> variables) =>
astFactory.variableDeclarationStatement(
variableDeclarationList(keyword, type, variables),
diff --git a/pkg/analyzer/lib/src/generated/testing/element_factory.dart b/pkg/analyzer/lib/src/generated/testing/element_factory.dart
index 88250f8..30a9ab0 100644
--- a/pkg/analyzer/lib/src/generated/testing/element_factory.dart
+++ b/pkg/analyzer/lib/src/generated/testing/element_factory.dart
@@ -22,7 +22,7 @@
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/generated/testing/ast_test_factory.dart';
import 'package:analyzer/src/generated/utilities_dart.dart';
-import 'package:meta/meta.dart';
+import 'package:collection/collection.dart';
import 'package:path/path.dart';
/// The class `ElementFactory` defines utility methods used to create elements
@@ -31,8 +31,8 @@
/// provided information, has been created.
class ElementFactory {
/// The element representing the class 'Object'.
- static ClassElementImpl _objectElement;
- static InterfaceType _objectType;
+ static ClassElementImpl? _objectElement;
+ static InterfaceType? _objectType;
static ClassElementImpl get object {
return _objectElement ??= classElement("Object", null);
@@ -46,8 +46,8 @@
}
static ClassElementImpl classElement(
- String typeName, InterfaceType superclassType,
- [List<String> parameterNames]) {
+ String typeName, InterfaceType? superclassType,
+ [List<String>? parameterNames]) {
ClassElementImpl element = ClassElementImpl(typeName, 0);
element.constructors = const <ConstructorElement>[];
element.supertype = superclassType;
@@ -58,14 +58,14 @@
}
static ClassElementImpl classElement2(String typeName,
- [List<String> parameterNames]) =>
+ [List<String>? parameterNames]) =>
classElement(typeName, objectType, parameterNames);
static ClassElementImpl classElement3({
- @required String name,
- List<TypeParameterElement> typeParameters,
+ required String name,
+ List<TypeParameterElement>? typeParameters,
List<String> typeParameterNames = const [],
- InterfaceType supertype,
+ InterfaceType? supertype,
List<InterfaceType> mixins = const [],
List<InterfaceType> interfaces = const [],
}) {
@@ -83,7 +83,7 @@
static ClassElementImpl classTypeAlias(
String typeName, InterfaceType superclassType,
- [List<String> parameterNames]) {
+ [List<String>? parameterNames]) {
ClassElementImpl element =
classElement(typeName, superclassType, parameterNames);
element.isMixinApplication = true;
@@ -91,11 +91,11 @@
}
static ClassElementImpl classTypeAlias2(String typeName,
- [List<String> parameterNames]) =>
+ [List<String>? parameterNames]) =>
classTypeAlias(typeName, objectType, parameterNames);
static CompilationUnitElementImpl compilationUnit(String fileName,
- [Source librarySource]) {
+ [Source? librarySource]) {
Source source =
NonExistingSource(fileName, toUri(fileName), UriKind.FILE_URI);
CompilationUnitElementImpl unit = CompilationUnitElementImpl();
@@ -109,8 +109,8 @@
ConstLocalVariableElementImpl(name, 0);
static ConstructorElementImpl constructorElement(
- ClassElement definingClass, String name, bool isConst,
- [List<DartType> argumentTypes]) {
+ ClassElement definingClass, String? name, bool isConst,
+ [List<DartType> argumentTypes = const []]) {
ConstructorElementImpl constructor = name == null
? ConstructorElementImpl("", -1)
: ConstructorElementImpl(name, 0);
@@ -124,20 +124,7 @@
}
constructor.isSynthetic = name == null;
constructor.isConst = isConst;
- if (argumentTypes != null) {
- int count = argumentTypes.length;
- List<ParameterElement> parameters =
- List<ParameterElement>.filled(count, null);
- for (int i = 0; i < count; i++) {
- ParameterElementImpl parameter = ParameterElementImpl("a$i", i);
- parameter.type = argumentTypes[i];
- parameter.parameterKind = ParameterKind.REQUIRED;
- parameters[i] = parameter;
- }
- constructor.parameters = parameters;
- } else {
- constructor.parameters = <ParameterElement>[];
- }
+ constructor.parameters = _requiredParameters(argumentTypes);
constructor.enclosingElement = definingClass;
if (!constructor.isSynthetic) {
constructor.constantInitializers = <ConstructorInitializer>[];
@@ -146,13 +133,13 @@
}
static ConstructorElementImpl constructorElement2(
- ClassElement definingClass, String name,
- [List<DartType> argumentTypes]) =>
+ ClassElement definingClass, String? name,
+ [List<DartType> argumentTypes = const []]) =>
constructorElement(definingClass, name, false, argumentTypes);
@deprecated
static EnumElementImpl enumElement(TypeProvider typeProvider, String enumName,
- [List<String> constantNames]) {
+ [List<String> constantNames = const []]) {
var typeSystem = TypeSystemImpl(
implicitCasts: false,
isNonNullableByDefault: false,
@@ -191,7 +178,7 @@
//
// Build the enum constants.
//
- if (constantNames != null) {
+ {
int constantCount = constantNames.length;
for (int i = 0; i < constantCount; i++) {
String constantName = constantNames[i];
@@ -228,13 +215,9 @@
return spec;
}
- static ExtensionElementImpl extensionElement(
- [String name, DartType extendedType]) =>
- ExtensionElementImpl(name, -1)..extendedType = extendedType;
-
static FieldElementImpl fieldElement(
String name, bool isStatic, bool isFinal, bool isConst, DartType type,
- {Expression initializer}) {
+ {Expression? initializer}) {
FieldElementImpl field =
isConst ? ConstFieldElementImpl(name, 0) : FieldElementImpl(name, 0);
field.isConst = isConst;
@@ -280,7 +263,7 @@
}
static ImportElementImpl importFor(
- LibraryElement importedLibrary, PrefixElement prefix,
+ LibraryElement importedLibrary, PrefixElement? prefix,
[List<NamespaceCombinator> combinators = const <NamespaceCombinator>[]]) {
ImportElementImpl spec = ImportElementImpl(0);
spec.importedLibrary = importedLibrary;
@@ -295,7 +278,7 @@
CompilationUnitElementImpl unit = compilationUnit(fileName);
LibraryElementImpl library = LibraryElementImpl(
context,
- AnalysisSessionImpl(null),
+ _MockAnalysisSession(),
libraryName,
0,
libraryName.length,
@@ -315,22 +298,9 @@
LocalVariableElementImpl(name, 0);
static MethodElementImpl methodElement(String methodName, DartType returnType,
- [List<DartType> argumentTypes]) {
+ [List<DartType> argumentTypes = const []]) {
MethodElementImpl method = MethodElementImpl(methodName, 0);
- if (argumentTypes == null) {
- method.parameters = const <ParameterElement>[];
- } else {
- int count = argumentTypes.length;
- List<ParameterElement> parameters =
- List<ParameterElement>.filled(count, null);
- for (int i = 0; i < count; i++) {
- ParameterElementImpl parameter = ParameterElementImpl("a$i", i);
- parameter.type = argumentTypes[i];
- parameter.parameterKind = ParameterKind.REQUIRED;
- parameters[i] = parameter;
- }
- method.parameters = parameters;
- }
+ method.parameters = _requiredParameters(argumentTypes);
method.returnType = returnType;
return method;
}
@@ -348,8 +318,8 @@
}
static MixinElementImpl mixinElement({
- @required String name,
- List<TypeParameterElement> typeParameters,
+ required String name,
+ List<TypeParameterElement>? typeParameters,
List<String> typeParameterNames = const [],
List<InterfaceType> constraints = const [],
List<InterfaceType> interfaces = const [],
@@ -381,17 +351,6 @@
return parameter;
}
- static ParameterElementImpl namedParameter3(String name,
- {DartType type, Expression initializer, String initializerCode}) {
- DefaultParameterElementImpl parameter =
- DefaultParameterElementImpl(name, 0);
- parameter.parameterKind = ParameterKind.NAMED;
- parameter.type = type;
- parameter.constantInitializer = initializer;
- parameter.defaultValueCode = initializerCode;
- return parameter;
- }
-
static ParameterElementImpl positionalParameter(String name) {
ParameterElementImpl parameter = ParameterElementImpl(name, 0);
parameter.parameterKind = ParameterKind.POSITIONAL;
@@ -447,7 +406,7 @@
TopLevelVariableElementImpl(name.name, name.offset);
static TopLevelVariableElementImpl topLevelVariableElement2(String name) =>
- topLevelVariableElement3(name, false, false, null);
+ topLevelVariableElement3(name, false, false, DynamicTypeImpl.instance);
static TopLevelVariableElementImpl topLevelVariableElement3(
String name, bool isConst, bool isFinal, DartType type) {
@@ -460,7 +419,7 @@
AstTestFactory.instanceCreationExpression2(
Keyword.CONST, AstTestFactory.typeName(typeElement));
if (type is InterfaceType) {
- ConstructorElement element = typeElement.unnamedConstructor;
+ var element = typeElement.unnamedConstructor;
initializer.constructorName.staticElement = element;
}
constant.constantInitializer = initializer;
@@ -484,23 +443,30 @@
}
static List<TypeParameterElement> typeParameters(List<String> names) {
- int count = names.length;
- if (count == 0) {
- return const <TypeParameterElement>[];
- }
- List<TypeParameterElementImpl> typeParameters =
- List<TypeParameterElementImpl>.filled(count, null);
- for (int i = 0; i < count; i++) {
- typeParameters[i] = typeParameterWithType(names[i]);
- }
- return typeParameters;
+ return names.map((name) => typeParameterWithType(name)).toList();
}
static TypeParameterElementImpl typeParameterWithType(String name,
- [DartType bound, Variance variance]) {
+ [DartType? bound, Variance? variance]) {
TypeParameterElementImpl typeParameter = typeParameterElement(name);
typeParameter.bound = bound;
typeParameter.variance = variance;
return typeParameter;
}
+
+ static List<ParameterElementImpl> _requiredParameters(
+ List<DartType> argumentTypes) {
+ var parameters = argumentTypes.mapIndexed((index, type) {
+ var parameter = ParameterElementImpl("a$index", index);
+ parameter.type = type;
+ parameter.parameterKind = ParameterKind.REQUIRED;
+ return parameter;
+ }).toList();
+ return parameters;
+ }
+}
+
+class _MockAnalysisSession implements AnalysisSessionImpl {
+ @override
+ dynamic noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
}
diff --git a/pkg/analyzer/lib/src/generated/type_promotion_manager.dart b/pkg/analyzer/lib/src/generated/type_promotion_manager.dart
index 3ac9ea4..bf956ef 100644
--- a/pkg/analyzer/lib/src/generated/type_promotion_manager.dart
+++ b/pkg/analyzer/lib/src/generated/type_promotion_manager.dart
@@ -7,7 +7,6 @@
import 'package:analyzer/dart/ast/visitor.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/type.dart';
-import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/dart/element/type_system.dart';
import 'package:analyzer/src/generated/variable_type_provider.dart';
@@ -17,13 +16,13 @@
class TypePromotionManager {
final TypeSystemImpl _typeSystem;
- /// The current promotion scope, or `null` if no scope has been entered.
- _TypePromoteScope _currentScope;
+ /// The current promotion scope.
+ _TypePromoteScope _currentScope = _TypePromoteScope(null);
- final List<FunctionBody> _functionBodyStack = [];
+ final List<FunctionBody?> _functionBodyStack = [];
/// Body of the function currently being analyzed, if any.
- FunctionBody _currentFunctionBody;
+ FunctionBody? _currentFunctionBody;
TypePromotionManager(this._typeSystem);
@@ -51,75 +50,66 @@
void visitBinaryExpression_and_rhs(
Expression leftOperand, Expression rightOperand, void Function() f) {
- if (rightOperand != null) {
- _enterScope();
- try {
- // Type promotion.
- _promoteTypes(leftOperand);
- _clearTypePromotionsIfPotentiallyMutatedIn(leftOperand);
- _clearTypePromotionsIfPotentiallyMutatedIn(rightOperand);
- _clearTypePromotionsIfAccessedInClosureAndPotentiallyMutated(
- rightOperand);
- // Visit right operand.
- f();
- } finally {
- _exitScope();
- }
+ _enterScope();
+ try {
+ // Type promotion.
+ _promoteTypes(leftOperand);
+ _clearTypePromotionsIfPotentiallyMutatedIn(leftOperand);
+ _clearTypePromotionsIfPotentiallyMutatedIn(rightOperand);
+ _clearTypePromotionsIfAccessedInClosureAndPotentiallyMutated(
+ rightOperand);
+ // Visit right operand.
+ f();
+ } finally {
+ _exitScope();
}
}
void visitConditionalExpression_then(
Expression condition, Expression thenExpression, void Function() f) {
- if (thenExpression != null) {
- _enterScope();
- try {
- // Type promotion.
- _promoteTypes(condition);
- _clearTypePromotionsIfPotentiallyMutatedIn(thenExpression);
- _clearTypePromotionsIfAccessedInClosureAndPotentiallyMutated(
- thenExpression,
- );
- // Visit "then" expression.
- f();
- } finally {
- _exitScope();
- }
+ _enterScope();
+ try {
+ // Type promotion.
+ _promoteTypes(condition);
+ _clearTypePromotionsIfPotentiallyMutatedIn(thenExpression);
+ _clearTypePromotionsIfAccessedInClosureAndPotentiallyMutated(
+ thenExpression,
+ );
+ // Visit "then" expression.
+ f();
+ } finally {
+ _exitScope();
}
}
void visitIfElement_thenElement(
Expression condition, CollectionElement thenElement, void Function() f) {
- if (thenElement != null) {
- _enterScope();
- try {
- // Type promotion.
- _promoteTypes(condition);
- _clearTypePromotionsIfPotentiallyMutatedIn(thenElement);
- _clearTypePromotionsIfAccessedInClosureAndPotentiallyMutated(
- thenElement);
- // Visit "then".
- f();
- } finally {
- _exitScope();
- }
+ _enterScope();
+ try {
+ // Type promotion.
+ _promoteTypes(condition);
+ _clearTypePromotionsIfPotentiallyMutatedIn(thenElement);
+ _clearTypePromotionsIfAccessedInClosureAndPotentiallyMutated(thenElement);
+ // Visit "then".
+ f();
+ } finally {
+ _exitScope();
}
}
void visitIfStatement_thenStatement(
Expression condition, Statement thenStatement, void Function() f) {
- if (thenStatement != null) {
- _enterScope();
- try {
- // Type promotion.
- _promoteTypes(condition);
- _clearTypePromotionsIfPotentiallyMutatedIn(thenStatement);
- _clearTypePromotionsIfAccessedInClosureAndPotentiallyMutated(
- thenStatement);
- // Visit "then".
- f();
- } finally {
- _exitScope();
- }
+ _enterScope();
+ try {
+ // Type promotion.
+ _promoteTypes(condition);
+ _clearTypePromotionsIfPotentiallyMutatedIn(thenStatement);
+ _clearTypePromotionsIfAccessedInClosureAndPotentiallyMutated(
+ thenStatement);
+ // Visit "then".
+ f();
+ } finally {
+ _exitScope();
}
}
@@ -132,7 +122,7 @@
void _clearTypePromotionsIfAccessedInClosureAndPotentiallyMutated(
AstNode target) {
for (Element element in _promotedElements) {
- if (_currentFunctionBody
+ if (_currentFunctionBody!
.isPotentiallyMutatedInScope(element as VariableElement)) {
if (_isVariableAccessedInClosure(element, target)) {
_setType(element, null);
@@ -161,25 +151,26 @@
/// Exit the current promotion scope.
void _exitScope() {
- if (_currentScope == null) {
+ var outerScope = _currentScope._outerScope;
+ if (outerScope == null) {
throw StateError("No scope to exit");
}
- _currentScope = _currentScope._outerScope;
+ _currentScope = outerScope;
}
/// Return the promoted type of the given [element], or `null` if the type of
/// the element has not been promoted.
- DartType _getPromotedType(Element element) {
- return _currentScope?.getType(element);
+ DartType? _getPromotedType(Element element) {
+ return _currentScope.getType(element);
}
/// Return the static element associated with the given expression whose type
/// can be promoted, or `null` if there is no element whose type can be
/// promoted.
- VariableElement _getPromotionStaticElement(Expression expression) {
- expression = expression?.unParenthesized;
+ VariableElement? _getPromotionStaticElement(Expression expression) {
+ expression = expression.unParenthesized;
if (expression is SimpleIdentifier) {
- Element element = expression.staticElement;
+ var element = expression.staticElement;
if (element is VariableElement) {
ElementKind kind = element.kind;
if (kind == ElementKind.LOCAL_VARIABLE ||
@@ -237,21 +228,17 @@
/// types might be promoted
/// @param potentialType the potential type of the elements
void _promote(Expression expression, DartType potentialType) {
- VariableElement element = _getPromotionStaticElement(expression);
+ var element = _getPromotionStaticElement(expression);
if (element != null) {
// may be mutated somewhere in closure
- if (_currentFunctionBody.isPotentiallyMutatedInClosure(element)) {
+ if (_currentFunctionBody!.isPotentiallyMutatedInClosure(element)) {
return;
}
// prepare current variable type
- DartType type = _getPromotedType(element) ??
- expression.staticType ??
- DynamicTypeImpl.instance;
-
- potentialType ??= DynamicTypeImpl.instance;
+ DartType type = _getPromotedType(element) ?? expression.staticType!;
// Check if we can promote to potentialType from type.
- DartType promoteType = _typeSystem.tryPromoteToType(potentialType, type);
+ var promoteType = _typeSystem.tryPromoteToType(potentialType, type);
if (promoteType != null) {
// Do promote type of variable.
_setType(element, promoteType);
@@ -271,7 +258,7 @@
}
} else if (condition is IsExpression) {
if (condition.notOperator == null) {
- _promote(condition.expression, condition.type.type);
+ _promote(condition.expression, condition.type.type!);
}
} else if (condition is ParenthesizedExpression) {
_promoteTypes(condition.expression);
@@ -282,8 +269,8 @@
///
/// @param element the element whose type might have been promoted
/// @param type the promoted type of the given element
- void _setType(Element element, DartType type) {
- if (_currentScope == null) {
+ void _setType(Element element, DartType? type) {
+ if (_currentScope._outerScope == null) {
throw StateError("Cannot promote without a scope");
}
_currentScope.setType(element, type);
@@ -358,11 +345,11 @@
/// Instances of the class `TypePromoteScope` represent a scope in which the
/// types of elements can be promoted.
class _TypePromoteScope {
- /// The outer scope in which types might be promoter.
- final _TypePromoteScope _outerScope;
+ /// The outer scope in which types might be promoted.
+ final _TypePromoteScope? _outerScope;
/// A table mapping elements to the promoted type of that element.
- final Map<Element, DartType> _promotedTypes = {};
+ final Map<Element, DartType?> _promotedTypes = {};
/// Initialize a newly created scope to be an empty child of the given scope.
///
@@ -377,15 +364,15 @@
///
/// @param element the element whose type might have been promoted
/// @return the promoted type of the given element
- DartType getType(Element element) {
- DartType type = _promotedTypes[element];
+ DartType? getType(Element element) {
+ var type = _promotedTypes[element];
if (type == null && element is PropertyAccessorElement) {
type = _promotedTypes[element.variable];
}
if (type != null) {
return type;
} else if (_outerScope != null) {
- return _outerScope.getType(element);
+ return _outerScope!.getType(element);
}
return null;
}
@@ -394,7 +381,7 @@
///
/// @param element the element whose type might have been promoted
/// @param type the promoted type of the given element
- void setType(Element element, DartType type) {
+ void setType(Element element, DartType? type) {
_promotedTypes[element] = type;
}
}
diff --git a/pkg/analyzer/lib/src/generated/utilities_dart.dart b/pkg/analyzer/lib/src/generated/utilities_dart.dart
index 118a2ad..43f1e7c 100644
--- a/pkg/analyzer/lib/src/generated/utilities_dart.dart
+++ b/pkg/analyzer/lib/src/generated/utilities_dart.dart
@@ -2,10 +2,9 @@
// 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.
-import 'package:analyzer/dart/ast/ast.dart' show AnnotatedNode, Comment;
+import 'package:analyzer/dart/ast/ast.dart' show AnnotatedNode;
import 'package:analyzer/dart/ast/token.dart' show Token;
import 'package:analyzer/src/dart/element/element.dart' show ElementImpl;
-import 'package:meta/meta.dart';
export 'package:_fe_analyzer_shared/src/util/resolve_relative_uri.dart'
show resolveRelativeUri;
@@ -13,7 +12,7 @@
/// If the given [node] has a documentation comment, remember its content
/// and range into the given [element].
void setElementDocumentationComment(ElementImpl element, AnnotatedNode node) {
- Comment comment = node.documentationComment;
+ var comment = node.documentationComment;
if (comment != null && comment.isDocumentation) {
element.documentationComment =
comment.tokens.map((Token t) => t.lexeme).join('\n');
@@ -158,16 +157,16 @@
/// Initialize a newly created kind with the given state.
const ParameterKind({
- @required this.name,
- @required this.ordinal,
- @required this.isPositional,
- @required this.isRequiredPositional,
- @required this.isOptionalPositional,
- @required this.isNamed,
- @required this.isRequiredNamed,
- @required this.isOptionalNamed,
- @required this.isRequired,
- @required this.isOptional,
+ required this.name,
+ required this.ordinal,
+ required this.isPositional,
+ required this.isRequiredPositional,
+ required this.isOptionalPositional,
+ required this.isNamed,
+ required this.isRequiredNamed,
+ required this.isOptionalNamed,
+ required this.isRequired,
+ required this.isOptional,
});
@override
diff --git a/pkg/analyzer/lib/src/generated/utilities_general.dart b/pkg/analyzer/lib/src/generated/utilities_general.dart
index 025dc92..bfd1e08 100644
--- a/pkg/analyzer/lib/src/generated/utilities_general.dart
+++ b/pkg/analyzer/lib/src/generated/utilities_general.dart
@@ -17,14 +17,14 @@
/// Safely convert the given [value] to a bool value, or return `null` if the
/// value could not be converted.
-bool toBool(Object value) {
+bool? toBool(Object value) {
if (value is YamlScalar) {
- value = (value as YamlScalar).value;
+ value = value.value;
}
if (value is bool) {
return value;
}
- String string = toLowerCase(value);
+ var string = toLowerCase(value);
if (string == 'true') {
return true;
}
@@ -36,11 +36,11 @@
/// Safely convert this [value] to lower case, returning `null` if [value] is
/// null.
-String toLowerCase(Object value) => value?.toString()?.toLowerCase();
+String? toLowerCase(Object? value) => value?.toString().toLowerCase();
/// Safely convert this [value] to upper case, returning `null` if [value] is
/// null.
-String toUpperCase(Object value) => value?.toString()?.toUpperCase();
+String? toUpperCase(Object? value) => value?.toString().toUpperCase();
/// Jenkins hash function, optimized for small integers.
///
diff --git a/pkg/analyzer/lib/src/hint/sdk_constraint_extractor.dart b/pkg/analyzer/lib/src/hint/sdk_constraint_extractor.dart
index c4942e4..e43c03b 100644
--- a/pkg/analyzer/lib/src/hint/sdk_constraint_extractor.dart
+++ b/pkg/analyzer/lib/src/hint/sdk_constraint_extractor.dart
@@ -18,7 +18,7 @@
/// The text of the constraint, or `null` if the range has not yet been
/// computed or if there was an error when attempting to compute the range.
- String _constraintText;
+ String? _constraintText;
/// The offset of the constraint text, or `-1` if the offset is not known.
int _constraintOffset = -1;
@@ -26,7 +26,7 @@
/// The cached range of supported versions, or `null` if the range has not yet
/// been computed or if there was an error when attempting to compute the
/// range.
- VersionConstraint _constraint;
+ VersionConstraint? _constraint;
/// Initialize a newly created extractor to extract the SDK version constraint
/// from the given `pubspec.yaml` file.
@@ -34,9 +34,9 @@
/// Return the range of supported versions, or `null` if the range could not
/// be computed.
- VersionConstraint constraint() {
+ VersionConstraint? constraint() {
if (_constraint == null) {
- String text = constraintText();
+ var text = constraintText();
if (text != null) {
try {
_constraint = VersionConstraint.parse(text);
@@ -48,7 +48,8 @@
return _constraint;
}
- /// Return the offset of the constraint text.
+ /// Return the offset of the constraint text, or `-1` if there is an
+ /// error or if the pubspec does not contain an sdk constraint.
int constraintOffset() {
if (_constraintText == null) {
_initializeTextAndOffset();
@@ -56,8 +57,9 @@
return _constraintOffset;
}
- /// Return the constraint text following "sdk:".
- String constraintText() {
+ /// Return the constraint text following "sdk:", or `null` if there is an
+ /// error or if the pubspec does not contain an sdk constraint.
+ String? constraintText() {
if (_constraintText == null) {
_initializeTextAndOffset();
}
@@ -74,9 +76,9 @@
YamlDocument document = loadYamlDocument(fileContent);
YamlNode contents = document.contents;
if (contents is YamlMap) {
- YamlNode environment = contents.nodes['environment'];
+ YamlNode? environment = contents.nodes['environment'];
if (environment is YamlMap) {
- YamlNode sdk = environment.nodes['sdk'];
+ YamlNode? sdk = environment.nodes['sdk'];
if (sdk is YamlScalar) {
_constraintText = sdk.value;
_constraintOffset = sdk.span.start.offset;
diff --git a/pkg/analyzer/lib/src/hint/sdk_constraint_verifier.dart b/pkg/analyzer/lib/src/hint/sdk_constraint_verifier.dart
index e7098b5..b69c770 100644
--- a/pkg/analyzer/lib/src/hint/sdk_constraint_verifier.dart
+++ b/pkg/analyzer/lib/src/hint/sdk_constraint_verifier.dart
@@ -10,7 +10,6 @@
import 'package:analyzer/dart/element/type_provider.dart';
import 'package:analyzer/error/listener.dart';
import 'package:analyzer/src/dart/ast/ast.dart';
-import 'package:analyzer/src/dart/resolver/scope.dart';
import 'package:analyzer/src/error/codes.dart';
import 'package:pub_semver/pub_semver.dart';
@@ -32,19 +31,19 @@
/// A cached flag indicating whether references to the constant-update-2018
/// features need to be checked. Use [checkConstantUpdate2018] to access this
/// field.
- bool _checkConstantUpdate2018;
+ bool? _checkConstantUpdate2018;
/// A cached flag indicating whether uses of extension method features need to
/// be checked. Use [checkExtensionMethods] to access this field.
- bool _checkExtensionMethods;
+ bool? _checkExtensionMethods;
/// A cached flag indicating whether references to Future and Stream need to
/// be checked. Use [checkFutureAndStream] to access this field.
- bool _checkFutureAndStream;
+ bool? _checkFutureAndStream;
/// A cached flag indicating whether references to set literals need to
/// be checked. Use [checkSetLiterals] to access this field.
- bool _checkSetLiterals;
+ bool? _checkSetLiterals;
/// A flag indicating whether we are visiting code inside a set literal. Used
/// to prevent over-reporting uses of set literals.
@@ -52,7 +51,7 @@
/// A cached flag indicating whether references to the ui-as-code features
/// need to be checked. Use [checkUiAsCode] to access this field.
- bool _checkUiAsCode;
+ bool? _checkUiAsCode;
/// A flag indicating whether we are visiting code inside one of the
/// ui-as-code features. Used to prevent over-reporting uses of these
@@ -132,7 +131,7 @@
operatorType == TokenType.BAR ||
operatorType == TokenType.CARET) &&
(node as BinaryExpressionImpl).inConstantContext) {
- if (node.leftOperand.staticType.isDartCoreBool) {
+ if (node.leftOperand.staticType!.isDartCoreBool) {
_errorReporter.reportErrorForToken(
HintCode.SDK_VERSION_BOOL_OPERATOR_IN_CONST_CONTEXT,
node.operator,
@@ -141,7 +140,7 @@
} else if (operatorType == TokenType.EQ_EQ &&
(node as BinaryExpressionImpl).inConstantContext) {
bool primitive(Expression node) {
- DartType type = node.staticType;
+ DartType type = node.staticType!;
return type.isDartCoreBool ||
type.isDartCoreDouble ||
type.isDartCoreInt ||
@@ -242,15 +241,16 @@
if (node.inDeclarationContext()) {
return;
}
- Element element = node.staticElement;
+ var element = node.staticElement;
if (checkFutureAndStream &&
+ element is ClassElement &&
(element == _typeProvider.futureElement ||
element == _typeProvider.streamElement)) {
for (LibraryElement importedLibrary
in _containingLibrary.importedLibraries) {
if (!importedLibrary.isDartCore) {
- Namespace namespace = importedLibrary.exportNamespace;
- if (namespace != null && namespace.get(element.name) != null) {
+ var namespace = importedLibrary.exportNamespace;
+ if (namespace.get(element.name) != null) {
return;
}
}
@@ -287,7 +287,7 @@
void _validateUiAsCodeInConstContext(AstNode node) {
if (checkConstantUpdate2018 &&
!_inUiAsCode &&
- node.thisOrAncestorOfType<TypedLiteral>().isConst) {
+ node.thisOrAncestorOfType<TypedLiteral>()!.isConst) {
_errorReporter.reportErrorForNode(
HintCode.SDK_VERSION_UI_AS_CODE_IN_CONST_CONTEXT, node);
}
diff --git a/pkg/analyzer/lib/src/ignore_comments/ignore_info.dart b/pkg/analyzer/lib/src/ignore_comments/ignore_info.dart
index 6d37999..5a1d3c3 100644
--- a/pkg/analyzer/lib/src/ignore_comments/ignore_info.dart
+++ b/pkg/analyzer/lib/src/ignore_comments/ignore_info.dart
@@ -63,7 +63,7 @@
/// Initialize a newly created instance of this class to represent the ignore
/// comments in the given compilation [unit].
IgnoreInfo.forDart(CompilationUnit unit, String content) {
- var lineInfo = unit.lineInfo;
+ var lineInfo = unit.lineInfo!;
for (var comment in unit.ignoreComments) {
var lexeme = comment.lexeme;
if (lexeme.contains('ignore:')) {
@@ -149,10 +149,10 @@
// affect older clients of this class because none of the previous APIs
// depended on having offsets.
Iterable<DiagnosticName> codes = match
- .group(1)
+ .group(1)!
.split(',')
.map((String code) => DiagnosticName(code.trim().toLowerCase(), -1));
- CharacterLocation location = info.getLocation(match.start);
+ var location = info.getLocation(match.start);
int lineNumber = location.lineNumber;
String beforeMatch = content.substring(
info.getOffsetOfLine(lineNumber - 1),
@@ -171,7 +171,7 @@
// having offsets.
for (Match match in fileMatches) {
Iterable<DiagnosticName> codes = match
- .group(1)
+ .group(1)!
.split(',')
.map((String code) => DiagnosticName(code.trim().toLowerCase(), -1));
ignoreInfo._addAllForFile(codes);
@@ -196,14 +196,14 @@
yield comment;
}
}
- comment = comment.next;
+ comment = comment.next as CommentToken?;
}
}
var currentToken = beginToken;
while (currentToken != currentToken.next) {
yield* processPrecedingComments(currentToken);
- currentToken = currentToken.next;
+ currentToken = currentToken.next!;
}
yield* processPrecedingComments(currentToken);
}
diff --git a/pkg/analyzer/lib/src/lint/analysis.dart b/pkg/analyzer/lib/src/lint/analysis.dart
index 5777705..89c4c7c 100644
--- a/pkg/analyzer/lib/src/lint/analysis.dart
+++ b/pkg/analyzer/lib/src/lint/analysis.dart
@@ -6,7 +6,6 @@
import 'dart:io' as io;
import 'package:analyzer/dart/analysis/context_locator.dart' as api;
-import 'package:analyzer/dart/analysis/results.dart';
import 'package:analyzer/file_system/file_system.dart'
show File, Folder, ResourceProvider, ResourceUriResolver;
import 'package:analyzer/file_system/physical_file_system.dart';
@@ -50,7 +49,7 @@
io.exit(exitCode);
}
-AnalysisOptions _buildAnalyzerOptions(LinterOptions options) {
+AnalysisOptionsImpl _buildAnalyzerOptions(LinterOptions options) {
AnalysisOptionsImpl analysisOptions = AnalysisOptionsImpl();
if (options.analysisOptions != null) {
YamlMap map =
@@ -61,7 +60,7 @@
analysisOptions.hint = false;
analysisOptions.lint = options.enableLints;
analysisOptions.enableTiming = options.enableTiming;
- analysisOptions.lintRules = options.enabledLints?.toList(growable: false);
+ analysisOptions.lintRules = options.enabledLints.toList(growable: false);
return analysisOptions;
}
@@ -71,7 +70,7 @@
int cacheSize = 512;
/// The path to the dart SDK.
- String dartSdkPath;
+ String? dartSdkPath;
/// Whether to show lint warnings.
bool enableLints = true;
@@ -80,17 +79,17 @@
bool enableTiming = false;
/// The path to a `.packages` configuration file
- String packageConfigPath;
+ String? packageConfigPath;
/// The path to the package root.
@Deprecated('https://github.com/dart-lang/sdk/issues/41197')
- String packageRootPath;
+ String? packageRootPath;
/// Whether to use Dart's Strong Mode analyzer.
bool strongMode = true;
/// The mock SDK (to speed up testing) or `null` to use the actual SDK.
- DartSdk mockSdk;
+ DartSdk? mockSdk;
/// Return `true` is the parser is able to parse asserts in the initializer
/// list of a constructor.
@@ -183,7 +182,7 @@
File sourceFile =
resourceProvider.getFile(p.normalize(file.absolute.path));
Source source = sourceFile.createSource();
- Uri uri = sourceFactory.restoreUri(source);
+ var uri = sourceFactory.restoreUri(source);
if (uri != null) {
// Ensure that we analyze the file using its canonical URI (e.g. if
// it's in "/lib", analyze it using a "package:" URI).
@@ -203,8 +202,7 @@
List<AnalysisErrorInfo> errors = [];
for (Source source in sources) {
- ErrorsResult errorsResult =
- await analysisDriver.getErrors(source.fullName);
+ var errorsResult = (await analysisDriver.getErrors(source.fullName))!;
errors.add(
AnalysisErrorInfoImpl(errorsResult.errors, errorsResult.lineInfo));
_sourcesAnalyzed.add(source);
@@ -215,11 +213,11 @@
void registerLinters(AnalysisContext context) {
if (options.enableLints) {
- setLints(context, options.enabledLints?.toList(growable: false));
+ setLints(context, options.enabledLints.toList(growable: false));
}
}
- PackageMapUriResolver _getPackageUriResolver() {
+ PackageMapUriResolver? _getPackageUriResolver() {
var packageConfigPath = options.packageConfigPath;
if (packageConfigPath != null) {
var resourceProvider = PhysicalResourceProvider.INSTANCE;
@@ -257,9 +255,6 @@
}
var rootPath = p.normalize(files.first.absolute.path);
- if (rootPath == null) {
- return;
- }
var apiContextRoots = api.ContextLocator(
resourceProvider: resourceProvider,
@@ -286,7 +281,7 @@
/// [errorSink].
class StdInstrumentation extends NoopInstrumentationService {
@override
- void logError(String message, [Object exception]) {
+ void logError(String message, [Object? exception]) {
errorSink.writeln(message);
if (exception != null) {
errorSink.writeln(exception);
@@ -295,14 +290,14 @@
@override
void logException(dynamic exception,
- [StackTrace stackTrace,
- List<InstrumentationServiceAttachment> attachments]) {
+ [StackTrace? stackTrace,
+ List<InstrumentationServiceAttachment>? attachments]) {
errorSink.writeln(exception);
errorSink.writeln(stackTrace);
}
@override
- void logInfo(String message, [Object exception]) {
+ void logInfo(String message, [Object? exception]) {
outSink.writeln(message);
if (exception != null) {
outSink.writeln(exception);
diff --git a/pkg/analyzer/lib/src/lint/config.dart b/pkg/analyzer/lib/src/lint/config.dart
index 4286bd5..4bbb637 100644
--- a/pkg/analyzer/lib/src/lint/config.dart
+++ b/pkg/analyzer/lib/src/lint/config.dart
@@ -6,7 +6,8 @@
import 'package:yaml/yaml.dart';
/// Parse the given map into a lint config.
-LintConfig parseConfig(YamlMap optionsMap) {
+/// Return `null` if [optionsMap] is `null` or does not have `linter` map.
+LintConfig? parseConfig(YamlMap? optionsMap) {
if (optionsMap != null) {
var options = getValue(optionsMap, 'linter');
// Quick check of basic contract.
@@ -18,8 +19,9 @@
}
/// Process the given option [fileContents] and produce a corresponding
-/// [LintConfig].
-LintConfig processAnalysisOptionsFile(String fileContents, {String fileUrl}) {
+/// [LintConfig]. Return `null` if [fileContents] is not a YAML map, or
+/// does not have the `linter` child map.
+LintConfig? processAnalysisOptionsFile(String fileContents, {String? fileUrl}) {
var yaml = loadYamlNode(fileContents,
sourceUrl: fileUrl != null ? Uri.parse(fileUrl) : null);
if (yaml is YamlMap) {
@@ -30,7 +32,7 @@
/// The configuration of lint rules within an analysis options file.
abstract class LintConfig {
- factory LintConfig.parse(String source, {String sourceUrl}) =>
+ factory LintConfig.parse(String source, {String? sourceUrl}) =>
_LintConfig().._parse(source, sourceUrl: sourceUrl);
factory LintConfig.parseMap(YamlMap map) => _LintConfig().._parseYaml(map);
@@ -43,8 +45,8 @@
/// The configuration of a single lint rule within an analysis options file.
abstract class RuleConfig {
Map<String, dynamic> args = <String, dynamic>{};
- String get group;
- String get name;
+ String? get group;
+ String? get name;
// Provisional
bool disables(String ruleName) =>
@@ -69,7 +71,7 @@
}
}
- bool asBool(Object scalar) {
+ bool? asBool(Object scalar) {
Object value = scalar is YamlScalar ? scalar.value : scalar;
if (value is bool) {
return value;
@@ -85,7 +87,7 @@
return null;
}
- String asString(Object scalar) {
+ String? asString(Object scalar) {
Object value = scalar is YamlScalar ? scalar.value : scalar;
if (value is String) {
return value;
@@ -93,15 +95,15 @@
return null;
}
- Map<String, dynamic> parseArgs(Object args) {
- bool enabled = asBool(args);
+ Map<String, dynamic>? parseArgs(Object args) {
+ var enabled = asBool(args);
if (enabled != null) {
return {'enabled': enabled};
}
return null;
}
- void _parse(String src, {String sourceUrl}) {
+ void _parse(String src, {String? sourceUrl}) {
var yaml = loadYamlNode(src,
sourceUrl: sourceUrl != null ? Uri.parse(sourceUrl) : null);
if (yaml is YamlMap) {
@@ -155,7 +157,7 @@
var config = _RuleConfig();
config.group = asString(key);
config.name = asString(rule);
- config.args = parseArgs(args);
+ config.args = parseArgs(args)!;
ruleConfigs.add(config);
});
}
@@ -169,7 +171,7 @@
class _RuleConfig extends RuleConfig {
@override
- String group;
+ String? group;
@override
- String name;
+ String? name;
}
diff --git a/pkg/analyzer/lib/src/lint/io.dart b/pkg/analyzer/lib/src/lint/io.dart
index 0abd586..30bd983 100644
--- a/pkg/analyzer/lib/src/lint/io.dart
+++ b/pkg/analyzer/lib/src/lint/io.dart
@@ -34,7 +34,7 @@
var relative = p.relative(entry.path, from: directory.path);
if (isLintable(entry) && !isInHiddenDir(relative)) {
- files.add(entry);
+ files.add(entry as File);
}
}
}
diff --git a/pkg/analyzer/lib/src/lint/linter.dart b/pkg/analyzer/lib/src/lint/linter.dart
index bf67b7b..8bd1850 100644
--- a/pkg/analyzer/lib/src/lint/linter.dart
+++ b/pkg/analyzer/lib/src/lint/linter.dart
@@ -24,6 +24,7 @@
import 'package:analyzer/src/dart/constant/utilities.dart';
import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/dart/element/inheritance_manager3.dart';
+import 'package:analyzer/src/dart/element/type_system.dart';
import 'package:analyzer/src/dart/error/lint_codes.dart';
import 'package:analyzer/src/error/codes.dart';
import 'package:analyzer/src/generated/engine.dart'
@@ -85,7 +86,7 @@
/// The total number of sources that were analyzed. Only valid after
/// [lintFiles] has been called.
- int numSourcesAnalyzed;
+ late int numSourcesAnalyzed;
/// Creates a new linter.
DartLinter(this.options, {this.reporter = const PrintingReporter()});
@@ -103,10 +104,10 @@
}
Iterable<AnalysisErrorInfo> lintPubspecSource(
- {String contents, String sourcePath}) {
+ {required String contents, String? sourcePath}) {
var results = <AnalysisErrorInfo>[];
- Uri sourceUrl = sourcePath == null ? null : p.toUri(sourcePath);
+ var sourceUrl = sourcePath == null ? null : p.toUri(sourcePath);
var spec = Pubspec.parse(contents, sourceUrl: sourceUrl);
@@ -118,7 +119,7 @@
// Analyzer sets reporters; if this file is not being analyzed,
// we need to set one ourselves. (Needless to say, when pubspec
// processing gets pushed down, this hack can go away.)
- if (rule.reporter == null && sourceUrl != null) {
+ if (sourceUrl != null) {
var source = createSource(sourceUrl);
rule.reporter = ErrorReporter(
this,
@@ -131,7 +132,7 @@
} on Exception catch (e) {
reporter.exception(LinterException(e.toString()));
}
- if (rule._locationInfo != null && rule._locationInfo.isNotEmpty) {
+ if (rule._locationInfo.isNotEmpty) {
results.addAll(rule._locationInfo);
rule._locationInfo.clear();
}
@@ -156,7 +157,7 @@
Iterable<Glob> includes;
Iterable<Glob> excludes;
- FileGlobFilter([Iterable<String> includeGlobs, Iterable<String> excludeGlobs])
+ FileGlobFilter(Iterable<String> includeGlobs, Iterable<String> excludeGlobs)
: includes = includeGlobs.map((glob) => Glob(glob)),
excludes = excludeGlobs.map((glob) => Glob(glob));
@@ -188,16 +189,17 @@
final String name;
final bool custom;
final String description;
- final Hyperlink link;
+ final Hyperlink? link;
- factory Group(String name, {String description = '', Hyperlink link}) {
+ factory Group(String name, {String description = '', Hyperlink? link}) {
var n = name.toLowerCase();
return builtin.firstWhere((g) => g.name == n,
orElse: () =>
Group._(name, custom: true, description: description, link: link));
}
- const Group._(this.name, {this.custom = false, this.description, this.link});
+ const Group._(this.name,
+ {this.custom = false, required this.description, this.link});
@override
int compareTo(Group other) => name.compareTo(other.name);
@@ -218,7 +220,7 @@
/// The result of attempting to evaluate an expression.
class LinterConstantEvaluationResult {
/// The value of the expression, or `null` if has [errors].
- final DartObject value;
+ final DartObject? value;
/// The errors reported during the evaluation.
final List<AnalysisError> errors;
@@ -239,7 +241,7 @@
InheritanceManager3 get inheritanceManager;
- WorkspacePackage get package;
+ WorkspacePackage? get package;
TypeProvider get typeProvider;
@@ -293,13 +295,13 @@
final DeclaredVariables declaredVariables;
@override
- final WorkspacePackage package;
+ final WorkspacePackage? package;
@override
final TypeProvider typeProvider;
@override
- final TypeSystem typeSystem;
+ final TypeSystemImpl typeSystem;
@override
final InheritanceManager3 inheritanceManager;
@@ -328,7 +330,7 @@
@override
bool canBeConstConstructor(ConstructorDeclaration node) {
- ConstructorElement element = node.declaredElement;
+ var element = node.declaredElement!;
ClassElement classElement = element.enclosingElement;
if (classElement.hasNonFinalField) return false;
@@ -346,9 +348,9 @@
@override
LinterConstantEvaluationResult evaluateConstant(Expression node) {
- var unitElement = currentUnit.unit.declaredElement;
+ var unitElement = currentUnit.unit.declaredElement!;
var source = unitElement.source;
- var libraryElement = unitElement.library;
+ var libraryElement = unitElement.library as LibraryElementImpl;
var errorListener = RecordingErrorListener();
var errorReporter = ErrorReporter(
@@ -368,14 +370,16 @@
}
@override
- bool isEnabled(Feature feature) =>
- currentUnit.unit.declaredElement.library.featureSet.isEnabled(feature);
+ bool isEnabled(Feature feature) {
+ var unitElement = currentUnit.unit.declaredElement!;
+ return unitElement.library.featureSet.isEnabled(feature);
+ }
@override
LinterNameInScopeResolutionResult resolveNameInScope(
String id, bool setter, AstNode node) {
- Scope scope;
- for (var context = node; context != null; context = context.parent) {
+ Scope? scope;
+ for (AstNode? context = node; context != null; context = context.parent) {
scope = ScopedVisitor.getNodeNameScope(context);
if (scope != null) {
break;
@@ -410,20 +414,20 @@
//
// Verify that the invoked constructor is a const constructor.
//
- ConstructorElement element = node.constructorName.staticElement;
+ var element = node.constructorName.staticElement;
if (element == null || !element.isConst) {
return false;
}
// Ensure that dependencies (e.g. default parameter values) are computed.
- ConstructorElementImpl implElement = element.declaration;
+ var implElement = element.declaration as ConstructorElementImpl;
implElement.computeConstantDependencies();
//
// Verify that the evaluation of the constructor would not produce an
// exception.
//
- Token oldKeyword = node.keyword;
+ var oldKeyword = node.keyword;
try {
node.keyword = KeywordToken(Keyword.CONST, node.offset);
return !_hasConstantVerifierError(node);
@@ -433,7 +437,7 @@
}
bool _canBeConstTypedLiteral(TypedLiteral node) {
- Token oldKeyword = node.constKeyword;
+ var oldKeyword = node.constKeyword;
try {
node.constKeyword = KeywordToken(Keyword.CONST, node.offset);
return !_hasConstantVerifierError(node);
@@ -444,8 +448,8 @@
/// Return `true` if [ConstantVerifier] reports an error for the [node].
bool _hasConstantVerifierError(AstNode node) {
- var unitElement = currentUnit.unit.declaredElement;
- var libraryElement = unitElement.library;
+ var unitElement = currentUnit.unit.declaredElement!;
+ var libraryElement = unitElement.library as LibraryElementImpl;
var dependenciesFinder = ConstantExpressionsDependenciesFinder();
node.accept(dependenciesFinder);
@@ -486,7 +490,7 @@
/// Thrown when an error occurs in linting.
class LinterException implements Exception {
/// A message describing the error.
- final String message;
+ final String? message;
/// Creates a new LinterException with an optional error [message].
const LinterException([this.message]);
@@ -499,7 +503,7 @@
/// The result of resolving of a basename `id` in a scope.
class LinterNameInScopeResolutionResult {
/// The element with the requested basename, `null` is [isNone].
- final Element element;
+ final Element? element;
/// The state of the result.
final _LinterNameInScopeResolutionResultState _state;
@@ -531,14 +535,13 @@
/// Linter options.
class LinterOptions extends DriverOptions {
Iterable<LintRule> enabledLints;
- String analysisOptions;
- LintFilter filter;
- file_system.ResourceProvider resourceProvider;
+ String? analysisOptions;
+ LintFilter? filter;
+ late file_system.ResourceProvider resourceProvider;
// todo (pq): consider migrating to named params (but note Linter dep).
- LinterOptions([this.enabledLints, this.analysisOptions]) {
- enabledLints ??= Registry.ruleRegistry;
- }
+ LinterOptions([Iterable<LintRule>? enabledLints, this.analysisOptions])
+ : enabledLints = enabledLints ?? Registry.ruleRegistry;
void configure(LintConfig config) {
enabledLints = Registry.ruleRegistry.where((LintRule rule) =>
@@ -577,10 +580,10 @@
final List<AnalysisErrorInfo> _locationInfo = <AnalysisErrorInfo>[];
LintRule({
- this.name,
- this.group,
- this.description,
- this.details,
+ required this.name,
+ required this.group,
+ required this.description,
+ required this.details,
this.maturity = Maturity.stable,
});
@@ -601,19 +604,19 @@
/// Return a visitor to be passed to provide access to Dart project context
/// and to perform project-level analyses.
- ProjectVisitor getProjectVisitor() => null;
+ ProjectVisitor? getProjectVisitor() => null;
/// Return a visitor to be passed to pubspecs to perform lint
/// analysis.
/// Lint errors are reported via this [Linter]'s error [reporter].
- PubspecVisitor getPubspecVisitor() => null;
+ PubspecVisitor? getPubspecVisitor() => null;
@override
- AstVisitor getVisitor() => null;
+ AstVisitor? getVisitor() => null;
- void reportLint(AstNode node,
+ void reportLint(AstNode? node,
{List<Object> arguments = const [],
- ErrorCode errorCode,
+ ErrorCode? errorCode,
bool ignoreSyntheticNodes = true}) {
if (node != null && (!node.isSynthetic || !ignoreSyntheticNodes)) {
reporter.reportErrorForNode(errorCode ?? lintCode, node, arguments);
@@ -621,14 +624,14 @@
}
void reportLintForOffset(int offset, int length,
- {List<Object> arguments = const [], ErrorCode errorCode}) {
+ {List<Object> arguments = const [], ErrorCode? errorCode}) {
reporter.reportErrorForOffset(
errorCode ?? lintCode, offset, length, arguments);
}
- void reportLintForToken(Token token,
+ void reportLintForToken(Token? token,
{List<Object> arguments = const [],
- ErrorCode errorCode,
+ ErrorCode? errorCode,
bool ignoreSyntheticTokens = true}) {
if (token != null && (!token.isSynthetic || !ignoreSyntheticTokens)) {
reporter.reportErrorForToken(errorCode ?? lintCode, token, arguments);
@@ -645,7 +648,7 @@
_locationInfo.add(AnalysisErrorInfoImpl([error], lineInfo));
// Then do the reporting
- reporter?.reportError(error);
+ reporter.reportError(error);
}
}
@@ -657,7 +660,7 @@
final String name;
final int ordinal;
- factory Maturity(String name, {int ordinal}) {
+ factory Maturity(String name, {required int ordinal}) {
switch (name.toLowerCase()) {
case 'stable':
return stable;
@@ -670,7 +673,7 @@
}
}
- const Maturity._(this.name, {this.ordinal});
+ const Maturity._(this.name, {required this.ordinal});
@override
int compareTo(Maturity other) => ordinal - other.ordinal;
@@ -728,7 +731,7 @@
final Reporter reporter;
@override
- int numSourcesAnalyzed;
+ late int numSourcesAnalyzed;
SourceLinter(this.options, {this.reporter = const PrintingReporter()});
@@ -747,10 +750,10 @@
@override
Iterable<AnalysisErrorInfo> lintPubspecSource(
- {String contents, String sourcePath}) {
+ {required String contents, String? sourcePath}) {
var results = <AnalysisErrorInfo>[];
- Uri sourceUrl = sourcePath == null ? null : p.toUri(sourcePath);
+ var sourceUrl = sourcePath == null ? null : p.toUri(sourcePath);
var spec = Pubspec.parse(contents, sourceUrl: sourceUrl);
@@ -762,7 +765,7 @@
// Analyzer sets reporters; if this file is not being analyzed,
// we need to set one ourselves. (Needless to say, when pubspec
// processing gets pushed down, this hack can go away.)
- if (rule.reporter == null && sourceUrl != null) {
+ if (sourceUrl != null) {
var source = createSource(sourceUrl);
rule.reporter = ErrorReporter(
this,
@@ -775,7 +778,9 @@
} on Exception catch (e) {
reporter.exception(LinterException(e.toString()));
}
- if (rule._locationInfo != null && rule._locationInfo.isNotEmpty) {
+
+ var locationInfo = rule._locationInfo;
+ if (!identical(null, locationInfo) && locationInfo.isNotEmpty) {
results.addAll(rule._locationInfo);
rule._locationInfo.clear();
}
@@ -837,10 +842,11 @@
}
class _LintCode extends LintCode {
- static final registry = <String, LintCode>{};
+ static final registry = <String, _LintCode>{};
- factory _LintCode(String name, String message) =>
- registry.putIfAbsent(name + message, () => _LintCode._(name, message));
+ factory _LintCode(String name, String message) {
+ return registry[name + message] ??= _LintCode._(name, message);
+ }
_LintCode._(String name, String message) : super(name, message);
}
diff --git a/pkg/analyzer/lib/src/lint/linter_visitor.dart b/pkg/analyzer/lib/src/lint/linter_visitor.dart
index bc3f868..df3f994 100644
--- a/pkg/analyzer/lib/src/lint/linter_visitor.dart
+++ b/pkg/analyzer/lib/src/lint/linter_visitor.dart
@@ -1445,7 +1445,7 @@
}
/// Get the timer associated with the given [linter].
- Stopwatch _getTimer(LintRule linter) {
+ Stopwatch? _getTimer(LintRule linter) {
if (enableTiming) {
return lintRegistry.getTimer(linter);
} else {
@@ -1458,7 +1458,7 @@
class _Subscription<T> {
final LintRule linter;
final AstVisitor visitor;
- final Stopwatch timer;
+ final Stopwatch? timer;
_Subscription(this.linter, this.visitor, this.timer);
}
diff --git a/pkg/analyzer/lib/src/lint/options_rule_validator.dart b/pkg/analyzer/lib/src/lint/options_rule_validator.dart
index bf67245..71e8620 100644
--- a/pkg/analyzer/lib/src/lint/options_rule_validator.dart
+++ b/pkg/analyzer/lib/src/lint/options_rule_validator.dart
@@ -9,6 +9,7 @@
import 'package:analyzer/src/lint/registry.dart';
import 'package:analyzer/src/plugin/options.dart';
import 'package:analyzer/src/util/yaml.dart';
+import 'package:collection/collection.dart';
import 'package:yaml/yaml.dart';
/// TODO(pq): migrate these codes to `option_codes.dart`?
@@ -58,11 +59,11 @@
final LintRuleProvider ruleProvider;
- LinterRuleOptionsValidator({LintRuleProvider provider})
+ LinterRuleOptionsValidator({LintRuleProvider? provider})
: ruleProvider = provider ?? (() => Registry.ruleRegistry.rules);
- LintRule getRegisteredLint(Object value) => ruleProvider()
- .firstWhere((rule) => rule.name == value, orElse: () => null);
+ LintRule? getRegisteredLint(Object value) =>
+ ruleProvider().firstWhereOrNull((rule) => rule.name == value);
@override
List<AnalysisError> validate(ErrorReporter reporter, YamlMap options) {
@@ -75,11 +76,11 @@
return errors;
}
- void validateRules(YamlNode rules, ErrorReporter reporter) {
+ void validateRules(YamlNode? rules, ErrorReporter reporter) {
if (rules is YamlList) {
final seenRules = <String>{};
- String findIncompatibleRule(LintRule rule) {
+ String? findIncompatibleRule(LintRule rule) {
for (var incompatibleRule in rule.incompatibleRules) {
if (seenRules.contains(incompatibleRule)) {
return incompatibleRule;
diff --git a/pkg/analyzer/lib/src/lint/project.dart b/pkg/analyzer/lib/src/lint/project.dart
index b3cc575..110bc63 100644
--- a/pkg/analyzer/lib/src/lint/project.dart
+++ b/pkg/analyzer/lib/src/lint/project.dart
@@ -11,13 +11,15 @@
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/lint/io.dart';
import 'package:analyzer/src/lint/pub.dart';
+import 'package:collection/collection.dart';
import 'package:path/path.dart' as p;
-Pubspec _findAndParsePubspec(Directory root) {
+Pubspec? _findAndParsePubspec(Directory root) {
if (root.existsSync()) {
- File pubspec = root
+ var pubspec = root
.listSync(followLinks: false)
- .firstWhere((f) => isPubspecFile(f), orElse: () => null);
+ .whereType<File>()
+ .firstWhereOrNull((f) => isPubspecFile(f));
if (pubspec != null) {
return Pubspec.parse(pubspec.readAsStringSync(),
sourceUrl: p.toUri(pubspec.path));
@@ -35,9 +37,9 @@
/// in the "public API") and resources that have special meanings in the
/// context of pub package layout conventions.
class DartProject {
- _ApiModel _apiModel;
- String _name;
- Pubspec _pubspec;
+ late final _ApiModel _apiModel;
+ String? _name;
+ Pubspec? _pubspec;
/// Project root.
final Directory root;
@@ -47,7 +49,7 @@
/// used.
///
/// Note: clients should call [create] which performs API model initialization.
- DartProject._(AnalysisDriver driver, List<Source> sources, {Directory dir})
+ DartProject._(AnalysisDriver driver, List<Source> sources, {Directory? dir})
: root = dir ?? Directory.current {
_pubspec = _findAndParsePubspec(root);
_apiModel = _ApiModel(driver, sources, root);
@@ -61,7 +63,7 @@
String get name => _name ??= _calculateName();
/// The project's pubspec.
- Pubspec get pubspec => _pubspec;
+ Pubspec? get pubspec => _pubspec;
/// Returns `true` if the given element is part of this project's public API.
///
@@ -73,9 +75,9 @@
String _calculateName() {
if (pubspec != null) {
- var nameEntry = pubspec.name;
+ var nameEntry = pubspec!.name;
if (nameEntry != null) {
- return nameEntry.value.text;
+ return nameEntry.value.text!;
}
}
return p.basename(root.path);
@@ -86,7 +88,7 @@
/// If a [dir] is unspecified the current working directory will be
/// used.
static Future<DartProject> create(AnalysisDriver driver, List<Source> sources,
- {Directory dir}) async {
+ {Directory? dir}) async {
DartProject project = DartProject._(driver, sources, dir: dir);
await project._apiModel._calculate();
return project;
@@ -95,13 +97,13 @@
/// An object that can be used to visit Dart project structure.
abstract class ProjectVisitor<T> {
- T visit(DartProject project) => null;
+ T? visit(DartProject project) => null;
}
/// Captures the project's API as defined by pub package layout standards.
class _ApiModel {
final AnalysisDriver driver;
- final List<Source> sources;
+ final List<Source>? sources;
final Directory root;
final Set<Element> elements = {};
@@ -110,7 +112,7 @@
}
/// Return `true` if this element is part of the public API for this package.
- bool contains(Element element) {
+ bool contains(Element? element) {
while (element != null) {
if (!element.isPrivate && elements.contains(element)) {
return true;
@@ -121,17 +123,17 @@
}
Future<void> _calculate() async {
- if (sources == null || sources.isEmpty) {
+ if (sources == null || sources!.isEmpty) {
return;
}
String libDir = root.path + '/lib';
String libSrcDir = libDir + '/src';
- for (Source source in sources) {
+ for (Source source in sources!) {
String path = source.uri.path;
if (path.startsWith(libDir) && !path.startsWith(libSrcDir)) {
- ResolvedUnitResult result = await driver.getResult(source.fullName);
+ ResolvedUnitResult result = (await driver.getResult(source.fullName))!;
LibraryElement library = result.libraryElement;
NamespaceBuilder namespaceBuilder = NamespaceBuilder();
diff --git a/pkg/analyzer/lib/src/lint/pub.dart b/pkg/analyzer/lib/src/lint/pub.dart
index 9d5f459..db19bb6 100644
--- a/pkg/analyzer/lib/src/lint/pub.dart
+++ b/pkg/analyzer/lib/src/lint/pub.dart
@@ -10,8 +10,9 @@
import 'package:source_span/source_span.dart';
import 'package:yaml/yaml.dart';
-PSEntry _findEntry(YamlMap map, String key, ResourceProvider resourceProvider) {
- PSEntry entry;
+PSEntry? _findEntry(
+ YamlMap map, String key, ResourceProvider? resourceProvider) {
+ PSEntry? entry;
map.nodes.forEach((k, v) {
if (k is YamlScalar && key == k.toString()) {
entry = _processScalar(k, v, resourceProvider);
@@ -20,8 +21,8 @@
return entry;
}
-PSDependencyList _processDependencies(
- YamlScalar key, YamlNode v, ResourceProvider resourceProvider) {
+PSDependencyList? _processDependencies(
+ YamlScalar key, YamlNode v, ResourceProvider? resourceProvider) {
if (v is! YamlMap) {
return null;
}
@@ -34,8 +35,8 @@
return deps;
}
-PSGitRepo _processGitRepo(
- YamlScalar key, YamlNode v, ResourceProvider resourceProvider) {
+PSGitRepo? _processGitRepo(
+ YamlScalar key, YamlNode v, ResourceProvider? resourceProvider) {
if (v is! YamlMap) {
return null;
}
@@ -49,8 +50,8 @@
return repo;
}
-PSHost _processHost(
- YamlScalar key, YamlNode v, ResourceProvider resourceProvider) {
+PSHost? _processHost(
+ YamlScalar key, YamlNode v, ResourceProvider? resourceProvider) {
if (v is! YamlMap) {
return null;
}
@@ -64,8 +65,8 @@
return host;
}
-PSNodeList _processList(
- YamlScalar key, YamlNode v, ResourceProvider resourceProvider) {
+PSNodeList? _processList(
+ YamlScalar key, YamlNode v, ResourceProvider? resourceProvider) {
if (v is! YamlList) {
return null;
}
@@ -75,8 +76,8 @@
nodeList.nodes.map((n) => _PSNode(n, resourceProvider)));
}
-PSEntry _processScalar(
- YamlScalar key, YamlNode value, ResourceProvider resourceProvider) {
+PSEntry? _processScalar(
+ YamlScalar key, YamlNode value, ResourceProvider? resourceProvider) {
if (value is! YamlScalar) {
return null;
//WARN?
@@ -86,17 +87,17 @@
}
abstract class PSDependency {
- PSGitRepo get git;
- PSHost get host;
- PSNode get name;
- PSEntry get path;
- PSEntry get version;
+ PSGitRepo? get git;
+ PSHost? get host;
+ PSNode? get name;
+ PSEntry? get path;
+ PSEntry? get version;
}
abstract class PSDependencyList with IterableMixin<PSDependency> {}
class PSEntry {
- final PSNode key;
+ final PSNode? key;
final PSNode value;
PSEntry(this.key, this.value);
@@ -105,21 +106,21 @@
}
abstract class PSGitRepo {
- PSEntry get ref;
- PSNode get token;
- PSEntry get url;
+ PSEntry? get ref;
+ PSNode? get token;
+ PSEntry? get url;
}
abstract class PSHost {
- PSEntry get name;
- PSNode get token;
- PSEntry get url;
+ PSEntry? get name;
+ PSNode? get token;
+ PSEntry? get url;
}
abstract class PSNode {
Source get source;
SourceSpan get span;
- String get text;
+ String? get text;
}
abstract class PSNodeList with IterableMixin<PSNode> {
@@ -130,52 +131,52 @@
abstract class Pubspec {
factory Pubspec.parse(String source,
- {Uri sourceUrl, ResourceProvider resourceProvider}) =>
+ {Uri? sourceUrl, ResourceProvider? resourceProvider}) =>
_Pubspec(source,
sourceUrl: sourceUrl, resourceProvider: resourceProvider);
- PSEntry get author;
- PSNodeList get authors;
- PSDependencyList get dependencies;
- PSDependencyList get dependencyOverrides;
- PSEntry get description;
- PSDependencyList get devDependencies;
- PSEntry get documentation;
- PSEntry get homepage;
- PSEntry get name;
- PSEntry get version;
+ PSEntry? get author;
+ PSNodeList? get authors;
+ PSDependencyList? get dependencies;
+ PSDependencyList? get dependencyOverrides;
+ PSEntry? get description;
+ PSDependencyList? get devDependencies;
+ PSEntry? get documentation;
+ PSEntry? get homepage;
+ PSEntry? get name;
+ PSEntry? get version;
void accept(PubspecVisitor visitor);
}
abstract class PubspecVisitor<T> {
- T visitPackageAuthor(PSEntry author) => null;
- T visitPackageAuthors(PSNodeList authors) => null;
- T visitPackageDependencies(PSDependencyList dependencies) => null;
- T visitPackageDependency(PSDependency dependency) => null;
- T visitPackageDependencyOverride(PSDependency dependency) => null;
- T visitPackageDependencyOverrides(PSDependencyList dependencies) => null;
- T visitPackageDescription(PSEntry description) => null;
- T visitPackageDevDependencies(PSDependencyList dependencies) => null;
- T visitPackageDevDependency(PSDependency dependency) => null;
- T visitPackageDocumentation(PSEntry documentation) => null;
- T visitPackageHomepage(PSEntry homepage) => null;
- T visitPackageName(PSEntry name) => null;
- T visitPackageVersion(PSEntry version) => null;
+ T? visitPackageAuthor(PSEntry author) => null;
+ T? visitPackageAuthors(PSNodeList authors) => null;
+ T? visitPackageDependencies(PSDependencyList dependencies) => null;
+ T? visitPackageDependency(PSDependency dependency) => null;
+ T? visitPackageDependencyOverride(PSDependency dependency) => null;
+ T? visitPackageDependencyOverrides(PSDependencyList dependencies) => null;
+ T? visitPackageDescription(PSEntry description) => null;
+ T? visitPackageDevDependencies(PSDependencyList dependencies) => null;
+ T? visitPackageDevDependency(PSDependency dependency) => null;
+ T? visitPackageDocumentation(PSEntry documentation) => null;
+ T? visitPackageHomepage(PSEntry homepage) => null;
+ T? visitPackageName(PSEntry name) => null;
+ T? visitPackageVersion(PSEntry version) => null;
}
class _PSDependency extends PSDependency {
@override
- PSNode name;
+ PSNode? name;
@override
- PSEntry path;
+ PSEntry? path;
@override
- PSEntry version;
+ PSEntry? version;
@override
- PSHost host;
+ PSHost? host;
@override
- PSGitRepo git;
+ PSGitRepo? git;
factory _PSDependency(
- YamlScalar key, YamlNode value, ResourceProvider resourceProvider) {
+ YamlScalar key, YamlNode value, ResourceProvider? resourceProvider) {
_PSDependency dep = _PSDependency._();
dep.name = _PSNode(key, resourceProvider);
@@ -223,7 +224,7 @@
}
var versionInfo = '';
if (version != null) {
- if (version.key == null) {
+ if (version!.key == null) {
versionInfo = ' $version';
} else {
versionInfo = '\n $version';
@@ -249,7 +250,7 @@
@override
Iterator<PSDependency> get iterator => dependencies.iterator;
- void add(PSDependency dependency) {
+ void add(PSDependency? dependency) {
if (dependency != null) {
dependencies.add(dependency);
}
@@ -261,11 +262,11 @@
class _PSGitRepo implements PSGitRepo {
@override
- PSNode token;
+ PSNode? token;
@override
- PSEntry ref;
+ PSEntry? ref;
@override
- PSEntry url;
+ PSEntry? url;
@override
String toString() => '''
$token:
@@ -275,11 +276,11 @@
class _PSHost implements PSHost {
@override
- PSNode token;
+ PSNode? token;
@override
- PSEntry name;
+ PSEntry? name;
@override
- PSEntry url;
+ PSEntry? url;
@override
String toString() => '''
$token:
@@ -289,11 +290,11 @@
class _PSNode implements PSNode {
@override
- final String text;
+ final String? text;
@override
final SourceSpan span;
- final ResourceProvider resourceProvider;
+ final ResourceProvider? resourceProvider;
_PSNode(YamlNode node, this.resourceProvider)
: text = node.value?.toString(),
@@ -301,8 +302,8 @@
@override
Source get source => (resourceProvider ?? PhysicalResourceProvider.INSTANCE)
- .getFile(span.sourceUrl.toFilePath())
- .createSource(span.sourceUrl);
+ .getFile(span.sourceUrl!.toFilePath())
+ .createSource(span.sourceUrl!);
@override
String toString() => '$text';
@@ -326,27 +327,27 @@
class _Pubspec implements Pubspec {
@override
- PSEntry author;
+ PSEntry? author;
@override
- PSNodeList authors;
+ PSNodeList? authors;
@override
- PSEntry description;
+ PSEntry? description;
@override
- PSEntry documentation;
+ PSEntry? documentation;
@override
- PSEntry homepage;
+ PSEntry? homepage;
@override
- PSEntry name;
+ PSEntry? name;
@override
- PSEntry version;
+ PSEntry? version;
@override
- PSDependencyList dependencies;
+ PSDependencyList? dependencies;
@override
- PSDependencyList devDependencies;
+ PSDependencyList? devDependencies;
@override
- PSDependencyList dependencyOverrides;
+ PSDependencyList? dependencyOverrides;
- _Pubspec(String src, {Uri sourceUrl, ResourceProvider resourceProvider}) {
+ _Pubspec(String src, {Uri? sourceUrl, ResourceProvider? resourceProvider}) {
try {
_parse(src, sourceUrl: sourceUrl, resourceProvider: resourceProvider);
} on Exception {
@@ -357,37 +358,37 @@
@override
void accept(PubspecVisitor visitor) {
if (author != null) {
- visitor.visitPackageAuthor(author);
+ visitor.visitPackageAuthor(author!);
}
if (authors != null) {
- visitor.visitPackageAuthors(authors);
+ visitor.visitPackageAuthors(authors!);
}
if (description != null) {
- visitor.visitPackageDescription(description);
+ visitor.visitPackageDescription(description!);
}
if (documentation != null) {
- visitor.visitPackageDocumentation(documentation);
+ visitor.visitPackageDocumentation(documentation!);
}
if (homepage != null) {
- visitor.visitPackageHomepage(homepage);
+ visitor.visitPackageHomepage(homepage!);
}
if (name != null) {
- visitor.visitPackageName(name);
+ visitor.visitPackageName(name!);
}
if (version != null) {
- visitor.visitPackageVersion(version);
+ visitor.visitPackageVersion(version!);
}
if (dependencies != null) {
- visitor.visitPackageDependencies(dependencies);
- dependencies.forEach(visitor.visitPackageDependency);
+ visitor.visitPackageDependencies(dependencies!);
+ dependencies!.forEach(visitor.visitPackageDependency);
}
if (devDependencies != null) {
- visitor.visitPackageDevDependencies(devDependencies);
- devDependencies.forEach(visitor.visitPackageDevDependency);
+ visitor.visitPackageDevDependencies(devDependencies!);
+ devDependencies!.forEach(visitor.visitPackageDevDependency);
}
if (dependencyOverrides != null) {
- visitor.visitPackageDependencyOverrides(dependencyOverrides);
- dependencyOverrides.forEach(visitor.visitPackageDependencyOverride);
+ visitor.visitPackageDependencyOverrides(dependencyOverrides!);
+ dependencyOverrides!.forEach(visitor.visitPackageDependencyOverride);
}
}
@@ -406,7 +407,8 @@
return sb.toString();
}
- void _parse(String src, {Uri sourceUrl, ResourceProvider resourceProvider}) {
+ void _parse(String src,
+ {Uri? sourceUrl, ResourceProvider? resourceProvider}) {
var yaml = loadYamlNode(src, sourceUrl: sourceUrl);
if (yaml is! YamlMap) {
return;
@@ -457,7 +459,7 @@
StringBuffer buffer = StringBuffer();
@override
String toString() => buffer.toString();
- void writelin(Object value) {
+ void writelin(Object? value) {
if (value != null) {
buffer.writeln(value);
}
diff --git a/pkg/analyzer/lib/src/lint/registry.dart b/pkg/analyzer/lib/src/lint/registry.dart
index b1c2ccd..25f5c78 100644
--- a/pkg/analyzer/lib/src/lint/registry.dart
+++ b/pkg/analyzer/lib/src/lint/registry.dart
@@ -26,10 +26,10 @@
Iterable<LintRule> get rules => _ruleMap.values;
/// Return the lint rule with the given [name].
- LintRule operator [](String name) => _ruleMap[name];
+ LintRule? operator [](String name) => _ruleMap[name];
/// Return the lint code that has the given [uniqueName].
- LintCode codeForUniqueName(String uniqueName) => _codeMap[uniqueName];
+ LintCode? codeForUniqueName(String uniqueName) => _codeMap[uniqueName];
/// Return a list of the lint rules explicitly enabled by the given [config].
///
@@ -43,7 +43,7 @@
.where((rule) => config.ruleConfigs.any((rc) => rc.enables(rule.name)));
/// Return the lint rule with the given [name].
- LintRule getRule(String name) => _ruleMap[name];
+ LintRule? getRule(String name) => _ruleMap[name];
/// Add the given lint [rule] to this registry.
void register(LintRule rule) {
diff --git a/pkg/analyzer/lib/src/lint/util.dart b/pkg/analyzer/lib/src/lint/util.dart
index c8af831..a0c25dc 100644
--- a/pkg/analyzer/lib/src/lint/util.dart
+++ b/pkg/analyzer/lib/src/lint/util.dart
@@ -28,7 +28,7 @@
/// Create a library name prefix based on [libraryPath], [projectRoot] and
/// current [packageName].
String createLibraryNamePrefix(
- {String libraryPath, String projectRoot, String packageName}) {
+ {required String libraryPath, String? projectRoot, String? packageName}) {
// Use the posix context to canonicalize separators (`\`).
var libraryDirectory = path.posix.dirname(libraryPath);
var relativePath = path.posix.relative(libraryDirectory, from: projectRoot);
@@ -86,7 +86,7 @@
final IOSink sink;
FeatureSet featureSet;
- Spelunker(this.path, {IOSink sink, FeatureSet featureSet})
+ Spelunker(this.path, {IOSink? sink, FeatureSet? featureSet})
: sink = sink ?? stdout,
featureSet = featureSet ?? FeatureSet.latestLanguageVersion();
@@ -118,7 +118,7 @@
var comment = token.precedingComments;
while (comment is CommentToken) {
comments.add(comment);
- comment = comment.next;
+ comment = comment.next as CommentToken?;
}
return comments;
}
diff --git a/pkg/analyzer/lib/src/manifest/manifest_validator.dart b/pkg/analyzer/lib/src/manifest/manifest_validator.dart
index 65ac833..3b9650a 100644
--- a/pkg/analyzer/lib/src/manifest/manifest_validator.dart
+++ b/pkg/analyzer/lib/src/manifest/manifest_validator.dart
@@ -5,6 +5,7 @@
import 'package:analyzer/error/error.dart';
import 'package:analyzer/error/listener.dart';
import 'package:analyzer/src/generated/source.dart';
+import 'package:collection/collection.dart';
import 'package:meta/meta.dart';
import 'package:source_span/source_span.dart';
@@ -118,7 +119,7 @@
bool _isRelevantElement(String name) => _relevantElements.contains(name);
/// Parses any whitespace, returning `null` when non-whitespace is parsed.
- ParseResult _parseAnyWhitespace() {
+ ParseResult? _parseAnyWhitespace() {
if (_pos >= content.length) {
return ParseResult.error;
}
@@ -172,7 +173,7 @@
// Parse attribute name.
var attributeNamePos = _pos;
- String attributeName;
+ late String attributeName;
_pos++;
if (_pos >= content.length) {
return ParseAttributeResult.error;
@@ -292,7 +293,7 @@
// Parse name.
var namePos = _pos;
- String name;
+ late String name;
while (!_isClosing && !_isTwoCharClosing && !_isWhitespace) {
_pos++;
@@ -340,7 +341,7 @@
if (parseResult == ParseResult.error) {
return ParseTagResult.error;
}
- attributes = attributeResult.attributes;
+ attributes = attributeResult.attributes!;
isEmptyElement =
parseResult == ParseResult.attributesWithEmptyElementClose;
} else {
@@ -365,7 +366,7 @@
// Don't store an irrelevant element.
continue;
}
- children.add(child.element);
+ children.add(child.element!);
_pos++;
}
}
@@ -420,7 +421,7 @@
}
}
- var manifestElement = parseTagResult.element;
+ var manifestElement = parseTagResult.element!;
var features =
manifestElement.children.where((e) => e.name == USES_FEATURE_TAG);
var permissions =
@@ -430,7 +431,7 @@
_validatePermissions(permissions, features, reporter);
var application = manifestElement.children
- .firstWhere((e) => e.name == APPLICATION_TAG, orElse: () => null);
+ .firstWhereOrNull((e) => e.name == APPLICATION_TAG);
if (application != null) {
for (var activity
in application.children.where((e) => e.name == ACTIVITY_TAG)) {
@@ -448,11 +449,11 @@
HARDWARE_FEATURE_CAMERA_AUTOFOCUS);
/// Report an error for the given node.
- void _reportErrorForNode(
- ErrorReporter reporter, _XmlElement node, String key, ErrorCode errorCode,
- [List<Object> arguments]) {
- FileSpan span =
- key == null ? node.sourceSpan : node.attributes[key].sourceSpan;
+ void _reportErrorForNode(ErrorReporter reporter, _XmlElement node,
+ String? key, ErrorCode errorCode,
+ [List<Object?>? arguments]) {
+ var span =
+ key == null ? node.sourceSpan! : node.attributes[key]!.sourceSpan;
reporter.reportErrorForOffset(
errorCode, span.start.offset, span.length, arguments);
}
@@ -528,11 +529,9 @@
/// Validate the presence/absence of the touchscreen feature tag.
void _validateTouchScreenFeature(Iterable<_XmlElement> features,
_XmlElement manifest, ErrorReporter reporter) {
- var feature = features.firstWhere(
- (element) =>
- element.attributes[ANDROID_NAME]?.value ==
- HARDWARE_FEATURE_TOUCHSCREEN,
- orElse: () => null);
+ var feature = features.firstWhereOrNull((element) =>
+ element.attributes[ANDROID_NAME]?.value ==
+ HARDWARE_FEATURE_TOUCHSCREEN);
if (feature != null) {
if (!feature.attributes.containsKey(ANDROID_REQUIRED)) {
_reportErrorForNode(
@@ -563,7 +562,7 @@
final ParseResult parseResult;
- final Map<String, _XmlAttribute> attributes;
+ final Map<String, _XmlAttribute>? attributes;
ParseAttributeResult(this.parseResult, this.attributes);
}
@@ -595,7 +594,7 @@
final ParseResult parseResult;
- final _XmlElement element;
+ final _XmlElement? element;
ParseTagResult(this.parseResult, this.element);
}
@@ -622,7 +621,7 @@
final String name;
final Map<String, _XmlAttribute> attributes;
final List<_XmlElement> children;
- final SourceSpan sourceSpan;
+ final SourceSpan? sourceSpan;
_XmlElement(this.name, this.attributes, this.children, this.sourceSpan);
}
diff --git a/pkg/analyzer/lib/src/manifest/manifest_values.dart b/pkg/analyzer/lib/src/manifest/manifest_values.dart
index f3f8b7a..141ceaf 100644
--- a/pkg/analyzer/lib/src/manifest/manifest_values.dart
+++ b/pkg/analyzer/lib/src/manifest/manifest_values.dart
@@ -95,7 +95,7 @@
const String USES_PERMISSION_TAG = 'uses-permission';
-String getImpliedUnsupportedHardware(String permission) {
+String? getImpliedUnsupportedHardware(String? permission) {
switch (permission) {
case ANDROID_PERMISSION_CAMERA:
return HARDWARE_FEATURE_CAMERA;
diff --git a/pkg/analyzer/lib/src/manifest/manifest_warning_code.dart b/pkg/analyzer/lib/src/manifest/manifest_warning_code.dart
index 1d2955b..cd3116d 100644
--- a/pkg/analyzer/lib/src/manifest/manifest_warning_code.dart
+++ b/pkg/analyzer/lib/src/manifest/manifest_warning_code.dart
@@ -80,7 +80,7 @@
/// Initialize a newly created warning code to have the given [name],
/// [message] and [correction].
- const ManifestWarningCode(String name, String message, {String correction})
+ const ManifestWarningCode(String name, String message, {String? correction})
: super(
correction: correction,
message: message,
diff --git a/pkg/analyzer/lib/src/pubspec/pubspec_validator.dart b/pkg/analyzer/lib/src/pubspec/pubspec_validator.dart
index b47fb44..0fbbd70 100644
--- a/pkg/analyzer/lib/src/pubspec/pubspec_validator.dart
+++ b/pkg/analyzer/lib/src/pubspec/pubspec_validator.dart
@@ -84,7 +84,7 @@
return true;
}
String fileName = assetFile.shortName;
- Folder assetFolder = assetFile.parent;
+ Folder assetFolder = assetFile.parent!;
if (!assetFolder.exists) {
return false;
}
@@ -99,7 +99,7 @@
return false;
}
- String _asString(dynamic node) {
+ String? _asString(dynamic node) {
if (node is String) {
return node;
}
@@ -114,7 +114,7 @@
/// from the given [contents] using the given [key].
Map<dynamic, YamlNode> _getDeclaredDependencies(
ErrorReporter reporter, Map<dynamic, YamlNode> contents, String key) {
- YamlNode field = contents[key];
+ var field = contents[key];
if (field == null || (field is YamlScalar && field.value == null)) {
return <String, YamlNode>{};
} else if (field is YamlMap) {
@@ -128,7 +128,7 @@
/// Report an error for the given node.
void _reportErrorForNode(
ErrorReporter reporter, YamlNode node, ErrorCode errorCode,
- [List<Object> arguments]) {
+ [List<Object>? arguments]) {
SourceSpan span = node.span;
reporter.reportErrorForOffset(
errorCode, span.start.offset, span.length, arguments);
@@ -168,9 +168,9 @@
/// Validate the value of the optional `flutter` field.
void _validateFlutter(
ErrorReporter reporter, Map<dynamic, YamlNode> contents) {
- YamlNode flutterField = contents[FLUTTER_FIELD];
+ var flutterField = contents[FLUTTER_FIELD];
if (flutterField is YamlMap) {
- YamlNode assetsField = flutterField.nodes[ASSETS_FIELD];
+ var assetsField = flutterField.nodes[ASSETS_FIELD];
if (assetsField is YamlList) {
path.Context context = provider.pathContext;
String packageRoot = context.dirname(source.fullName);
@@ -224,7 +224,7 @@
/// Validate the value of the required `name` field.
void _validateName(ErrorReporter reporter, Map<dynamic, YamlNode> contents) {
- YamlNode nameField = contents[NAME_FIELD];
+ var nameField = contents[NAME_FIELD];
if (nameField == null) {
reporter.reportErrorForOffset(PubspecWarningCode.MISSING_NAME, 0, 0);
} else if (nameField is! YamlScalar || nameField.value is! String) {
@@ -247,8 +247,8 @@
if (dependency is YamlMap) {
var pathEntry = _asString(dependency[PATH_FIELD]);
if (pathEntry != null) {
- YamlNode pathKey() => getKey(dependency, PATH_FIELD);
- YamlNode pathValue() => getValue(dependency, PATH_FIELD);
+ YamlNode pathKey() => getKey(dependency, PATH_FIELD)!;
+ YamlNode pathValue() => getValue(dependency, PATH_FIELD)!;
if (pathEntry.contains(r'\')) {
_reportErrorForNode(reporter, pathValue(),
@@ -281,7 +281,7 @@
var gitEntry = dependency[GIT_FIELD];
if (gitEntry != null && checkForPathAndGitDeps) {
- _reportErrorForNode(reporter, getKey(dependency, GIT_FIELD),
+ _reportErrorForNode(reporter, getKey(dependency, GIT_FIELD)!,
PubspecWarningCode.INVALID_DEPENDENCY, [GIT_FIELD]);
}
}
diff --git a/pkg/analyzer/lib/src/pubspec/pubspec_warning_code.dart b/pkg/analyzer/lib/src/pubspec/pubspec_warning_code.dart
index 9fb2b1c..0c03a1f 100644
--- a/pkg/analyzer/lib/src/pubspec/pubspec_warning_code.dart
+++ b/pkg/analyzer/lib/src/pubspec/pubspec_warning_code.dart
@@ -116,7 +116,7 @@
/// Initialize a newly created warning code to have the given [name],
/// [message] and [correction].
- const PubspecWarningCode(String name, String message, {String correction})
+ const PubspecWarningCode(String name, String message, {String? correction})
: super(
correction: correction,
message: message,
diff --git a/pkg/analyzer/lib/src/services/available_declarations.dart b/pkg/analyzer/lib/src/services/available_declarations.dart
index 5e82627..b2e9a99 100644
--- a/pkg/analyzer/lib/src/services/available_declarations.dart
+++ b/pkg/analyzer/lib/src/services/available_declarations.dart
@@ -25,6 +25,7 @@
import 'package:analyzer/src/summary/link.dart' as graph
show DependencyWalker, Node;
import 'package:analyzer/src/util/comment.dart';
+import 'package:collection/collection.dart';
import 'package:convert/convert.dart';
import 'package:meta/meta.dart';
import 'package:yaml/yaml.dart';
@@ -34,10 +35,10 @@
final List<Declaration> children;
final int codeLength;
final int codeOffset;
- final String defaultArgumentListString;
- final List<int> defaultArgumentListTextRanges;
- final String docComplete;
- final String docSummary;
+ final String? defaultArgumentListString;
+ final List<int>? defaultArgumentListTextRanges;
+ final String? docComplete;
+ final String? docSummary;
final bool isAbstract;
final bool isConst;
final bool isDeprecated;
@@ -50,49 +51,49 @@
final int locationStartColumn;
final int locationStartLine;
final String name;
- final String parameters;
- final List<String> parameterNames;
- final List<String> parameterTypes;
- final Declaration parent;
- final int requiredParameterCount;
- final String returnType;
- final String typeParameters;
+ final String? parameters;
+ final List<String>? parameterNames;
+ final List<String>? parameterTypes;
+ final Declaration? parent;
+ final int? requiredParameterCount;
+ final String? returnType;
+ final String? typeParameters;
final List<String> _relevanceTagsInFile;
List<String> _relevanceTagsInLibrary = const [];
- Uri _locationLibraryUri;
+ Uri? _locationLibraryUri;
Declaration({
- @required this.children,
- @required this.codeLength,
- @required this.codeOffset,
- @required this.defaultArgumentListString,
- @required this.defaultArgumentListTextRanges,
- @required this.docComplete,
- @required this.docSummary,
- @required this.isAbstract,
- @required this.isConst,
- @required this.isDeprecated,
- @required this.isFinal,
- @required this.isStatic,
- @required this.kind,
- @required this.lineInfo,
- @required this.locationOffset,
- @required this.locationPath,
- @required this.locationStartColumn,
- @required this.locationStartLine,
- @required this.name,
- @required this.parameters,
- @required this.parameterNames,
- @required this.parameterTypes,
- @required this.parent,
- @required List<String> relevanceTagsInFile,
- @required this.requiredParameterCount,
- @required this.returnType,
- @required this.typeParameters,
+ required this.children,
+ required this.codeLength,
+ required this.codeOffset,
+ required this.defaultArgumentListString,
+ required this.defaultArgumentListTextRanges,
+ required this.docComplete,
+ required this.docSummary,
+ required this.isAbstract,
+ required this.isConst,
+ required this.isDeprecated,
+ required this.isFinal,
+ required this.isStatic,
+ required this.kind,
+ required this.lineInfo,
+ required this.locationOffset,
+ required this.locationPath,
+ required this.locationStartColumn,
+ required this.locationStartLine,
+ required this.name,
+ required this.parameters,
+ required this.parameterNames,
+ required this.parameterTypes,
+ required this.parent,
+ required List<String> relevanceTagsInFile,
+ required this.requiredParameterCount,
+ required this.returnType,
+ required this.typeParameters,
}) : _relevanceTagsInFile = relevanceTagsInFile;
- Uri get locationLibraryUri => _locationLibraryUri;
+ Uri? get locationLibraryUri => _locationLibraryUri;
List<String> get relevanceTags => [
..._relevanceTagsInFile,
@@ -197,7 +198,7 @@
var dependencyLibraries = <Library>[];
for (var pathPrefix in _pathPrefixToDependencyPathList.keys) {
if (path.startsWith(pathPrefix)) {
- var pathList = _pathPrefixToDependencyPathList[pathPrefix];
+ var pathList = _pathPrefixToDependencyPathList[pathPrefix]!;
_addLibrariesWithPaths(dependencyLibraries, pathList);
break;
}
@@ -209,7 +210,7 @@
var contextPathList = <String>[];
if (!_analysisContext.workspace.isBazel) {
- _Package package;
+ _Package? package;
for (var candidatePackage in _packages) {
if (candidatePackage.contains(path)) {
package = candidatePackage;
@@ -279,7 +280,7 @@
for (var pathPrefix in sortedPrefixes) {
var pathList = pathPrefixToPathList[pathPrefix];
var files = <String>[];
- for (var path in pathList) {
+ for (var path in pathList!) {
var resource = _tracker._resourceProvider.getResource(path);
_scheduleDependencyResource(files, resource);
}
@@ -314,7 +315,7 @@
}
void _addLibrariesWithPaths(List<Library> libraries, List<String> pathList,
- {String excludingLibraryOfPath}) {
+ {String? excludingLibraryOfPath}) {
var excludedFile = _tracker._pathToFile[excludingLibraryOfPath];
var excludedLibraryPath = (excludedFile?.library ?? excludedFile)?.path;
@@ -391,11 +392,11 @@
List<String> _resolvePackageNamesToLibPaths(List<String> packageNames) {
return packageNames
.map(_resolvePackageNameToLibPath)
- .where((path) => path != null)
+ .whereNotNull()
.toList();
}
- String _resolvePackageNameToLibPath(String packageName) {
+ String? _resolvePackageNameToLibPath(String packageName) {
try {
var uri = Uri.parse('package:$packageName/ref.dart');
@@ -408,12 +409,12 @@
}
}
- String _resolveUri(Uri uri) {
+ String? _resolveUri(Uri uri) {
var uriConverter = _analysisContext.currentSession.uriConverter;
return uriConverter.uriToPath(uri);
}
- Uri _restoreUri(String path) {
+ Uri? _restoreUri(String path) {
var uriConverter = _analysisContext.currentSession.uriConverter;
return uriConverter.pathToUri(path);
}
@@ -456,7 +457,7 @@
}
void _scheduleSdkLibraries() {
- var sdk = _analysisDriver.sourceFactory.dartSdk;
+ var sdk = _analysisDriver.sourceFactory.dartSdk!;
for (var uriStr in sdk.uris) {
if (!uriStr.startsWith('dart:_')) {
var uri = Uri.parse(uriStr);
@@ -602,7 +603,7 @@
if (_scheduledFiles.isNotEmpty) {
var scheduledFile = _scheduledFiles.removeLast();
- var file = _getFileByPath(scheduledFile.context, scheduledFile.path);
+ var file = _getFileByPath(scheduledFile.context, scheduledFile.path)!;
if (!file.isLibrary) return;
@@ -633,12 +634,12 @@
/// Return the context associated with the given [analysisContext], or `null`
/// if there is none.
- DeclarationsContext getContext(AnalysisContext analysisContext) {
+ DeclarationsContext? getContext(AnalysisContext analysisContext) {
return _contexts[analysisContext];
}
/// Return the library with the given [id], or `null` if there is none.
- Library getLibrary(int id) {
+ Library? getLibrary(int id) {
return _idToLibrary[id];
}
@@ -670,7 +671,7 @@
}
}
- DeclarationsContext _findContextOfPath(String path) {
+ DeclarationsContext? _findContextOfPath(String path) {
// Prefer the context in which the path is analyzed.
for (var context in _contexts.values) {
if (context._analysisContext.contextRoot.isAnalyzed(path)) {
@@ -692,7 +693,7 @@
return null;
}
- _File _getFileByPath(DeclarationsContext context, String path) {
+ _File? _getFileByPath(DeclarationsContext context, String path) {
var file = _pathToFile[path];
if (file == null) {
var uri = context._restoreUri(path);
@@ -706,7 +707,7 @@
return file;
}
- _File _getFileByUri(DeclarationsContext context, Uri uri) {
+ _File? _getFileByUri(DeclarationsContext context, Uri uri) {
var file = _uriToFile[uri];
if (file != null) {
return file;
@@ -728,7 +729,7 @@
return file;
}
- file = _File(this, path, uri);
+ file = _File(this, path!, uri);
_pathToFile[path] = file;
_uriToFile[uri] = file;
@@ -815,7 +816,7 @@
/// Return the [path] with resolved file system links.
String _resolveLinks(String path) {
var resource = _resourceProvider.getFile(path);
- resource = resource.resolveSymbolicLinksSync();
+ resource = resource.resolveSymbolicLinksSync() as File;
return resource.path;
}
}
@@ -871,7 +872,7 @@
}
class RelevanceTags {
- static List<String> _forDeclaration(String uriStr, Declaration declaration) {
+ static List<String>? _forDeclaration(String uriStr, Declaration declaration) {
switch (declaration.kind) {
case DeclarationKind.CLASS:
case DeclarationKind.CLASS_TYPE_ALIAS:
@@ -881,17 +882,17 @@
var name = declaration.name;
return <String>['$uriStr::$name'];
case DeclarationKind.CONSTRUCTOR:
- var className = declaration.parent.name;
+ var className = declaration.parent!.name;
return <String>['$uriStr::$className'];
case DeclarationKind.ENUM_CONSTANT:
- var enumName = declaration.parent.name;
+ var enumName = declaration.parent!.name;
return <String>['$uriStr::$enumName'];
default:
return null;
}
}
- static List<String> _forExpression(Expression expression) {
+ static List<String>? _forExpression(Expression? expression) {
if (expression is BooleanLiteral) {
return const ['dart:core::bool'];
} else if (expression is DoubleLiteral) {
@@ -920,8 +921,8 @@
static const fieldReturnTypeMask = 1 << 2;
static const fieldTypeParametersMask = 1 << 3;
- static Declaration fromIdl(String path, LineInfo lineInfo, Declaration parent,
- idl.AvailableDeclaration d) {
+ static Declaration fromIdl(String path, LineInfo lineInfo,
+ Declaration? parent, idl.AvailableDeclaration d) {
var fieldMask = d.fieldMask;
var hasDoc = fieldMask & fieldDocMask != 0;
var hasParameters = fieldMask & fieldParametersMask != 0;
@@ -1102,7 +1103,7 @@
final Uri uri;
final List<_ExportCombinator> combinators;
- _File file;
+ _File? file;
_Export(this.uri, this.combinators);
@@ -1143,22 +1144,22 @@
final Uri uri;
bool exists = false;
- List<int> lineStarts;
- LineInfo lineInfo;
+ late List<int> lineStarts;
+ late LineInfo lineInfo;
bool isLibrary = false;
bool isLibraryDeprecated = false;
List<_Export> exports = [];
List<_Part> parts = [];
/// If this file is a part, the containing library.
- _File library;
+ _File? library;
/// If this file is a library, libraries that export it.
List<_File> directExporters = [];
List<Declaration> fileDeclarations = [];
- List<Declaration> libraryDeclarations = [];
- List<Declaration> exportedDeclarations;
+ List<Declaration>? libraryDeclarations = [];
+ List<Declaration>? exportedDeclarations;
List<String> templateNames = [];
List<String> templateValues = [];
@@ -1195,8 +1196,8 @@
// With Bazel multiple workspaces might be copies of the same workspace,
// and have files with the same content, but with different paths.
// So, we use the content hash to reuse their declarations without parsing.
- String content;
- String contentKey;
+ String? content;
+ String? contentKey;
{
var contentHashBytes = tracker._byteStore.get(pathKey);
if (contentHashBytes == null) {
@@ -1241,30 +1242,39 @@
// Set back pointers.
for (var export in exports) {
- var directExporters = export.file.directExporters;
- if (!directExporters.contains(this)) {
- directExporters.add(this);
+ var file = export.file;
+ if (file != null) {
+ var directExporters = file.directExporters;
+ if (!directExporters.contains(this)) {
+ directExporters.add(this);
+ }
}
}
for (var part in parts) {
- part.file.library = this;
- part.file.isLibrary = false;
+ var file = part.file;
+ if (file != null) {
+ file.library = this;
+ file.isLibrary = false;
+ }
}
// Compute library declarations.
if (isLibrary) {
libraryDeclarations = <Declaration>[];
- libraryDeclarations.addAll(fileDeclarations);
+ libraryDeclarations!.addAll(fileDeclarations);
for (var part in parts) {
- libraryDeclarations.addAll(part.file.fileDeclarations);
+ var file = part.file;
+ if (file != null) {
+ libraryDeclarations!.addAll(file.fileDeclarations);
+ }
}
- _computeRelevanceTags(libraryDeclarations);
+ _computeRelevanceTags(libraryDeclarations!);
_setLocationLibraryUri();
}
}
void _buildFileDeclarations(CompilationUnit unit) {
- lineInfo = unit.lineInfo;
+ lineInfo = unit.lineInfo!;
lineStarts = lineInfo.lineStarts;
isLibrary = true;
@@ -1315,7 +1325,7 @@
if (node is VariableDeclaration) {
var variables = node.parent as VariableDeclarationList;
var i = variables.variables.indexOf(node);
- codeOffset = (i == 0 ? variables.parent : node).offset;
+ codeOffset = (i == 0 ? variables.parent! : node).offset;
codeLength = node.end - codeOffset;
} else {
codeOffset = node.offset;
@@ -1323,8 +1333,8 @@
}
}
- String docComplete;
- String docSummary;
+ String? docComplete;
+ String? docSummary;
void setDartDoc(AnnotatedNode node) {
if (node.documentationComment != null) {
@@ -1337,24 +1347,24 @@
}
}
- Declaration addDeclaration({
- String defaultArgumentListString,
- List<int> defaultArgumentListTextRanges,
+ Declaration? addDeclaration({
+ String? defaultArgumentListString,
+ List<int>? defaultArgumentListTextRanges,
bool isAbstract = false,
bool isConst = false,
bool isDeprecated = false,
bool isFinal = false,
bool isStatic = false,
- @required DeclarationKind kind,
- @required Identifier name,
- String parameters,
- List<String> parameterNames,
- List<String> parameterTypes,
- Declaration parent,
- @required List<String> relevanceTags,
- int requiredParameterCount,
- String returnType,
- String typeParameters,
+ required DeclarationKind kind,
+ required Identifier name,
+ String? parameters,
+ List<String>? parameterNames,
+ List<String>? parameterTypes,
+ Declaration? parent,
+ required List<String> relevanceTags,
+ int? requiredParameterCount,
+ String? returnType,
+ String? typeParameters,
}) {
if (Identifier.isPrivateName(name.name)) {
return null;
@@ -1489,7 +1499,7 @@
isStatic: isStatic,
kind: DeclarationKind.SETTER,
name: classMember.name,
- parameters: parameters.toSource(),
+ parameters: parameters!.toSource(),
parameterNames: _getFormalParameterNames(parameters),
parameterTypes: _getFormalParameterTypes(parameters),
parent: parent,
@@ -1498,7 +1508,7 @@
_getFormalParameterRequiredCount(parameters),
);
} else {
- var defaultArguments = _computeDefaultArguments(parameters);
+ var defaultArguments = _computeDefaultArguments(parameters!);
addDeclaration(
defaultArgumentListString: defaultArguments?.text,
defaultArgumentListTextRanges: defaultArguments?.ranges,
@@ -1599,7 +1609,7 @@
addDeclaration(
isDeprecated: isDeprecated,
kind: DeclarationKind.EXTENSION,
- name: node.name,
+ name: node.name!,
relevanceTags: ['ElementKind.EXTENSION'],
);
}
@@ -1621,7 +1631,7 @@
isDeprecated: isDeprecated,
kind: DeclarationKind.SETTER,
name: node.name,
- parameters: parameters.toSource(),
+ parameters: parameters!.toSource(),
parameterNames: _getFormalParameterNames(parameters),
parameterTypes: _getFormalParameterTypes(parameters),
relevanceTags: ['ElementKind.FUNCTION'],
@@ -1629,7 +1639,7 @@
_getFormalParameterRequiredCount(parameters),
);
} else {
- var defaultArguments = _computeDefaultArguments(parameters);
+ var defaultArguments = _computeDefaultArguments(parameters!);
addDeclaration(
defaultArgumentListString: defaultArguments?.text,
defaultArgumentListTextRanges: defaultArguments?.ranges,
@@ -1720,28 +1730,28 @@
void _extractDartdocInfoFromUnit(CompilationUnit unit) {
DartdocDirectiveInfo info = DartdocDirectiveInfo();
for (Directive directive in unit.directives) {
- Comment comment = directive.documentationComment;
+ var comment = directive.documentationComment;
if (comment != null) {
- info.extractTemplate(getCommentNodeRawText(comment));
+ info.extractTemplate(getCommentNodeRawText(comment)!);
}
}
for (CompilationUnitMember declaration in unit.declarations) {
- Comment comment = declaration.documentationComment;
+ var comment = declaration.documentationComment;
if (comment != null) {
- info.extractTemplate(getCommentNodeRawText(comment));
+ info.extractTemplate(getCommentNodeRawText(comment)!);
}
if (declaration is ClassOrMixinDeclaration) {
for (ClassMember member in declaration.members) {
- Comment comment = member.documentationComment;
+ var comment = member.documentationComment;
if (comment != null) {
- info.extractTemplate(getCommentNodeRawText(comment));
+ info.extractTemplate(getCommentNodeRawText(comment)!);
}
}
} else if (declaration is EnumDeclaration) {
for (EnumConstantDeclaration constant in declaration.constants) {
- Comment comment = constant.documentationComment;
+ var comment = constant.documentationComment;
if (comment != null) {
- info.extractTemplate(getCommentNodeRawText(comment));
+ info.extractTemplate(getCommentNodeRawText(comment)!);
}
}
}
@@ -1749,12 +1759,12 @@
Map<String, String> templateMap = info.templateMap;
for (String name in templateMap.keys) {
templateNames.add(name);
- templateValues.add(templateMap[name]);
+ templateValues.add(templateMap[name]!);
}
}
/// Return the [_File] for the given [relative] URI, maybe `null`.
- _File _fileForRelativeUri(DeclarationsContext context, Uri relative) {
+ _File? _fileForRelativeUri(DeclarationsContext context, Uri relative) {
var absoluteUri = resolveRelativeUri(uri, relative);
return tracker._getFileByUri(context, absoluteUri);
}
@@ -1811,17 +1821,17 @@
return _DeclarationStorage.fromIdl(path, lineInfo, null, e);
}).toList();
- templateNames = idlFile.directiveInfo.templateNames.toList();
- templateValues = idlFile.directiveInfo.templateValues.toList();
+ templateNames = idlFile.directiveInfo!.templateNames.toList();
+ templateValues = idlFile.directiveInfo!.templateValues.toList();
}
void _setLocationLibraryUri() {
- for (var declaration in libraryDeclarations) {
+ for (var declaration in libraryDeclarations!) {
declaration._locationLibraryUri = uri;
}
}
- static _DefaultArguments _computeDefaultArguments(
+ static _DefaultArguments? _computeDefaultArguments(
FormalParameterList parameters) {
var buffer = StringBuffer();
var ranges = <int>[];
@@ -1833,12 +1843,12 @@
}
if (parameter.isNamed) {
- buffer.write(parameter.identifier.name);
+ buffer.write(parameter.identifier!.name);
buffer.write(': ');
}
var valueOffset = buffer.length;
- buffer.write(parameter.identifier.name);
+ buffer.write(parameter.identifier!.name);
var valueLength = buffer.length - valueOffset;
ranges.add(valueOffset);
ranges.add(valueLength);
@@ -1848,7 +1858,8 @@
return _DefaultArguments(buffer.toString(), ranges);
}
- static List<String> _getFormalParameterNames(FormalParameterList parameters) {
+ static List<String> _getFormalParameterNames(
+ FormalParameterList? parameters) {
if (parameters == null) return const <String>[];
var names = <String>[];
@@ -1859,7 +1870,8 @@
return names;
}
- static int _getFormalParameterRequiredCount(FormalParameterList parameters) {
+ static int? _getFormalParameterRequiredCount(
+ FormalParameterList? parameters) {
if (parameters == null) return null;
return parameters.parameters
@@ -1878,7 +1890,8 @@
return '';
}
- static List<String> _getFormalParameterTypes(FormalParameterList parameters) {
+ static List<String>? _getFormalParameterTypes(
+ FormalParameterList? parameters) {
if (parameters == null) return null;
var types = <String>[];
@@ -1889,7 +1902,7 @@
return types;
}
- static String _getTypeAnnotationString(TypeAnnotation typeAnnotation) {
+ static String _getTypeAnnotationString(TypeAnnotation? typeAnnotation) {
return typeAnnotation?.toSource() ?? '';
}
@@ -1943,7 +1956,7 @@
}
}
- static Uri _uriFromAst(StringLiteral astUri) {
+ static Uri? _uriFromAst(StringLiteral astUri) {
if (astUri is SimpleStringLiteral) {
var uriStr = astUri.value.trim();
if (uriStr.isEmpty) return null;
@@ -1968,6 +1981,7 @@
List<_LibraryNode> computeDependencies() {
return file.exports
.map((export) => export.file)
+ .whereNotNull()
.where((file) => file.isLibrary)
.map(walker.getNode)
.toList();
@@ -1981,12 +1995,12 @@
void evaluate(_LibraryNode node) {
var file = node.file;
var resultSet = _newDeclarationSet();
- resultSet.addAll(file.libraryDeclarations);
+ resultSet.addAll(file.libraryDeclarations!);
for (var export in file.exports) {
var file = export.file;
- if (file.isLibrary) {
- var exportedDeclarations = file.exportedDeclarations;
+ if (file != null && file.isLibrary) {
+ var exportedDeclarations = file.exportedDeclarations!;
resultSet.addAll(export.filter(exportedDeclarations));
}
}
@@ -2001,7 +2015,7 @@
List<Declaration> computeExported(_File file) {
if (file.exportedDeclarations != null) {
- return file.exportedDeclarations;
+ return file.exportedDeclarations!;
}
if (!visitedFiles.add(file)) {
@@ -2009,11 +2023,14 @@
}
var resultSet = _newDeclarationSet();
- resultSet.addAll(file.libraryDeclarations);
+ resultSet.addAll(file.libraryDeclarations!);
for (var export in file.exports) {
- var exportedDeclarations = computeExported(export.file);
- resultSet.addAll(export.filter(exportedDeclarations));
+ var file = export.file;
+ if (file != null) {
+ var exportedDeclarations = computeExported(file);
+ resultSet.addAll(export.filter(exportedDeclarations));
+ }
}
return resultSet.toList();
@@ -2064,7 +2081,7 @@
/// Return the direct child folder of the root, that contains the [path].
///
/// So, we can know if the [path] is in `lib/`, or `test/`, or `bin/`.
- Folder folderInRootContaining(String path) {
+ Folder? folderInRootContaining(String path) {
try {
var children = root.getChildren();
for (var folder in children) {
@@ -2082,7 +2099,7 @@
class _Part {
final Uri uri;
- _File file;
+ _File? file;
_Part(this.uri);
}
@@ -2105,7 +2122,7 @@
/// Wrapper for a [StreamController] and its unique [Stream] instance.
class _StreamController<T> {
final StreamController<T> controller = StreamController<T>();
- Stream<T> stream;
+ late final Stream<T> stream;
_StreamController() {
stream = controller.stream;
diff --git a/pkg/analyzer/lib/src/services/lint.dart b/pkg/analyzer/lib/src/services/lint.dart
index 495e345..49603d43 100644
--- a/pkg/analyzer/lib/src/services/lint.dart
+++ b/pkg/analyzer/lib/src/services/lint.dart
@@ -11,7 +11,7 @@
import 'package:analyzer/src/lint/linter.dart';
/// Current linter version.
-String linterVersion;
+String? linterVersion;
/// Shared lint registry.
LintRegistry lintRegistry = LintRegistry();
@@ -33,10 +33,10 @@
abstract class Linter implements NodeLintRule {
/// Used to report lint warnings.
/// NOTE: this is set by the framework before visit begins.
- ErrorReporter reporter;
+ late ErrorReporter reporter;
/// Return the lint code associated with this linter.
- LintCode get lintCode => null;
+ LintCode? get lintCode => null;
/// Return the lint codes associated with this lint rule.
List<LintCode> get lintCodes {
@@ -54,7 +54,7 @@
/// analysis.
/// Lint errors are reported via this [Linter]'s error [reporter].
@Deprecated('Use registerNodeProcessors() instead.')
- AstVisitor getVisitor();
+ AstVisitor? getVisitor();
@override
void registerNodeProcessors(
diff --git a/pkg/analyzer/lib/src/source/custom_resolver.dart b/pkg/analyzer/lib/src/source/custom_resolver.dart
index c16ba84..f96fdc3 100644
--- a/pkg/analyzer/lib/src/source/custom_resolver.dart
+++ b/pkg/analyzer/lib/src/source/custom_resolver.dart
@@ -13,8 +13,8 @@
CustomUriResolver(this.resourceProvider, this._urlMappings);
@override
- Source resolveAbsolute(Uri uri, [Uri actualUri]) {
- String mapping = _urlMappings[uri.toString()];
+ Source? resolveAbsolute(Uri uri, [Uri? actualUri]) {
+ var mapping = _urlMappings[uri.toString()];
if (mapping == null) {
return null;
}
diff --git a/pkg/analyzer/lib/src/source/package_map_resolver.dart b/pkg/analyzer/lib/src/source/package_map_resolver.dart
index 43d8ba4..6ac9fa4 100644
--- a/pkg/analyzer/lib/src/source/package_map_resolver.dart
+++ b/pkg/analyzer/lib/src/source/package_map_resolver.dart
@@ -39,7 +39,7 @@
}
@override
- Source resolveAbsolute(Uri uri, [Uri actualUri]) {
+ Source? resolveAbsolute(Uri uri, [Uri? actualUri]) {
if (!isPackageUri(uri)) {
return null;
}
@@ -53,7 +53,7 @@
String pkgName = pathSegments[0];
// If the package is known, return the corresponding file.
- List<Folder> packageDirs = packageMap[pkgName];
+ var packageDirs = packageMap[pkgName];
if (packageDirs != null) {
Folder packageDir = packageDirs.single;
String relPath = pathSegments.skip(1).join('/');
@@ -64,11 +64,11 @@
}
@override
- Uri restoreAbsolute(Source source) {
+ Uri? restoreAbsolute(Source source) {
String sourcePath = source.fullName;
pathos.Context pathContext = resourceProvider.pathContext;
for (String pkgName in packageMap.keys) {
- Folder pkgFolder = packageMap[pkgName][0];
+ Folder pkgFolder = packageMap[pkgName]![0];
String pkgFolderPath = pkgFolder.path;
if (sourcePath.startsWith(pkgFolderPath + pathContext.separator)) {
String relPath = sourcePath.substring(pkgFolderPath.length + 1);
diff --git a/pkg/analyzer/lib/src/source/path_filter.dart b/pkg/analyzer/lib/src/source/path_filter.dart
index 62a490a..2851509 100644
--- a/pkg/analyzer/lib/src/source/path_filter.dart
+++ b/pkg/analyzer/lib/src/source/path_filter.dart
@@ -19,7 +19,8 @@
/// Construct a new path filter rooted at [root] with [ignorePatterns].
/// If [pathContext] is not specified, then the system path context is used.
- PathFilter(this.root, List<String> ignorePatterns, [path.Context pathContext])
+ PathFilter(this.root, List<String> ignorePatterns,
+ [path.Context? pathContext])
: pathContext = pathContext ?? path.context {
setIgnorePatterns(ignorePatterns);
}
@@ -33,7 +34,7 @@
}
/// Set the ignore patterns.
- void setIgnorePatterns(List<String> ignorePatterns) {
+ void setIgnorePatterns(List<String>? ignorePatterns) {
_ignorePatterns.clear();
if (ignorePatterns != null) {
for (var ignorePattern in ignorePatterns) {
diff --git a/pkg/analyzer/lib/src/source/source_resource.dart b/pkg/analyzer/lib/src/source/source_resource.dart
index d835a11..e9d258a 100644
--- a/pkg/analyzer/lib/src/source/source_resource.dart
+++ b/pkg/analyzer/lib/src/source/source_resource.dart
@@ -36,15 +36,15 @@
final File file;
/// The cached absolute path of this source.
- String _absolutePath;
+ String? _absolutePath;
/// The cached encoding for this source.
- String _encoding;
+ String? _encoding;
/// Initialize a newly created source object to represent the given [file]. If
/// a [uri] is given, then it will be used as the URI from which the source
/// was derived, otherwise a `file:` URI will be created based on the [file].
- FileSource(File file, [Uri uri])
+ FileSource(File file, [Uri? uri])
: uri = uri ?? file.toUri(),
file = file,
id = _idTable.putIfAbsent(
@@ -110,9 +110,6 @@
@override
String toString() {
- if (file == null) {
- return "<unknown source>";
- }
return file.path;
}
}
diff --git a/pkg/analyzer/lib/src/string_source.dart b/pkg/analyzer/lib/src/string_source.dart
index f82279c..de87280 100644
--- a/pkg/analyzer/lib/src/string_source.dart
+++ b/pkg/analyzer/lib/src/string_source.dart
@@ -4,6 +4,7 @@
import 'package:analyzer/src/generated/engine.dart' show TimestampedData;
import 'package:analyzer/src/generated/source.dart';
+import 'package:path/path.dart' as pkg_path;
/// An implementation of [Source] that's based on an in-memory Dart string.
class StringSource extends Source {
@@ -19,9 +20,9 @@
@override
final int modificationStamp;
- StringSource(this._contents, String fullName, {Uri uri})
- : fullName = fullName,
- uri = uri ?? (fullName == null ? null : Uri.file(fullName)),
+ StringSource(this._contents, String? fullName, {Uri? uri})
+ : fullName = fullName ?? '/test.dart',
+ uri = _computeUri(uri, fullName),
modificationStamp = DateTime.now().millisecondsSinceEpoch;
@override
@@ -57,4 +58,17 @@
@override
String toString() => 'StringSource ($fullName)';
+
+ static Uri _computeUri(Uri? uri, String? fullName) {
+ if (uri != null) {
+ return uri;
+ }
+
+ var isWindows = pkg_path.Style.platform == pkg_path.Style.windows;
+ if (isWindows) {
+ return pkg_path.toUri(r'C:\test.dart');
+ } else {
+ return pkg_path.toUri(r'/test.dart');
+ }
+ }
}
diff --git a/pkg/analyzer/lib/src/summary/base.dart b/pkg/analyzer/lib/src/summary/base.dart
index 0174fed..a3106ed 100644
--- a/pkg/analyzer/lib/src/summary/base.dart
+++ b/pkg/analyzer/lib/src/summary/base.dart
@@ -33,7 +33,7 @@
/// fields and whose values are the data stored in those fields.
///
/// Intended for testing and debugging only.
- Map<String, Object> toMap();
+ Map<String, Object?> toMap();
}
/// Annotation used in the summary IDL to indicate that a summary class can be
@@ -41,7 +41,7 @@
class TopLevel {
/// If non-null, identifier that will be stored in bytes 4-7 of the file,
/// prior all other file data. Must be exactly 4 Latin1 characters.
- final String fileIdentifier;
+ final String? fileIdentifier;
const TopLevel([this.fileIdentifier]);
}
@@ -69,10 +69,10 @@
final int value;
/// The value of the variant field in [Variant].
- final Object variant;
+ final Object? variant;
/// The list of variant values for which this field exists.
- final List<Object> variantList;
+ final List<Object>? variantList;
const VariantId(this.value, {this.variant, this.variantList});
}
diff --git a/pkg/analyzer/lib/src/summary/flat_buffers.dart b/pkg/analyzer/lib/src/summary/flat_buffers.dart
index 764ea95..49a7400 100644
--- a/pkg/analyzer/lib/src/summary/flat_buffers.dart
+++ b/pkg/analyzer/lib/src/summary/flat_buffers.dart
@@ -87,22 +87,22 @@
/// The list of existing VTable(s).
final List<_VTable> _vTables = <_VTable>[];
- ByteData _buf;
+ late ByteData _buf;
/// The maximum alignment that has been seen so far. If [_buf] has to be
/// reallocated in the future (to insert room at its start for more bytes) the
/// reallocation will need to be a multiple of this many bytes.
- int _maxAlign;
+ late int _maxAlign;
/// The number of bytes that have been written to the buffer so far. The
/// most recently written byte is this many bytes from the end of [_buf].
- int _tail;
+ late int _tail;
/// The location of the end of the current table, measured in bytes from the
/// end of [_buf], or `null` if a table is not currently being built.
- int _currentTableEndTail;
+ late int _currentTableEndTail;
- _VTable _currentVTable;
+ _VTable? _currentVTable;
/// Map containing all strings that have been written so far. This allows us
/// to avoid duplicating strings.
@@ -115,7 +115,7 @@
/// Add the [field] with the given boolean [value]. The field is not added if
/// the [value] is equal to [def]. Booleans are stored as 8-bit fields with
/// `0` for `false` and `1` for `true`.
- void addBool(int field, bool value, [bool def]) {
+ void addBool(int field, bool? value, [bool? def]) {
_ensureCurrentVTable();
if (value != null && value != def) {
int size = 1;
@@ -126,7 +126,7 @@
}
/// Add the [field] with the given 64-bit float [value].
- void addFloat64(int field, double value, [double def]) {
+ void addFloat64(int field, double? value, [double? def]) {
_ensureCurrentVTable();
if (value != null && value != def) {
int size = 8;
@@ -138,7 +138,7 @@
/// Add the [field] with the given 32-bit signed integer [value]. The field
/// is not added if the [value] is equal to [def].
- void addInt32(int field, int value, [int def]) {
+ void addInt32(int field, int? value, [int? def]) {
_ensureCurrentVTable();
if (value != null && value != def) {
int size = 4;
@@ -150,7 +150,7 @@
/// Add the [field] with the given 8-bit signed integer [value]. The field is
/// not added if the [value] is equal to [def].
- void addInt8(int field, int value, [int def]) {
+ void addInt8(int field, int? value, [int? def]) {
_ensureCurrentVTable();
if (value != null && value != def) {
int size = 1;
@@ -161,7 +161,7 @@
}
/// Add the [field] referencing an object with the given [offset].
- void addOffset(int field, Offset offset) {
+ void addOffset(int field, Offset? offset) {
_ensureCurrentVTable();
if (offset != null) {
_prepare(4, 1);
@@ -172,7 +172,7 @@
/// Add the [field] with the given 32-bit unsigned integer [value]. The field
/// is not added if the [value] is equal to [def].
- void addUint32(int field, int value, [int def]) {
+ void addUint32(int field, int? value, [int? def]) {
_ensureCurrentVTable();
if (value != null && value != def) {
int size = 4;
@@ -184,7 +184,7 @@
/// Add the [field] with the given 8-bit unsigned integer [value]. The field
/// is not added if the [value] is equal to [def].
- void addUint8(int field, int value, [int def]) {
+ void addUint8(int field, int? value, [int? def]) {
_ensureCurrentVTable();
if (value != null && value != def) {
int size = 1;
@@ -203,27 +203,27 @@
_prepare(4, 1);
int tableTail = _tail;
// Prepare the size of the current table.
- _currentVTable.tableSize = tableTail - _currentTableEndTail;
+ _currentVTable!.tableSize = tableTail - _currentTableEndTail;
// Prepare the VTable to use for the current table.
- int vTableTail;
+ int? vTableTail;
{
- _currentVTable.computeFieldOffsets(tableTail);
+ _currentVTable!.computeFieldOffsets(tableTail);
// Try to find an existing compatible VTable.
for (int i = 0; i < _vTables.length; i++) {
_VTable vTable = _vTables[i];
- if (_currentVTable.canUseExistingVTable(vTable)) {
+ if (_currentVTable!.canUseExistingVTable(vTable)) {
vTableTail = vTable.tail;
break;
}
}
// Write a new VTable.
if (vTableTail == null) {
- _currentVTable.takeFieldOffsets();
- _prepare(2, _currentVTable.numOfUint16);
+ _currentVTable!.takeFieldOffsets();
+ _prepare(2, _currentVTable!.numOfUint16);
vTableTail = _tail;
- _currentVTable.tail = vTableTail;
- _currentVTable.output(_buf, _buf.lengthInBytes - _tail);
- _vTables.add(_currentVTable);
+ _currentVTable!.tail = vTableTail;
+ _currentVTable!.output(_buf, _buf.lengthInBytes - _tail);
+ _vTables.add(_currentVTable!);
}
}
// Set the VTable offset.
@@ -238,7 +238,7 @@
/// written object. If [fileIdentifier] is specified (and not `null`), it is
/// interpreted as a 4-byte Latin-1 encoded string that should be placed at
/// bytes 4-7 of the file.
- Uint8List finish(Offset offset, [String fileIdentifier]) {
+ Uint8List finish(Offset offset, [String? fileIdentifier]) {
_prepare(max(4, _maxAlign), fileIdentifier == null ? 1 : 2);
int alignedTail = _tail + ((-_tail) % _maxAlign);
_setUint32AtTail(_buf, alignedTail, alignedTail - offset._tail);
@@ -398,26 +398,22 @@
return result;
}
- /// Write the given string [value] and return its [Offset], or `null` if
- /// the [value] is equal to [def].
- Offset<String> writeString(String value, [String def]) {
+ /// Write the given string [value] and return its [Offset].
+ Offset<String> writeString(String value) {
_ensureNoVTable();
- if (value != def) {
- return _strings.putIfAbsent(value, () {
- // TODO(scheglov) optimize for ASCII strings
- List<int> bytes = utf8.encode(value);
- int length = bytes.length;
- _prepare(4, 1, additionalBytes: length);
- Offset<String> result = Offset(_tail);
- _setUint32AtTail(_buf, _tail, length);
- int offset = _buf.lengthInBytes - _tail + 4;
- for (int i = 0; i < length; i++) {
- _buf.setUint8(offset++, bytes[i]);
- }
- return result;
- });
- }
- return null;
+ return _strings.putIfAbsent(value, () {
+ // TODO(scheglov) optimize for ASCII strings
+ List<int> bytes = utf8.encode(value);
+ int length = bytes.length;
+ _prepare(4, 1, additionalBytes: length);
+ Offset<String> result = Offset(_tail);
+ _setUint32AtTail(_buf, _tail, length);
+ int offset = _buf.lengthInBytes - _tail + 4;
+ for (int i = 0; i < length; i++) {
+ _buf.setUint8(offset++, bytes[i]);
+ }
+ return result;
+ });
}
/// Throw an exception if there is not currently a vtable.
@@ -468,7 +464,7 @@
/// Record the offset of the given [field].
void _trackField(int field) {
- _currentVTable.addField(field, _tail);
+ _currentVTable!.addField(field, _tail);
}
static void _setFloat64AtTail(ByteData _buf, int tail, double x) {
@@ -570,7 +566,12 @@
T read(BufferContext bc, int offset);
/// Read the value of the given [field] in the given [object].
- T vTableGet(BufferContext object, int offset, int field, [T defaultValue]) {
+ T vTableGet(BufferContext object, int offset, int field, T defaultValue) {
+ return vTableGetOrNull(object, offset, field) ?? defaultValue;
+ }
+
+ /// Read the value of the given [field] in the given [object].
+ T? vTableGetOrNull(BufferContext object, int offset, int field) {
int vTableSOffset = object._getInt32(offset);
int vTableOffset = offset - vTableSOffset;
int vTableSize = object._getUint16(vTableOffset);
@@ -582,7 +583,7 @@
return read(object, offset + fieldOffsetInObject);
}
}
- return defaultValue;
+ return null;
}
}
@@ -686,7 +687,7 @@
class _FbBoolList with ListMixin<bool> implements List<bool> {
final BufferContext bc;
final int offset;
- int _length;
+ int? _length;
_FbBoolList(this.bc, this.offset);
@@ -696,7 +697,7 @@
int byteLength = bc._getUint32(offset);
_length = (byteLength - 1) * 8 - _getByte(byteLength - 1);
}
- return _length;
+ return _length!;
}
@override
@@ -730,20 +731,20 @@
class _FbGenericList<E> extends _FbList<E> {
final Reader<E> elementReader;
- List<E> _items;
+ List<E?>? _items;
_FbGenericList(this.elementReader, BufferContext bp, int offset)
: super(bp, offset);
@override
E operator [](int i) {
- _items ??= List<E>.filled(length, null);
- E item = _items[i];
+ _items ??= List<E?>.filled(length, null);
+ E? item = _items![i];
if (item == null) {
item = elementReader.read(bc, offset + 4 + elementReader.size * i);
- _items[i] = item;
+ _items![i] = item;
}
- return item;
+ return item!;
}
}
@@ -751,14 +752,13 @@
abstract class _FbList<E> with ListMixin<E> implements List<E> {
final BufferContext bc;
final int offset;
- int _length;
+ int? _length;
_FbList(this.bc, this.offset);
@override
int get length {
- _length ??= bc._getUint32(offset);
- return _length;
+ return _length ??= bc._getUint32(offset);
}
@override
@@ -799,14 +799,14 @@
/// The private copy of [_reusedFieldOffsets], which is made only when we
/// find that this table is unique.
- Int32List _fieldOffsets;
+ Int32List? _fieldOffsets;
/// The size of the table that uses this VTable.
- int tableSize;
+ int? tableSize;
/// The tail of this VTable. It is used to share the same VTable between
/// multiple tables of identical structure.
- int tail;
+ int? tail;
_VTable(this._reusedFieldTails, this._reusedFieldOffsets);
@@ -826,7 +826,7 @@
if (tableSize == existing.tableSize &&
_fieldCount == existing._fieldCount) {
for (int i = 0; i < _fieldCount; i++) {
- if (_reusedFieldOffsets[i] != existing._fieldOffsets[i]) {
+ if (_reusedFieldOffsets[i] != existing._fieldOffsets![i]) {
return false;
}
}
@@ -850,10 +850,10 @@
buf.setUint16(bufOffset, numOfUint16 * 2, Endian.little);
bufOffset += 2;
// Table size.
- buf.setUint16(bufOffset, tableSize, Endian.little);
+ buf.setUint16(bufOffset, tableSize!, Endian.little);
bufOffset += 2;
// Field offsets.
- for (int fieldOffset in _fieldOffsets) {
+ for (int fieldOffset in _fieldOffsets!) {
buf.setUint16(bufOffset, fieldOffset, Endian.little);
bufOffset += 2;
}
@@ -864,7 +864,7 @@
assert(_fieldOffsets == null);
_fieldOffsets = Int32List(_fieldCount);
for (int i = 0; i < _fieldCount; ++i) {
- _fieldOffsets[i] = _reusedFieldOffsets[i];
+ _fieldOffsets![i] = _reusedFieldOffsets[i];
}
}
}
diff --git a/pkg/analyzer/lib/src/summary/format.dart b/pkg/analyzer/lib/src/summary/format.dart
index aa37cf6..3b666ff 100644
--- a/pkg/analyzer/lib/src/summary/format.dart
+++ b/pkg/analyzer/lib/src/summary/format.dart
@@ -69,10 +69,10 @@
class AnalysisDriverExceptionContextBuilder extends Object
with _AnalysisDriverExceptionContextMixin
implements idl.AnalysisDriverExceptionContext {
- String _exception;
- List<AnalysisDriverExceptionFileBuilder> _files;
- String _path;
- String _stackTrace;
+ String? _exception;
+ List<AnalysisDriverExceptionFileBuilder>? _files;
+ String? _path;
+ String? _stackTrace;
@override
String get exception => _exception ??= '';
@@ -108,10 +108,10 @@
}
AnalysisDriverExceptionContextBuilder(
- {String exception,
- List<AnalysisDriverExceptionFileBuilder> files,
- String path,
- String stackTrace})
+ {String? exception,
+ List<AnalysisDriverExceptionFileBuilder>? files,
+ String? path,
+ String? stackTrace})
: _exception = exception,
_files = files,
_path = path,
@@ -130,9 +130,9 @@
if (this._files == null) {
signature.addInt(0);
} else {
- signature.addInt(this._files.length);
- for (var x in this._files) {
- x?.collectApiSignature(signature);
+ signature.addInt(this._files!.length);
+ for (var x in this._files!) {
+ x.collectApiSignature(signature);
}
}
}
@@ -143,22 +143,22 @@
}
fb.Offset finish(fb.Builder fbBuilder) {
- fb.Offset offset_exception;
- fb.Offset offset_files;
- fb.Offset offset_path;
- fb.Offset offset_stackTrace;
+ fb.Offset? offset_exception;
+ fb.Offset? offset_files;
+ fb.Offset? offset_path;
+ fb.Offset? offset_stackTrace;
if (_exception != null) {
- offset_exception = fbBuilder.writeString(_exception);
+ offset_exception = fbBuilder.writeString(_exception!);
}
- if (!(_files == null || _files.isEmpty)) {
+ if (!(_files == null || _files!.isEmpty)) {
offset_files =
- fbBuilder.writeList(_files.map((b) => b.finish(fbBuilder)).toList());
+ fbBuilder.writeList(_files!.map((b) => b.finish(fbBuilder)).toList());
}
if (_path != null) {
- offset_path = fbBuilder.writeString(_path);
+ offset_path = fbBuilder.writeString(_path!);
}
if (_stackTrace != null) {
- offset_stackTrace = fbBuilder.writeString(_stackTrace);
+ offset_stackTrace = fbBuilder.writeString(_stackTrace!);
}
fbBuilder.startTable();
if (offset_exception != null) {
@@ -201,36 +201,34 @@
_AnalysisDriverExceptionContextImpl(this._bc, this._bcOffset);
- String _exception;
- List<idl.AnalysisDriverExceptionFile> _files;
- String _path;
- String _stackTrace;
+ String? _exception;
+ List<idl.AnalysisDriverExceptionFile>? _files;
+ String? _path;
+ String? _stackTrace;
@override
String get exception {
- _exception ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 1, '');
- return _exception;
+ return _exception ??=
+ const fb.StringReader().vTableGet(_bc, _bcOffset, 1, '');
}
@override
List<idl.AnalysisDriverExceptionFile> get files {
- _files ??= const fb.ListReader<idl.AnalysisDriverExceptionFile>(
+ return _files ??= const fb.ListReader<idl.AnalysisDriverExceptionFile>(
_AnalysisDriverExceptionFileReader())
.vTableGet(
_bc, _bcOffset, 3, const <idl.AnalysisDriverExceptionFile>[]);
- return _files;
}
@override
String get path {
- _path ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 0, '');
- return _path;
+ return _path ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 0, '');
}
@override
String get stackTrace {
- _stackTrace ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 2, '');
- return _stackTrace;
+ return _stackTrace ??=
+ const fb.StringReader().vTableGet(_bc, _bcOffset, 2, '');
}
}
@@ -239,23 +237,27 @@
@override
Map<String, Object> toJson() {
Map<String, Object> _result = <String, Object>{};
- if (exception != '') {
- _result["exception"] = exception;
+ var local_exception = exception;
+ if (local_exception != '') {
+ _result["exception"] = local_exception;
}
- if (files.isNotEmpty) {
- _result["files"] = files.map((_value) => _value.toJson()).toList();
+ var local_files = files;
+ if (local_files.isNotEmpty) {
+ _result["files"] = local_files.map((_value) => _value.toJson()).toList();
}
- if (path != '') {
- _result["path"] = path;
+ var local_path = path;
+ if (local_path != '') {
+ _result["path"] = local_path;
}
- if (stackTrace != '') {
- _result["stackTrace"] = stackTrace;
+ var local_stackTrace = stackTrace;
+ if (local_stackTrace != '') {
+ _result["stackTrace"] = local_stackTrace;
}
return _result;
}
@override
- Map<String, Object> toMap() => {
+ Map<String, Object?> toMap() => {
"exception": exception,
"files": files,
"path": path,
@@ -269,8 +271,8 @@
class AnalysisDriverExceptionFileBuilder extends Object
with _AnalysisDriverExceptionFileMixin
implements idl.AnalysisDriverExceptionFile {
- String _content;
- String _path;
+ String? _content;
+ String? _path;
@override
String get content => _content ??= '';
@@ -288,7 +290,7 @@
this._path = value;
}
- AnalysisDriverExceptionFileBuilder({String content, String path})
+ AnalysisDriverExceptionFileBuilder({String? content, String? path})
: _content = content,
_path = path;
@@ -302,13 +304,13 @@
}
fb.Offset finish(fb.Builder fbBuilder) {
- fb.Offset offset_content;
- fb.Offset offset_path;
+ fb.Offset? offset_content;
+ fb.Offset? offset_path;
if (_content != null) {
- offset_content = fbBuilder.writeString(_content);
+ offset_content = fbBuilder.writeString(_content!);
}
if (_path != null) {
- offset_path = fbBuilder.writeString(_path);
+ offset_path = fbBuilder.writeString(_path!);
}
fbBuilder.startTable();
if (offset_content != null) {
@@ -339,19 +341,18 @@
_AnalysisDriverExceptionFileImpl(this._bc, this._bcOffset);
- String _content;
- String _path;
+ String? _content;
+ String? _path;
@override
String get content {
- _content ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 1, '');
- return _content;
+ return _content ??=
+ const fb.StringReader().vTableGet(_bc, _bcOffset, 1, '');
}
@override
String get path {
- _path ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 0, '');
- return _path;
+ return _path ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 0, '');
}
}
@@ -360,17 +361,19 @@
@override
Map<String, Object> toJson() {
Map<String, Object> _result = <String, Object>{};
- if (content != '') {
- _result["content"] = content;
+ var local_content = content;
+ if (local_content != '') {
+ _result["content"] = local_content;
}
- if (path != '') {
- _result["path"] = path;
+ var local_path = path;
+ if (local_path != '') {
+ _result["path"] = local_path;
}
return _result;
}
@override
- Map<String, Object> toMap() => {
+ Map<String, Object?> toMap() => {
"content": content,
"path": path,
};
@@ -382,8 +385,8 @@
class AnalysisDriverResolvedUnitBuilder extends Object
with _AnalysisDriverResolvedUnitMixin
implements idl.AnalysisDriverResolvedUnit {
- List<AnalysisDriverUnitErrorBuilder> _errors;
- AnalysisDriverUnitIndexBuilder _index;
+ List<AnalysisDriverUnitErrorBuilder>? _errors;
+ AnalysisDriverUnitIndexBuilder? _index;
@override
List<AnalysisDriverUnitErrorBuilder> get errors =>
@@ -395,16 +398,16 @@
}
@override
- AnalysisDriverUnitIndexBuilder get index => _index;
+ AnalysisDriverUnitIndexBuilder? get index => _index;
/// The index of the unit.
- set index(AnalysisDriverUnitIndexBuilder value) {
+ set index(AnalysisDriverUnitIndexBuilder? value) {
this._index = value;
}
AnalysisDriverResolvedUnitBuilder(
- {List<AnalysisDriverUnitErrorBuilder> errors,
- AnalysisDriverUnitIndexBuilder index})
+ {List<AnalysisDriverUnitErrorBuilder>? errors,
+ AnalysisDriverUnitIndexBuilder? index})
: _errors = errors,
_index = index;
@@ -419,9 +422,9 @@
if (this._errors == null) {
signature.addInt(0);
} else {
- signature.addInt(this._errors.length);
- for (var x in this._errors) {
- x?.collectApiSignature(signature);
+ signature.addInt(this._errors!.length);
+ for (var x in this._errors!) {
+ x.collectApiSignature(signature);
}
}
signature.addBool(this._index != null);
@@ -434,14 +437,14 @@
}
fb.Offset finish(fb.Builder fbBuilder) {
- fb.Offset offset_errors;
- fb.Offset offset_index;
- if (!(_errors == null || _errors.isEmpty)) {
- offset_errors =
- fbBuilder.writeList(_errors.map((b) => b.finish(fbBuilder)).toList());
+ fb.Offset? offset_errors;
+ fb.Offset? offset_index;
+ if (!(_errors == null || _errors!.isEmpty)) {
+ offset_errors = fbBuilder
+ .writeList(_errors!.map((b) => b.finish(fbBuilder)).toList());
}
if (_index != null) {
- offset_index = _index.finish(fbBuilder);
+ offset_index = _index!.finish(fbBuilder);
}
fbBuilder.startTable();
if (offset_errors != null) {
@@ -478,22 +481,20 @@
_AnalysisDriverResolvedUnitImpl(this._bc, this._bcOffset);
- List<idl.AnalysisDriverUnitError> _errors;
- idl.AnalysisDriverUnitIndex _index;
+ List<idl.AnalysisDriverUnitError>? _errors;
+ idl.AnalysisDriverUnitIndex? _index;
@override
List<idl.AnalysisDriverUnitError> get errors {
- _errors ??= const fb.ListReader<idl.AnalysisDriverUnitError>(
+ return _errors ??= const fb.ListReader<idl.AnalysisDriverUnitError>(
_AnalysisDriverUnitErrorReader())
.vTableGet(_bc, _bcOffset, 0, const <idl.AnalysisDriverUnitError>[]);
- return _errors;
}
@override
- idl.AnalysisDriverUnitIndex get index {
- _index ??= const _AnalysisDriverUnitIndexReader()
- .vTableGet(_bc, _bcOffset, 1, null);
- return _index;
+ idl.AnalysisDriverUnitIndex? get index {
+ return _index ??= const _AnalysisDriverUnitIndexReader()
+ .vTableGetOrNull(_bc, _bcOffset, 1);
}
}
@@ -502,17 +503,20 @@
@override
Map<String, Object> toJson() {
Map<String, Object> _result = <String, Object>{};
- if (errors.isNotEmpty) {
- _result["errors"] = errors.map((_value) => _value.toJson()).toList();
+ var local_errors = errors;
+ if (local_errors.isNotEmpty) {
+ _result["errors"] =
+ local_errors.map((_value) => _value.toJson()).toList();
}
- if (index != null) {
- _result["index"] = index.toJson();
+ var local_index = index;
+ if (local_index != null) {
+ _result["index"] = local_index.toJson();
}
return _result;
}
@override
- Map<String, Object> toMap() => {
+ Map<String, Object?> toMap() => {
"errors": errors,
"index": index,
};
@@ -524,8 +528,8 @@
class AnalysisDriverSubtypeBuilder extends Object
with _AnalysisDriverSubtypeMixin
implements idl.AnalysisDriverSubtype {
- List<int> _members;
- int _name;
+ List<int>? _members;
+ int? _name;
@override
List<int> get members => _members ??= <int>[];
@@ -534,7 +538,7 @@
/// They are indexes into [AnalysisDriverUnitError.strings] list.
/// The list is sorted in ascending order.
set members(List<int> value) {
- assert(value == null || value.every((e) => e >= 0));
+ assert(value.every((e) => e >= 0));
this._members = value;
}
@@ -544,11 +548,11 @@
/// The name of the class.
/// It is an index into [AnalysisDriverUnitError.strings] list.
set name(int value) {
- assert(value == null || value >= 0);
+ assert(value >= 0);
this._name = value;
}
- AnalysisDriverSubtypeBuilder({List<int> members, int name})
+ AnalysisDriverSubtypeBuilder({List<int>? members, int? name})
: _members = members,
_name = name;
@@ -561,17 +565,17 @@
if (this._members == null) {
signature.addInt(0);
} else {
- signature.addInt(this._members.length);
- for (var x in this._members) {
+ signature.addInt(this._members!.length);
+ for (var x in this._members!) {
signature.addInt(x);
}
}
}
fb.Offset finish(fb.Builder fbBuilder) {
- fb.Offset offset_members;
- if (!(_members == null || _members.isEmpty)) {
- offset_members = fbBuilder.writeListUint32(_members);
+ fb.Offset? offset_members;
+ if (!(_members == null || _members!.isEmpty)) {
+ offset_members = fbBuilder.writeListUint32(_members!);
}
fbBuilder.startTable();
if (offset_members != null) {
@@ -601,20 +605,18 @@
_AnalysisDriverSubtypeImpl(this._bc, this._bcOffset);
- List<int> _members;
- int _name;
+ List<int>? _members;
+ int? _name;
@override
List<int> get members {
- _members ??=
+ return _members ??=
const fb.Uint32ListReader().vTableGet(_bc, _bcOffset, 1, const <int>[]);
- return _members;
}
@override
int get name {
- _name ??= const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 0, 0);
- return _name;
+ return _name ??= const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 0, 0);
}
}
@@ -623,17 +625,19 @@
@override
Map<String, Object> toJson() {
Map<String, Object> _result = <String, Object>{};
- if (members.isNotEmpty) {
- _result["members"] = members;
+ var local_members = members;
+ if (local_members.isNotEmpty) {
+ _result["members"] = local_members;
}
- if (name != 0) {
- _result["name"] = name;
+ var local_name = name;
+ if (local_name != 0) {
+ _result["name"] = local_name;
}
return _result;
}
@override
- Map<String, Object> toMap() => {
+ Map<String, Object?> toMap() => {
"members": members,
"name": name,
};
@@ -645,12 +649,12 @@
class AnalysisDriverUnitErrorBuilder extends Object
with _AnalysisDriverUnitErrorMixin
implements idl.AnalysisDriverUnitError {
- List<DiagnosticMessageBuilder> _contextMessages;
- String _correction;
- int _length;
- String _message;
- int _offset;
- String _uniqueName;
+ List<DiagnosticMessageBuilder>? _contextMessages;
+ String? _correction;
+ int? _length;
+ String? _message;
+ int? _offset;
+ String? _uniqueName;
@override
List<DiagnosticMessageBuilder> get contextMessages =>
@@ -674,7 +678,7 @@
/// The length of the error in the file.
set length(int value) {
- assert(value == null || value >= 0);
+ assert(value >= 0);
this._length = value;
}
@@ -691,7 +695,7 @@
/// The offset from the beginning of the file.
set offset(int value) {
- assert(value == null || value >= 0);
+ assert(value >= 0);
this._offset = value;
}
@@ -704,12 +708,12 @@
}
AnalysisDriverUnitErrorBuilder(
- {List<DiagnosticMessageBuilder> contextMessages,
- String correction,
- int length,
- String message,
- int offset,
- String uniqueName})
+ {List<DiagnosticMessageBuilder>? contextMessages,
+ String? correction,
+ int? length,
+ String? message,
+ int? offset,
+ String? uniqueName})
: _contextMessages = contextMessages,
_correction = correction,
_length = length,
@@ -732,30 +736,30 @@
if (this._contextMessages == null) {
signature.addInt(0);
} else {
- signature.addInt(this._contextMessages.length);
- for (var x in this._contextMessages) {
- x?.collectApiSignature(signature);
+ signature.addInt(this._contextMessages!.length);
+ for (var x in this._contextMessages!) {
+ x.collectApiSignature(signature);
}
}
}
fb.Offset finish(fb.Builder fbBuilder) {
- fb.Offset offset_contextMessages;
- fb.Offset offset_correction;
- fb.Offset offset_message;
- fb.Offset offset_uniqueName;
- if (!(_contextMessages == null || _contextMessages.isEmpty)) {
- offset_contextMessages = fbBuilder
- .writeList(_contextMessages.map((b) => b.finish(fbBuilder)).toList());
+ fb.Offset? offset_contextMessages;
+ fb.Offset? offset_correction;
+ fb.Offset? offset_message;
+ fb.Offset? offset_uniqueName;
+ if (!(_contextMessages == null || _contextMessages!.isEmpty)) {
+ offset_contextMessages = fbBuilder.writeList(
+ _contextMessages!.map((b) => b.finish(fbBuilder)).toList());
}
if (_correction != null) {
- offset_correction = fbBuilder.writeString(_correction);
+ offset_correction = fbBuilder.writeString(_correction!);
}
if (_message != null) {
- offset_message = fbBuilder.writeString(_message);
+ offset_message = fbBuilder.writeString(_message!);
}
if (_uniqueName != null) {
- offset_uniqueName = fbBuilder.writeString(_uniqueName);
+ offset_uniqueName = fbBuilder.writeString(_uniqueName!);
}
fbBuilder.startTable();
if (offset_contextMessages != null) {
@@ -797,49 +801,46 @@
_AnalysisDriverUnitErrorImpl(this._bc, this._bcOffset);
- List<idl.DiagnosticMessage> _contextMessages;
- String _correction;
- int _length;
- String _message;
- int _offset;
- String _uniqueName;
+ List<idl.DiagnosticMessage>? _contextMessages;
+ String? _correction;
+ int? _length;
+ String? _message;
+ int? _offset;
+ String? _uniqueName;
@override
List<idl.DiagnosticMessage> get contextMessages {
- _contextMessages ??=
+ return _contextMessages ??=
const fb.ListReader<idl.DiagnosticMessage>(_DiagnosticMessageReader())
.vTableGet(_bc, _bcOffset, 5, const <idl.DiagnosticMessage>[]);
- return _contextMessages;
}
@override
String get correction {
- _correction ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 4, '');
- return _correction;
+ return _correction ??=
+ const fb.StringReader().vTableGet(_bc, _bcOffset, 4, '');
}
@override
int get length {
- _length ??= const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 1, 0);
- return _length;
+ return _length ??= const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 1, 0);
}
@override
String get message {
- _message ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 3, '');
- return _message;
+ return _message ??=
+ const fb.StringReader().vTableGet(_bc, _bcOffset, 3, '');
}
@override
int get offset {
- _offset ??= const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 0, 0);
- return _offset;
+ return _offset ??= const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 0, 0);
}
@override
String get uniqueName {
- _uniqueName ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 2, '');
- return _uniqueName;
+ return _uniqueName ??=
+ const fb.StringReader().vTableGet(_bc, _bcOffset, 2, '');
}
}
@@ -848,30 +849,36 @@
@override
Map<String, Object> toJson() {
Map<String, Object> _result = <String, Object>{};
- if (contextMessages.isNotEmpty) {
+ var local_contextMessages = contextMessages;
+ if (local_contextMessages.isNotEmpty) {
_result["contextMessages"] =
- contextMessages.map((_value) => _value.toJson()).toList();
+ local_contextMessages.map((_value) => _value.toJson()).toList();
}
- if (correction != '') {
- _result["correction"] = correction;
+ var local_correction = correction;
+ if (local_correction != '') {
+ _result["correction"] = local_correction;
}
- if (length != 0) {
- _result["length"] = length;
+ var local_length = length;
+ if (local_length != 0) {
+ _result["length"] = local_length;
}
- if (message != '') {
- _result["message"] = message;
+ var local_message = message;
+ if (local_message != '') {
+ _result["message"] = local_message;
}
- if (offset != 0) {
- _result["offset"] = offset;
+ var local_offset = offset;
+ if (local_offset != 0) {
+ _result["offset"] = local_offset;
}
- if (uniqueName != '') {
- _result["uniqueName"] = uniqueName;
+ var local_uniqueName = uniqueName;
+ if (local_uniqueName != '') {
+ _result["uniqueName"] = local_uniqueName;
}
return _result;
}
@override
- Map<String, Object> toMap() => {
+ Map<String, Object?> toMap() => {
"contextMessages": contextMessages,
"correction": correction,
"length": length,
@@ -887,26 +894,26 @@
class AnalysisDriverUnitIndexBuilder extends Object
with _AnalysisDriverUnitIndexMixin
implements idl.AnalysisDriverUnitIndex {
- List<idl.IndexSyntheticElementKind> _elementKinds;
- List<int> _elementNameClassMemberIds;
- List<int> _elementNameParameterIds;
- List<int> _elementNameUnitMemberIds;
- List<int> _elementUnits;
- int _nullStringId;
- List<String> _strings;
- List<AnalysisDriverSubtypeBuilder> _subtypes;
- List<int> _supertypes;
- List<int> _unitLibraryUris;
- List<int> _unitUnitUris;
- List<bool> _usedElementIsQualifiedFlags;
- List<idl.IndexRelationKind> _usedElementKinds;
- List<int> _usedElementLengths;
- List<int> _usedElementOffsets;
- List<int> _usedElements;
- List<bool> _usedNameIsQualifiedFlags;
- List<idl.IndexRelationKind> _usedNameKinds;
- List<int> _usedNameOffsets;
- List<int> _usedNames;
+ List<idl.IndexSyntheticElementKind>? _elementKinds;
+ List<int>? _elementNameClassMemberIds;
+ List<int>? _elementNameParameterIds;
+ List<int>? _elementNameUnitMemberIds;
+ List<int>? _elementUnits;
+ int? _nullStringId;
+ List<String>? _strings;
+ List<AnalysisDriverSubtypeBuilder>? _subtypes;
+ List<int>? _supertypes;
+ List<int>? _unitLibraryUris;
+ List<int>? _unitUnitUris;
+ List<bool>? _usedElementIsQualifiedFlags;
+ List<idl.IndexRelationKind>? _usedElementKinds;
+ List<int>? _usedElementLengths;
+ List<int>? _usedElementOffsets;
+ List<int>? _usedElements;
+ List<bool>? _usedNameIsQualifiedFlags;
+ List<idl.IndexRelationKind>? _usedNameKinds;
+ List<int>? _usedNameOffsets;
+ List<int>? _usedNames;
@override
List<idl.IndexSyntheticElementKind> get elementKinds =>
@@ -928,7 +935,7 @@
/// the client can quickly check whether an element is referenced in this
/// index.
set elementNameClassMemberIds(List<int> value) {
- assert(value == null || value.every((e) => e >= 0));
+ assert(value.every((e) => e >= 0));
this._elementNameClassMemberIds = value;
}
@@ -940,7 +947,7 @@
/// not a named parameter. The list is sorted in ascending order, so that the
/// client can quickly check whether an element is referenced in this index.
set elementNameParameterIds(List<int> value) {
- assert(value == null || value.every((e) => e >= 0));
+ assert(value.every((e) => e >= 0));
this._elementNameParameterIds = value;
}
@@ -953,7 +960,7 @@
/// the unit. The list is sorted in ascending order, so that the client can
/// quickly check whether an element is referenced in this index.
set elementNameUnitMemberIds(List<int> value) {
- assert(value == null || value.every((e) => e >= 0));
+ assert(value.every((e) => e >= 0));
this._elementNameUnitMemberIds = value;
}
@@ -964,7 +971,7 @@
/// the index into [unitLibraryUris] and [unitUnitUris] for the library
/// specific unit where the element is declared.
set elementUnits(List<int> value) {
- assert(value == null || value.every((e) => e >= 0));
+ assert(value.every((e) => e >= 0));
this._elementUnits = value;
}
@@ -973,7 +980,7 @@
/// Identifier of the null string in [strings].
set nullStringId(int value) {
- assert(value == null || value >= 0);
+ assert(value >= 0);
this._nullStringId = value;
}
@@ -1004,7 +1011,7 @@
/// in ascending order. There might be more than one element with the same
/// value if there is more than one subtype of this supertype.
set supertypes(List<int> value) {
- assert(value == null || value.every((e) => e >= 0));
+ assert(value.every((e) => e >= 0));
this._supertypes = value;
}
@@ -1015,7 +1022,7 @@
/// specific unit referenced in the index. It is an index into [strings]
/// list.
set unitLibraryUris(List<int> value) {
- assert(value == null || value.every((e) => e >= 0));
+ assert(value.every((e) => e >= 0));
this._unitLibraryUris = value;
}
@@ -1026,7 +1033,7 @@
/// specific unit referenced in the index. It is an index into [strings]
/// list.
set unitUnitUris(List<int> value) {
- assert(value == null || value.every((e) => e >= 0));
+ assert(value.every((e) => e >= 0));
this._unitUnitUris = value;
}
@@ -1054,7 +1061,7 @@
/// Each item of this list is the length of the element usage.
set usedElementLengths(List<int> value) {
- assert(value == null || value.every((e) => e >= 0));
+ assert(value.every((e) => e >= 0));
this._usedElementLengths = value;
}
@@ -1064,7 +1071,7 @@
/// Each item of this list is the offset of the element usage relative to the
/// beginning of the file.
set usedElementOffsets(List<int> value) {
- assert(value == null || value.every((e) => e >= 0));
+ assert(value.every((e) => e >= 0));
this._usedElementOffsets = value;
}
@@ -1076,7 +1083,7 @@
/// [elementNameParameterIds]. The list is sorted in ascending order, so
/// that the client can quickly find element references in this index.
set usedElements(List<int> value) {
- assert(value == null || value.every((e) => e >= 0));
+ assert(value.every((e) => e >= 0));
this._usedElements = value;
}
@@ -1105,7 +1112,7 @@
/// Each item of this list is the offset of the name usage relative to the
/// beginning of the file.
set usedNameOffsets(List<int> value) {
- assert(value == null || value.every((e) => e >= 0));
+ assert(value.every((e) => e >= 0));
this._usedNameOffsets = value;
}
@@ -1116,31 +1123,31 @@
/// list is sorted in ascending order, so that the client can quickly find
/// whether a name is used in this index.
set usedNames(List<int> value) {
- assert(value == null || value.every((e) => e >= 0));
+ assert(value.every((e) => e >= 0));
this._usedNames = value;
}
AnalysisDriverUnitIndexBuilder(
- {List<idl.IndexSyntheticElementKind> elementKinds,
- List<int> elementNameClassMemberIds,
- List<int> elementNameParameterIds,
- List<int> elementNameUnitMemberIds,
- List<int> elementUnits,
- int nullStringId,
- List<String> strings,
- List<AnalysisDriverSubtypeBuilder> subtypes,
- List<int> supertypes,
- List<int> unitLibraryUris,
- List<int> unitUnitUris,
- List<bool> usedElementIsQualifiedFlags,
- List<idl.IndexRelationKind> usedElementKinds,
- List<int> usedElementLengths,
- List<int> usedElementOffsets,
- List<int> usedElements,
- List<bool> usedNameIsQualifiedFlags,
- List<idl.IndexRelationKind> usedNameKinds,
- List<int> usedNameOffsets,
- List<int> usedNames})
+ {List<idl.IndexSyntheticElementKind>? elementKinds,
+ List<int>? elementNameClassMemberIds,
+ List<int>? elementNameParameterIds,
+ List<int>? elementNameUnitMemberIds,
+ List<int>? elementUnits,
+ int? nullStringId,
+ List<String>? strings,
+ List<AnalysisDriverSubtypeBuilder>? subtypes,
+ List<int>? supertypes,
+ List<int>? unitLibraryUris,
+ List<int>? unitUnitUris,
+ List<bool>? usedElementIsQualifiedFlags,
+ List<idl.IndexRelationKind>? usedElementKinds,
+ List<int>? usedElementLengths,
+ List<int>? usedElementOffsets,
+ List<int>? usedElements,
+ List<bool>? usedNameIsQualifiedFlags,
+ List<idl.IndexRelationKind>? usedNameKinds,
+ List<int>? usedNameOffsets,
+ List<int>? usedNames})
: _elementKinds = elementKinds,
_elementNameClassMemberIds = elementNameClassMemberIds,
_elementNameParameterIds = elementNameParameterIds,
@@ -1172,8 +1179,8 @@
if (this._strings == null) {
signature.addInt(0);
} else {
- signature.addInt(this._strings.length);
- for (var x in this._strings) {
+ signature.addInt(this._strings!.length);
+ for (var x in this._strings!) {
signature.addString(x);
}
}
@@ -1181,145 +1188,145 @@
if (this._unitLibraryUris == null) {
signature.addInt(0);
} else {
- signature.addInt(this._unitLibraryUris.length);
- for (var x in this._unitLibraryUris) {
+ signature.addInt(this._unitLibraryUris!.length);
+ for (var x in this._unitLibraryUris!) {
signature.addInt(x);
}
}
if (this._unitUnitUris == null) {
signature.addInt(0);
} else {
- signature.addInt(this._unitUnitUris.length);
- for (var x in this._unitUnitUris) {
+ signature.addInt(this._unitUnitUris!.length);
+ for (var x in this._unitUnitUris!) {
signature.addInt(x);
}
}
if (this._elementKinds == null) {
signature.addInt(0);
} else {
- signature.addInt(this._elementKinds.length);
- for (var x in this._elementKinds) {
+ signature.addInt(this._elementKinds!.length);
+ for (var x in this._elementKinds!) {
signature.addInt(x.index);
}
}
if (this._elementUnits == null) {
signature.addInt(0);
} else {
- signature.addInt(this._elementUnits.length);
- for (var x in this._elementUnits) {
+ signature.addInt(this._elementUnits!.length);
+ for (var x in this._elementUnits!) {
signature.addInt(x);
}
}
if (this._elementNameUnitMemberIds == null) {
signature.addInt(0);
} else {
- signature.addInt(this._elementNameUnitMemberIds.length);
- for (var x in this._elementNameUnitMemberIds) {
+ signature.addInt(this._elementNameUnitMemberIds!.length);
+ for (var x in this._elementNameUnitMemberIds!) {
signature.addInt(x);
}
}
if (this._elementNameClassMemberIds == null) {
signature.addInt(0);
} else {
- signature.addInt(this._elementNameClassMemberIds.length);
- for (var x in this._elementNameClassMemberIds) {
+ signature.addInt(this._elementNameClassMemberIds!.length);
+ for (var x in this._elementNameClassMemberIds!) {
signature.addInt(x);
}
}
if (this._elementNameParameterIds == null) {
signature.addInt(0);
} else {
- signature.addInt(this._elementNameParameterIds.length);
- for (var x in this._elementNameParameterIds) {
+ signature.addInt(this._elementNameParameterIds!.length);
+ for (var x in this._elementNameParameterIds!) {
signature.addInt(x);
}
}
if (this._usedElements == null) {
signature.addInt(0);
} else {
- signature.addInt(this._usedElements.length);
- for (var x in this._usedElements) {
+ signature.addInt(this._usedElements!.length);
+ for (var x in this._usedElements!) {
signature.addInt(x);
}
}
if (this._usedElementKinds == null) {
signature.addInt(0);
} else {
- signature.addInt(this._usedElementKinds.length);
- for (var x in this._usedElementKinds) {
+ signature.addInt(this._usedElementKinds!.length);
+ for (var x in this._usedElementKinds!) {
signature.addInt(x.index);
}
}
if (this._usedElementOffsets == null) {
signature.addInt(0);
} else {
- signature.addInt(this._usedElementOffsets.length);
- for (var x in this._usedElementOffsets) {
+ signature.addInt(this._usedElementOffsets!.length);
+ for (var x in this._usedElementOffsets!) {
signature.addInt(x);
}
}
if (this._usedElementLengths == null) {
signature.addInt(0);
} else {
- signature.addInt(this._usedElementLengths.length);
- for (var x in this._usedElementLengths) {
+ signature.addInt(this._usedElementLengths!.length);
+ for (var x in this._usedElementLengths!) {
signature.addInt(x);
}
}
if (this._usedElementIsQualifiedFlags == null) {
signature.addInt(0);
} else {
- signature.addInt(this._usedElementIsQualifiedFlags.length);
- for (var x in this._usedElementIsQualifiedFlags) {
+ signature.addInt(this._usedElementIsQualifiedFlags!.length);
+ for (var x in this._usedElementIsQualifiedFlags!) {
signature.addBool(x);
}
}
if (this._usedNames == null) {
signature.addInt(0);
} else {
- signature.addInt(this._usedNames.length);
- for (var x in this._usedNames) {
+ signature.addInt(this._usedNames!.length);
+ for (var x in this._usedNames!) {
signature.addInt(x);
}
}
if (this._usedNameKinds == null) {
signature.addInt(0);
} else {
- signature.addInt(this._usedNameKinds.length);
- for (var x in this._usedNameKinds) {
+ signature.addInt(this._usedNameKinds!.length);
+ for (var x in this._usedNameKinds!) {
signature.addInt(x.index);
}
}
if (this._usedNameOffsets == null) {
signature.addInt(0);
} else {
- signature.addInt(this._usedNameOffsets.length);
- for (var x in this._usedNameOffsets) {
+ signature.addInt(this._usedNameOffsets!.length);
+ for (var x in this._usedNameOffsets!) {
signature.addInt(x);
}
}
if (this._usedNameIsQualifiedFlags == null) {
signature.addInt(0);
} else {
- signature.addInt(this._usedNameIsQualifiedFlags.length);
- for (var x in this._usedNameIsQualifiedFlags) {
+ signature.addInt(this._usedNameIsQualifiedFlags!.length);
+ for (var x in this._usedNameIsQualifiedFlags!) {
signature.addBool(x);
}
}
if (this._supertypes == null) {
signature.addInt(0);
} else {
- signature.addInt(this._supertypes.length);
- for (var x in this._supertypes) {
+ signature.addInt(this._supertypes!.length);
+ for (var x in this._supertypes!) {
signature.addInt(x);
}
}
if (this._subtypes == null) {
signature.addInt(0);
} else {
- signature.addInt(this._subtypes.length);
- for (var x in this._subtypes) {
- x?.collectApiSignature(signature);
+ signature.addInt(this._subtypes!.length);
+ for (var x in this._subtypes!) {
+ x.collectApiSignature(signature);
}
}
}
@@ -1330,98 +1337,98 @@
}
fb.Offset finish(fb.Builder fbBuilder) {
- fb.Offset offset_elementKinds;
- fb.Offset offset_elementNameClassMemberIds;
- fb.Offset offset_elementNameParameterIds;
- fb.Offset offset_elementNameUnitMemberIds;
- fb.Offset offset_elementUnits;
- fb.Offset offset_strings;
- fb.Offset offset_subtypes;
- fb.Offset offset_supertypes;
- fb.Offset offset_unitLibraryUris;
- fb.Offset offset_unitUnitUris;
- fb.Offset offset_usedElementIsQualifiedFlags;
- fb.Offset offset_usedElementKinds;
- fb.Offset offset_usedElementLengths;
- fb.Offset offset_usedElementOffsets;
- fb.Offset offset_usedElements;
- fb.Offset offset_usedNameIsQualifiedFlags;
- fb.Offset offset_usedNameKinds;
- fb.Offset offset_usedNameOffsets;
- fb.Offset offset_usedNames;
- if (!(_elementKinds == null || _elementKinds.isEmpty)) {
+ fb.Offset? offset_elementKinds;
+ fb.Offset? offset_elementNameClassMemberIds;
+ fb.Offset? offset_elementNameParameterIds;
+ fb.Offset? offset_elementNameUnitMemberIds;
+ fb.Offset? offset_elementUnits;
+ fb.Offset? offset_strings;
+ fb.Offset? offset_subtypes;
+ fb.Offset? offset_supertypes;
+ fb.Offset? offset_unitLibraryUris;
+ fb.Offset? offset_unitUnitUris;
+ fb.Offset? offset_usedElementIsQualifiedFlags;
+ fb.Offset? offset_usedElementKinds;
+ fb.Offset? offset_usedElementLengths;
+ fb.Offset? offset_usedElementOffsets;
+ fb.Offset? offset_usedElements;
+ fb.Offset? offset_usedNameIsQualifiedFlags;
+ fb.Offset? offset_usedNameKinds;
+ fb.Offset? offset_usedNameOffsets;
+ fb.Offset? offset_usedNames;
+ if (!(_elementKinds == null || _elementKinds!.isEmpty)) {
offset_elementKinds =
- fbBuilder.writeListUint8(_elementKinds.map((b) => b.index).toList());
+ fbBuilder.writeListUint8(_elementKinds!.map((b) => b.index).toList());
}
if (!(_elementNameClassMemberIds == null ||
- _elementNameClassMemberIds.isEmpty)) {
+ _elementNameClassMemberIds!.isEmpty)) {
offset_elementNameClassMemberIds =
- fbBuilder.writeListUint32(_elementNameClassMemberIds);
+ fbBuilder.writeListUint32(_elementNameClassMemberIds!);
}
if (!(_elementNameParameterIds == null ||
- _elementNameParameterIds.isEmpty)) {
+ _elementNameParameterIds!.isEmpty)) {
offset_elementNameParameterIds =
- fbBuilder.writeListUint32(_elementNameParameterIds);
+ fbBuilder.writeListUint32(_elementNameParameterIds!);
}
if (!(_elementNameUnitMemberIds == null ||
- _elementNameUnitMemberIds.isEmpty)) {
+ _elementNameUnitMemberIds!.isEmpty)) {
offset_elementNameUnitMemberIds =
- fbBuilder.writeListUint32(_elementNameUnitMemberIds);
+ fbBuilder.writeListUint32(_elementNameUnitMemberIds!);
}
- if (!(_elementUnits == null || _elementUnits.isEmpty)) {
- offset_elementUnits = fbBuilder.writeListUint32(_elementUnits);
+ if (!(_elementUnits == null || _elementUnits!.isEmpty)) {
+ offset_elementUnits = fbBuilder.writeListUint32(_elementUnits!);
}
- if (!(_strings == null || _strings.isEmpty)) {
+ if (!(_strings == null || _strings!.isEmpty)) {
offset_strings = fbBuilder
- .writeList(_strings.map((b) => fbBuilder.writeString(b)).toList());
+ .writeList(_strings!.map((b) => fbBuilder.writeString(b)).toList());
}
- if (!(_subtypes == null || _subtypes.isEmpty)) {
+ if (!(_subtypes == null || _subtypes!.isEmpty)) {
offset_subtypes = fbBuilder
- .writeList(_subtypes.map((b) => b.finish(fbBuilder)).toList());
+ .writeList(_subtypes!.map((b) => b.finish(fbBuilder)).toList());
}
- if (!(_supertypes == null || _supertypes.isEmpty)) {
- offset_supertypes = fbBuilder.writeListUint32(_supertypes);
+ if (!(_supertypes == null || _supertypes!.isEmpty)) {
+ offset_supertypes = fbBuilder.writeListUint32(_supertypes!);
}
- if (!(_unitLibraryUris == null || _unitLibraryUris.isEmpty)) {
- offset_unitLibraryUris = fbBuilder.writeListUint32(_unitLibraryUris);
+ if (!(_unitLibraryUris == null || _unitLibraryUris!.isEmpty)) {
+ offset_unitLibraryUris = fbBuilder.writeListUint32(_unitLibraryUris!);
}
- if (!(_unitUnitUris == null || _unitUnitUris.isEmpty)) {
- offset_unitUnitUris = fbBuilder.writeListUint32(_unitUnitUris);
+ if (!(_unitUnitUris == null || _unitUnitUris!.isEmpty)) {
+ offset_unitUnitUris = fbBuilder.writeListUint32(_unitUnitUris!);
}
if (!(_usedElementIsQualifiedFlags == null ||
- _usedElementIsQualifiedFlags.isEmpty)) {
+ _usedElementIsQualifiedFlags!.isEmpty)) {
offset_usedElementIsQualifiedFlags =
- fbBuilder.writeListBool(_usedElementIsQualifiedFlags);
+ fbBuilder.writeListBool(_usedElementIsQualifiedFlags!);
}
- if (!(_usedElementKinds == null || _usedElementKinds.isEmpty)) {
+ if (!(_usedElementKinds == null || _usedElementKinds!.isEmpty)) {
offset_usedElementKinds = fbBuilder
- .writeListUint8(_usedElementKinds.map((b) => b.index).toList());
+ .writeListUint8(_usedElementKinds!.map((b) => b.index).toList());
}
- if (!(_usedElementLengths == null || _usedElementLengths.isEmpty)) {
+ if (!(_usedElementLengths == null || _usedElementLengths!.isEmpty)) {
offset_usedElementLengths =
- fbBuilder.writeListUint32(_usedElementLengths);
+ fbBuilder.writeListUint32(_usedElementLengths!);
}
- if (!(_usedElementOffsets == null || _usedElementOffsets.isEmpty)) {
+ if (!(_usedElementOffsets == null || _usedElementOffsets!.isEmpty)) {
offset_usedElementOffsets =
- fbBuilder.writeListUint32(_usedElementOffsets);
+ fbBuilder.writeListUint32(_usedElementOffsets!);
}
- if (!(_usedElements == null || _usedElements.isEmpty)) {
- offset_usedElements = fbBuilder.writeListUint32(_usedElements);
+ if (!(_usedElements == null || _usedElements!.isEmpty)) {
+ offset_usedElements = fbBuilder.writeListUint32(_usedElements!);
}
if (!(_usedNameIsQualifiedFlags == null ||
- _usedNameIsQualifiedFlags.isEmpty)) {
+ _usedNameIsQualifiedFlags!.isEmpty)) {
offset_usedNameIsQualifiedFlags =
- fbBuilder.writeListBool(_usedNameIsQualifiedFlags);
+ fbBuilder.writeListBool(_usedNameIsQualifiedFlags!);
}
- if (!(_usedNameKinds == null || _usedNameKinds.isEmpty)) {
- offset_usedNameKinds =
- fbBuilder.writeListUint8(_usedNameKinds.map((b) => b.index).toList());
+ if (!(_usedNameKinds == null || _usedNameKinds!.isEmpty)) {
+ offset_usedNameKinds = fbBuilder
+ .writeListUint8(_usedNameKinds!.map((b) => b.index).toList());
}
- if (!(_usedNameOffsets == null || _usedNameOffsets.isEmpty)) {
- offset_usedNameOffsets = fbBuilder.writeListUint32(_usedNameOffsets);
+ if (!(_usedNameOffsets == null || _usedNameOffsets!.isEmpty)) {
+ offset_usedNameOffsets = fbBuilder.writeListUint32(_usedNameOffsets!);
}
- if (!(_usedNames == null || _usedNames.isEmpty)) {
- offset_usedNames = fbBuilder.writeListUint32(_usedNames);
+ if (!(_usedNames == null || _usedNames!.isEmpty)) {
+ offset_usedNames = fbBuilder.writeListUint32(_usedNames!);
}
fbBuilder.startTable();
if (offset_elementKinds != null) {
@@ -1510,168 +1517,149 @@
_AnalysisDriverUnitIndexImpl(this._bc, this._bcOffset);
- List<idl.IndexSyntheticElementKind> _elementKinds;
- List<int> _elementNameClassMemberIds;
- List<int> _elementNameParameterIds;
- List<int> _elementNameUnitMemberIds;
- List<int> _elementUnits;
- int _nullStringId;
- List<String> _strings;
- List<idl.AnalysisDriverSubtype> _subtypes;
- List<int> _supertypes;
- List<int> _unitLibraryUris;
- List<int> _unitUnitUris;
- List<bool> _usedElementIsQualifiedFlags;
- List<idl.IndexRelationKind> _usedElementKinds;
- List<int> _usedElementLengths;
- List<int> _usedElementOffsets;
- List<int> _usedElements;
- List<bool> _usedNameIsQualifiedFlags;
- List<idl.IndexRelationKind> _usedNameKinds;
- List<int> _usedNameOffsets;
- List<int> _usedNames;
+ List<idl.IndexSyntheticElementKind>? _elementKinds;
+ List<int>? _elementNameClassMemberIds;
+ List<int>? _elementNameParameterIds;
+ List<int>? _elementNameUnitMemberIds;
+ List<int>? _elementUnits;
+ int? _nullStringId;
+ List<String>? _strings;
+ List<idl.AnalysisDriverSubtype>? _subtypes;
+ List<int>? _supertypes;
+ List<int>? _unitLibraryUris;
+ List<int>? _unitUnitUris;
+ List<bool>? _usedElementIsQualifiedFlags;
+ List<idl.IndexRelationKind>? _usedElementKinds;
+ List<int>? _usedElementLengths;
+ List<int>? _usedElementOffsets;
+ List<int>? _usedElements;
+ List<bool>? _usedNameIsQualifiedFlags;
+ List<idl.IndexRelationKind>? _usedNameKinds;
+ List<int>? _usedNameOffsets;
+ List<int>? _usedNames;
@override
List<idl.IndexSyntheticElementKind> get elementKinds {
- _elementKinds ??= const fb.ListReader<idl.IndexSyntheticElementKind>(
+ return _elementKinds ??= const fb.ListReader<idl.IndexSyntheticElementKind>(
_IndexSyntheticElementKindReader())
.vTableGet(_bc, _bcOffset, 4, const <idl.IndexSyntheticElementKind>[]);
- return _elementKinds;
}
@override
List<int> get elementNameClassMemberIds {
- _elementNameClassMemberIds ??=
+ return _elementNameClassMemberIds ??=
const fb.Uint32ListReader().vTableGet(_bc, _bcOffset, 7, const <int>[]);
- return _elementNameClassMemberIds;
}
@override
List<int> get elementNameParameterIds {
- _elementNameParameterIds ??=
+ return _elementNameParameterIds ??=
const fb.Uint32ListReader().vTableGet(_bc, _bcOffset, 8, const <int>[]);
- return _elementNameParameterIds;
}
@override
List<int> get elementNameUnitMemberIds {
- _elementNameUnitMemberIds ??=
+ return _elementNameUnitMemberIds ??=
const fb.Uint32ListReader().vTableGet(_bc, _bcOffset, 6, const <int>[]);
- return _elementNameUnitMemberIds;
}
@override
List<int> get elementUnits {
- _elementUnits ??=
+ return _elementUnits ??=
const fb.Uint32ListReader().vTableGet(_bc, _bcOffset, 5, const <int>[]);
- return _elementUnits;
}
@override
int get nullStringId {
- _nullStringId ??= const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 1, 0);
- return _nullStringId;
+ return _nullStringId ??=
+ const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 1, 0);
}
@override
List<String> get strings {
- _strings ??= const fb.ListReader<String>(fb.StringReader())
+ return _strings ??= const fb.ListReader<String>(fb.StringReader())
.vTableGet(_bc, _bcOffset, 0, const <String>[]);
- return _strings;
}
@override
List<idl.AnalysisDriverSubtype> get subtypes {
- _subtypes ??= const fb.ListReader<idl.AnalysisDriverSubtype>(
+ return _subtypes ??= const fb.ListReader<idl.AnalysisDriverSubtype>(
_AnalysisDriverSubtypeReader())
.vTableGet(_bc, _bcOffset, 19, const <idl.AnalysisDriverSubtype>[]);
- return _subtypes;
}
@override
List<int> get supertypes {
- _supertypes ??= const fb.Uint32ListReader()
+ return _supertypes ??= const fb.Uint32ListReader()
.vTableGet(_bc, _bcOffset, 18, const <int>[]);
- return _supertypes;
}
@override
List<int> get unitLibraryUris {
- _unitLibraryUris ??=
+ return _unitLibraryUris ??=
const fb.Uint32ListReader().vTableGet(_bc, _bcOffset, 2, const <int>[]);
- return _unitLibraryUris;
}
@override
List<int> get unitUnitUris {
- _unitUnitUris ??=
+ return _unitUnitUris ??=
const fb.Uint32ListReader().vTableGet(_bc, _bcOffset, 3, const <int>[]);
- return _unitUnitUris;
}
@override
List<bool> get usedElementIsQualifiedFlags {
- _usedElementIsQualifiedFlags ??=
+ return _usedElementIsQualifiedFlags ??=
const fb.BoolListReader().vTableGet(_bc, _bcOffset, 13, const <bool>[]);
- return _usedElementIsQualifiedFlags;
}
@override
List<idl.IndexRelationKind> get usedElementKinds {
- _usedElementKinds ??=
+ return _usedElementKinds ??=
const fb.ListReader<idl.IndexRelationKind>(_IndexRelationKindReader())
.vTableGet(_bc, _bcOffset, 10, const <idl.IndexRelationKind>[]);
- return _usedElementKinds;
}
@override
List<int> get usedElementLengths {
- _usedElementLengths ??= const fb.Uint32ListReader()
+ return _usedElementLengths ??= const fb.Uint32ListReader()
.vTableGet(_bc, _bcOffset, 12, const <int>[]);
- return _usedElementLengths;
}
@override
List<int> get usedElementOffsets {
- _usedElementOffsets ??= const fb.Uint32ListReader()
+ return _usedElementOffsets ??= const fb.Uint32ListReader()
.vTableGet(_bc, _bcOffset, 11, const <int>[]);
- return _usedElementOffsets;
}
@override
List<int> get usedElements {
- _usedElements ??=
+ return _usedElements ??=
const fb.Uint32ListReader().vTableGet(_bc, _bcOffset, 9, const <int>[]);
- return _usedElements;
}
@override
List<bool> get usedNameIsQualifiedFlags {
- _usedNameIsQualifiedFlags ??=
+ return _usedNameIsQualifiedFlags ??=
const fb.BoolListReader().vTableGet(_bc, _bcOffset, 17, const <bool>[]);
- return _usedNameIsQualifiedFlags;
}
@override
List<idl.IndexRelationKind> get usedNameKinds {
- _usedNameKinds ??=
+ return _usedNameKinds ??=
const fb.ListReader<idl.IndexRelationKind>(_IndexRelationKindReader())
.vTableGet(_bc, _bcOffset, 15, const <idl.IndexRelationKind>[]);
- return _usedNameKinds;
}
@override
List<int> get usedNameOffsets {
- _usedNameOffsets ??= const fb.Uint32ListReader()
+ return _usedNameOffsets ??= const fb.Uint32ListReader()
.vTableGet(_bc, _bcOffset, 16, const <int>[]);
- return _usedNameOffsets;
}
@override
List<int> get usedNames {
- _usedNames ??= const fb.Uint32ListReader()
+ return _usedNames ??= const fb.Uint32ListReader()
.vTableGet(_bc, _bcOffset, 14, const <int>[]);
- return _usedNames;
}
}
@@ -1680,77 +1668,99 @@
@override
Map<String, Object> toJson() {
Map<String, Object> _result = <String, Object>{};
- if (elementKinds.isNotEmpty) {
- _result["elementKinds"] = elementKinds
+ var local_elementKinds = elementKinds;
+ if (local_elementKinds.isNotEmpty) {
+ _result["elementKinds"] = local_elementKinds
.map((_value) => _value.toString().split('.')[1])
.toList();
}
- if (elementNameClassMemberIds.isNotEmpty) {
- _result["elementNameClassMemberIds"] = elementNameClassMemberIds;
+ var local_elementNameClassMemberIds = elementNameClassMemberIds;
+ if (local_elementNameClassMemberIds.isNotEmpty) {
+ _result["elementNameClassMemberIds"] = local_elementNameClassMemberIds;
}
- if (elementNameParameterIds.isNotEmpty) {
- _result["elementNameParameterIds"] = elementNameParameterIds;
+ var local_elementNameParameterIds = elementNameParameterIds;
+ if (local_elementNameParameterIds.isNotEmpty) {
+ _result["elementNameParameterIds"] = local_elementNameParameterIds;
}
- if (elementNameUnitMemberIds.isNotEmpty) {
- _result["elementNameUnitMemberIds"] = elementNameUnitMemberIds;
+ var local_elementNameUnitMemberIds = elementNameUnitMemberIds;
+ if (local_elementNameUnitMemberIds.isNotEmpty) {
+ _result["elementNameUnitMemberIds"] = local_elementNameUnitMemberIds;
}
- if (elementUnits.isNotEmpty) {
- _result["elementUnits"] = elementUnits;
+ var local_elementUnits = elementUnits;
+ if (local_elementUnits.isNotEmpty) {
+ _result["elementUnits"] = local_elementUnits;
}
- if (nullStringId != 0) {
- _result["nullStringId"] = nullStringId;
+ var local_nullStringId = nullStringId;
+ if (local_nullStringId != 0) {
+ _result["nullStringId"] = local_nullStringId;
}
- if (strings.isNotEmpty) {
- _result["strings"] = strings;
+ var local_strings = strings;
+ if (local_strings.isNotEmpty) {
+ _result["strings"] = local_strings;
}
- if (subtypes.isNotEmpty) {
- _result["subtypes"] = subtypes.map((_value) => _value.toJson()).toList();
+ var local_subtypes = subtypes;
+ if (local_subtypes.isNotEmpty) {
+ _result["subtypes"] =
+ local_subtypes.map((_value) => _value.toJson()).toList();
}
- if (supertypes.isNotEmpty) {
- _result["supertypes"] = supertypes;
+ var local_supertypes = supertypes;
+ if (local_supertypes.isNotEmpty) {
+ _result["supertypes"] = local_supertypes;
}
- if (unitLibraryUris.isNotEmpty) {
- _result["unitLibraryUris"] = unitLibraryUris;
+ var local_unitLibraryUris = unitLibraryUris;
+ if (local_unitLibraryUris.isNotEmpty) {
+ _result["unitLibraryUris"] = local_unitLibraryUris;
}
- if (unitUnitUris.isNotEmpty) {
- _result["unitUnitUris"] = unitUnitUris;
+ var local_unitUnitUris = unitUnitUris;
+ if (local_unitUnitUris.isNotEmpty) {
+ _result["unitUnitUris"] = local_unitUnitUris;
}
- if (usedElementIsQualifiedFlags.isNotEmpty) {
- _result["usedElementIsQualifiedFlags"] = usedElementIsQualifiedFlags;
+ var local_usedElementIsQualifiedFlags = usedElementIsQualifiedFlags;
+ if (local_usedElementIsQualifiedFlags.isNotEmpty) {
+ _result["usedElementIsQualifiedFlags"] =
+ local_usedElementIsQualifiedFlags;
}
- if (usedElementKinds.isNotEmpty) {
- _result["usedElementKinds"] = usedElementKinds
+ var local_usedElementKinds = usedElementKinds;
+ if (local_usedElementKinds.isNotEmpty) {
+ _result["usedElementKinds"] = local_usedElementKinds
.map((_value) => _value.toString().split('.')[1])
.toList();
}
- if (usedElementLengths.isNotEmpty) {
- _result["usedElementLengths"] = usedElementLengths;
+ var local_usedElementLengths = usedElementLengths;
+ if (local_usedElementLengths.isNotEmpty) {
+ _result["usedElementLengths"] = local_usedElementLengths;
}
- if (usedElementOffsets.isNotEmpty) {
- _result["usedElementOffsets"] = usedElementOffsets;
+ var local_usedElementOffsets = usedElementOffsets;
+ if (local_usedElementOffsets.isNotEmpty) {
+ _result["usedElementOffsets"] = local_usedElementOffsets;
}
- if (usedElements.isNotEmpty) {
- _result["usedElements"] = usedElements;
+ var local_usedElements = usedElements;
+ if (local_usedElements.isNotEmpty) {
+ _result["usedElements"] = local_usedElements;
}
- if (usedNameIsQualifiedFlags.isNotEmpty) {
- _result["usedNameIsQualifiedFlags"] = usedNameIsQualifiedFlags;
+ var local_usedNameIsQualifiedFlags = usedNameIsQualifiedFlags;
+ if (local_usedNameIsQualifiedFlags.isNotEmpty) {
+ _result["usedNameIsQualifiedFlags"] = local_usedNameIsQualifiedFlags;
}
- if (usedNameKinds.isNotEmpty) {
- _result["usedNameKinds"] = usedNameKinds
+ var local_usedNameKinds = usedNameKinds;
+ if (local_usedNameKinds.isNotEmpty) {
+ _result["usedNameKinds"] = local_usedNameKinds
.map((_value) => _value.toString().split('.')[1])
.toList();
}
- if (usedNameOffsets.isNotEmpty) {
- _result["usedNameOffsets"] = usedNameOffsets;
+ var local_usedNameOffsets = usedNameOffsets;
+ if (local_usedNameOffsets.isNotEmpty) {
+ _result["usedNameOffsets"] = local_usedNameOffsets;
}
- if (usedNames.isNotEmpty) {
- _result["usedNames"] = usedNames;
+ var local_usedNames = usedNames;
+ if (local_usedNames.isNotEmpty) {
+ _result["usedNames"] = local_usedNames;
}
return _result;
}
@override
- Map<String, Object> toMap() => {
+ Map<String, Object?> toMap() => {
"elementKinds": elementKinds,
"elementNameClassMemberIds": elementNameClassMemberIds,
"elementNameParameterIds": elementNameParameterIds,
@@ -1780,11 +1790,11 @@
class AnalysisDriverUnlinkedUnitBuilder extends Object
with _AnalysisDriverUnlinkedUnitMixin
implements idl.AnalysisDriverUnlinkedUnit {
- List<String> _definedClassMemberNames;
- List<String> _definedTopLevelNames;
- List<String> _referencedNames;
- List<String> _subtypedNames;
- UnlinkedUnit2Builder _unit2;
+ List<String>? _definedClassMemberNames;
+ List<String>? _definedTopLevelNames;
+ List<String>? _referencedNames;
+ List<String>? _subtypedNames;
+ UnlinkedUnit2Builder? _unit2;
@override
List<String> get definedClassMemberNames =>
@@ -1821,19 +1831,19 @@
}
@override
- UnlinkedUnit2Builder get unit2 => _unit2;
+ UnlinkedUnit2Builder? get unit2 => _unit2;
/// Unlinked information for the unit.
- set unit2(UnlinkedUnit2Builder value) {
+ set unit2(UnlinkedUnit2Builder? value) {
this._unit2 = value;
}
AnalysisDriverUnlinkedUnitBuilder(
- {List<String> definedClassMemberNames,
- List<String> definedTopLevelNames,
- List<String> referencedNames,
- List<String> subtypedNames,
- UnlinkedUnit2Builder unit2})
+ {List<String>? definedClassMemberNames,
+ List<String>? definedTopLevelNames,
+ List<String>? referencedNames,
+ List<String>? subtypedNames,
+ UnlinkedUnit2Builder? unit2})
: _definedClassMemberNames = definedClassMemberNames,
_definedTopLevelNames = definedTopLevelNames,
_referencedNames = referencedNames,
@@ -1850,32 +1860,32 @@
if (this._referencedNames == null) {
signature.addInt(0);
} else {
- signature.addInt(this._referencedNames.length);
- for (var x in this._referencedNames) {
+ signature.addInt(this._referencedNames!.length);
+ for (var x in this._referencedNames!) {
signature.addString(x);
}
}
if (this._definedTopLevelNames == null) {
signature.addInt(0);
} else {
- signature.addInt(this._definedTopLevelNames.length);
- for (var x in this._definedTopLevelNames) {
+ signature.addInt(this._definedTopLevelNames!.length);
+ for (var x in this._definedTopLevelNames!) {
signature.addString(x);
}
}
if (this._definedClassMemberNames == null) {
signature.addInt(0);
} else {
- signature.addInt(this._definedClassMemberNames.length);
- for (var x in this._definedClassMemberNames) {
+ signature.addInt(this._definedClassMemberNames!.length);
+ for (var x in this._definedClassMemberNames!) {
signature.addString(x);
}
}
if (this._subtypedNames == null) {
signature.addInt(0);
} else {
- signature.addInt(this._subtypedNames.length);
- for (var x in this._subtypedNames) {
+ signature.addInt(this._subtypedNames!.length);
+ for (var x in this._subtypedNames!) {
signature.addString(x);
}
}
@@ -1889,32 +1899,32 @@
}
fb.Offset finish(fb.Builder fbBuilder) {
- fb.Offset offset_definedClassMemberNames;
- fb.Offset offset_definedTopLevelNames;
- fb.Offset offset_referencedNames;
- fb.Offset offset_subtypedNames;
- fb.Offset offset_unit2;
+ fb.Offset? offset_definedClassMemberNames;
+ fb.Offset? offset_definedTopLevelNames;
+ fb.Offset? offset_referencedNames;
+ fb.Offset? offset_subtypedNames;
+ fb.Offset? offset_unit2;
if (!(_definedClassMemberNames == null ||
- _definedClassMemberNames.isEmpty)) {
+ _definedClassMemberNames!.isEmpty)) {
offset_definedClassMemberNames = fbBuilder.writeList(
- _definedClassMemberNames
+ _definedClassMemberNames!
.map((b) => fbBuilder.writeString(b))
.toList());
}
- if (!(_definedTopLevelNames == null || _definedTopLevelNames.isEmpty)) {
+ if (!(_definedTopLevelNames == null || _definedTopLevelNames!.isEmpty)) {
offset_definedTopLevelNames = fbBuilder.writeList(
- _definedTopLevelNames.map((b) => fbBuilder.writeString(b)).toList());
+ _definedTopLevelNames!.map((b) => fbBuilder.writeString(b)).toList());
}
- if (!(_referencedNames == null || _referencedNames.isEmpty)) {
+ if (!(_referencedNames == null || _referencedNames!.isEmpty)) {
offset_referencedNames = fbBuilder.writeList(
- _referencedNames.map((b) => fbBuilder.writeString(b)).toList());
+ _referencedNames!.map((b) => fbBuilder.writeString(b)).toList());
}
- if (!(_subtypedNames == null || _subtypedNames.isEmpty)) {
+ if (!(_subtypedNames == null || _subtypedNames!.isEmpty)) {
offset_subtypedNames = fbBuilder.writeList(
- _subtypedNames.map((b) => fbBuilder.writeString(b)).toList());
+ _subtypedNames!.map((b) => fbBuilder.writeString(b)).toList());
}
if (_unit2 != null) {
- offset_unit2 = _unit2.finish(fbBuilder);
+ offset_unit2 = _unit2!.finish(fbBuilder);
}
fbBuilder.startTable();
if (offset_definedClassMemberNames != null) {
@@ -1960,44 +1970,42 @@
_AnalysisDriverUnlinkedUnitImpl(this._bc, this._bcOffset);
- List<String> _definedClassMemberNames;
- List<String> _definedTopLevelNames;
- List<String> _referencedNames;
- List<String> _subtypedNames;
- idl.UnlinkedUnit2 _unit2;
+ List<String>? _definedClassMemberNames;
+ List<String>? _definedTopLevelNames;
+ List<String>? _referencedNames;
+ List<String>? _subtypedNames;
+ idl.UnlinkedUnit2? _unit2;
@override
List<String> get definedClassMemberNames {
- _definedClassMemberNames ??= const fb.ListReader<String>(fb.StringReader())
- .vTableGet(_bc, _bcOffset, 2, const <String>[]);
- return _definedClassMemberNames;
+ return _definedClassMemberNames ??=
+ const fb.ListReader<String>(fb.StringReader())
+ .vTableGet(_bc, _bcOffset, 2, const <String>[]);
}
@override
List<String> get definedTopLevelNames {
- _definedTopLevelNames ??= const fb.ListReader<String>(fb.StringReader())
- .vTableGet(_bc, _bcOffset, 1, const <String>[]);
- return _definedTopLevelNames;
+ return _definedTopLevelNames ??=
+ const fb.ListReader<String>(fb.StringReader())
+ .vTableGet(_bc, _bcOffset, 1, const <String>[]);
}
@override
List<String> get referencedNames {
- _referencedNames ??= const fb.ListReader<String>(fb.StringReader())
+ return _referencedNames ??= const fb.ListReader<String>(fb.StringReader())
.vTableGet(_bc, _bcOffset, 0, const <String>[]);
- return _referencedNames;
}
@override
List<String> get subtypedNames {
- _subtypedNames ??= const fb.ListReader<String>(fb.StringReader())
+ return _subtypedNames ??= const fb.ListReader<String>(fb.StringReader())
.vTableGet(_bc, _bcOffset, 3, const <String>[]);
- return _subtypedNames;
}
@override
- idl.UnlinkedUnit2 get unit2 {
- _unit2 ??= const _UnlinkedUnit2Reader().vTableGet(_bc, _bcOffset, 4, null);
- return _unit2;
+ idl.UnlinkedUnit2? get unit2 {
+ return _unit2 ??=
+ const _UnlinkedUnit2Reader().vTableGetOrNull(_bc, _bcOffset, 4);
}
}
@@ -2006,26 +2014,31 @@
@override
Map<String, Object> toJson() {
Map<String, Object> _result = <String, Object>{};
- if (definedClassMemberNames.isNotEmpty) {
- _result["definedClassMemberNames"] = definedClassMemberNames;
+ var local_definedClassMemberNames = definedClassMemberNames;
+ if (local_definedClassMemberNames.isNotEmpty) {
+ _result["definedClassMemberNames"] = local_definedClassMemberNames;
}
- if (definedTopLevelNames.isNotEmpty) {
- _result["definedTopLevelNames"] = definedTopLevelNames;
+ var local_definedTopLevelNames = definedTopLevelNames;
+ if (local_definedTopLevelNames.isNotEmpty) {
+ _result["definedTopLevelNames"] = local_definedTopLevelNames;
}
- if (referencedNames.isNotEmpty) {
- _result["referencedNames"] = referencedNames;
+ var local_referencedNames = referencedNames;
+ if (local_referencedNames.isNotEmpty) {
+ _result["referencedNames"] = local_referencedNames;
}
- if (subtypedNames.isNotEmpty) {
- _result["subtypedNames"] = subtypedNames;
+ var local_subtypedNames = subtypedNames;
+ if (local_subtypedNames.isNotEmpty) {
+ _result["subtypedNames"] = local_subtypedNames;
}
- if (unit2 != null) {
- _result["unit2"] = unit2.toJson();
+ var local_unit2 = unit2;
+ if (local_unit2 != null) {
+ _result["unit2"] = local_unit2.toJson();
}
return _result;
}
@override
- Map<String, Object> toMap() => {
+ Map<String, Object?> toMap() => {
"definedClassMemberNames": definedClassMemberNames,
"definedTopLevelNames": definedTopLevelNames,
"referencedNames": referencedNames,
@@ -2040,31 +2053,31 @@
class AvailableDeclarationBuilder extends Object
with _AvailableDeclarationMixin
implements idl.AvailableDeclaration {
- List<AvailableDeclarationBuilder> _children;
- int _codeLength;
- int _codeOffset;
- String _defaultArgumentListString;
- List<int> _defaultArgumentListTextRanges;
- String _docComplete;
- String _docSummary;
- int _fieldMask;
- bool _isAbstract;
- bool _isConst;
- bool _isDeprecated;
- bool _isFinal;
- bool _isStatic;
- idl.AvailableDeclarationKind _kind;
- int _locationOffset;
- int _locationStartColumn;
- int _locationStartLine;
- String _name;
- List<String> _parameterNames;
- String _parameters;
- List<String> _parameterTypes;
- List<String> _relevanceTags;
- int _requiredParameterCount;
- String _returnType;
- String _typeParameters;
+ List<AvailableDeclarationBuilder>? _children;
+ int? _codeLength;
+ int? _codeOffset;
+ String? _defaultArgumentListString;
+ List<int>? _defaultArgumentListTextRanges;
+ String? _docComplete;
+ String? _docSummary;
+ int? _fieldMask;
+ bool? _isAbstract;
+ bool? _isConst;
+ bool? _isDeprecated;
+ bool? _isFinal;
+ bool? _isStatic;
+ idl.AvailableDeclarationKind? _kind;
+ int? _locationOffset;
+ int? _locationStartColumn;
+ int? _locationStartLine;
+ String? _name;
+ List<String>? _parameterNames;
+ String? _parameters;
+ List<String>? _parameterTypes;
+ List<String>? _relevanceTags;
+ int? _requiredParameterCount;
+ String? _returnType;
+ String? _typeParameters;
@override
List<AvailableDeclarationBuilder> get children =>
@@ -2078,7 +2091,7 @@
int get codeLength => _codeLength ??= 0;
set codeLength(int value) {
- assert(value == null || value >= 0);
+ assert(value >= 0);
this._codeLength = value;
}
@@ -2086,7 +2099,7 @@
int get codeOffset => _codeOffset ??= 0;
set codeOffset(int value) {
- assert(value == null || value >= 0);
+ assert(value >= 0);
this._codeOffset = value;
}
@@ -2102,7 +2115,7 @@
_defaultArgumentListTextRanges ??= <int>[];
set defaultArgumentListTextRanges(List<int> value) {
- assert(value == null || value.every((e) => e >= 0));
+ assert(value.every((e) => e >= 0));
this._defaultArgumentListTextRanges = value;
}
@@ -2124,7 +2137,7 @@
int get fieldMask => _fieldMask ??= 0;
set fieldMask(int value) {
- assert(value == null || value >= 0);
+ assert(value >= 0);
this._fieldMask = value;
}
@@ -2176,7 +2189,7 @@
int get locationOffset => _locationOffset ??= 0;
set locationOffset(int value) {
- assert(value == null || value >= 0);
+ assert(value >= 0);
this._locationOffset = value;
}
@@ -2184,7 +2197,7 @@
int get locationStartColumn => _locationStartColumn ??= 0;
set locationStartColumn(int value) {
- assert(value == null || value >= 0);
+ assert(value >= 0);
this._locationStartColumn = value;
}
@@ -2192,7 +2205,7 @@
int get locationStartLine => _locationStartLine ??= 0;
set locationStartLine(int value) {
- assert(value == null || value >= 0);
+ assert(value >= 0);
this._locationStartLine = value;
}
@@ -2241,7 +2254,7 @@
int get requiredParameterCount => _requiredParameterCount ??= 0;
set requiredParameterCount(int value) {
- assert(value == null || value >= 0);
+ assert(value >= 0);
this._requiredParameterCount = value;
}
@@ -2260,31 +2273,31 @@
}
AvailableDeclarationBuilder(
- {List<AvailableDeclarationBuilder> children,
- int codeLength,
- int codeOffset,
- String defaultArgumentListString,
- List<int> defaultArgumentListTextRanges,
- String docComplete,
- String docSummary,
- int fieldMask,
- bool isAbstract,
- bool isConst,
- bool isDeprecated,
- bool isFinal,
- bool isStatic,
- idl.AvailableDeclarationKind kind,
- int locationOffset,
- int locationStartColumn,
- int locationStartLine,
- String name,
- List<String> parameterNames,
- String parameters,
- List<String> parameterTypes,
- List<String> relevanceTags,
- int requiredParameterCount,
- String returnType,
- String typeParameters})
+ {List<AvailableDeclarationBuilder>? children,
+ int? codeLength,
+ int? codeOffset,
+ String? defaultArgumentListString,
+ List<int>? defaultArgumentListTextRanges,
+ String? docComplete,
+ String? docSummary,
+ int? fieldMask,
+ bool? isAbstract,
+ bool? isConst,
+ bool? isDeprecated,
+ bool? isFinal,
+ bool? isStatic,
+ idl.AvailableDeclarationKind? kind,
+ int? locationOffset,
+ int? locationStartColumn,
+ int? locationStartLine,
+ String? name,
+ List<String>? parameterNames,
+ String? parameters,
+ List<String>? parameterTypes,
+ List<String>? relevanceTags,
+ int? requiredParameterCount,
+ String? returnType,
+ String? typeParameters})
: _children = children,
_codeLength = codeLength,
_codeOffset = codeOffset,
@@ -2321,9 +2334,9 @@
if (this._children == null) {
signature.addInt(0);
} else {
- signature.addInt(this._children.length);
- for (var x in this._children) {
- x?.collectApiSignature(signature);
+ signature.addInt(this._children!.length);
+ for (var x in this._children!) {
+ x.collectApiSignature(signature);
}
}
signature.addInt(this._codeLength ?? 0);
@@ -2332,8 +2345,8 @@
if (this._defaultArgumentListTextRanges == null) {
signature.addInt(0);
} else {
- signature.addInt(this._defaultArgumentListTextRanges.length);
- for (var x in this._defaultArgumentListTextRanges) {
+ signature.addInt(this._defaultArgumentListTextRanges!.length);
+ for (var x in this._defaultArgumentListTextRanges!) {
signature.addInt(x);
}
}
@@ -2345,7 +2358,7 @@
signature.addBool(this._isDeprecated == true);
signature.addBool(this._isFinal == true);
signature.addBool(this._isStatic == true);
- signature.addInt(this._kind == null ? 0 : this._kind.index);
+ signature.addInt(this._kind == null ? 0 : this._kind!.index);
signature.addInt(this._locationOffset ?? 0);
signature.addInt(this._locationStartColumn ?? 0);
signature.addInt(this._locationStartLine ?? 0);
@@ -2353,8 +2366,8 @@
if (this._parameterNames == null) {
signature.addInt(0);
} else {
- signature.addInt(this._parameterNames.length);
- for (var x in this._parameterNames) {
+ signature.addInt(this._parameterNames!.length);
+ for (var x in this._parameterNames!) {
signature.addString(x);
}
}
@@ -2362,16 +2375,16 @@
if (this._parameterTypes == null) {
signature.addInt(0);
} else {
- signature.addInt(this._parameterTypes.length);
- for (var x in this._parameterTypes) {
+ signature.addInt(this._parameterTypes!.length);
+ for (var x in this._parameterTypes!) {
signature.addString(x);
}
}
if (this._relevanceTags == null) {
signature.addInt(0);
} else {
- signature.addInt(this._relevanceTags.length);
- for (var x in this._relevanceTags) {
+ signature.addInt(this._relevanceTags!.length);
+ for (var x in this._relevanceTags!) {
signature.addString(x);
}
}
@@ -2381,60 +2394,60 @@
}
fb.Offset finish(fb.Builder fbBuilder) {
- fb.Offset offset_children;
- fb.Offset offset_defaultArgumentListString;
- fb.Offset offset_defaultArgumentListTextRanges;
- fb.Offset offset_docComplete;
- fb.Offset offset_docSummary;
- fb.Offset offset_name;
- fb.Offset offset_parameterNames;
- fb.Offset offset_parameters;
- fb.Offset offset_parameterTypes;
- fb.Offset offset_relevanceTags;
- fb.Offset offset_returnType;
- fb.Offset offset_typeParameters;
- if (!(_children == null || _children.isEmpty)) {
+ fb.Offset? offset_children;
+ fb.Offset? offset_defaultArgumentListString;
+ fb.Offset? offset_defaultArgumentListTextRanges;
+ fb.Offset? offset_docComplete;
+ fb.Offset? offset_docSummary;
+ fb.Offset? offset_name;
+ fb.Offset? offset_parameterNames;
+ fb.Offset? offset_parameters;
+ fb.Offset? offset_parameterTypes;
+ fb.Offset? offset_relevanceTags;
+ fb.Offset? offset_returnType;
+ fb.Offset? offset_typeParameters;
+ if (!(_children == null || _children!.isEmpty)) {
offset_children = fbBuilder
- .writeList(_children.map((b) => b.finish(fbBuilder)).toList());
+ .writeList(_children!.map((b) => b.finish(fbBuilder)).toList());
}
if (_defaultArgumentListString != null) {
offset_defaultArgumentListString =
- fbBuilder.writeString(_defaultArgumentListString);
+ fbBuilder.writeString(_defaultArgumentListString!);
}
if (!(_defaultArgumentListTextRanges == null ||
- _defaultArgumentListTextRanges.isEmpty)) {
+ _defaultArgumentListTextRanges!.isEmpty)) {
offset_defaultArgumentListTextRanges =
- fbBuilder.writeListUint32(_defaultArgumentListTextRanges);
+ fbBuilder.writeListUint32(_defaultArgumentListTextRanges!);
}
if (_docComplete != null) {
- offset_docComplete = fbBuilder.writeString(_docComplete);
+ offset_docComplete = fbBuilder.writeString(_docComplete!);
}
if (_docSummary != null) {
- offset_docSummary = fbBuilder.writeString(_docSummary);
+ offset_docSummary = fbBuilder.writeString(_docSummary!);
}
if (_name != null) {
- offset_name = fbBuilder.writeString(_name);
+ offset_name = fbBuilder.writeString(_name!);
}
- if (!(_parameterNames == null || _parameterNames.isEmpty)) {
+ if (!(_parameterNames == null || _parameterNames!.isEmpty)) {
offset_parameterNames = fbBuilder.writeList(
- _parameterNames.map((b) => fbBuilder.writeString(b)).toList());
+ _parameterNames!.map((b) => fbBuilder.writeString(b)).toList());
}
if (_parameters != null) {
- offset_parameters = fbBuilder.writeString(_parameters);
+ offset_parameters = fbBuilder.writeString(_parameters!);
}
- if (!(_parameterTypes == null || _parameterTypes.isEmpty)) {
+ if (!(_parameterTypes == null || _parameterTypes!.isEmpty)) {
offset_parameterTypes = fbBuilder.writeList(
- _parameterTypes.map((b) => fbBuilder.writeString(b)).toList());
+ _parameterTypes!.map((b) => fbBuilder.writeString(b)).toList());
}
- if (!(_relevanceTags == null || _relevanceTags.isEmpty)) {
+ if (!(_relevanceTags == null || _relevanceTags!.isEmpty)) {
offset_relevanceTags = fbBuilder.writeList(
- _relevanceTags.map((b) => fbBuilder.writeString(b)).toList());
+ _relevanceTags!.map((b) => fbBuilder.writeString(b)).toList());
}
if (_returnType != null) {
- offset_returnType = fbBuilder.writeString(_returnType);
+ offset_returnType = fbBuilder.writeString(_returnType!);
}
if (_typeParameters != null) {
- offset_typeParameters = fbBuilder.writeString(_typeParameters);
+ offset_typeParameters = fbBuilder.writeString(_typeParameters!);
}
fbBuilder.startTable();
if (offset_children != null) {
@@ -2477,7 +2490,7 @@
fbBuilder.addBool(12, true);
}
if (_kind != null && _kind != idl.AvailableDeclarationKind.CLASS) {
- fbBuilder.addUint8(13, _kind.index);
+ fbBuilder.addUint8(13, _kind!.index);
}
if (_locationOffset != null && _locationOffset != 0) {
fbBuilder.addUint32(14, _locationOffset);
@@ -2533,194 +2546,180 @@
_AvailableDeclarationImpl(this._bc, this._bcOffset);
- List<idl.AvailableDeclaration> _children;
- int _codeLength;
- int _codeOffset;
- String _defaultArgumentListString;
- List<int> _defaultArgumentListTextRanges;
- String _docComplete;
- String _docSummary;
- int _fieldMask;
- bool _isAbstract;
- bool _isConst;
- bool _isDeprecated;
- bool _isFinal;
- bool _isStatic;
- idl.AvailableDeclarationKind _kind;
- int _locationOffset;
- int _locationStartColumn;
- int _locationStartLine;
- String _name;
- List<String> _parameterNames;
- String _parameters;
- List<String> _parameterTypes;
- List<String> _relevanceTags;
- int _requiredParameterCount;
- String _returnType;
- String _typeParameters;
+ List<idl.AvailableDeclaration>? _children;
+ int? _codeLength;
+ int? _codeOffset;
+ String? _defaultArgumentListString;
+ List<int>? _defaultArgumentListTextRanges;
+ String? _docComplete;
+ String? _docSummary;
+ int? _fieldMask;
+ bool? _isAbstract;
+ bool? _isConst;
+ bool? _isDeprecated;
+ bool? _isFinal;
+ bool? _isStatic;
+ idl.AvailableDeclarationKind? _kind;
+ int? _locationOffset;
+ int? _locationStartColumn;
+ int? _locationStartLine;
+ String? _name;
+ List<String>? _parameterNames;
+ String? _parameters;
+ List<String>? _parameterTypes;
+ List<String>? _relevanceTags;
+ int? _requiredParameterCount;
+ String? _returnType;
+ String? _typeParameters;
@override
List<idl.AvailableDeclaration> get children {
- _children ??= const fb.ListReader<idl.AvailableDeclaration>(
+ return _children ??= const fb.ListReader<idl.AvailableDeclaration>(
_AvailableDeclarationReader())
.vTableGet(_bc, _bcOffset, 0, const <idl.AvailableDeclaration>[]);
- return _children;
}
@override
int get codeLength {
- _codeLength ??= const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 1, 0);
- return _codeLength;
+ return _codeLength ??=
+ const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 1, 0);
}
@override
int get codeOffset {
- _codeOffset ??= const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 2, 0);
- return _codeOffset;
+ return _codeOffset ??=
+ const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 2, 0);
}
@override
String get defaultArgumentListString {
- _defaultArgumentListString ??=
+ return _defaultArgumentListString ??=
const fb.StringReader().vTableGet(_bc, _bcOffset, 3, '');
- return _defaultArgumentListString;
}
@override
List<int> get defaultArgumentListTextRanges {
- _defaultArgumentListTextRanges ??=
+ return _defaultArgumentListTextRanges ??=
const fb.Uint32ListReader().vTableGet(_bc, _bcOffset, 4, const <int>[]);
- return _defaultArgumentListTextRanges;
}
@override
String get docComplete {
- _docComplete ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 5, '');
- return _docComplete;
+ return _docComplete ??=
+ const fb.StringReader().vTableGet(_bc, _bcOffset, 5, '');
}
@override
String get docSummary {
- _docSummary ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 6, '');
- return _docSummary;
+ return _docSummary ??=
+ const fb.StringReader().vTableGet(_bc, _bcOffset, 6, '');
}
@override
int get fieldMask {
- _fieldMask ??= const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 7, 0);
- return _fieldMask;
+ return _fieldMask ??=
+ const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 7, 0);
}
@override
bool get isAbstract {
- _isAbstract ??= const fb.BoolReader().vTableGet(_bc, _bcOffset, 8, false);
- return _isAbstract;
+ return _isAbstract ??=
+ const fb.BoolReader().vTableGet(_bc, _bcOffset, 8, false);
}
@override
bool get isConst {
- _isConst ??= const fb.BoolReader().vTableGet(_bc, _bcOffset, 9, false);
- return _isConst;
+ return _isConst ??=
+ const fb.BoolReader().vTableGet(_bc, _bcOffset, 9, false);
}
@override
bool get isDeprecated {
- _isDeprecated ??=
+ return _isDeprecated ??=
const fb.BoolReader().vTableGet(_bc, _bcOffset, 10, false);
- return _isDeprecated;
}
@override
bool get isFinal {
- _isFinal ??= const fb.BoolReader().vTableGet(_bc, _bcOffset, 11, false);
- return _isFinal;
+ return _isFinal ??=
+ const fb.BoolReader().vTableGet(_bc, _bcOffset, 11, false);
}
@override
bool get isStatic {
- _isStatic ??= const fb.BoolReader().vTableGet(_bc, _bcOffset, 12, false);
- return _isStatic;
+ return _isStatic ??=
+ const fb.BoolReader().vTableGet(_bc, _bcOffset, 12, false);
}
@override
idl.AvailableDeclarationKind get kind {
- _kind ??= const _AvailableDeclarationKindReader()
+ return _kind ??= const _AvailableDeclarationKindReader()
.vTableGet(_bc, _bcOffset, 13, idl.AvailableDeclarationKind.CLASS);
- return _kind;
}
@override
int get locationOffset {
- _locationOffset ??=
+ return _locationOffset ??=
const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 14, 0);
- return _locationOffset;
}
@override
int get locationStartColumn {
- _locationStartColumn ??=
+ return _locationStartColumn ??=
const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 15, 0);
- return _locationStartColumn;
}
@override
int get locationStartLine {
- _locationStartLine ??=
+ return _locationStartLine ??=
const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 16, 0);
- return _locationStartLine;
}
@override
String get name {
- _name ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 17, '');
- return _name;
+ return _name ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 17, '');
}
@override
List<String> get parameterNames {
- _parameterNames ??= const fb.ListReader<String>(fb.StringReader())
+ return _parameterNames ??= const fb.ListReader<String>(fb.StringReader())
.vTableGet(_bc, _bcOffset, 18, const <String>[]);
- return _parameterNames;
}
@override
String get parameters {
- _parameters ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 19, '');
- return _parameters;
+ return _parameters ??=
+ const fb.StringReader().vTableGet(_bc, _bcOffset, 19, '');
}
@override
List<String> get parameterTypes {
- _parameterTypes ??= const fb.ListReader<String>(fb.StringReader())
+ return _parameterTypes ??= const fb.ListReader<String>(fb.StringReader())
.vTableGet(_bc, _bcOffset, 20, const <String>[]);
- return _parameterTypes;
}
@override
List<String> get relevanceTags {
- _relevanceTags ??= const fb.ListReader<String>(fb.StringReader())
+ return _relevanceTags ??= const fb.ListReader<String>(fb.StringReader())
.vTableGet(_bc, _bcOffset, 21, const <String>[]);
- return _relevanceTags;
}
@override
int get requiredParameterCount {
- _requiredParameterCount ??=
+ return _requiredParameterCount ??=
const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 22, 0);
- return _requiredParameterCount;
}
@override
String get returnType {
- _returnType ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 23, '');
- return _returnType;
+ return _returnType ??=
+ const fb.StringReader().vTableGet(_bc, _bcOffset, 23, '');
}
@override
String get typeParameters {
- _typeParameters ??=
+ return _typeParameters ??=
const fb.StringReader().vTableGet(_bc, _bcOffset, 24, '');
- return _typeParameters;
}
}
@@ -2728,86 +2727,113 @@
@override
Map<String, Object> toJson() {
Map<String, Object> _result = <String, Object>{};
- if (children.isNotEmpty) {
- _result["children"] = children.map((_value) => _value.toJson()).toList();
+ var local_children = children;
+ if (local_children.isNotEmpty) {
+ _result["children"] =
+ local_children.map((_value) => _value.toJson()).toList();
}
- if (codeLength != 0) {
- _result["codeLength"] = codeLength;
+ var local_codeLength = codeLength;
+ if (local_codeLength != 0) {
+ _result["codeLength"] = local_codeLength;
}
- if (codeOffset != 0) {
- _result["codeOffset"] = codeOffset;
+ var local_codeOffset = codeOffset;
+ if (local_codeOffset != 0) {
+ _result["codeOffset"] = local_codeOffset;
}
- if (defaultArgumentListString != '') {
- _result["defaultArgumentListString"] = defaultArgumentListString;
+ var local_defaultArgumentListString = defaultArgumentListString;
+ if (local_defaultArgumentListString != '') {
+ _result["defaultArgumentListString"] = local_defaultArgumentListString;
}
- if (defaultArgumentListTextRanges.isNotEmpty) {
- _result["defaultArgumentListTextRanges"] = defaultArgumentListTextRanges;
+ var local_defaultArgumentListTextRanges = defaultArgumentListTextRanges;
+ if (local_defaultArgumentListTextRanges.isNotEmpty) {
+ _result["defaultArgumentListTextRanges"] =
+ local_defaultArgumentListTextRanges;
}
- if (docComplete != '') {
- _result["docComplete"] = docComplete;
+ var local_docComplete = docComplete;
+ if (local_docComplete != '') {
+ _result["docComplete"] = local_docComplete;
}
- if (docSummary != '') {
- _result["docSummary"] = docSummary;
+ var local_docSummary = docSummary;
+ if (local_docSummary != '') {
+ _result["docSummary"] = local_docSummary;
}
- if (fieldMask != 0) {
- _result["fieldMask"] = fieldMask;
+ var local_fieldMask = fieldMask;
+ if (local_fieldMask != 0) {
+ _result["fieldMask"] = local_fieldMask;
}
- if (isAbstract != false) {
- _result["isAbstract"] = isAbstract;
+ var local_isAbstract = isAbstract;
+ if (local_isAbstract != false) {
+ _result["isAbstract"] = local_isAbstract;
}
- if (isConst != false) {
- _result["isConst"] = isConst;
+ var local_isConst = isConst;
+ if (local_isConst != false) {
+ _result["isConst"] = local_isConst;
}
- if (isDeprecated != false) {
- _result["isDeprecated"] = isDeprecated;
+ var local_isDeprecated = isDeprecated;
+ if (local_isDeprecated != false) {
+ _result["isDeprecated"] = local_isDeprecated;
}
- if (isFinal != false) {
- _result["isFinal"] = isFinal;
+ var local_isFinal = isFinal;
+ if (local_isFinal != false) {
+ _result["isFinal"] = local_isFinal;
}
- if (isStatic != false) {
- _result["isStatic"] = isStatic;
+ var local_isStatic = isStatic;
+ if (local_isStatic != false) {
+ _result["isStatic"] = local_isStatic;
}
- if (kind != idl.AvailableDeclarationKind.CLASS) {
- _result["kind"] = kind.toString().split('.')[1];
+ var local_kind = kind;
+ if (local_kind != idl.AvailableDeclarationKind.CLASS) {
+ _result["kind"] = local_kind.toString().split('.')[1];
}
- if (locationOffset != 0) {
- _result["locationOffset"] = locationOffset;
+ var local_locationOffset = locationOffset;
+ if (local_locationOffset != 0) {
+ _result["locationOffset"] = local_locationOffset;
}
- if (locationStartColumn != 0) {
- _result["locationStartColumn"] = locationStartColumn;
+ var local_locationStartColumn = locationStartColumn;
+ if (local_locationStartColumn != 0) {
+ _result["locationStartColumn"] = local_locationStartColumn;
}
- if (locationStartLine != 0) {
- _result["locationStartLine"] = locationStartLine;
+ var local_locationStartLine = locationStartLine;
+ if (local_locationStartLine != 0) {
+ _result["locationStartLine"] = local_locationStartLine;
}
- if (name != '') {
- _result["name"] = name;
+ var local_name = name;
+ if (local_name != '') {
+ _result["name"] = local_name;
}
- if (parameterNames.isNotEmpty) {
- _result["parameterNames"] = parameterNames;
+ var local_parameterNames = parameterNames;
+ if (local_parameterNames.isNotEmpty) {
+ _result["parameterNames"] = local_parameterNames;
}
- if (parameters != '') {
- _result["parameters"] = parameters;
+ var local_parameters = parameters;
+ if (local_parameters != '') {
+ _result["parameters"] = local_parameters;
}
- if (parameterTypes.isNotEmpty) {
- _result["parameterTypes"] = parameterTypes;
+ var local_parameterTypes = parameterTypes;
+ if (local_parameterTypes.isNotEmpty) {
+ _result["parameterTypes"] = local_parameterTypes;
}
- if (relevanceTags.isNotEmpty) {
- _result["relevanceTags"] = relevanceTags;
+ var local_relevanceTags = relevanceTags;
+ if (local_relevanceTags.isNotEmpty) {
+ _result["relevanceTags"] = local_relevanceTags;
}
- if (requiredParameterCount != 0) {
- _result["requiredParameterCount"] = requiredParameterCount;
+ var local_requiredParameterCount = requiredParameterCount;
+ if (local_requiredParameterCount != 0) {
+ _result["requiredParameterCount"] = local_requiredParameterCount;
}
- if (returnType != '') {
- _result["returnType"] = returnType;
+ var local_returnType = returnType;
+ if (local_returnType != '') {
+ _result["returnType"] = local_returnType;
}
- if (typeParameters != '') {
- _result["typeParameters"] = typeParameters;
+ var local_typeParameters = typeParameters;
+ if (local_typeParameters != '') {
+ _result["typeParameters"] = local_typeParameters;
}
return _result;
}
@override
- Map<String, Object> toMap() => {
+ Map<String, Object?> toMap() => {
"children": children,
"codeLength": codeLength,
"codeOffset": codeOffset,
@@ -2842,13 +2868,13 @@
class AvailableFileBuilder extends Object
with _AvailableFileMixin
implements idl.AvailableFile {
- List<AvailableDeclarationBuilder> _declarations;
- DirectiveInfoBuilder _directiveInfo;
- List<AvailableFileExportBuilder> _exports;
- bool _isLibrary;
- bool _isLibraryDeprecated;
- List<int> _lineStarts;
- List<String> _parts;
+ List<AvailableDeclarationBuilder>? _declarations;
+ DirectiveInfoBuilder? _directiveInfo;
+ List<AvailableFileExportBuilder>? _exports;
+ bool? _isLibrary;
+ bool? _isLibraryDeprecated;
+ List<int>? _lineStarts;
+ List<String>? _parts;
@override
List<AvailableDeclarationBuilder> get declarations =>
@@ -2860,10 +2886,10 @@
}
@override
- DirectiveInfoBuilder get directiveInfo => _directiveInfo;
+ DirectiveInfoBuilder? get directiveInfo => _directiveInfo;
/// The Dartdoc directives in the file.
- set directiveInfo(DirectiveInfoBuilder value) {
+ set directiveInfo(DirectiveInfoBuilder? value) {
this._directiveInfo = value;
}
@@ -2897,7 +2923,7 @@
/// Offsets of the first character of each line in the source code.
set lineStarts(List<int> value) {
- assert(value == null || value.every((e) => e >= 0));
+ assert(value.every((e) => e >= 0));
this._lineStarts = value;
}
@@ -2910,13 +2936,13 @@
}
AvailableFileBuilder(
- {List<AvailableDeclarationBuilder> declarations,
- DirectiveInfoBuilder directiveInfo,
- List<AvailableFileExportBuilder> exports,
- bool isLibrary,
- bool isLibraryDeprecated,
- List<int> lineStarts,
- List<String> parts})
+ {List<AvailableDeclarationBuilder>? declarations,
+ DirectiveInfoBuilder? directiveInfo,
+ List<AvailableFileExportBuilder>? exports,
+ bool? isLibrary,
+ bool? isLibraryDeprecated,
+ List<int>? lineStarts,
+ List<String>? parts})
: _declarations = declarations,
_directiveInfo = directiveInfo,
_exports = exports,
@@ -2938,9 +2964,9 @@
if (this._declarations == null) {
signature.addInt(0);
} else {
- signature.addInt(this._declarations.length);
- for (var x in this._declarations) {
- x?.collectApiSignature(signature);
+ signature.addInt(this._declarations!.length);
+ for (var x in this._declarations!) {
+ x.collectApiSignature(signature);
}
}
signature.addBool(this._directiveInfo != null);
@@ -2948,9 +2974,9 @@
if (this._exports == null) {
signature.addInt(0);
} else {
- signature.addInt(this._exports.length);
- for (var x in this._exports) {
- x?.collectApiSignature(signature);
+ signature.addInt(this._exports!.length);
+ for (var x in this._exports!) {
+ x.collectApiSignature(signature);
}
}
signature.addBool(this._isLibrary == true);
@@ -2958,8 +2984,8 @@
if (this._parts == null) {
signature.addInt(0);
} else {
- signature.addInt(this._parts.length);
- for (var x in this._parts) {
+ signature.addInt(this._parts!.length);
+ for (var x in this._parts!) {
signature.addString(x);
}
}
@@ -2971,28 +2997,28 @@
}
fb.Offset finish(fb.Builder fbBuilder) {
- fb.Offset offset_declarations;
- fb.Offset offset_directiveInfo;
- fb.Offset offset_exports;
- fb.Offset offset_lineStarts;
- fb.Offset offset_parts;
- if (!(_declarations == null || _declarations.isEmpty)) {
+ fb.Offset? offset_declarations;
+ fb.Offset? offset_directiveInfo;
+ fb.Offset? offset_exports;
+ fb.Offset? offset_lineStarts;
+ fb.Offset? offset_parts;
+ if (!(_declarations == null || _declarations!.isEmpty)) {
offset_declarations = fbBuilder
- .writeList(_declarations.map((b) => b.finish(fbBuilder)).toList());
+ .writeList(_declarations!.map((b) => b.finish(fbBuilder)).toList());
}
if (_directiveInfo != null) {
- offset_directiveInfo = _directiveInfo.finish(fbBuilder);
+ offset_directiveInfo = _directiveInfo!.finish(fbBuilder);
}
- if (!(_exports == null || _exports.isEmpty)) {
+ if (!(_exports == null || _exports!.isEmpty)) {
offset_exports = fbBuilder
- .writeList(_exports.map((b) => b.finish(fbBuilder)).toList());
+ .writeList(_exports!.map((b) => b.finish(fbBuilder)).toList());
}
- if (!(_lineStarts == null || _lineStarts.isEmpty)) {
- offset_lineStarts = fbBuilder.writeListUint32(_lineStarts);
+ if (!(_lineStarts == null || _lineStarts!.isEmpty)) {
+ offset_lineStarts = fbBuilder.writeListUint32(_lineStarts!);
}
- if (!(_parts == null || _parts.isEmpty)) {
+ if (!(_parts == null || _parts!.isEmpty)) {
offset_parts = fbBuilder
- .writeList(_parts.map((b) => fbBuilder.writeString(b)).toList());
+ .writeList(_parts!.map((b) => fbBuilder.writeString(b)).toList());
}
fbBuilder.startTable();
if (offset_declarations != null) {
@@ -3041,62 +3067,56 @@
_AvailableFileImpl(this._bc, this._bcOffset);
- List<idl.AvailableDeclaration> _declarations;
- idl.DirectiveInfo _directiveInfo;
- List<idl.AvailableFileExport> _exports;
- bool _isLibrary;
- bool _isLibraryDeprecated;
- List<int> _lineStarts;
- List<String> _parts;
+ List<idl.AvailableDeclaration>? _declarations;
+ idl.DirectiveInfo? _directiveInfo;
+ List<idl.AvailableFileExport>? _exports;
+ bool? _isLibrary;
+ bool? _isLibraryDeprecated;
+ List<int>? _lineStarts;
+ List<String>? _parts;
@override
List<idl.AvailableDeclaration> get declarations {
- _declarations ??= const fb.ListReader<idl.AvailableDeclaration>(
+ return _declarations ??= const fb.ListReader<idl.AvailableDeclaration>(
_AvailableDeclarationReader())
.vTableGet(_bc, _bcOffset, 0, const <idl.AvailableDeclaration>[]);
- return _declarations;
}
@override
- idl.DirectiveInfo get directiveInfo {
- _directiveInfo ??=
- const _DirectiveInfoReader().vTableGet(_bc, _bcOffset, 1, null);
- return _directiveInfo;
+ idl.DirectiveInfo? get directiveInfo {
+ return _directiveInfo ??=
+ const _DirectiveInfoReader().vTableGetOrNull(_bc, _bcOffset, 1);
}
@override
List<idl.AvailableFileExport> get exports {
- _exports ??= const fb.ListReader<idl.AvailableFileExport>(
+ return _exports ??= const fb.ListReader<idl.AvailableFileExport>(
_AvailableFileExportReader())
.vTableGet(_bc, _bcOffset, 2, const <idl.AvailableFileExport>[]);
- return _exports;
}
@override
bool get isLibrary {
- _isLibrary ??= const fb.BoolReader().vTableGet(_bc, _bcOffset, 3, false);
- return _isLibrary;
+ return _isLibrary ??=
+ const fb.BoolReader().vTableGet(_bc, _bcOffset, 3, false);
}
@override
bool get isLibraryDeprecated {
- _isLibraryDeprecated ??=
+ return _isLibraryDeprecated ??=
const fb.BoolReader().vTableGet(_bc, _bcOffset, 4, false);
- return _isLibraryDeprecated;
}
@override
List<int> get lineStarts {
- _lineStarts ??=
+ return _lineStarts ??=
const fb.Uint32ListReader().vTableGet(_bc, _bcOffset, 5, const <int>[]);
- return _lineStarts;
}
@override
List<String> get parts {
- _parts ??= const fb.ListReader<String>(fb.StringReader())
+ return _parts ??= const fb.ListReader<String>(fb.StringReader())
.vTableGet(_bc, _bcOffset, 6, const <String>[]);
- return _parts;
}
}
@@ -3104,33 +3124,41 @@
@override
Map<String, Object> toJson() {
Map<String, Object> _result = <String, Object>{};
- if (declarations.isNotEmpty) {
+ var local_declarations = declarations;
+ if (local_declarations.isNotEmpty) {
_result["declarations"] =
- declarations.map((_value) => _value.toJson()).toList();
+ local_declarations.map((_value) => _value.toJson()).toList();
}
- if (directiveInfo != null) {
- _result["directiveInfo"] = directiveInfo.toJson();
+ var local_directiveInfo = directiveInfo;
+ if (local_directiveInfo != null) {
+ _result["directiveInfo"] = local_directiveInfo.toJson();
}
- if (exports.isNotEmpty) {
- _result["exports"] = exports.map((_value) => _value.toJson()).toList();
+ var local_exports = exports;
+ if (local_exports.isNotEmpty) {
+ _result["exports"] =
+ local_exports.map((_value) => _value.toJson()).toList();
}
- if (isLibrary != false) {
- _result["isLibrary"] = isLibrary;
+ var local_isLibrary = isLibrary;
+ if (local_isLibrary != false) {
+ _result["isLibrary"] = local_isLibrary;
}
- if (isLibraryDeprecated != false) {
- _result["isLibraryDeprecated"] = isLibraryDeprecated;
+ var local_isLibraryDeprecated = isLibraryDeprecated;
+ if (local_isLibraryDeprecated != false) {
+ _result["isLibraryDeprecated"] = local_isLibraryDeprecated;
}
- if (lineStarts.isNotEmpty) {
- _result["lineStarts"] = lineStarts;
+ var local_lineStarts = lineStarts;
+ if (local_lineStarts.isNotEmpty) {
+ _result["lineStarts"] = local_lineStarts;
}
- if (parts.isNotEmpty) {
- _result["parts"] = parts;
+ var local_parts = parts;
+ if (local_parts.isNotEmpty) {
+ _result["parts"] = local_parts;
}
return _result;
}
@override
- Map<String, Object> toMap() => {
+ Map<String, Object?> toMap() => {
"declarations": declarations,
"directiveInfo": directiveInfo,
"exports": exports,
@@ -3147,8 +3175,8 @@
class AvailableFileExportBuilder extends Object
with _AvailableFileExportMixin
implements idl.AvailableFileExport {
- List<AvailableFileExportCombinatorBuilder> _combinators;
- String _uri;
+ List<AvailableFileExportCombinatorBuilder>? _combinators;
+ String? _uri;
@override
List<AvailableFileExportCombinatorBuilder> get combinators =>
@@ -3168,7 +3196,7 @@
}
AvailableFileExportBuilder(
- {List<AvailableFileExportCombinatorBuilder> combinators, String uri})
+ {List<AvailableFileExportCombinatorBuilder>? combinators, String? uri})
: _combinators = combinators,
_uri = uri;
@@ -3183,22 +3211,22 @@
if (this._combinators == null) {
signature.addInt(0);
} else {
- signature.addInt(this._combinators.length);
- for (var x in this._combinators) {
- x?.collectApiSignature(signature);
+ signature.addInt(this._combinators!.length);
+ for (var x in this._combinators!) {
+ x.collectApiSignature(signature);
}
}
}
fb.Offset finish(fb.Builder fbBuilder) {
- fb.Offset offset_combinators;
- fb.Offset offset_uri;
- if (!(_combinators == null || _combinators.isEmpty)) {
+ fb.Offset? offset_combinators;
+ fb.Offset? offset_uri;
+ if (!(_combinators == null || _combinators!.isEmpty)) {
offset_combinators = fbBuilder
- .writeList(_combinators.map((b) => b.finish(fbBuilder)).toList());
+ .writeList(_combinators!.map((b) => b.finish(fbBuilder)).toList());
}
if (_uri != null) {
- offset_uri = fbBuilder.writeString(_uri);
+ offset_uri = fbBuilder.writeString(_uri!);
}
fbBuilder.startTable();
if (offset_combinators != null) {
@@ -3228,22 +3256,21 @@
_AvailableFileExportImpl(this._bc, this._bcOffset);
- List<idl.AvailableFileExportCombinator> _combinators;
- String _uri;
+ List<idl.AvailableFileExportCombinator>? _combinators;
+ String? _uri;
@override
List<idl.AvailableFileExportCombinator> get combinators {
- _combinators ??= const fb.ListReader<idl.AvailableFileExportCombinator>(
- _AvailableFileExportCombinatorReader())
- .vTableGet(
- _bc, _bcOffset, 1, const <idl.AvailableFileExportCombinator>[]);
- return _combinators;
+ return _combinators ??=
+ const fb.ListReader<idl.AvailableFileExportCombinator>(
+ _AvailableFileExportCombinatorReader())
+ .vTableGet(
+ _bc, _bcOffset, 1, const <idl.AvailableFileExportCombinator>[]);
}
@override
String get uri {
- _uri ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 0, '');
- return _uri;
+ return _uri ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 0, '');
}
}
@@ -3251,18 +3278,20 @@
@override
Map<String, Object> toJson() {
Map<String, Object> _result = <String, Object>{};
- if (combinators.isNotEmpty) {
+ var local_combinators = combinators;
+ if (local_combinators.isNotEmpty) {
_result["combinators"] =
- combinators.map((_value) => _value.toJson()).toList();
+ local_combinators.map((_value) => _value.toJson()).toList();
}
- if (uri != '') {
- _result["uri"] = uri;
+ var local_uri = uri;
+ if (local_uri != '') {
+ _result["uri"] = local_uri;
}
return _result;
}
@override
- Map<String, Object> toMap() => {
+ Map<String, Object?> toMap() => {
"combinators": combinators,
"uri": uri,
};
@@ -3274,8 +3303,8 @@
class AvailableFileExportCombinatorBuilder extends Object
with _AvailableFileExportCombinatorMixin
implements idl.AvailableFileExportCombinator {
- List<String> _hides;
- List<String> _shows;
+ List<String>? _hides;
+ List<String>? _shows;
@override
List<String> get hides => _hides ??= <String>[];
@@ -3293,7 +3322,8 @@
this._shows = value;
}
- AvailableFileExportCombinatorBuilder({List<String> hides, List<String> shows})
+ AvailableFileExportCombinatorBuilder(
+ {List<String>? hides, List<String>? shows})
: _hides = hides,
_shows = shows;
@@ -3305,31 +3335,31 @@
if (this._shows == null) {
signature.addInt(0);
} else {
- signature.addInt(this._shows.length);
- for (var x in this._shows) {
+ signature.addInt(this._shows!.length);
+ for (var x in this._shows!) {
signature.addString(x);
}
}
if (this._hides == null) {
signature.addInt(0);
} else {
- signature.addInt(this._hides.length);
- for (var x in this._hides) {
+ signature.addInt(this._hides!.length);
+ for (var x in this._hides!) {
signature.addString(x);
}
}
}
fb.Offset finish(fb.Builder fbBuilder) {
- fb.Offset offset_hides;
- fb.Offset offset_shows;
- if (!(_hides == null || _hides.isEmpty)) {
+ fb.Offset? offset_hides;
+ fb.Offset? offset_shows;
+ if (!(_hides == null || _hides!.isEmpty)) {
offset_hides = fbBuilder
- .writeList(_hides.map((b) => fbBuilder.writeString(b)).toList());
+ .writeList(_hides!.map((b) => fbBuilder.writeString(b)).toList());
}
- if (!(_shows == null || _shows.isEmpty)) {
+ if (!(_shows == null || _shows!.isEmpty)) {
offset_shows = fbBuilder
- .writeList(_shows.map((b) => fbBuilder.writeString(b)).toList());
+ .writeList(_shows!.map((b) => fbBuilder.writeString(b)).toList());
}
fbBuilder.startTable();
if (offset_hides != null) {
@@ -3360,21 +3390,19 @@
_AvailableFileExportCombinatorImpl(this._bc, this._bcOffset);
- List<String> _hides;
- List<String> _shows;
+ List<String>? _hides;
+ List<String>? _shows;
@override
List<String> get hides {
- _hides ??= const fb.ListReader<String>(fb.StringReader())
+ return _hides ??= const fb.ListReader<String>(fb.StringReader())
.vTableGet(_bc, _bcOffset, 1, const <String>[]);
- return _hides;
}
@override
List<String> get shows {
- _shows ??= const fb.ListReader<String>(fb.StringReader())
+ return _shows ??= const fb.ListReader<String>(fb.StringReader())
.vTableGet(_bc, _bcOffset, 0, const <String>[]);
- return _shows;
}
}
@@ -3383,17 +3411,19 @@
@override
Map<String, Object> toJson() {
Map<String, Object> _result = <String, Object>{};
- if (hides.isNotEmpty) {
- _result["hides"] = hides;
+ var local_hides = hides;
+ if (local_hides.isNotEmpty) {
+ _result["hides"] = local_hides;
}
- if (shows.isNotEmpty) {
- _result["shows"] = shows;
+ var local_shows = shows;
+ if (local_shows.isNotEmpty) {
+ _result["shows"] = local_shows;
}
return _result;
}
@override
- Map<String, Object> toMap() => {
+ Map<String, Object?> toMap() => {
"hides": hides,
"shows": shows,
};
@@ -3405,8 +3435,8 @@
class CiderUnitErrorsBuilder extends Object
with _CiderUnitErrorsMixin
implements idl.CiderUnitErrors {
- List<AnalysisDriverUnitErrorBuilder> _errors;
- List<int> _signature;
+ List<AnalysisDriverUnitErrorBuilder>? _errors;
+ List<int>? _signature;
@override
List<AnalysisDriverUnitErrorBuilder> get errors =>
@@ -3421,12 +3451,12 @@
/// The hash signature of this data.
set signature(List<int> value) {
- assert(value == null || value.every((e) => e >= 0));
+ assert(value.every((e) => e >= 0));
this._signature = value;
}
CiderUnitErrorsBuilder(
- {List<AnalysisDriverUnitErrorBuilder> errors, List<int> signature})
+ {List<AnalysisDriverUnitErrorBuilder>? errors, List<int>? signature})
: _errors = errors,
_signature = signature;
@@ -3440,17 +3470,17 @@
if (this._signature == null) {
signature.addInt(0);
} else {
- signature.addInt(this._signature.length);
- for (var x in this._signature) {
+ signature.addInt(this._signature!.length);
+ for (var x in this._signature!) {
signature.addInt(x);
}
}
if (this._errors == null) {
signature.addInt(0);
} else {
- signature.addInt(this._errors.length);
- for (var x in this._errors) {
- x?.collectApiSignature(signature);
+ signature.addInt(this._errors!.length);
+ for (var x in this._errors!) {
+ x.collectApiSignature(signature);
}
}
}
@@ -3461,14 +3491,14 @@
}
fb.Offset finish(fb.Builder fbBuilder) {
- fb.Offset offset_errors;
- fb.Offset offset_signature;
- if (!(_errors == null || _errors.isEmpty)) {
- offset_errors =
- fbBuilder.writeList(_errors.map((b) => b.finish(fbBuilder)).toList());
+ fb.Offset? offset_errors;
+ fb.Offset? offset_signature;
+ if (!(_errors == null || _errors!.isEmpty)) {
+ offset_errors = fbBuilder
+ .writeList(_errors!.map((b) => b.finish(fbBuilder)).toList());
}
- if (!(_signature == null || _signature.isEmpty)) {
- offset_signature = fbBuilder.writeListUint32(_signature);
+ if (!(_signature == null || _signature!.isEmpty)) {
+ offset_signature = fbBuilder.writeListUint32(_signature!);
}
fbBuilder.startTable();
if (offset_errors != null) {
@@ -3502,22 +3532,20 @@
_CiderUnitErrorsImpl(this._bc, this._bcOffset);
- List<idl.AnalysisDriverUnitError> _errors;
- List<int> _signature;
+ List<idl.AnalysisDriverUnitError>? _errors;
+ List<int>? _signature;
@override
List<idl.AnalysisDriverUnitError> get errors {
- _errors ??= const fb.ListReader<idl.AnalysisDriverUnitError>(
+ return _errors ??= const fb.ListReader<idl.AnalysisDriverUnitError>(
_AnalysisDriverUnitErrorReader())
.vTableGet(_bc, _bcOffset, 1, const <idl.AnalysisDriverUnitError>[]);
- return _errors;
}
@override
List<int> get signature {
- _signature ??=
+ return _signature ??=
const fb.Uint32ListReader().vTableGet(_bc, _bcOffset, 0, const <int>[]);
- return _signature;
}
}
@@ -3525,17 +3553,20 @@
@override
Map<String, Object> toJson() {
Map<String, Object> _result = <String, Object>{};
- if (errors.isNotEmpty) {
- _result["errors"] = errors.map((_value) => _value.toJson()).toList();
+ var local_errors = errors;
+ if (local_errors.isNotEmpty) {
+ _result["errors"] =
+ local_errors.map((_value) => _value.toJson()).toList();
}
- if (signature.isNotEmpty) {
- _result["signature"] = signature;
+ var local_signature = signature;
+ if (local_signature.isNotEmpty) {
+ _result["signature"] = local_signature;
}
return _result;
}
@override
- Map<String, Object> toMap() => {
+ Map<String, Object?> toMap() => {
"errors": errors,
"signature": signature,
};
@@ -3547,28 +3578,28 @@
class CiderUnlinkedUnitBuilder extends Object
with _CiderUnlinkedUnitMixin
implements idl.CiderUnlinkedUnit {
- List<int> _contentDigest;
- UnlinkedUnit2Builder _unlinkedUnit;
+ List<int>? _contentDigest;
+ UnlinkedUnit2Builder? _unlinkedUnit;
@override
List<int> get contentDigest => _contentDigest ??= <int>[];
/// The hash signature of the contents of the file.
set contentDigest(List<int> value) {
- assert(value == null || value.every((e) => e >= 0));
+ assert(value.every((e) => e >= 0));
this._contentDigest = value;
}
@override
- UnlinkedUnit2Builder get unlinkedUnit => _unlinkedUnit;
+ UnlinkedUnit2Builder? get unlinkedUnit => _unlinkedUnit;
/// Unlinked summary of the compilation unit.
- set unlinkedUnit(UnlinkedUnit2Builder value) {
+ set unlinkedUnit(UnlinkedUnit2Builder? value) {
this._unlinkedUnit = value;
}
CiderUnlinkedUnitBuilder(
- {List<int> contentDigest, UnlinkedUnit2Builder unlinkedUnit})
+ {List<int>? contentDigest, UnlinkedUnit2Builder? unlinkedUnit})
: _contentDigest = contentDigest,
_unlinkedUnit = unlinkedUnit;
@@ -3582,8 +3613,8 @@
if (this._contentDigest == null) {
signature.addInt(0);
} else {
- signature.addInt(this._contentDigest.length);
- for (var x in this._contentDigest) {
+ signature.addInt(this._contentDigest!.length);
+ for (var x in this._contentDigest!) {
signature.addInt(x);
}
}
@@ -3597,13 +3628,13 @@
}
fb.Offset finish(fb.Builder fbBuilder) {
- fb.Offset offset_contentDigest;
- fb.Offset offset_unlinkedUnit;
- if (!(_contentDigest == null || _contentDigest.isEmpty)) {
- offset_contentDigest = fbBuilder.writeListUint32(_contentDigest);
+ fb.Offset? offset_contentDigest;
+ fb.Offset? offset_unlinkedUnit;
+ if (!(_contentDigest == null || _contentDigest!.isEmpty)) {
+ offset_contentDigest = fbBuilder.writeListUint32(_contentDigest!);
}
if (_unlinkedUnit != null) {
- offset_unlinkedUnit = _unlinkedUnit.finish(fbBuilder);
+ offset_unlinkedUnit = _unlinkedUnit!.finish(fbBuilder);
}
fbBuilder.startTable();
if (offset_contentDigest != null) {
@@ -3637,21 +3668,19 @@
_CiderUnlinkedUnitImpl(this._bc, this._bcOffset);
- List<int> _contentDigest;
- idl.UnlinkedUnit2 _unlinkedUnit;
+ List<int>? _contentDigest;
+ idl.UnlinkedUnit2? _unlinkedUnit;
@override
List<int> get contentDigest {
- _contentDigest ??=
+ return _contentDigest ??=
const fb.Uint32ListReader().vTableGet(_bc, _bcOffset, 0, const <int>[]);
- return _contentDigest;
}
@override
- idl.UnlinkedUnit2 get unlinkedUnit {
- _unlinkedUnit ??=
- const _UnlinkedUnit2Reader().vTableGet(_bc, _bcOffset, 1, null);
- return _unlinkedUnit;
+ idl.UnlinkedUnit2? get unlinkedUnit {
+ return _unlinkedUnit ??=
+ const _UnlinkedUnit2Reader().vTableGetOrNull(_bc, _bcOffset, 1);
}
}
@@ -3659,17 +3688,19 @@
@override
Map<String, Object> toJson() {
Map<String, Object> _result = <String, Object>{};
- if (contentDigest.isNotEmpty) {
- _result["contentDigest"] = contentDigest;
+ var local_contentDigest = contentDigest;
+ if (local_contentDigest.isNotEmpty) {
+ _result["contentDigest"] = local_contentDigest;
}
- if (unlinkedUnit != null) {
- _result["unlinkedUnit"] = unlinkedUnit.toJson();
+ var local_unlinkedUnit = unlinkedUnit;
+ if (local_unlinkedUnit != null) {
+ _result["unlinkedUnit"] = local_unlinkedUnit.toJson();
}
return _result;
}
@override
- Map<String, Object> toMap() => {
+ Map<String, Object?> toMap() => {
"contentDigest": contentDigest,
"unlinkedUnit": unlinkedUnit,
};
@@ -3681,10 +3712,10 @@
class DiagnosticMessageBuilder extends Object
with _DiagnosticMessageMixin
implements idl.DiagnosticMessage {
- String _filePath;
- int _length;
- String _message;
- int _offset;
+ String? _filePath;
+ int? _length;
+ String? _message;
+ int? _offset;
@override
String get filePath => _filePath ??= '';
@@ -3699,7 +3730,7 @@
/// The length of the source range associated with this message.
set length(int value) {
- assert(value == null || value >= 0);
+ assert(value >= 0);
this._length = value;
}
@@ -3717,12 +3748,12 @@
/// The zero-based offset from the start of the file to the beginning of the
/// source range associated with this message.
set offset(int value) {
- assert(value == null || value >= 0);
+ assert(value >= 0);
this._offset = value;
}
DiagnosticMessageBuilder(
- {String filePath, int length, String message, int offset})
+ {String? filePath, int? length, String? message, int? offset})
: _filePath = filePath,
_length = length,
_message = message,
@@ -3740,13 +3771,13 @@
}
fb.Offset finish(fb.Builder fbBuilder) {
- fb.Offset offset_filePath;
- fb.Offset offset_message;
+ fb.Offset? offset_filePath;
+ fb.Offset? offset_message;
if (_filePath != null) {
- offset_filePath = fbBuilder.writeString(_filePath);
+ offset_filePath = fbBuilder.writeString(_filePath!);
}
if (_message != null) {
- offset_message = fbBuilder.writeString(_message);
+ offset_message = fbBuilder.writeString(_message!);
}
fbBuilder.startTable();
if (offset_filePath != null) {
@@ -3781,33 +3812,31 @@
_DiagnosticMessageImpl(this._bc, this._bcOffset);
- String _filePath;
- int _length;
- String _message;
- int _offset;
+ String? _filePath;
+ int? _length;
+ String? _message;
+ int? _offset;
@override
String get filePath {
- _filePath ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 0, '');
- return _filePath;
+ return _filePath ??=
+ const fb.StringReader().vTableGet(_bc, _bcOffset, 0, '');
}
@override
int get length {
- _length ??= const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 1, 0);
- return _length;
+ return _length ??= const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 1, 0);
}
@override
String get message {
- _message ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 2, '');
- return _message;
+ return _message ??=
+ const fb.StringReader().vTableGet(_bc, _bcOffset, 2, '');
}
@override
int get offset {
- _offset ??= const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 3, 0);
- return _offset;
+ return _offset ??= const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 3, 0);
}
}
@@ -3815,23 +3844,27 @@
@override
Map<String, Object> toJson() {
Map<String, Object> _result = <String, Object>{};
- if (filePath != '') {
- _result["filePath"] = filePath;
+ var local_filePath = filePath;
+ if (local_filePath != '') {
+ _result["filePath"] = local_filePath;
}
- if (length != 0) {
- _result["length"] = length;
+ var local_length = length;
+ if (local_length != 0) {
+ _result["length"] = local_length;
}
- if (message != '') {
- _result["message"] = message;
+ var local_message = message;
+ if (local_message != '') {
+ _result["message"] = local_message;
}
- if (offset != 0) {
- _result["offset"] = offset;
+ var local_offset = offset;
+ if (local_offset != 0) {
+ _result["offset"] = local_offset;
}
return _result;
}
@override
- Map<String, Object> toMap() => {
+ Map<String, Object?> toMap() => {
"filePath": filePath,
"length": length,
"message": message,
@@ -3845,8 +3878,8 @@
class DirectiveInfoBuilder extends Object
with _DirectiveInfoMixin
implements idl.DirectiveInfo {
- List<String> _templateNames;
- List<String> _templateValues;
+ List<String>? _templateNames;
+ List<String>? _templateValues;
@override
List<String> get templateNames => _templateNames ??= <String>[];
@@ -3865,7 +3898,7 @@
}
DirectiveInfoBuilder(
- {List<String> templateNames, List<String> templateValues})
+ {List<String>? templateNames, List<String>? templateValues})
: _templateNames = templateNames,
_templateValues = templateValues;
@@ -3877,31 +3910,31 @@
if (this._templateNames == null) {
signature.addInt(0);
} else {
- signature.addInt(this._templateNames.length);
- for (var x in this._templateNames) {
+ signature.addInt(this._templateNames!.length);
+ for (var x in this._templateNames!) {
signature.addString(x);
}
}
if (this._templateValues == null) {
signature.addInt(0);
} else {
- signature.addInt(this._templateValues.length);
- for (var x in this._templateValues) {
+ signature.addInt(this._templateValues!.length);
+ for (var x in this._templateValues!) {
signature.addString(x);
}
}
}
fb.Offset finish(fb.Builder fbBuilder) {
- fb.Offset offset_templateNames;
- fb.Offset offset_templateValues;
- if (!(_templateNames == null || _templateNames.isEmpty)) {
+ fb.Offset? offset_templateNames;
+ fb.Offset? offset_templateValues;
+ if (!(_templateNames == null || _templateNames!.isEmpty)) {
offset_templateNames = fbBuilder.writeList(
- _templateNames.map((b) => fbBuilder.writeString(b)).toList());
+ _templateNames!.map((b) => fbBuilder.writeString(b)).toList());
}
- if (!(_templateValues == null || _templateValues.isEmpty)) {
+ if (!(_templateValues == null || _templateValues!.isEmpty)) {
offset_templateValues = fbBuilder.writeList(
- _templateValues.map((b) => fbBuilder.writeString(b)).toList());
+ _templateValues!.map((b) => fbBuilder.writeString(b)).toList());
}
fbBuilder.startTable();
if (offset_templateNames != null) {
@@ -3930,21 +3963,19 @@
_DirectiveInfoImpl(this._bc, this._bcOffset);
- List<String> _templateNames;
- List<String> _templateValues;
+ List<String>? _templateNames;
+ List<String>? _templateValues;
@override
List<String> get templateNames {
- _templateNames ??= const fb.ListReader<String>(fb.StringReader())
+ return _templateNames ??= const fb.ListReader<String>(fb.StringReader())
.vTableGet(_bc, _bcOffset, 0, const <String>[]);
- return _templateNames;
}
@override
List<String> get templateValues {
- _templateValues ??= const fb.ListReader<String>(fb.StringReader())
+ return _templateValues ??= const fb.ListReader<String>(fb.StringReader())
.vTableGet(_bc, _bcOffset, 1, const <String>[]);
- return _templateValues;
}
}
@@ -3952,17 +3983,19 @@
@override
Map<String, Object> toJson() {
Map<String, Object> _result = <String, Object>{};
- if (templateNames.isNotEmpty) {
- _result["templateNames"] = templateNames;
+ var local_templateNames = templateNames;
+ if (local_templateNames.isNotEmpty) {
+ _result["templateNames"] = local_templateNames;
}
- if (templateValues.isNotEmpty) {
- _result["templateValues"] = templateValues;
+ var local_templateValues = templateValues;
+ if (local_templateValues.isNotEmpty) {
+ _result["templateValues"] = local_templateValues;
}
return _result;
}
@override
- Map<String, Object> toMap() => {
+ Map<String, Object?> toMap() => {
"templateNames": templateNames,
"templateValues": templateValues,
};
@@ -3974,18 +4007,18 @@
class PackageBundleBuilder extends Object
with _PackageBundleMixin
implements idl.PackageBundle {
- int _fake;
+ int? _fake;
@override
int get fake => _fake ??= 0;
/// The version 2 of the summary.
set fake(int value) {
- assert(value == null || value >= 0);
+ assert(value >= 0);
this._fake = value;
}
- PackageBundleBuilder({int fake}) : _fake = fake;
+ PackageBundleBuilder({int? fake}) : _fake = fake;
/// Flush [informative] data recursively.
void flushInformative() {}
@@ -4030,12 +4063,11 @@
_PackageBundleImpl(this._bc, this._bcOffset);
- int _fake;
+ int? _fake;
@override
int get fake {
- _fake ??= const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 0, 0);
- return _fake;
+ return _fake ??= const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 0, 0);
}
}
@@ -4043,14 +4075,15 @@
@override
Map<String, Object> toJson() {
Map<String, Object> _result = <String, Object>{};
- if (fake != 0) {
- _result["fake"] = fake;
+ var local_fake = fake;
+ if (local_fake != 0) {
+ _result["fake"] = local_fake;
}
return _result;
}
@override
- Map<String, Object> toMap() => {
+ Map<String, Object?> toMap() => {
"fake": fake,
};
@@ -4061,8 +4094,8 @@
class UnlinkedNamespaceDirectiveBuilder extends Object
with _UnlinkedNamespaceDirectiveMixin
implements idl.UnlinkedNamespaceDirective {
- List<UnlinkedNamespaceDirectiveConfigurationBuilder> _configurations;
- String _uri;
+ List<UnlinkedNamespaceDirectiveConfigurationBuilder>? _configurations;
+ String? _uri;
@override
List<UnlinkedNamespaceDirectiveConfigurationBuilder> get configurations =>
@@ -4084,8 +4117,8 @@
}
UnlinkedNamespaceDirectiveBuilder(
- {List<UnlinkedNamespaceDirectiveConfigurationBuilder> configurations,
- String uri})
+ {List<UnlinkedNamespaceDirectiveConfigurationBuilder>? configurations,
+ String? uri})
: _configurations = configurations,
_uri = uri;
@@ -4099,23 +4132,23 @@
if (this._configurations == null) {
signature.addInt(0);
} else {
- signature.addInt(this._configurations.length);
- for (var x in this._configurations) {
- x?.collectApiSignature(signature);
+ signature.addInt(this._configurations!.length);
+ for (var x in this._configurations!) {
+ x.collectApiSignature(signature);
}
}
signature.addString(this._uri ?? '');
}
fb.Offset finish(fb.Builder fbBuilder) {
- fb.Offset offset_configurations;
- fb.Offset offset_uri;
- if (!(_configurations == null || _configurations.isEmpty)) {
+ fb.Offset? offset_configurations;
+ fb.Offset? offset_uri;
+ if (!(_configurations == null || _configurations!.isEmpty)) {
offset_configurations = fbBuilder
- .writeList(_configurations.map((b) => b.finish(fbBuilder)).toList());
+ .writeList(_configurations!.map((b) => b.finish(fbBuilder)).toList());
}
if (_uri != null) {
- offset_uri = fbBuilder.writeString(_uri);
+ offset_uri = fbBuilder.writeString(_uri!);
}
fbBuilder.startTable();
if (offset_configurations != null) {
@@ -4146,23 +4179,21 @@
_UnlinkedNamespaceDirectiveImpl(this._bc, this._bcOffset);
- List<idl.UnlinkedNamespaceDirectiveConfiguration> _configurations;
- String _uri;
+ List<idl.UnlinkedNamespaceDirectiveConfiguration>? _configurations;
+ String? _uri;
@override
List<idl.UnlinkedNamespaceDirectiveConfiguration> get configurations {
- _configurations ??=
+ return _configurations ??=
const fb.ListReader<idl.UnlinkedNamespaceDirectiveConfiguration>(
_UnlinkedNamespaceDirectiveConfigurationReader())
.vTableGet(_bc, _bcOffset, 0,
const <idl.UnlinkedNamespaceDirectiveConfiguration>[]);
- return _configurations;
}
@override
String get uri {
- _uri ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 1, '');
- return _uri;
+ return _uri ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 1, '');
}
}
@@ -4171,18 +4202,20 @@
@override
Map<String, Object> toJson() {
Map<String, Object> _result = <String, Object>{};
- if (configurations.isNotEmpty) {
+ var local_configurations = configurations;
+ if (local_configurations.isNotEmpty) {
_result["configurations"] =
- configurations.map((_value) => _value.toJson()).toList();
+ local_configurations.map((_value) => _value.toJson()).toList();
}
- if (uri != '') {
- _result["uri"] = uri;
+ var local_uri = uri;
+ if (local_uri != '') {
+ _result["uri"] = local_uri;
}
return _result;
}
@override
- Map<String, Object> toMap() => {
+ Map<String, Object?> toMap() => {
"configurations": configurations,
"uri": uri,
};
@@ -4194,9 +4227,9 @@
class UnlinkedNamespaceDirectiveConfigurationBuilder extends Object
with _UnlinkedNamespaceDirectiveConfigurationMixin
implements idl.UnlinkedNamespaceDirectiveConfiguration {
- String _name;
- String _uri;
- String _value;
+ String? _name;
+ String? _uri;
+ String? _value;
@override
String get name => _name ??= '';
@@ -4224,7 +4257,7 @@
}
UnlinkedNamespaceDirectiveConfigurationBuilder(
- {String name, String uri, String value})
+ {String? name, String? uri, String? value})
: _name = name,
_uri = uri,
_value = value;
@@ -4240,17 +4273,17 @@
}
fb.Offset finish(fb.Builder fbBuilder) {
- fb.Offset offset_name;
- fb.Offset offset_uri;
- fb.Offset offset_value;
+ fb.Offset? offset_name;
+ fb.Offset? offset_uri;
+ fb.Offset? offset_value;
if (_name != null) {
- offset_name = fbBuilder.writeString(_name);
+ offset_name = fbBuilder.writeString(_name!);
}
if (_uri != null) {
- offset_uri = fbBuilder.writeString(_uri);
+ offset_uri = fbBuilder.writeString(_uri!);
}
if (_value != null) {
- offset_value = fbBuilder.writeString(_value);
+ offset_value = fbBuilder.writeString(_value!);
}
fbBuilder.startTable();
if (offset_name != null) {
@@ -4284,26 +4317,23 @@
_UnlinkedNamespaceDirectiveConfigurationImpl(this._bc, this._bcOffset);
- String _name;
- String _uri;
- String _value;
+ String? _name;
+ String? _uri;
+ String? _value;
@override
String get name {
- _name ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 0, '');
- return _name;
+ return _name ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 0, '');
}
@override
String get uri {
- _uri ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 2, '');
- return _uri;
+ return _uri ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 2, '');
}
@override
String get value {
- _value ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 1, '');
- return _value;
+ return _value ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 1, '');
}
}
@@ -4312,20 +4342,23 @@
@override
Map<String, Object> toJson() {
Map<String, Object> _result = <String, Object>{};
- if (name != '') {
- _result["name"] = name;
+ var local_name = name;
+ if (local_name != '') {
+ _result["name"] = local_name;
}
- if (uri != '') {
- _result["uri"] = uri;
+ var local_uri = uri;
+ if (local_uri != '') {
+ _result["uri"] = local_uri;
}
- if (value != '') {
- _result["value"] = value;
+ var local_value = value;
+ if (local_value != '') {
+ _result["value"] = local_value;
}
return _result;
}
@override
- Map<String, Object> toMap() => {
+ Map<String, Object?> toMap() => {
"name": name,
"uri": uri,
"value": value,
@@ -4338,14 +4371,14 @@
class UnlinkedUnit2Builder extends Object
with _UnlinkedUnit2Mixin
implements idl.UnlinkedUnit2 {
- List<int> _apiSignature;
- List<UnlinkedNamespaceDirectiveBuilder> _exports;
- bool _hasLibraryDirective;
- bool _hasPartOfDirective;
- List<UnlinkedNamespaceDirectiveBuilder> _imports;
- List<int> _lineStarts;
- String _partOfUri;
- List<String> _parts;
+ List<int>? _apiSignature;
+ List<UnlinkedNamespaceDirectiveBuilder>? _exports;
+ bool? _hasLibraryDirective;
+ bool? _hasPartOfDirective;
+ List<UnlinkedNamespaceDirectiveBuilder>? _imports;
+ List<int>? _lineStarts;
+ String? _partOfUri;
+ List<String>? _parts;
@override
List<int> get apiSignature => _apiSignature ??= <int>[];
@@ -4353,7 +4386,7 @@
/// The MD5 hash signature of the API portion of this unit. It depends on all
/// tokens that might affect APIs of declarations in the unit.
set apiSignature(List<int> value) {
- assert(value == null || value.every((e) => e >= 0));
+ assert(value.every((e) => e >= 0));
this._apiSignature = value;
}
@@ -4396,7 +4429,7 @@
/// Offsets of the first character of each line in the source code.
set lineStarts(List<int> value) {
- assert(value == null || value.every((e) => e >= 0));
+ assert(value.every((e) => e >= 0));
this._lineStarts = value;
}
@@ -4417,14 +4450,14 @@
}
UnlinkedUnit2Builder(
- {List<int> apiSignature,
- List<UnlinkedNamespaceDirectiveBuilder> exports,
- bool hasLibraryDirective,
- bool hasPartOfDirective,
- List<UnlinkedNamespaceDirectiveBuilder> imports,
- List<int> lineStarts,
- String partOfUri,
- List<String> parts})
+ {List<int>? apiSignature,
+ List<UnlinkedNamespaceDirectiveBuilder>? exports,
+ bool? hasLibraryDirective,
+ bool? hasPartOfDirective,
+ List<UnlinkedNamespaceDirectiveBuilder>? imports,
+ List<int>? lineStarts,
+ String? partOfUri,
+ List<String>? parts})
: _apiSignature = apiSignature,
_exports = exports,
_hasLibraryDirective = hasLibraryDirective,
@@ -4446,33 +4479,33 @@
if (this._apiSignature == null) {
signature.addInt(0);
} else {
- signature.addInt(this._apiSignature.length);
- for (var x in this._apiSignature) {
+ signature.addInt(this._apiSignature!.length);
+ for (var x in this._apiSignature!) {
signature.addInt(x);
}
}
if (this._exports == null) {
signature.addInt(0);
} else {
- signature.addInt(this._exports.length);
- for (var x in this._exports) {
- x?.collectApiSignature(signature);
+ signature.addInt(this._exports!.length);
+ for (var x in this._exports!) {
+ x.collectApiSignature(signature);
}
}
if (this._imports == null) {
signature.addInt(0);
} else {
- signature.addInt(this._imports.length);
- for (var x in this._imports) {
- x?.collectApiSignature(signature);
+ signature.addInt(this._imports!.length);
+ for (var x in this._imports!) {
+ x.collectApiSignature(signature);
}
}
signature.addBool(this._hasPartOfDirective == true);
if (this._parts == null) {
signature.addInt(0);
} else {
- signature.addInt(this._parts.length);
- for (var x in this._parts) {
+ signature.addInt(this._parts!.length);
+ for (var x in this._parts!) {
signature.addString(x);
}
}
@@ -4486,32 +4519,32 @@
}
fb.Offset finish(fb.Builder fbBuilder) {
- fb.Offset offset_apiSignature;
- fb.Offset offset_exports;
- fb.Offset offset_imports;
- fb.Offset offset_lineStarts;
- fb.Offset offset_partOfUri;
- fb.Offset offset_parts;
- if (!(_apiSignature == null || _apiSignature.isEmpty)) {
- offset_apiSignature = fbBuilder.writeListUint32(_apiSignature);
+ fb.Offset? offset_apiSignature;
+ fb.Offset? offset_exports;
+ fb.Offset? offset_imports;
+ fb.Offset? offset_lineStarts;
+ fb.Offset? offset_partOfUri;
+ fb.Offset? offset_parts;
+ if (!(_apiSignature == null || _apiSignature!.isEmpty)) {
+ offset_apiSignature = fbBuilder.writeListUint32(_apiSignature!);
}
- if (!(_exports == null || _exports.isEmpty)) {
+ if (!(_exports == null || _exports!.isEmpty)) {
offset_exports = fbBuilder
- .writeList(_exports.map((b) => b.finish(fbBuilder)).toList());
+ .writeList(_exports!.map((b) => b.finish(fbBuilder)).toList());
}
- if (!(_imports == null || _imports.isEmpty)) {
+ if (!(_imports == null || _imports!.isEmpty)) {
offset_imports = fbBuilder
- .writeList(_imports.map((b) => b.finish(fbBuilder)).toList());
+ .writeList(_imports!.map((b) => b.finish(fbBuilder)).toList());
}
- if (!(_lineStarts == null || _lineStarts.isEmpty)) {
- offset_lineStarts = fbBuilder.writeListUint32(_lineStarts);
+ if (!(_lineStarts == null || _lineStarts!.isEmpty)) {
+ offset_lineStarts = fbBuilder.writeListUint32(_lineStarts!);
}
if (_partOfUri != null) {
- offset_partOfUri = fbBuilder.writeString(_partOfUri);
+ offset_partOfUri = fbBuilder.writeString(_partOfUri!);
}
- if (!(_parts == null || _parts.isEmpty)) {
+ if (!(_parts == null || _parts!.isEmpty)) {
offset_parts = fbBuilder
- .writeList(_parts.map((b) => fbBuilder.writeString(b)).toList());
+ .writeList(_parts!.map((b) => fbBuilder.writeString(b)).toList());
}
fbBuilder.startTable();
if (offset_apiSignature != null) {
@@ -4563,70 +4596,63 @@
_UnlinkedUnit2Impl(this._bc, this._bcOffset);
- List<int> _apiSignature;
- List<idl.UnlinkedNamespaceDirective> _exports;
- bool _hasLibraryDirective;
- bool _hasPartOfDirective;
- List<idl.UnlinkedNamespaceDirective> _imports;
- List<int> _lineStarts;
- String _partOfUri;
- List<String> _parts;
+ List<int>? _apiSignature;
+ List<idl.UnlinkedNamespaceDirective>? _exports;
+ bool? _hasLibraryDirective;
+ bool? _hasPartOfDirective;
+ List<idl.UnlinkedNamespaceDirective>? _imports;
+ List<int>? _lineStarts;
+ String? _partOfUri;
+ List<String>? _parts;
@override
List<int> get apiSignature {
- _apiSignature ??=
+ return _apiSignature ??=
const fb.Uint32ListReader().vTableGet(_bc, _bcOffset, 0, const <int>[]);
- return _apiSignature;
}
@override
List<idl.UnlinkedNamespaceDirective> get exports {
- _exports ??= const fb.ListReader<idl.UnlinkedNamespaceDirective>(
+ return _exports ??= const fb.ListReader<idl.UnlinkedNamespaceDirective>(
_UnlinkedNamespaceDirectiveReader())
.vTableGet(_bc, _bcOffset, 1, const <idl.UnlinkedNamespaceDirective>[]);
- return _exports;
}
@override
bool get hasLibraryDirective {
- _hasLibraryDirective ??=
+ return _hasLibraryDirective ??=
const fb.BoolReader().vTableGet(_bc, _bcOffset, 6, false);
- return _hasLibraryDirective;
}
@override
bool get hasPartOfDirective {
- _hasPartOfDirective ??=
+ return _hasPartOfDirective ??=
const fb.BoolReader().vTableGet(_bc, _bcOffset, 3, false);
- return _hasPartOfDirective;
}
@override
List<idl.UnlinkedNamespaceDirective> get imports {
- _imports ??= const fb.ListReader<idl.UnlinkedNamespaceDirective>(
+ return _imports ??= const fb.ListReader<idl.UnlinkedNamespaceDirective>(
_UnlinkedNamespaceDirectiveReader())
.vTableGet(_bc, _bcOffset, 2, const <idl.UnlinkedNamespaceDirective>[]);
- return _imports;
}
@override
List<int> get lineStarts {
- _lineStarts ??=
+ return _lineStarts ??=
const fb.Uint32ListReader().vTableGet(_bc, _bcOffset, 5, const <int>[]);
- return _lineStarts;
}
@override
String get partOfUri {
- _partOfUri ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 7, '');
- return _partOfUri;
+ return _partOfUri ??=
+ const fb.StringReader().vTableGet(_bc, _bcOffset, 7, '');
}
@override
List<String> get parts {
- _parts ??= const fb.ListReader<String>(fb.StringReader())
+ return _parts ??= const fb.ListReader<String>(fb.StringReader())
.vTableGet(_bc, _bcOffset, 4, const <String>[]);
- return _parts;
}
}
@@ -4634,35 +4660,45 @@
@override
Map<String, Object> toJson() {
Map<String, Object> _result = <String, Object>{};
- if (apiSignature.isNotEmpty) {
- _result["apiSignature"] = apiSignature;
+ var local_apiSignature = apiSignature;
+ if (local_apiSignature.isNotEmpty) {
+ _result["apiSignature"] = local_apiSignature;
}
- if (exports.isNotEmpty) {
- _result["exports"] = exports.map((_value) => _value.toJson()).toList();
+ var local_exports = exports;
+ if (local_exports.isNotEmpty) {
+ _result["exports"] =
+ local_exports.map((_value) => _value.toJson()).toList();
}
- if (hasLibraryDirective != false) {
- _result["hasLibraryDirective"] = hasLibraryDirective;
+ var local_hasLibraryDirective = hasLibraryDirective;
+ if (local_hasLibraryDirective != false) {
+ _result["hasLibraryDirective"] = local_hasLibraryDirective;
}
- if (hasPartOfDirective != false) {
- _result["hasPartOfDirective"] = hasPartOfDirective;
+ var local_hasPartOfDirective = hasPartOfDirective;
+ if (local_hasPartOfDirective != false) {
+ _result["hasPartOfDirective"] = local_hasPartOfDirective;
}
- if (imports.isNotEmpty) {
- _result["imports"] = imports.map((_value) => _value.toJson()).toList();
+ var local_imports = imports;
+ if (local_imports.isNotEmpty) {
+ _result["imports"] =
+ local_imports.map((_value) => _value.toJson()).toList();
}
- if (lineStarts.isNotEmpty) {
- _result["lineStarts"] = lineStarts;
+ var local_lineStarts = lineStarts;
+ if (local_lineStarts.isNotEmpty) {
+ _result["lineStarts"] = local_lineStarts;
}
- if (partOfUri != '') {
- _result["partOfUri"] = partOfUri;
+ var local_partOfUri = partOfUri;
+ if (local_partOfUri != '') {
+ _result["partOfUri"] = local_partOfUri;
}
- if (parts.isNotEmpty) {
- _result["parts"] = parts;
+ var local_parts = parts;
+ if (local_parts.isNotEmpty) {
+ _result["parts"] = local_parts;
}
return _result;
}
@override
- Map<String, Object> toMap() => {
+ Map<String, Object?> toMap() => {
"apiSignature": apiSignature,
"exports": exports,
"hasLibraryDirective": hasLibraryDirective,
diff --git a/pkg/analyzer/lib/src/summary/idl.dart b/pkg/analyzer/lib/src/summary/idl.dart
index bd9d540..25bd28f 100644
--- a/pkg/analyzer/lib/src/summary/idl.dart
+++ b/pkg/analyzer/lib/src/summary/idl.dart
@@ -97,7 +97,7 @@
/// The index of the unit.
@Id(1)
- AnalysisDriverUnitIndex get index;
+ AnalysisDriverUnitIndex? get index;
}
/// Information about a subtype of one or more classes.
@@ -284,7 +284,7 @@
/// Unlinked information for the unit.
@Id(4)
- UnlinkedUnit2 get unit2;
+ UnlinkedUnit2? get unit2;
}
/// Information about a single declaration.
@@ -402,7 +402,7 @@
/// The Dartdoc directives in the file.
@Id(1)
- DirectiveInfo get directiveInfo;
+ DirectiveInfo? get directiveInfo;
/// Exports directives of the file.
@Id(2)
@@ -475,7 +475,7 @@
/// Unlinked summary of the compilation unit.
@Id(1)
- UnlinkedUnit2 get unlinkedUnit;
+ UnlinkedUnit2? get unlinkedUnit;
}
abstract class DiagnosticMessage extends base.SummaryClass {
diff --git a/pkg/analyzer/lib/src/summary/link.dart b/pkg/analyzer/lib/src/summary/link.dart
index 0d492d2..c2dbee3 100644
--- a/pkg/analyzer/lib/src/summary/link.dart
+++ b/pkg/analyzer/lib/src/summary/link.dart
@@ -135,7 +135,7 @@
/// in the strongly connected component to which this node belongs.
int _lowLink = 0;
- List<NodeType> _dependencies;
+ List<NodeType>? _dependencies;
/// Indicates whether this node has been evaluated yet.
bool get isEvaluated;
diff --git a/pkg/analyzer/lib/src/summary/package_bundle_reader.dart b/pkg/analyzer/lib/src/summary/package_bundle_reader.dart
index b206f48..786fbc5 100644
--- a/pkg/analyzer/lib/src/summary/package_bundle_reader.dart
+++ b/pkg/analyzer/lib/src/summary/package_bundle_reader.dart
@@ -4,6 +4,7 @@
import 'dart:io' as io;
import 'dart:math' show min;
+import 'dart:typed_data';
import 'package:analyzer/file_system/file_system.dart';
import 'package:analyzer/src/generated/engine.dart';
@@ -17,7 +18,7 @@
final String duplicatedUri;
final String summary1Uri;
final String summary2Uri;
- String _message;
+ late final String _message;
ConflictingSummaryException(Iterable<String> summaryPaths, this.duplicatedUri,
this.summary1Uri, this.summary2Uri) {
@@ -88,16 +89,16 @@
/// The [UriResolver] that knows about sources that are served from their
/// summaries.
class InSummaryUriResolver extends UriResolver {
- ResourceProvider resourceProvider;
+ ResourceProvider? resourceProvider;
final SummaryDataStore _dataStore;
InSummaryUriResolver(this.resourceProvider, this._dataStore);
@override
- Source resolveAbsolute(Uri uri, [Uri actualUri]) {
+ Source? resolveAbsolute(Uri uri, [Uri? actualUri]) {
actualUri ??= uri;
String uriString = uri.toString();
- String summaryPath = _dataStore.uriToSummaryPath[uriString];
+ String? summaryPath = _dataStore.uriToSummaryPath[uriString];
if (summaryPath != null) {
return InSummarySource(actualUri, summaryPath);
}
@@ -113,7 +114,7 @@
final List<PackageBundleReader> bundles = [];
/// Map from the URI of a unit to the summary path that contained it.
- final Map<String, String> uriToSummaryPath = <String, String>{};
+ final Map<String, String?> uriToSummaryPath = <String, String?>{};
final Set<String> _libraryUris = <String>{};
final Set<String> _partUris = <String>{};
@@ -121,12 +122,12 @@
/// Create a [SummaryDataStore] and populate it with the summaries in
/// [summaryPaths].
SummaryDataStore(Iterable<String> summaryPaths,
- {ResourceProvider resourceProvider}) {
+ {ResourceProvider? resourceProvider}) {
summaryPaths.forEach((String path) => _fillMaps(path, resourceProvider));
}
/// Add the given [bundle] loaded from the file with the given [path].
- void addBundle(String path, PackageBundleReader bundle) {
+ void addBundle(String? path, PackageBundleReader bundle) {
bundles.add(bundle);
for (var library in bundle.libraries) {
@@ -159,11 +160,11 @@
return _partUris.contains(uri);
}
- void _fillMaps(String path, ResourceProvider resourceProvider) {
- List<int> bytes;
+ void _fillMaps(String path, ResourceProvider? resourceProvider) {
+ Uint8List bytes;
if (resourceProvider != null) {
var file = resourceProvider.getFile(path);
- bytes = file.readAsBytesSync();
+ bytes = file.readAsBytesSync() as Uint8List;
} else {
io.File file = io.File(path);
bytes = file.readAsBytesSync();
diff --git a/pkg/analyzer/lib/src/summary/summary_file_builder.dart b/pkg/analyzer/lib/src/summary/summary_file_builder.dart
index 92b577f..6f9c3ed 100644
--- a/pkg/analyzer/lib/src/summary/summary_file_builder.dart
+++ b/pkg/analyzer/lib/src/summary/summary_file_builder.dart
@@ -7,16 +7,15 @@
import 'package:analyzer/dart/sdk/build_sdk_summary.dart' as api;
import 'package:analyzer/file_system/file_system.dart';
-import 'package:meta/meta.dart';
/// Build summary for SDK the at the given [sdkPath].
///
/// If [embedderYamlPath] is provided, then libraries from this file are
/// appended to the libraries of the specified SDK.
List<int> buildSdkSummary({
- @required ResourceProvider resourceProvider,
- @required String sdkPath,
- String embedderYamlPath,
+ required ResourceProvider resourceProvider,
+ required String sdkPath,
+ String? embedderYamlPath,
}) {
return api.buildSdkSummary(
resourceProvider: resourceProvider,
diff --git a/pkg/analyzer/lib/src/summary/summary_sdk.dart b/pkg/analyzer/lib/src/summary/summary_sdk.dart
index 2d0bd29..5ad073a 100644
--- a/pkg/analyzer/lib/src/summary/summary_sdk.dart
+++ b/pkg/analyzer/lib/src/summary/summary_sdk.dart
@@ -14,10 +14,10 @@
/// suitable only for command-line tools, but not for IDEs - it does not
/// implement [sdkLibraries], [uris] and [fromFileUri].
class SummaryBasedDartSdk implements DartSdk {
- SummaryDataStore _dataStore;
- InSummaryUriResolver _uriResolver;
- PackageBundleReader _bundle;
- ResourceProvider resourceProvider;
+ late final SummaryDataStore _dataStore;
+ late final InSummaryUriResolver _uriResolver;
+ late final PackageBundleReader _bundle;
+ ResourceProvider? resourceProvider;
SummaryBasedDartSdk(String summaryPath, bool _, {this.resourceProvider}) {
_dataStore = SummaryDataStore(<String>[summaryPath],
@@ -28,7 +28,7 @@
@override
String get allowedExperimentsJson {
- return _bundle.sdk.allowedExperimentsJson;
+ return _bundle.sdk!.allowedExperimentsJson;
}
/// Return the [PackageBundleReader] for this SDK, not `null`.
@@ -37,8 +37,8 @@
@override
Version get languageVersion {
return Version(
- _bundle.sdk.languageVersionMajor,
- _bundle.sdk.languageVersionMinor,
+ _bundle.sdk!.languageVersionMajor,
+ _bundle.sdk!.languageVersionMinor,
0,
);
}
@@ -61,19 +61,19 @@
}
@override
- Source fromFileUri(Uri uri) {
+ Source? fromFileUri(Uri uri) {
return null;
}
@override
- SdkLibrary getSdkLibrary(String uri) {
+ SdkLibrary? getSdkLibrary(String uri) {
// This is not quite correct, but currently it's used only in
// to report errors on importing or exporting of internal libraries.
return null;
}
@override
- Source mapDartUri(String uriStr) {
+ Source? mapDartUri(String uriStr) {
Uri uri = Uri.parse(uriStr);
return _uriResolver.resolveAbsolute(uri);
}
diff --git a/pkg/analyzer/lib/src/summary2/apply_resolution.dart b/pkg/analyzer/lib/src/summary2/apply_resolution.dart
index ec7202d..027dba1 100644
--- a/pkg/analyzer/lib/src/summary2/apply_resolution.dart
+++ b/pkg/analyzer/lib/src/summary2/apply_resolution.dart
@@ -19,6 +19,7 @@
import 'package:analyzer/src/summary2/bundle_reader.dart';
import 'package:analyzer/src/summary2/linked_unit_context.dart';
import 'package:analyzer/src/task/inference_error.dart';
+import 'package:collection/collection.dart';
class ApplyResolutionVisitor extends ThrowingAstVisitor<void> {
final LinkedUnitContext _unitContext;
@@ -48,7 +49,7 @@
if (typeParameterList == null) return;
for (var typeParameter in typeParameterList.typeParameters) {
- var element = typeParameter.declaredElement;
+ var element = typeParameter.declaredElement!;
_localElements.add(element);
}
} else if (enclosing is ExtensionDeclaration) {
@@ -56,7 +57,7 @@
if (typeParameterList == null) return;
for (var typeParameter in typeParameterList.typeParameters) {
- var element = typeParameter.declaredElement;
+ var element = typeParameter.declaredElement!;
_localElements.add(element);
}
} else if (enclosing is VariableDeclarationList) {
@@ -126,7 +127,7 @@
_expectMarker(MarkerTag.AssignmentExpression_rightHandSide);
node.rightHandSide.accept(this);
_expectMarker(MarkerTag.AssignmentExpression_staticElement);
- node.staticElement = _nextElement();
+ node.staticElement = _nextElement() as MethodElement?;
_expectMarker(MarkerTag.AssignmentExpression_readElement);
nodeImpl.readElement = _nextElement();
_expectMarker(MarkerTag.AssignmentExpression_readType);
@@ -157,7 +158,7 @@
node.rightOperand.accept(this);
_expectMarker(MarkerTag.BinaryExpression_staticElement);
- node.staticElement = _nextElement();
+ node.staticElement = _nextElement() as MethodElement?;
_expectMarker(MarkerTag.BinaryExpression_expression);
_expression(node);
@@ -227,9 +228,9 @@
_expectMarker(MarkerTag.ClassTypeAlias_typeParameters);
node.typeParameters?.accept(this);
_expectMarker(MarkerTag.ClassTypeAlias_superclass);
- node.superclass?.accept(this);
+ node.superclass.accept(this);
_expectMarker(MarkerTag.ClassTypeAlias_withClause);
- node.withClause?.accept(this);
+ node.withClause.accept(this);
_expectMarker(MarkerTag.ClassTypeAlias_implementsClause);
node.implementsClause?.accept(this);
_expectMarker(MarkerTag.ClassTypeAlias_typeAlias);
@@ -253,11 +254,11 @@
@override
void visitConfiguration(Configuration node) {
_expectMarker(MarkerTag.Configuration_name);
- node.name?.accept(this);
+ node.name.accept(this);
_expectMarker(MarkerTag.Configuration_value);
node.value?.accept(this);
_expectMarker(MarkerTag.Configuration_uri);
- node.uri?.accept(this);
+ node.uri.accept(this);
_expectMarker(MarkerTag.Configuration_end);
}
@@ -271,16 +272,16 @@
_enclosingElements.add(element);
_expectMarker(MarkerTag.ConstructorDeclaration_returnType);
- node.returnType?.accept(this);
+ node.returnType.accept(this);
_expectMarker(MarkerTag.ConstructorDeclaration_parameters);
- node.parameters?.accept(this);
+ node.parameters.accept(this);
for (var parameter in node.parameters.parameters) {
- _localElements.add(parameter.declaredElement);
+ _localElements.add(parameter.declaredElement!);
}
_expectMarker(MarkerTag.ConstructorDeclaration_initializers);
- node.initializers?.accept(this);
+ node.initializers.accept(this);
_expectMarker(MarkerTag.ConstructorDeclaration_redirectedConstructor);
node.redirectedConstructor?.accept(this);
_expectMarker(MarkerTag.ConstructorDeclaration_classMember);
@@ -327,7 +328,7 @@
_expectMarker(MarkerTag.ConstructorName_name);
node.name?.accept(this);
_expectMarker(MarkerTag.ConstructorName_staticElement);
- node.staticElement = _nextElement();
+ node.staticElement = _nextElement() as ConstructorElement?;
_expectMarker(MarkerTag.ConstructorName_end);
}
@@ -349,7 +350,7 @@
var enclosing = _enclosingElements.last;
var name = node.identifier?.name ?? '';
var reference = node.isNamed && enclosing.reference != null
- ? enclosing.reference.getChild('@parameter').getChild(name)
+ ? enclosing.reference!.getChild('@parameter').getChild(name)
: null;
ParameterElementImpl element;
if (node.parameter is FieldFormalParameter) {
@@ -399,10 +400,11 @@
@override
void visitExportDirective(ExportDirective node) {
+ var elementImpl = node.element as ExportElementImpl;
_expectMarker(MarkerTag.ExportDirective_namespaceDirective);
_namespaceDirective(node);
_expectMarker(MarkerTag.ExportDirective_exportedLibrary);
- (node.element as ExportElementImpl).exportedLibrary = _nextElement();
+ elementImpl.exportedLibrary = _nextElement() as LibraryElement?;
_expectMarker(MarkerTag.ExportDirective_end);
}
@@ -428,7 +430,7 @@
_expectMarker(MarkerTag.ExtensionDeclaration_typeParameters);
node.typeParameters?.accept(this);
_expectMarker(MarkerTag.ExtensionDeclaration_extendedType);
- node.extendedType?.accept(this);
+ node.extendedType.accept(this);
_expectMarker(MarkerTag.ExtensionDeclaration_compilationUnitMember);
_compilationUnitMember(node);
_expectMarker(MarkerTag.ExtensionDeclaration_end);
@@ -473,7 +475,7 @@
@override
void visitFieldFormalParameter(FieldFormalParameter node) {
- ParameterElement element;
+ ParameterElementImpl? element;
if (node.parent is! DefaultFormalParameter) {
var enclosing = _enclosingElements.last;
element =
@@ -550,8 +552,6 @@
_assertNoLocalElements();
var element = node.declaredElement as ExecutableElementImpl;
- assert(element != null);
-
_enclosingElements.add(element);
_expectMarker(MarkerTag.FunctionDeclaration_functionExpression);
@@ -562,7 +562,7 @@
_expectMarker(MarkerTag.FunctionDeclaration_namedCompilationUnitMember);
_namedCompilationUnitMember(node);
_expectMarker(MarkerTag.FunctionDeclaration_returnTypeType);
- element.returnType = _nextType();
+ element.returnType = _nextType()!;
_expectMarker(MarkerTag.FunctionDeclaration_end);
}
@@ -607,14 +607,14 @@
_expectMarker(MarkerTag.FunctionTypeAlias_returnType);
node.returnType?.accept(this);
_expectMarker(MarkerTag.FunctionTypeAlias_parameters);
- node.parameters?.accept(this);
+ node.parameters.accept(this);
_enclosingElements.removeLast();
_expectMarker(MarkerTag.FunctionTypeAlias_typeAlias);
_typeAlias(node);
_expectMarker(MarkerTag.FunctionTypeAlias_returnTypeType);
- element.function.returnType = _nextType();
+ element.function.returnType = _nextType()!;
_expectMarker(MarkerTag.FunctionTypeAlias_flags);
element.isSimplyBounded = _resolution.readByte() != 0;
element.hasSelfReference = _resolution.readByte() != 0;
@@ -625,7 +625,7 @@
@override
void visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) {
- var element = node.declaredElement;
+ var element = node.declaredElement as ParameterElementImpl?;
if (node.parent is! DefaultFormalParameter) {
var enclosing = _enclosingElements.last;
element =
@@ -639,7 +639,7 @@
_expectMarker(MarkerTag.FunctionTypedFormalParameter_returnType);
node.returnType?.accept(this);
_expectMarker(MarkerTag.FunctionTypedFormalParameter_parameters);
- node.parameters?.accept(this);
+ node.parameters.accept(this);
_expectMarker(MarkerTag.FunctionTypedFormalParameter_normalFormalParameter);
_normalFormalParameter(node, element);
_expectMarker(MarkerTag.FunctionTypedFormalParameter_end);
@@ -652,7 +652,7 @@
var nodeImpl = node as GenericFunctionTypeImpl;
var localElementsLength = _localElements.length;
- var element = nodeImpl.declaredElement as GenericFunctionTypeElementImpl;
+ var element = nodeImpl.declaredElement as GenericFunctionTypeElementImpl?;
element ??= GenericFunctionTypeElementImpl.forLinkedNode(
_enclosingElements.last, null, node);
_enclosingElements.add(element);
@@ -662,7 +662,7 @@
_expectMarker(MarkerTag.GenericFunctionType_returnType);
node.returnType?.accept(this);
_expectMarker(MarkerTag.GenericFunctionType_parameters);
- node.parameters?.accept(this);
+ node.parameters.accept(this);
_expectMarker(MarkerTag.GenericFunctionType_type);
nodeImpl.type = _nextType();
_expectMarker(MarkerTag.GenericFunctionType_end);
@@ -676,14 +676,12 @@
_assertNoLocalElements();
var element = node.declaredElement as TypeAliasElementImpl;
- assert(element != null);
-
_enclosingElements.add(element);
_expectMarker(MarkerTag.GenericTypeAlias_typeParameters);
node.typeParameters?.accept(this);
_expectMarker(MarkerTag.GenericTypeAlias_type);
- node.type?.accept(this);
+ node.type.accept(this);
_expectMarker(MarkerTag.GenericTypeAlias_typeAlias);
_typeAlias(node);
_expectMarker(MarkerTag.GenericTypeAlias_flags);
@@ -724,7 +722,7 @@
var element = node.element as ImportElementImpl;
_expectMarker(MarkerTag.ImportDirective_importedLibrary);
- element.importedLibrary = _nextElement();
+ element.importedLibrary = _nextElement() as LibraryElement?;
_expectMarker(MarkerTag.ImportDirective_end);
}
@@ -736,7 +734,7 @@
_expectMarker(MarkerTag.IndexExpression_index);
node.index.accept(this);
_expectMarker(MarkerTag.IndexExpression_staticElement);
- node.staticElement = _nextElement();
+ node.staticElement = _nextElement() as MethodElement?;
_expectMarker(MarkerTag.IndexExpression_expression);
_expression(node);
_expectMarker(MarkerTag.IndexExpression_end);
@@ -828,7 +826,7 @@
_pushEnclosingClassTypeParameters(node);
var element = node.declaredElement as ExecutableElementImpl;
- _enclosingElements.add(element.enclosingElement);
+ _enclosingElements.add(element.enclosingElement as ElementImpl);
_enclosingElements.add(element);
try {
@@ -842,7 +840,7 @@
_classMember(node);
_expectMarker(MarkerTag.MethodDeclaration_returnTypeType);
- element.returnType = _nextType();
+ element.returnType = _nextType()!;
_expectMarker(MarkerTag.MethodDeclaration_inferenceError);
_setTopLevelInferenceError(element);
if (element is MethodElementImpl) {
@@ -880,7 +878,7 @@
} else {
identifier = astFactory.prefixedIdentifier(
node.target as SimpleIdentifier,
- node.operator,
+ node.operator!,
node.methodName,
);
}
@@ -901,7 +899,7 @@
} else {
expression = astFactory.propertyAccess(
target,
- node.operator,
+ node.operator!,
node.methodName,
);
}
@@ -933,7 +931,7 @@
? node.methodName
: astFactory.prefixedIdentifier(
node.target as SimpleIdentifier,
- node.operator,
+ node.operator!,
node.methodName,
);
var replacement = astFactory.instanceCreationExpression(
@@ -992,7 +990,7 @@
@override
void visitNativeClause(NativeClause node) {
_expectMarker(MarkerTag.NativeClause_name);
- node.name.accept(this);
+ node.name?.accept(this);
_expectMarker(MarkerTag.NativeClause_end);
}
@@ -1039,7 +1037,7 @@
_expectMarker(MarkerTag.PostfixExpression_operand);
node.operand.accept(this);
_expectMarker(MarkerTag.PostfixExpression_staticElement);
- node.staticElement = _nextElement();
+ node.staticElement = _nextElement() as MethodElement?;
if (node.operator.type.isIncrementOperator) {
_expectMarker(MarkerTag.PostfixExpression_readElement);
nodeImpl.readElement = _nextElement();
@@ -1072,7 +1070,7 @@
_expectMarker(MarkerTag.PrefixExpression_operand);
node.operand.accept(this);
_expectMarker(MarkerTag.PrefixExpression_staticElement);
- node.staticElement = _nextElement();
+ node.staticElement = _nextElement() as MethodElement?;
if (node.operator.type.isIncrementOperator) {
_expectMarker(MarkerTag.PrefixExpression_readElement);
nodeImpl.readElement = _nextElement();
@@ -1108,7 +1106,7 @@
_expectMarker(MarkerTag.RedirectingConstructorInvocation_argumentList);
node.argumentList.accept(this);
_expectMarker(MarkerTag.RedirectingConstructorInvocation_staticElement);
- node.staticElement = _nextElement();
+ node.staticElement = _nextElement() as ConstructorElement?;
_resolveNamedExpressions(node.staticElement, node.argumentList);
_expectMarker(MarkerTag.RedirectingConstructorInvocation_end);
}
@@ -1139,8 +1137,8 @@
@override
visitSimpleFormalParameter(SimpleFormalParameter node) {
- var element = node.declaredElement as ParameterElementImpl;
- if (node.parent is! DefaultFormalParameter) {
+ var element = node.declaredElement as ParameterElementImpl?;
+ if (element == null) {
var enclosing = _enclosingElements.last;
element =
ParameterElementImpl.forLinkedNodeFactory(enclosing, null, node);
@@ -1192,7 +1190,7 @@
_expectMarker(MarkerTag.SuperConstructorInvocation_argumentList);
node.argumentList.accept(this);
_expectMarker(MarkerTag.SuperConstructorInvocation_staticElement);
- node.staticElement = _nextElement();
+ node.staticElement = _nextElement() as ConstructorElement?;
_resolveNamedExpressions(node.staticElement, node.argumentList);
_expectMarker(MarkerTag.SuperConstructorInvocation_end);
}
@@ -1237,7 +1235,7 @@
@override
visitTypeArgumentList(TypeArgumentList node) {
_expectMarker(MarkerTag.TypeArgumentList_arguments);
- node.arguments?.accept(this);
+ node.arguments.accept(this);
_expectMarker(MarkerTag.TypeArgumentList_end);
}
@@ -1324,7 +1322,7 @@
void visitVariableDeclaration(VariableDeclaration node) {
var element = node.declaredElement as VariableElementImpl;
_expectMarker(MarkerTag.VariableDeclaration_type);
- element.type = _nextType();
+ element.type = _nextType()!;
_expectMarker(MarkerTag.VariableDeclaration_inferenceError);
_setTopLevelInferenceError(element);
if (element is FieldElementImpl) {
@@ -1357,7 +1355,7 @@
void _annotatedNode(AnnotatedNode node) {
_expectMarker(MarkerTag.AnnotatedNode_metadata);
- node.metadata?.accept(this);
+ node.metadata.accept(this);
_expectMarker(MarkerTag.AnnotatedNode_end);
}
@@ -1375,14 +1373,12 @@
return const <ElementAnnotation>[];
}
- var annotations = List<ElementAnnotation>.filled(length, null);
- for (int i = 0; i < length; i++) {
- var ast = nodeList[i];
- annotations[i] = ElementAnnotationImpl(unit)
+ return List.generate(length, (index) {
+ var ast = nodeList[index];
+ return ElementAnnotationImpl(unit)
..annotationAst = ast
..element = ast.element;
- }
- return annotations;
+ });
}
void _classMember(ClassMember node) {
@@ -1433,7 +1429,7 @@
void _formalParameter(FormalParameter node) {
_expectMarker(MarkerTag.FormalParameter_type);
- (node.declaredElement as ParameterElementImpl).type = _nextType();
+ (node.declaredElement as ParameterElementImpl).type = _nextType()!;
}
void _forMixin(ForMixin node) {
@@ -1470,34 +1466,34 @@
void _namespaceDirective(NamespaceDirective node) {
_expectMarker(MarkerTag.NamespaceDirective_combinators);
- node.combinators?.accept(this);
+ node.combinators.accept(this);
_expectMarker(MarkerTag.NamespaceDirective_configurations);
- node.configurations?.accept(this);
+ node.configurations.accept(this);
_expectMarker(MarkerTag.NamespaceDirective_uriBasedDirective);
_uriBasedDirective(node);
_expectMarker(MarkerTag.NamespaceDirective_end);
}
- Element _nextElement() {
+ Element? _nextElement() {
return _resolution.nextElement();
}
- DartType _nextType() {
+ DartType? _nextType() {
return _resolution.nextType();
}
void _normalFormalParameter(
NormalFormalParameter node,
- ParameterElementImpl element,
+ ParameterElementImpl? element,
) {
if (node.parent is! DefaultFormalParameter) {
var nodeImpl = node as NormalFormalParameterImpl;
var summaryData = nodeImpl.summaryData as SummaryDataForFormalParameter;
- element.setCodeRange(summaryData.codeOffset, summaryData.codeLength);
+ element!.setCodeRange(summaryData.codeOffset, summaryData.codeLength);
}
_expectMarker(MarkerTag.NormalFormalParameter_metadata);
- node.metadata?.accept(this);
+ node.metadata.accept(this);
_expectMarker(MarkerTag.NormalFormalParameter_formalParameter);
_formalParameter(node);
_expectMarker(MarkerTag.NormalFormalParameter_end);
@@ -1507,16 +1503,16 @@
void _pushEnclosingClassTypeParameters(ClassMember node) {
var parent = node.parent;
if (parent is ClassOrMixinDeclaration) {
- var classElement = parent.declaredElement;
+ var classElement = parent.declaredElement!;
_localElements.addAll(classElement.typeParameters);
} else {
var extension = parent as ExtensionDeclaration;
- var classElement = extension.declaredElement;
+ var classElement = extension.declaredElement!;
_localElements.addAll(classElement.typeParameters);
}
}
- TopLevelInferenceError _readTopLevelInferenceError() {
+ TopLevelInferenceError? _readTopLevelInferenceError() {
var kindIndex = _resolution.readByte();
var kind = TopLevelInferenceErrorKind.values[kindIndex];
if (kind == TopLevelInferenceErrorKind.none) {
@@ -1529,7 +1525,7 @@
}
void _resolveNamedExpressions(
- Element executable,
+ Element? executable,
ArgumentList argumentList,
) {
for (var argument in argumentList.arguments) {
@@ -1538,9 +1534,9 @@
if (executable is ExecutableElement) {
var parameters = executable.parameters;
var name = nameNode.name;
- nameNode.staticElement = parameters.firstWhere((e) {
+ nameNode.staticElement = parameters.firstWhereOrNull((e) {
return e.name == name;
- }, orElse: () => null);
+ });
}
}
}
@@ -1577,7 +1573,7 @@
return nodeStr.substring(0, indexOfBody);
}
- static Variance _decodeVariance(int encoding) {
+ static Variance? _decodeVariance(int encoding) {
if (encoding == 0) {
return null;
} else if (encoding == 1) {
diff --git a/pkg/analyzer/lib/src/summary2/ast_binary_flags.dart b/pkg/analyzer/lib/src/summary2/ast_binary_flags.dart
index 4c23e9f..8feb2f2 100644
--- a/pkg/analyzer/lib/src/summary2/ast_binary_flags.dart
+++ b/pkg/analyzer/lib/src/summary2/ast_binary_flags.dart
@@ -62,18 +62,21 @@
0,
IndexExpression,
MethodInvocation,
+ PropertyAccess,
);
static final _hasPeriod2 = _checkBit(
1,
MethodInvocation,
+ PropertyAccess,
);
static final _hasQuestion = _checkBit(
- 1,
+ 2,
FieldFormalParameter,
GenericFunctionType,
IndexExpression,
+ PropertyAccess,
TypeName,
);
@@ -570,7 +573,7 @@
/// Check the bit for its uniqueness for the given types.
static int _checkBit(int shift, Type type1,
- [Type type2, Type type3, Type type4, Type type5, Type type6]) {
+ [Type? type2, Type? type3, Type? type4, Type? type5, Type? type6]) {
_checkBit0(shift, type1);
_checkBit0(shift, type2);
_checkBit0(shift, type3);
@@ -581,7 +584,7 @@
}
/// Check the bit for its uniqueness for the [type].
- static void _checkBit0(int shift, Type type) {
+ static void _checkBit0(int shift, Type? type) {
if (type != null) {
var currentBits = _typeBits[type] ?? 0;
var bit = 1 << shift;
diff --git a/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart b/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart
index 8be47e2..af79a1f 100644
--- a/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart
+++ b/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart
@@ -17,7 +17,6 @@
import 'package:analyzer/src/summary2/ast_binary_tokens.dart';
import 'package:analyzer/src/summary2/bundle_reader.dart';
import 'package:analyzer/src/summary2/unlinked_token_type.dart';
-import 'package:meta/meta.dart';
/// Deserializer of ASTs.
class AstBinaryReader {
@@ -27,8 +26,8 @@
final bool _withInformative;
AstBinaryReader({
- @required UnitReader reader,
- }) : _unitReader = reader,
+ required UnitReader reader,
+ }) : _unitReader = reader,
_withInformative = reader.withInformative;
AstNode readNode() {
@@ -259,9 +258,9 @@
}
Annotation _readAnnotation() {
- var name = _readOptionalNode() as Identifier;
- var constructorName = _readOptionalNode() as SimpleIdentifier;
- var arguments = _readOptionalNode() as ArgumentList;
+ var name = readNode() as Identifier;
+ var constructorName = _readOptionalNode() as SimpleIdentifier?;
+ var arguments = _readOptionalNode() as ArgumentList?;
return astFactory.annotation(
Tokens.AT,
name,
@@ -289,7 +288,7 @@
AssertInitializer _readAssertInitializer() {
var condition = readNode() as Expression;
- var message = _readOptionalNode() as Expression;
+ var message = _readOptionalNode() as Expression?;
return astFactory.assertInitializer(
Tokens.ASSERT,
Tokens.OPEN_PAREN,
@@ -350,11 +349,11 @@
var codeLength = _readInformativeUint30();
var documentationTokenIndexList = _readUint30List();
- var typeParameters = _readOptionalNode() as TypeParameterList;
- var extendsClause = _readOptionalNode() as ExtendsClause;
- var withClause = _readOptionalNode() as WithClause;
- var implementsClause = _readOptionalNode() as ImplementsClause;
- var nativeClause = _readOptionalNode() as NativeClause;
+ var typeParameters = _readOptionalNode() as TypeParameterList?;
+ var extendsClause = _readOptionalNode() as ExtendsClause?;
+ var withClause = _readOptionalNode() as WithClause?;
+ var implementsClause = _readOptionalNode() as ImplementsClause?;
+ var nativeClause = _readOptionalNode() as NativeClause?;
var name = readNode() as SimpleIdentifier;
var metadata = _readNodeList<Annotation>();
@@ -393,10 +392,10 @@
var codeOffset = _readInformativeUint30();
var codeLength = _readInformativeUint30();
- var typeParameters = _readOptionalNode() as TypeParameterList;
+ var typeParameters = _readOptionalNode() as TypeParameterList?;
var superClass = readNode() as TypeName;
var withClause = readNode() as WithClause;
- var implementsClause = _readOptionalNode() as ImplementsClause;
+ var implementsClause = _readOptionalNode() as ImplementsClause?;
var name = readNode() as SimpleIdentifier;
var metadata = _readNodeList<Annotation>();
var documentationTokenIndexList = _readUint30List();
@@ -443,7 +442,7 @@
Configuration _readConfiguration() {
var flags = _readByte();
var name = readNode() as DottedName;
- var value = _readOptionalNode() as StringLiteral;
+ var value = _readOptionalNode() as StringLiteral?;
var uri = readNode() as StringLiteral;
return astFactory.configuration(
Tokens.IF,
@@ -465,8 +464,8 @@
var returnType = readNode() as SimpleIdentifier;
- Token period;
- SimpleIdentifier name;
+ Token? period;
+ SimpleIdentifier? name;
if (AstBinaryFlags.hasName(flags)) {
var periodOffset = _readInformativeUint30();
period = Token(TokenType.PERIOD, periodOffset);
@@ -475,7 +474,7 @@
var parameters = readNode() as FormalParameterList;
var initializers = _readNodeList<ConstructorInitializer>();
- var redirectedConstructor = _readOptionalNode() as ConstructorName;
+ var redirectedConstructor = _readOptionalNode() as ConstructorName?;
var metadata = _readNodeList<Annotation>();
var node = astFactory.constructorDeclaration(
@@ -527,7 +526,7 @@
ConstructorName _readConstructorName() {
var type = readNode() as TypeName;
- var name = _readOptionalNode() as SimpleIdentifier;
+ var name = _readOptionalNode() as SimpleIdentifier?;
return astFactory.constructorName(
type,
@@ -538,7 +537,7 @@
DeclaredIdentifier _readDeclaredIdentifier() {
var flags = _readByte();
- var type = _readOptionalNode() as TypeAnnotation;
+ var type = _readOptionalNode() as TypeAnnotation?;
var identifier = readNode() as SimpleIdentifier;
var metadata = _readNodeList<Annotation>();
return astFactory.declaredIdentifier(
@@ -562,7 +561,7 @@
var codeOffset = _readInformativeUint30();
var codeLength = _readInformativeUint30();
var parameter = readNode() as NormalFormalParameter;
- var defaultValue = _readOptionalNode() as Expression;
+ var defaultValue = _readOptionalNode() as Expression?;
ParameterKind kind;
if (AstBinaryFlags.isPositional(flags)) {
@@ -656,7 +655,7 @@
ExportDirective _readExportDirective() {
var combinators = _readNodeList<Combinator>();
var configurations = _readNodeList<Configuration>();
- var uri = readNode();
+ var uri = readNode() as StringLiteral;
var keywordOffset = _readInformativeUint30();
var metadata = _readNodeList<Annotation>();
@@ -692,9 +691,9 @@
var codeLength = _readInformativeUint30();
var documentationTokenIndexList = _readUint30List();
- var typeParameters = _readOptionalNode() as TypeParameterList;
+ var typeParameters = _readOptionalNode() as TypeParameterList?;
var extendedType = readNode() as TypeAnnotation;
- var name = _readOptionalNode() as SimpleIdentifier;
+ var name = _readOptionalNode() as SimpleIdentifier?;
var metadata = _readNodeList<Annotation>();
var node = astFactory.extensionDeclaration(
@@ -724,7 +723,7 @@
ExtensionOverride _readExtensionOverride() {
var extensionName = readNode() as Identifier;
- var typeArguments = _readOptionalNode() as TypeArgumentList;
+ var typeArguments = _readOptionalNode() as TypeArgumentList?;
var argumentList = readNode() as ArgumentList;
return astFactory.extensionOverride(
extensionName: extensionName,
@@ -768,9 +767,9 @@
}
FieldFormalParameter _readFieldFormalParameter() {
- var typeParameters = _readOptionalNode() as TypeParameterList;
- var type = _readOptionalNode() as TypeAnnotation;
- var formalParameters = _readOptionalNode() as FormalParameterList;
+ var typeParameters = _readOptionalNode() as TypeParameterList?;
+ var type = _readOptionalNode() as TypeAnnotation?;
+ var formalParameters = _readOptionalNode() as FormalParameterList?;
var flags = _readByte();
var codeOffset = _readInformativeUint30();
var codeLength = _readInformativeUint30();
@@ -855,7 +854,7 @@
ForPartsWithDeclarations _readForPartsWithDeclarations() {
var variables = readNode() as VariableDeclarationList;
- var condition = _readOptionalNode() as Expression;
+ var condition = _readOptionalNode() as Expression?;
var updaters = _readNodeList<Expression>();
return astFactory.forPartsWithDeclarations(
condition: condition,
@@ -867,8 +866,8 @@
}
ForPartsWithExpression _readForPartsWithExpression() {
- var initialization = _readOptionalNode() as Expression;
- var condition = _readOptionalNode() as Expression;
+ var initialization = _readOptionalNode() as Expression?;
+ var condition = _readOptionalNode() as Expression?;
var updaters = _readNodeList<Expression>();
return astFactory.forPartsWithExpression(
condition: condition,
@@ -885,7 +884,7 @@
var codeLength = _readInformativeUint30();
var documentationTokenIndexList = _readUint30List();
var functionExpression = readNode() as FunctionExpression;
- var returnType = _readOptionalNode() as TypeAnnotation;
+ var returnType = _readOptionalNode() as TypeAnnotation?;
var name = readNode() as SimpleIdentifier;
var metadata = _readNodeList<Annotation>();
@@ -918,8 +917,8 @@
FunctionExpression _readFunctionExpression() {
var flags = _readByte();
- var typeParameters = _readOptionalNode() as TypeParameterList;
- var formalParameters = _readOptionalNode() as FormalParameterList;
+ var typeParameters = _readOptionalNode() as TypeParameterList?;
+ var formalParameters = _readOptionalNode() as FormalParameterList?;
var body = _functionBodyForFlags(flags);
return astFactory.functionExpression(
@@ -931,7 +930,7 @@
FunctionExpressionInvocation _readFunctionExpressionInvocation() {
var function = readNode() as Expression;
- var typeArguments = _readOptionalNode() as TypeArgumentList;
+ var typeArguments = _readOptionalNode() as TypeArgumentList?;
var arguments = readNode() as ArgumentList;
return astFactory.functionExpressionInvocation(
function,
@@ -945,8 +944,8 @@
var codeLength = _readInformativeUint30();
var documentationTokenIndexList = _readUint30List();
- var typeParameters = _readOptionalNode() as TypeParameterList;
- var returnType = _readOptionalNode() as TypeAnnotation;
+ var typeParameters = _readOptionalNode() as TypeParameterList?;
+ var returnType = _readOptionalNode() as TypeAnnotation?;
var formalParameters = readNode() as FormalParameterList;
var name = readNode() as SimpleIdentifier;
var metadata = _readNodeList<Annotation>();
@@ -975,8 +974,8 @@
}
FunctionTypedFormalParameter _readFunctionTypedFormalParameter() {
- var typeParameters = _readOptionalNode() as TypeParameterList;
- var returnType = _readOptionalNode() as TypeAnnotation;
+ var typeParameters = _readOptionalNode() as TypeParameterList?;
+ var returnType = _readOptionalNode() as TypeAnnotation?;
var formalParameters = readNode() as FormalParameterList;
var flags = _readByte();
var codeOffset = _readInformativeUint30();
@@ -1004,8 +1003,8 @@
GenericFunctionType _readGenericFunctionType() {
var flags = _readByte();
- var typeParameters = _readOptionalNode() as TypeParameterList;
- var returnType = _readOptionalNode() as TypeAnnotation;
+ var typeParameters = _readOptionalNode() as TypeParameterList?;
+ var returnType = _readOptionalNode() as TypeAnnotation?;
var formalParameters = readNode() as FormalParameterList;
return astFactory.genericFunctionType(
@@ -1022,8 +1021,8 @@
var codeLength = _readInformativeUint30();
var documentationTokenIndexList = _readUint30List();
- var typeParameters = _readOptionalNode() as TypeParameterList;
- var type = _readOptionalNode();
+ var typeParameters = _readOptionalNode() as TypeParameterList?;
+ var type = readNode() as TypeAnnotation;
var name = readNode() as SimpleIdentifier;
var metadata = _readNodeList<Annotation>();
@@ -1061,7 +1060,7 @@
IfElement _readIfElement() {
var condition = readNode() as Expression;
var thenElement = readNode() as CollectionElement;
- var elseElement = _readOptionalNode() as CollectionElement;
+ var elseElement = _readOptionalNode() as CollectionElement?;
return astFactory.ifElement(
condition: condition,
elseElement: elseElement,
@@ -1081,7 +1080,7 @@
ImportDirective _readImportDirective() {
var flags = _readByte();
- SimpleIdentifier prefixIdentifier;
+ SimpleIdentifier? prefixIdentifier;
if (AstBinaryFlags.hasPrefix(flags)) {
var prefixName = _readStringReference();
var prefixOffset = _readInformativeUint30();
@@ -1092,7 +1091,7 @@
var combinators = _readNodeList<Combinator>();
var configurations = _readNodeList<Configuration>();
- var uri = readNode();
+ var uri = readNode() as StringLiteral;
var keywordOffset = _readInformativeUint30();
var metadata = _readNodeList<Annotation>();
@@ -1123,15 +1122,26 @@
IndexExpression _readIndexExpression() {
var flags = _readByte();
- var target = _readOptionalNode() as Expression;
+ var target = _readOptionalNode() as Expression?;
var index = readNode() as Expression;
- return astFactory.indexExpressionForTarget2(
- target: target,
- question: AstBinaryFlags.hasQuestion(flags) ? Tokens.QUESTION : null,
- leftBracket: Tokens.OPEN_SQUARE_BRACKET,
- index: index,
- rightBracket: Tokens.CLOSE_SQUARE_BRACKET,
- )..period = AstBinaryFlags.hasPeriod(flags) ? Tokens.PERIOD_PERIOD : null;
+ // TODO(scheglov) Is this clumsy?
+ if (target != null) {
+ return astFactory.indexExpressionForTarget2(
+ target: target,
+ question: AstBinaryFlags.hasQuestion(flags) ? Tokens.QUESTION : null,
+ leftBracket: Tokens.OPEN_SQUARE_BRACKET,
+ index: index,
+ rightBracket: Tokens.CLOSE_SQUARE_BRACKET,
+ )..period = AstBinaryFlags.hasPeriod(flags) ? Tokens.PERIOD_PERIOD : null;
+ } else {
+ return astFactory.indexExpressionForCascade2(
+ period: Tokens.PERIOD_PERIOD,
+ question: AstBinaryFlags.hasQuestion(flags) ? Tokens.QUESTION : null,
+ leftBracket: Tokens.OPEN_SQUARE_BRACKET,
+ index: index,
+ rightBracket: Tokens.CLOSE_SQUARE_BRACKET,
+ );
+ }
}
int _readInformativeUint30() {
@@ -1141,7 +1151,7 @@
return 0;
}
- Uint32List _readInformativeUint30List() {
+ Uint32List? _readInformativeUint30List() {
if (_withInformative) {
return _readUint30List();
}
@@ -1228,7 +1238,7 @@
LibraryDirective _readLibraryDirective() {
var documentationTokenIndexList = _readUint30List();
- var name = readNode();
+ var name = readNode() as LibraryIdentifier;
var keywordOffset = _readInformativeUint30();
var metadata = _readNodeList<Annotation>();
@@ -1238,7 +1248,7 @@
KeywordToken(Keyword.LIBRARY, keywordOffset),
name,
Tokens.SEMICOLON,
- );
+ ) as LibraryDirectiveImpl;
SummaryDataForLibraryDirective(
_unitReader,
node,
@@ -1256,7 +1266,7 @@
ListLiteral _readListLiteral() {
var flags = _readByte();
- var typeArguments = _readOptionalNode();
+ var typeArguments = _readOptionalNode() as TypeArgumentList?;
var elements = _readNodeList<CollectionElement>();
return astFactory.listLiteral(
@@ -1282,9 +1292,9 @@
var documentationTokenIndexList = _readUint30List();
var name = readNode() as SimpleIdentifier;
- var typeParameters = _readOptionalNode() as TypeParameterList;
- var returnType = _readOptionalNode() as TypeAnnotation;
- var formalParameters = _readOptionalNode() as FormalParameterList;
+ var typeParameters = _readOptionalNode() as TypeParameterList?;
+ var returnType = _readOptionalNode() as TypeAnnotation?;
+ var formalParameters = _readOptionalNode() as FormalParameterList?;
var metadata = _readNodeList<Annotation>();
var body = _functionBodyForFlags(flags);
@@ -1321,9 +1331,9 @@
MethodInvocation _readMethodInvocation() {
var flags = _readByte();
- var target = _readOptionalNode() as Expression;
+ var target = _readOptionalNode() as Expression?;
var methodName = readNode() as SimpleIdentifier;
- var typeArguments = _readOptionalNode() as TypeArgumentList;
+ var typeArguments = _readOptionalNode() as TypeArgumentList?;
var arguments = readNode() as ArgumentList;
return astFactory.methodInvocation(
@@ -1345,9 +1355,9 @@
var codeLength = _readInformativeUint30();
var documentationTokenIndexList = _readUint30List();
- var typeParameters = _readOptionalNode() as TypeParameterList;
- var onClause = _readOptionalNode() as OnClause;
- var implementsClause = _readOptionalNode() as ImplementsClause;
+ var typeParameters = _readOptionalNode() as TypeParameterList?;
+ var onClause = _readOptionalNode() as OnClause?;
+ var implementsClause = _readOptionalNode() as ImplementsClause?;
var name = readNode() as SimpleIdentifier;
var metadata = _readNodeList<Annotation>();
@@ -1391,18 +1401,13 @@
}
NativeClause _readNativeClause() {
- var name = readNode();
+ var name = _readOptionalNode() as StringLiteral?;
return astFactory.nativeClause(Tokens.NATIVE, name);
}
List<T> _readNodeList<T>() {
var length = _readUInt30();
- // TODO(scheglov) This will not work for null safety, rewrite.
- var result = List<T>.filled(length, null);
- for (var i = 0; i < length; ++i) {
- result[i] = readNode() as T;
- }
- return result;
+ return List.generate(length, (_) => readNode() as T);
}
NullLiteral _readNullLiteral() {
@@ -1416,7 +1421,7 @@
return astFactory.onClause(Tokens.ON, superclassConstraints);
}
- AstNode _readOptionalNode() {
+ AstNode? _readOptionalNode() {
if (_readOptionTag()) {
return readNode();
} else {
@@ -1445,7 +1450,7 @@
}
PartDirective _readPartDirective() {
- var uri = readNode();
+ var uri = readNode() as StringLiteral;
var keywordOffset = _readInformativeUint30();
var metadata = _readNodeList<Annotation>();
@@ -1459,8 +1464,8 @@
}
PartOfDirective _readPartOfDirective() {
- var libraryName = _readOptionalNode() as LibraryIdentifier;
- var uri = _readOptionalNode() as StringLiteral;
+ var libraryName = _readOptionalNode() as LibraryIdentifier?;
+ var uri = _readOptionalNode() as StringLiteral?;
var keywordOffset = _readInformativeUint30();
var metadata = _readNodeList<Annotation>();
@@ -1505,28 +1510,29 @@
PropertyAccess _readPropertyAccess() {
var flags = _readByte();
- var target = _readOptionalNode() as Expression;
+ var target = _readOptionalNode() as Expression?;
var propertyName = readNode() as SimpleIdentifier;
- return astFactory.propertyAccess(
- target,
- Tokens.choose(
- AstBinaryFlags.hasPeriod(flags),
- Tokens.PERIOD,
- AstBinaryFlags.hasPeriod2(flags),
- Tokens.PERIOD_PERIOD,
- ),
- propertyName,
- );
+
+ Token operator;
+ if (AstBinaryFlags.hasQuestion(flags)) {
+ operator = AstBinaryFlags.hasPeriod(flags)
+ ? Tokens.QUESTION_PERIOD
+ : Tokens.QUESTION_PERIOD_PERIOD;
+ } else {
+ operator = AstBinaryFlags.hasPeriod(flags)
+ ? Tokens.PERIOD
+ : Tokens.PERIOD_PERIOD;
+ }
+
+ return astFactory.propertyAccess(target, operator, propertyName);
}
RedirectingConstructorInvocation _readRedirectingConstructorInvocation() {
- var flags = _readByte();
- var constructorName = _readOptionalNode() as SimpleIdentifier;
+ var constructorName = _readOptionalNode() as SimpleIdentifier?;
var argumentList = readNode() as ArgumentList;
- var hasThis = AstBinaryFlags.hasThis(flags);
return astFactory.redirectingConstructorInvocation(
- hasThis ? Tokens.THIS : null,
- hasThis ? Tokens.PERIOD : null,
+ Tokens.THIS,
+ constructorName != null ? Tokens.PERIOD : null,
constructorName,
argumentList,
);
@@ -1534,7 +1540,7 @@
SetOrMapLiteral _readSetOrMapLiteral() {
var flags = _readByte();
- var typeArguments = _readOptionalNode() as TypeArgumentList;
+ var typeArguments = _readOptionalNode() as TypeArgumentList?;
var elements = _readNodeList<CollectionElement>();
var node = astFactory.setOrMapLiteral(
constKeyword: AstBinaryFlags.isConst(flags) ? Tokens.CONST : null,
@@ -1555,7 +1561,7 @@
}
SimpleFormalParameter _readSimpleFormalParameter() {
- var type = _readOptionalNode() as TypeAnnotation;
+ var type = _readOptionalNode() as TypeAnnotation?;
var flags = _readByte();
var codeOffset = _readInformativeUint30();
var codeLength = _readInformativeUint30();
@@ -1627,7 +1633,7 @@
}
SuperConstructorInvocation _readSuperConstructorInvocation() {
- var constructorName = _readOptionalNode() as SimpleIdentifier;
+ var constructorName = _readOptionalNode() as SimpleIdentifier?;
var argumentList = readNode() as ArgumentList;
return astFactory.superConstructorInvocation(
Tokens.SUPER,
@@ -1698,7 +1704,7 @@
TypeName _readTypeName() {
var flags = _readByte();
var name = readNode() as Identifier;
- var typeArguments = _readOptionalNode() as TypeArgumentList;
+ var typeArguments = _readOptionalNode() as TypeArgumentList?;
return astFactory.typeName(
name,
@@ -1710,8 +1716,8 @@
TypeParameter _readTypeParameter() {
var codeOffset = _readInformativeUint30();
var codeLength = _readInformativeUint30();
- var name = readNode() as Identifier;
- var bound = _readOptionalNode() as TypeAnnotation;
+ var name = readNode() as SimpleIdentifier;
+ var bound = _readOptionalNode() as TypeAnnotation?;
var metadata = _readNodeList<Annotation>();
var node = astFactory.typeParameter(
@@ -1774,7 +1780,7 @@
VariableDeclaration _readVariableDeclaration() {
var flags = _readByte();
var name = readNode() as SimpleIdentifier;
- var initializer = _readOptionalNode() as Expression;
+ var initializer = _readOptionalNode() as Expression?;
var node = astFactory.variableDeclaration(
name,
@@ -1789,7 +1795,7 @@
VariableDeclarationList _readVariableDeclarationList() {
var flags = _readByte();
- var type = _readOptionalNode() as TypeAnnotation;
+ var type = _readOptionalNode() as TypeAnnotation?;
var variables = _readNodeList<VariableDeclaration>();
var metadata = _readNodeList<Annotation>();
diff --git a/pkg/analyzer/lib/src/summary2/ast_binary_tokens.dart b/pkg/analyzer/lib/src/summary2/ast_binary_tokens.dart
index a9a8a69..8ac8435 100644
--- a/pkg/analyzer/lib/src/summary2/ast_binary_tokens.dart
+++ b/pkg/analyzer/lib/src/summary2/ast_binary_tokens.dart
@@ -78,6 +78,10 @@
static final PERIOD_PERIOD_PERIOD_QUESTION =
TokenFactory.tokenFromType(TokenType.PERIOD_PERIOD_PERIOD_QUESTION);
static final QUESTION = TokenFactory.tokenFromType(TokenType.QUESTION);
+ static final QUESTION_PERIOD =
+ TokenFactory.tokenFromType(TokenType.QUESTION_PERIOD);
+ static final QUESTION_PERIOD_PERIOD =
+ TokenFactory.tokenFromType(TokenType.QUESTION_PERIOD_PERIOD);
static final REQUIRED = TokenFactory.tokenFromKeyword(Keyword.REQUIRED);
static final RETHROW = TokenFactory.tokenFromKeyword(Keyword.RETHROW);
static final RETURN = TokenFactory.tokenFromKeyword(Keyword.RETURN);
@@ -100,11 +104,11 @@
static final WHILE = TokenFactory.tokenFromKeyword(Keyword.WHILE);
static final YIELD = TokenFactory.tokenFromKeyword(Keyword.YIELD);
- static Token choose(bool if1, Token then1, bool if2, Token then2,
- [bool if3, Token then3]) {
+ static Token? choose(bool if1, Token then1, bool if2, Token then2,
+ [bool? if3, Token? then3]) {
if (if1) return then1;
if (if2) return then2;
- if (if2 == true) return then3;
+ if (if3 == true) return then3!;
return null;
}
diff --git a/pkg/analyzer/lib/src/summary2/ast_binary_writer.dart b/pkg/analyzer/lib/src/summary2/ast_binary_writer.dart
index 16e1177..ff0a516 100644
--- a/pkg/analyzer/lib/src/summary2/ast_binary_writer.dart
+++ b/pkg/analyzer/lib/src/summary2/ast_binary_writer.dart
@@ -19,7 +19,6 @@
import 'package:analyzer/src/summary2/data_writer.dart';
import 'package:analyzer/src/summary2/tokens_writer.dart';
import 'package:analyzer/src/task/inference_error.dart';
-import 'package:meta/meta.dart';
/// Serializer of fully resolved ASTs.
class AstBinaryWriter extends ThrowingAstVisitor<void> {
@@ -27,7 +26,7 @@
final BufferedSink _sink;
final StringIndexer _stringIndexer;
final int Function() _getNextResolutionIndex;
- final ResolutionSink _resolutionSink;
+ final ResolutionSink? _resolutionSink;
final bool _shouldWriteResolution;
/// TODO(scheglov) Keep it private, and write here, similarly as we do
@@ -39,12 +38,12 @@
int _nextUnnamedExtensionId = 0;
AstBinaryWriter({
- @required bool withInformative,
- @required BufferedSink sink,
- @required StringIndexer stringIndexer,
- @required int Function() getNextResolutionIndex,
- @required ResolutionSink resolutionSink,
- }) : _withInformative = withInformative,
+ required bool withInformative,
+ required BufferedSink sink,
+ required StringIndexer stringIndexer,
+ required int Function() getNextResolutionIndex,
+ required ResolutionSink? resolutionSink,
+ }) : _withInformative = withInformative,
_sink = sink,
_stringIndexer = stringIndexer,
_getNextResolutionIndex = getNextResolutionIndex,
@@ -62,7 +61,7 @@
_writeByte(Tag.Annotation);
_writeMarker(MarkerTag.Annotation_name);
- _writeOptionalNode(node.name);
+ _writeNode(node.name);
_writeMarker(MarkerTag.Annotation_constructorName);
_writeOptionalNode(node.constructorName);
@@ -77,7 +76,7 @@
if (_shouldWriteResolution) {
_writeMarker(MarkerTag.Annotation_element);
- _resolutionSink.writeElement(node.element);
+ _resolutionSink!.writeElement(node.element);
}
}
@@ -130,15 +129,15 @@
if (_shouldWriteResolution) {
_writeMarker(MarkerTag.AssignmentExpression_staticElement);
- _resolutionSink.writeElement(node.staticElement);
+ _resolutionSink!.writeElement(node.staticElement);
_writeMarker(MarkerTag.AssignmentExpression_readElement);
- _resolutionSink.writeElement(node.readElement);
+ _resolutionSink!.writeElement(node.readElement);
_writeMarker(MarkerTag.AssignmentExpression_readType);
- _resolutionSink.writeType(node.readType);
+ _resolutionSink!.writeType(node.readType);
_writeMarker(MarkerTag.AssignmentExpression_writeElement);
- _resolutionSink.writeElement(node.writeElement);
+ _resolutionSink!.writeElement(node.writeElement);
_writeMarker(MarkerTag.AssignmentExpression_writeType);
- _resolutionSink.writeType(node.writeType);
+ _resolutionSink!.writeType(node.writeType);
}
_writeMarker(MarkerTag.AssignmentExpression_expression);
_storeExpression(node);
@@ -173,7 +172,7 @@
if (_shouldWriteResolution) {
_writeMarker(MarkerTag.BinaryExpression_staticElement);
- _resolutionSink.writeElement(node.staticElement);
+ _resolutionSink!.writeElement(node.staticElement);
}
_writeMarker(MarkerTag.BinaryExpression_expression);
_storeExpression(node);
@@ -220,7 +219,7 @@
),
);
if (_shouldWriteResolution) {
- _resolutionSink.writeByte(node.declaredElement.isSimplyBounded ? 1 : 0);
+ _resolutionSink!.writeByte(node.declaredElement!.isSimplyBounded ? 1 : 0);
}
_writeInformativeUint30(node.offset);
@@ -249,7 +248,7 @@
_hasConstConstructor = false;
if (_shouldWriteResolution) {
- _resolutionSink.localElements.popScope();
+ _resolutionSink!.localElements.popScope();
}
// TODO(scheglov) write member index
@@ -285,7 +284,7 @@
),
);
if (_shouldWriteResolution) {
- _resolutionSink.writeByte(node.declaredElement.isSimplyBounded ? 1 : 0);
+ _resolutionSink!.writeByte(node.declaredElement!.isSimplyBounded ? 1 : 0);
}
_writeInformativeUint30(node.offset);
_writeInformativeUint30(node.length);
@@ -304,16 +303,16 @@
_writeDocumentationCommentString(node.documentationComment);
_writeUInt30(resolutionIndex);
if (_shouldWriteResolution) {
- _resolutionSink.localElements.popScope();
+ _resolutionSink!.localElements.popScope();
}
}
@override
void visitCompilationUnit(CompilationUnit node) {
var nodeImpl = node as CompilationUnitImpl;
- _writeLanguageVersion(nodeImpl.languageVersion);
+ _writeLanguageVersion(nodeImpl.languageVersion!);
_writeFeatureSet(node.featureSet);
- _writeLineInfo(node.lineInfo);
+ _writeLineInfo(node.lineInfo!);
_writeUInt30(_withInformative ? node.length : 0);
_writeNodeList(node.directives);
for (var declaration in node.declarations) {
@@ -384,16 +383,16 @@
_writeMarker(MarkerTag.ConstructorDeclaration_returnType);
_writeNode(node.returnType);
if (node.period != null) {
- _writeInformativeUint30(node.period.offset);
- _writeDeclarationName(node.name);
+ _writeInformativeUint30(node.period!.offset);
+ _writeDeclarationName(node.name!);
}
_writeMarker(MarkerTag.ConstructorDeclaration_parameters);
_writeNode(node.parameters);
if (_shouldWriteResolution) {
- _resolutionSink.localElements.pushScope();
+ _resolutionSink!.localElements.pushScope();
for (var parameter in node.parameters.parameters) {
- _resolutionSink.localElements.declare(parameter.declaredElement);
+ _resolutionSink!.localElements.declare(parameter.declaredElement!);
}
}
@@ -407,7 +406,7 @@
}
if (_shouldWriteResolution) {
- _resolutionSink.localElements.popScope();
+ _resolutionSink!.localElements.popScope();
}
_writeMarker(MarkerTag.ConstructorDeclaration_redirectedConstructor);
@@ -444,7 +443,7 @@
// We parse it as a `TypeName(PrefixedIdentifier)`.
// But when we resolve, we rewrite it.
// We need to inform the applier about the right shape of the AST.
- _resolutionSink.writeByte(node.name != null ? 1 : 0);
+ _resolutionSink!.writeByte(node.name != null ? 1 : 0);
}
_writeMarker(MarkerTag.ConstructorName_type);
@@ -454,7 +453,7 @@
if (_shouldWriteResolution) {
_writeMarker(MarkerTag.ConstructorName_staticElement);
- _resolutionSink.writeElement(node.staticElement);
+ _resolutionSink!.writeElement(node.staticElement);
}
_writeMarker(MarkerTag.ConstructorName_end);
@@ -569,7 +568,7 @@
if (_shouldWriteResolution) {
_writeMarker(MarkerTag.ExportDirective_exportedLibrary);
- _resolutionSink.writeElement(
+ _resolutionSink!.writeElement(
(node.element as ExportElementImpl).exportedLibrary,
);
}
@@ -611,7 +610,7 @@
_writeNodeList(node.members);
if (_shouldWriteResolution) {
- _resolutionSink.localElements.popScope();
+ _resolutionSink!.localElements.popScope();
}
// TODO(scheglov) write member index
@@ -637,7 +636,7 @@
_writeByte(Tag.ExtensionOverride);
if (_shouldWriteResolution) {
- _resolutionSink.writeByte(MethodInvocationRewriteTag.extensionOverride);
+ _resolutionSink!.writeByte(MethodInvocationRewriteTag.extensionOverride);
}
_writeMarker(MarkerTag.ExtensionOverride_extensionName);
@@ -647,7 +646,7 @@
_writeMarker(MarkerTag.ExtensionOverride_argumentList);
_writeNode(node.argumentList);
_writeMarker(MarkerTag.ExtensionOverride_extendedType);
- _resolutionSink.writeType(node.extendedType);
+ _resolutionSink!.writeType(node.extendedType);
_writeMarker(MarkerTag.ExtensionOverride_end);
// TODO(scheglov) typeArgumentTypes?
}
@@ -713,7 +712,7 @@
_writeMarker(MarkerTag.FieldFormalParameter_end);
if (_shouldWriteResolution) {
- _resolutionSink.localElements.popScope();
+ _resolutionSink!.localElements.popScope();
}
}
@@ -818,8 +817,8 @@
if (_shouldWriteResolution) {
_writeMarker(MarkerTag.FunctionDeclaration_returnTypeType);
- _writeActualReturnType(node.declaredElement.returnType);
- _resolutionSink.localElements.popScope();
+ _writeActualReturnType(node.declaredElement!.returnType);
+ _resolutionSink!.localElements.popScope();
}
_writeMarker(MarkerTag.FunctionDeclaration_end);
@@ -851,7 +850,7 @@
_writeByte(Tag.FunctionExpressionInvocation);
if (_shouldWriteResolution) {
- _resolutionSink
+ _resolutionSink!
.writeByte(MethodInvocationRewriteTag.functionExpressionInvocation);
}
@@ -899,10 +898,10 @@
_writeActualReturnType(element.function.returnType);
// TODO(scheglov) pack into one byte
_writeMarker(MarkerTag.FunctionTypeAlias_flags);
- _resolutionSink.writeByte(element.isSimplyBounded ? 1 : 0);
- _resolutionSink.writeByte(element.hasSelfReference ? 1 : 0);
+ _resolutionSink!.writeByte(element.isSimplyBounded ? 1 : 0);
+ _resolutionSink!.writeByte(element.hasSelfReference ? 1 : 0);
- _resolutionSink.localElements.popScope();
+ _resolutionSink!.localElements.popScope();
}
_writeMarker(MarkerTag.FunctionTypeAlias_end);
@@ -926,7 +925,7 @@
_writeMarker(MarkerTag.FunctionTypedFormalParameter_end);
if (_shouldWriteResolution) {
- _resolutionSink.localElements.popScope();
+ _resolutionSink!.localElements.popScope();
}
}
@@ -951,8 +950,8 @@
if (_shouldWriteResolution) {
_writeMarker(MarkerTag.GenericFunctionType_type);
- _resolutionSink.writeType(node.type);
- _resolutionSink.localElements.popScope();
+ _resolutionSink!.writeType(node.type);
+ _resolutionSink!.localElements.popScope();
}
_writeMarker(MarkerTag.GenericFunctionType_end);
@@ -981,7 +980,7 @@
_writeMarker(MarkerTag.GenericTypeAlias_typeParameters);
_writeOptionalNode(node.typeParameters);
_writeMarker(MarkerTag.GenericTypeAlias_type);
- _writeOptionalNode(node.type);
+ _writeNode(node.type);
_writeMarker(MarkerTag.GenericTypeAlias_typeAlias);
_storeTypeAlias(node);
@@ -989,9 +988,9 @@
var element = node.declaredElement as TypeAliasElementImpl;
// TODO(scheglov) pack into one byte
_writeMarker(MarkerTag.GenericTypeAlias_flags);
- _resolutionSink.writeByte(element.isSimplyBounded ? 1 : 0);
- _resolutionSink.writeByte(element.hasSelfReference ? 1 : 0);
- _resolutionSink.localElements.popScope();
+ _resolutionSink!.writeByte(element.isSimplyBounded ? 1 : 0);
+ _resolutionSink!.writeByte(element.hasSelfReference ? 1 : 0);
+ _resolutionSink!.localElements.popScope();
}
_writeMarker(MarkerTag.GenericTypeAlias_end);
@@ -1052,7 +1051,7 @@
if (_shouldWriteResolution) {
var element = node.element as ImportElementImpl;
_writeMarker(MarkerTag.ImportDirective_importedLibrary);
- _resolutionSink.writeElement(element.importedLibrary);
+ _resolutionSink!.writeElement(element.importedLibrary);
}
_writeMarker(MarkerTag.ImportDirective_end);
@@ -1073,7 +1072,7 @@
_writeNode(node.index);
if (_shouldWriteResolution) {
_writeMarker(MarkerTag.IndexExpression_staticElement);
- _resolutionSink.writeElement(node.staticElement);
+ _resolutionSink!.writeElement(node.staticElement);
}
_writeMarker(MarkerTag.IndexExpression_expression);
_storeExpression(node);
@@ -1086,11 +1085,11 @@
if (_shouldWriteResolution) {
if (node.constructorName.name != null) {
- _resolutionSink.writeByte(
+ _resolutionSink!.writeByte(
MethodInvocationRewriteTag.instanceCreationExpression_withName,
);
} else {
- _resolutionSink.writeByte(
+ _resolutionSink!.writeByte(
MethodInvocationRewriteTag.instanceCreationExpression_withoutName,
);
}
@@ -1244,9 +1243,9 @@
_writeUInt30(
AstBinaryFlags.encode(
isAbstract: node.body is EmptyFunctionBody,
- isAsync: node.body?.isAsynchronous ?? false,
+ isAsync: node.body.isAsynchronous,
isExternal: node.externalKeyword != null,
- isGenerator: node.body?.isGenerator ?? false,
+ isGenerator: node.body.isGenerator,
isGet: node.isGetter,
isNative: node.body is NativeFunctionBody,
isOperator: node.operatorKeyword != null,
@@ -1285,11 +1284,11 @@
// TODO(scheglov) move this flag into ClassElementImpl?
if (element is MethodElementImpl) {
_writeMarker(MarkerTag.MethodDeclaration_flags);
- _resolutionSink.writeByte(
+ _resolutionSink!.writeByte(
element.isOperatorEqualWithParameterTypeFromObject ? 1 : 0,
);
}
- _resolutionSink.localElements.popScope();
+ _resolutionSink!.localElements.popScope();
}
_writeMarker(MarkerTag.MethodDeclaration_end);
@@ -1300,7 +1299,7 @@
_writeByte(Tag.MethodInvocation);
if (_shouldWriteResolution) {
- _resolutionSink.writeByte(MethodInvocationRewriteTag.none);
+ _resolutionSink!.writeByte(MethodInvocationRewriteTag.none);
}
_writeByte(
@@ -1327,8 +1326,8 @@
if (_shouldWriteResolution) {
var element = node.declaredElement as MixinElementImpl;
- _resolutionSink.writeByte(element.isSimplyBounded ? 1 : 0);
- _resolutionSink.writeStringList(element.superInvokedNames);
+ _resolutionSink!.writeByte(element.isSimplyBounded ? 1 : 0);
+ _resolutionSink!.writeStringList(element.superInvokedNames);
}
_writeInformativeUint30(node.offset);
@@ -1353,7 +1352,7 @@
_hasConstConstructor = false;
if (_shouldWriteResolution) {
- _resolutionSink.localElements.popScope();
+ _resolutionSink!.localElements.popScope();
}
// TODO(scheglov) write member index
@@ -1387,7 +1386,7 @@
void visitNativeClause(NativeClause node) {
_writeByte(Tag.NativeClause);
_writeMarker(MarkerTag.NativeClause_name);
- _writeNode(node.name);
+ _writeOptionalNode(node.name);
_writeMarker(MarkerTag.NativeClause_end);
}
@@ -1445,16 +1444,16 @@
if (_shouldWriteResolution) {
_writeMarker(MarkerTag.PostfixExpression_staticElement);
- _resolutionSink.writeElement(node.staticElement);
+ _resolutionSink!.writeElement(node.staticElement);
if (operatorToken.isIncrementOperator) {
_writeMarker(MarkerTag.PostfixExpression_readElement);
- _resolutionSink.writeElement(node.readElement);
+ _resolutionSink!.writeElement(node.readElement);
_writeMarker(MarkerTag.PostfixExpression_readType);
- _resolutionSink.writeType(node.readType);
+ _resolutionSink!.writeType(node.readType);
_writeMarker(MarkerTag.PostfixExpression_writeElement);
- _resolutionSink.writeElement(node.writeElement);
+ _resolutionSink!.writeElement(node.writeElement);
_writeMarker(MarkerTag.PostfixExpression_writeType);
- _resolutionSink.writeType(node.writeType);
+ _resolutionSink!.writeType(node.writeType);
}
}
_writeMarker(MarkerTag.PostfixExpression_expression);
@@ -1489,16 +1488,16 @@
if (_shouldWriteResolution) {
_writeMarker(MarkerTag.PrefixExpression_staticElement);
- _resolutionSink.writeElement(node.staticElement);
+ _resolutionSink!.writeElement(node.staticElement);
if (operatorToken.isIncrementOperator) {
_writeMarker(MarkerTag.PrefixExpression_readElement);
- _resolutionSink.writeElement(node.readElement);
+ _resolutionSink!.writeElement(node.readElement);
_writeMarker(MarkerTag.PrefixExpression_readType);
- _resolutionSink.writeType(node.readType);
+ _resolutionSink!.writeType(node.readType);
_writeMarker(MarkerTag.PrefixExpression_writeElement);
- _resolutionSink.writeElement(node.writeElement);
+ _resolutionSink!.writeElement(node.writeElement);
_writeMarker(MarkerTag.PrefixExpression_writeType);
- _resolutionSink.writeType(node.writeType);
+ _resolutionSink!.writeType(node.writeType);
}
}
@@ -1510,12 +1509,19 @@
@override
void visitPropertyAccess(PropertyAccess node) {
_writeByte(Tag.PropertyAccess);
+
+ var operatorType = node.operator.type;
_writeByte(
AstBinaryFlags.encode(
- hasPeriod: node.operator?.type == TokenType.PERIOD,
- hasPeriod2: node.operator?.type == TokenType.PERIOD_PERIOD,
+ hasPeriod: operatorType == TokenType.PERIOD ||
+ operatorType == TokenType.QUESTION_PERIOD,
+ hasPeriod2: operatorType == TokenType.PERIOD_PERIOD ||
+ operatorType == TokenType.QUESTION_PERIOD_PERIOD,
+ hasQuestion: operatorType == TokenType.QUESTION_PERIOD ||
+ operatorType == TokenType.QUESTION_PERIOD_PERIOD,
),
);
+
_writeMarker(MarkerTag.PropertyAccess_target);
_writeOptionalNode(node.target);
_writeMarker(MarkerTag.PropertyAccess_propertyName);
@@ -1531,19 +1537,13 @@
RedirectingConstructorInvocation node) {
_writeByte(Tag.RedirectingConstructorInvocation);
- _writeByte(
- AstBinaryFlags.encode(
- hasThis: node.thisKeyword != null,
- ),
- );
-
_writeMarker(MarkerTag.RedirectingConstructorInvocation_constructorName);
_writeOptionalNode(node.constructorName);
_writeMarker(MarkerTag.RedirectingConstructorInvocation_argumentList);
_writeNode(node.argumentList);
if (_shouldWriteResolution) {
_writeMarker(MarkerTag.RedirectingConstructorInvocation_staticElement);
- _resolutionSink.writeElement(node.staticElement);
+ _resolutionSink!.writeElement(node.staticElement);
}
_writeMarker(MarkerTag.RedirectingConstructorInvocation_end);
}
@@ -1562,7 +1562,7 @@
var isMapBit = node.isMap ? (1 << 0) : 0;
var isSetBit = node.isSet ? (1 << 1) : 0;
_writeMarker(MarkerTag.SetOrMapLiteral_flags);
- _resolutionSink.writeByte(isMapBit | isSetBit);
+ _resolutionSink!.writeByte(isMapBit | isSetBit);
}
_writeMarker(MarkerTag.SetOrMapLiteral_typeArguments);
@@ -1594,7 +1594,7 @@
if (_shouldWriteResolution) {
var element = node.declaredElement as ParameterElementImpl;
_writeMarker(MarkerTag.SimpleFormalParameter_flags);
- _resolutionSink.writeByte(element.inheritsCovariant ? 1 : 0);
+ _resolutionSink!.writeByte(element.inheritsCovariant ? 1 : 0);
}
_writeMarker(MarkerTag.SimpleFormalParameter_end);
}
@@ -1606,7 +1606,7 @@
_writeInformativeUint30(node.offset);
if (_shouldWriteResolution) {
_writeMarker(MarkerTag.SimpleIdentifier_staticElement);
- _resolutionSink.writeElement(node.staticElement);
+ _resolutionSink!.writeElement(node.staticElement);
// TODO(scheglov) It is inefficient to write many null types.
}
_writeMarker(MarkerTag.SimpleIdentifier_expression);
@@ -1653,7 +1653,7 @@
_writeNode(node.argumentList);
if (_shouldWriteResolution) {
_writeMarker(MarkerTag.SuperConstructorInvocation_staticElement);
- _resolutionSink.writeElement(node.staticElement);
+ _resolutionSink!.writeElement(node.staticElement);
}
_writeMarker(MarkerTag.SuperConstructorInvocation_end);
}
@@ -1761,7 +1761,7 @@
if (_shouldWriteResolution) {
_writeMarker(MarkerTag.TypeName_type);
- _resolutionSink.writeType(node.type);
+ _resolutionSink!.writeType(node.type);
}
_writeMarker(MarkerTag.TypeName_end);
}
@@ -1780,11 +1780,11 @@
if (_shouldWriteResolution) {
var element = node.declaredElement as TypeParameterElementImpl;
_writeMarker(MarkerTag.TypeParameter_variance);
- _resolutionSink.writeByte(
+ _resolutionSink!.writeByte(
_encodeVariance(element),
);
_writeMarker(MarkerTag.TypeParameter_defaultType);
- _resolutionSink.writeType(element.defaultType);
+ _resolutionSink!.writeType(element.defaultType);
}
_writeMarker(MarkerTag.TypeParameter_end);
}
@@ -1811,16 +1811,16 @@
// TODO(scheglov) Enforce not null, remove `?` in `?.type` below.
var element = node.declaredElement as VariableElementImpl;
_writeMarker(MarkerTag.VariableDeclaration_type);
- _writeActualType(element?.type);
+ _writeActualType(element.type);
_writeMarker(MarkerTag.VariableDeclaration_inferenceError);
_writeTopLevelInferenceError(element);
if (element is FieldElementImpl) {
_writeMarker(MarkerTag.VariableDeclaration_inheritsCovariant);
- _resolutionSink.writeByte(element.inheritsCovariant ? 1 : 0);
+ _resolutionSink!.writeByte(element.inheritsCovariant ? 1 : 0);
}
}
- Expression initializerToWrite;
+ Expression? initializerToWrite;
if (_shouldStoreVariableInitializers) {
var initializer = node.initializer;
if (_isSerializableExpression(initializer)) {
@@ -1860,19 +1860,19 @@
_writeMarker(MarkerTag.WithClause_end);
}
- void _pushScopeTypeParameters(TypeParameterList node) {
+ void _pushScopeTypeParameters(TypeParameterList? node) {
if (!_shouldWriteResolution) {
return;
}
- _resolutionSink.localElements.pushScope();
+ _resolutionSink!.localElements.pushScope();
if (node == null) {
return;
}
for (var typeParameter in node.typeParameters) {
- _resolutionSink.localElements.declare(typeParameter.declaredElement);
+ _resolutionSink!.localElements.declare(typeParameter.declaredElement!);
}
}
@@ -1903,7 +1903,7 @@
void _storeExpression(Expression node) {
if (_shouldWriteResolution) {
_writeMarker(MarkerTag.Expression_staticType);
- _resolutionSink.writeType(node.staticType);
+ _resolutionSink!.writeType(node.staticType);
}
}
@@ -1920,7 +1920,7 @@
void _storeFormalParameter(FormalParameter node) {
if (_shouldWriteResolution) {
_writeMarker(MarkerTag.FormalParameter_type);
- _writeActualType(node.declaredElement.type);
+ _writeActualType(node.declaredElement!.type);
}
}
@@ -1972,7 +1972,7 @@
void _storeNormalFormalParameter(
NormalFormalParameter node,
- Token keyword, {
+ Token? keyword, {
bool hasQuestion = false,
}) {
_writeByte(
@@ -1994,7 +1994,7 @@
_writeMarker(MarkerTag.NormalFormalParameter_metadata);
_writeNodeList(node.metadata);
if (node.identifier != null) {
- _writeDeclarationName(node.identifier);
+ _writeDeclarationName(node.identifier!);
}
_writeMarker(MarkerTag.NormalFormalParameter_formalParameter);
_storeFormalParameter(node);
@@ -2015,12 +2015,12 @@
void _writeActualReturnType(DartType type) {
// TODO(scheglov) Check for `null` when writing resolved AST.
- _resolutionSink.writeType(type);
+ _resolutionSink!.writeType(type);
}
- void _writeActualType(DartType type) {
+ void _writeActualType(DartType? type) {
// TODO(scheglov) Check for `null` when writing resolved AST.
- _resolutionSink.writeType(type);
+ _resolutionSink!.writeType(type);
}
void _writeByte(int byte) {
@@ -2034,10 +2034,10 @@
_writeUInt30(declaration.offset);
_writeByte(declaration.tag);
if (declaration.name != null) {
- _writeStringReference(declaration.name);
+ _writeStringReference(declaration.name!);
} else {
- _writeUInt30(declaration.fieldNames.length);
- for (var name in declaration.fieldNames) {
+ _writeUInt30(declaration.fieldNames!.length);
+ for (var name in declaration.fieldNames!) {
_writeStringReference(name);
}
}
@@ -2051,7 +2051,7 @@
}
/// We write tokens as a list, so this must be the last entity written.
- void _writeDocumentationCommentString(Comment node) {
+ void _writeDocumentationCommentString(Comment? node) {
if (node != null && _withInformative) {
var tokens = node.tokens;
_writeUInt30(tokens.length);
@@ -2122,7 +2122,7 @@
void _writeMarker(MarkerTag tag) {
if (enableDebugResolutionMarkers) {
if (_shouldWriteResolution) {
- _resolutionSink.writeUInt30(tag.index);
+ _resolutionSink!.writeUInt30(tag.index);
}
}
}
@@ -2138,7 +2138,7 @@
}
}
- void _writeOptionalDeclarationName(SimpleIdentifier node) {
+ void _writeOptionalDeclarationName(SimpleIdentifier? node) {
if (node == null) {
_writeByte(Tag.Nothing);
} else {
@@ -2147,7 +2147,7 @@
}
}
- void _writeOptionalNode(AstNode node) {
+ void _writeOptionalNode(AstNode? node) {
if (node == null) {
_writeByte(Tag.Nothing);
} else {
@@ -2157,13 +2157,12 @@
}
void _writeStringReference(String string) {
- assert(string != null);
var index = _stringIndexer[string];
_writeUInt30(index);
}
void _writeTopLevelInferenceError(ElementImpl element) {
- TopLevelInferenceError error;
+ TopLevelInferenceError? error;
if (element is MethodElementImpl) {
error = element.typeInferenceError;
} else if (element is PropertyInducingElementImpl) {
@@ -2173,10 +2172,10 @@
}
if (error != null) {
- _resolutionSink.writeByte(error.kind.index);
- _resolutionSink.writeStringList(error.arguments);
+ _resolutionSink!.writeByte(error.kind.index);
+ _resolutionSink!.writeStringList(error.arguments);
} else {
- _resolutionSink.writeByte(TopLevelInferenceErrorKind.none.index);
+ _resolutionSink!.writeByte(TopLevelInferenceErrorKind.none.index);
}
}
@@ -2231,7 +2230,7 @@
/// we know that it might be serialized and deserialized. For example
/// function expressions are problematic, and are not necessary to
/// deserialize, so we choose not to do this.
- static bool _isSerializableExpression(Expression node) {
+ static bool _isSerializableExpression(Expression? node) {
if (node == null) return false;
var visitor = _IsSerializableExpressionVisitor();
@@ -2244,12 +2243,12 @@
class _ClassMemberIndexItem {
final int offset;
final int tag;
- final String name;
- final List<String> fieldNames;
+ final String? name;
+ final List<String>? fieldNames;
_ClassMemberIndexItem({
- @required this.offset,
- @required this.tag,
+ required this.offset,
+ required this.tag,
this.name,
this.fieldNames,
});
@@ -2268,15 +2267,15 @@
class _UnitMemberIndexItem {
final int offset;
final int tag;
- final String name;
- final List<String> variableNames;
+ final String? name;
+ final List<String>? variableNames;
/// The absolute offset of the index of class members, `0` if not a class.
final int classIndexOffset;
_UnitMemberIndexItem({
- @required this.offset,
- @required this.tag,
+ required this.offset,
+ required this.tag,
this.name,
this.variableNames,
this.classIndexOffset = 0,
diff --git a/pkg/analyzer/lib/src/summary2/ast_resolver.dart b/pkg/analyzer/lib/src/summary2/ast_resolver.dart
index 2b88556..85a2151 100644
--- a/pkg/analyzer/lib/src/summary2/ast_resolver.dart
+++ b/pkg/analyzer/lib/src/summary2/ast_resolver.dart
@@ -6,6 +6,7 @@
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/scope.dart';
import 'package:analyzer/error/listener.dart';
+import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/dart/resolver/flow_analysis_visitor.dart';
import 'package:analyzer/src/dart/resolver/resolution_visitor.dart';
import 'package:analyzer/src/generated/resolver.dart';
@@ -14,7 +15,7 @@
/// Used to resolve some AST nodes - variable initializers, and annotations.
class AstResolver {
final Linker _linker;
- final CompilationUnitElement _unitElement;
+ final CompilationUnitElementImpl _unitElement;
final Scope _nameScope;
AstResolver(this._linker, this._unitElement, this._nameScope);
@@ -24,11 +25,11 @@
AstNode Function() getNode, {
bool buildElements = true,
bool isTopLevelVariableInitializer = false,
- ClassElement enclosingClassElement,
- ExecutableElement enclosingExecutableElement,
- FunctionBody enclosingFunctionBody,
+ ClassElement? enclosingClassElement,
+ ExecutableElement? enclosingExecutableElement,
+ FunctionBody? enclosingFunctionBody,
}) {
- var featureSet = node.thisOrAncestorOfType<CompilationUnit>().featureSet;
+ var featureSet = node.thisOrAncestorOfType<CompilationUnit>()!.featureSet;
var errorListener = AnalysisErrorListener.NULL_LISTENER;
if (buildElements) {
@@ -52,14 +53,15 @@
node.accept(variableResolverVisitor);
}
- FlowAnalysisHelper flowAnalysis;
+ FlowAnalysisHelper? flowAnalysis;
if (isTopLevelVariableInitializer) {
if (_unitElement.library.isNonNullableByDefault) {
flowAnalysis = FlowAnalysisHelper(
_unitElement.library.typeSystem,
false,
);
- flowAnalysis.topLevelDeclaration_enter(node.parent, null, null);
+ flowAnalysis.topLevelDeclaration_enter(
+ node.parent as Declaration, null, null);
}
}
diff --git a/pkg/analyzer/lib/src/summary2/ast_text_printer.dart b/pkg/analyzer/lib/src/summary2/ast_text_printer.dart
index 4e733f9..a5c3518 100644
--- a/pkg/analyzer/lib/src/summary2/ast_text_printer.dart
+++ b/pkg/analyzer/lib/src/summary2/ast_text_printer.dart
@@ -13,7 +13,7 @@
final StringBuffer _buffer;
final LineInfo _lineInfo;
- Token _last;
+ Token? _last;
int _lastEnd = 0;
int _lastEndLine = 0;
@@ -56,7 +56,7 @@
_tokenIfNot(node.condition.endToken.next, node.rightParenthesis);
node.message?.accept(this);
- _tokenIfNot(node.message?.endToken?.next, node.rightParenthesis);
+ _tokenIfNot(node.message?.endToken.next, node.rightParenthesis);
_token(node.rightParenthesis);
}
@@ -70,7 +70,7 @@
_tokenIfNot(node.condition.endToken.next, node.rightParenthesis);
node.message?.accept(this);
- _tokenIfNot(node.message?.endToken?.next, node.rightParenthesis);
+ _tokenIfNot(node.message?.endToken.next, node.rightParenthesis);
_token(node.rightParenthesis);
_token(node.semicolon);
@@ -164,7 +164,7 @@
node.name.accept(this);
node.typeParameters?.accept(this);
_token(node.equals);
- node.superclass?.accept(this);
+ node.superclass.accept(this);
node.withClause.accept(this);
node.implementsClause?.accept(this);
_token(node.semicolon);
@@ -207,14 +207,14 @@
_token(node.externalKeyword);
_token(node.constKeyword);
_token(node.factoryKeyword);
- node.returnType?.accept(this);
+ node.returnType.accept(this);
_token(node.period);
node.name?.accept(this);
node.parameters.accept(this);
_token(node.separator);
- _nodeList(node.initializers, node.body.beginToken);
+ _nodeList(node.initializers, node.body!.beginToken);
node.redirectedConstructor?.accept(this);
- node.body.accept(this);
+ node.body!.accept(this);
}
@override
@@ -308,7 +308,7 @@
_directive(node);
_token(node.keyword);
node.uri.accept(this);
- node.configurations?.accept(this);
+ node.configurations.accept(this);
_nodeList(node.combinators);
_token(node.semicolon);
}
@@ -349,7 +349,7 @@
@override
void visitExtensionOverride(ExtensionOverride node) {
node.extensionName.accept(this);
- node.typeArguments.accept(this);
+ node.typeArguments?.accept(this);
node.argumentList.accept(this);
}
@@ -412,10 +412,10 @@
parameter.accept(this);
- var itemSeparator = parameter.endToken.next;
+ var itemSeparator = parameter.endToken.next!;
if (itemSeparator != node.rightParenthesis) {
_token(itemSeparator);
- itemSeparator = itemSeparator.next;
+ itemSeparator = itemSeparator.next!;
}
if (itemSeparator == node.rightDelimiter) {
@@ -473,7 +473,7 @@
void visitFunctionExpression(FunctionExpression node) {
node.typeParameters?.accept(this);
node.parameters?.accept(this);
- node.body.accept(this);
+ node.body!.accept(this);
}
@override
@@ -563,7 +563,7 @@
_directive(node);
_token(node.keyword);
node.uri.accept(this);
- node.configurations?.accept(this);
+ node.configurations.accept(this);
_token(node.deferredKeyword);
_token(node.asKeyword);
node.prefix?.accept(this);
@@ -664,7 +664,7 @@
node.name.accept(this);
node.typeParameters?.accept(this);
node.parameters?.accept(this);
- node.body?.accept(this);
+ node.body.accept(this);
}
@override
@@ -698,7 +698,7 @@
@override
void visitNativeClause(NativeClause node) {
_token(node.nativeKeyword);
- node.name.accept(this);
+ node.name?.accept(this);
}
@override
@@ -941,7 +941,7 @@
// TODO (kallentu) : Clean up TypeParameterImpl casting once variance is
// added to the interface.
_token((node as TypeParameterImpl).varianceKeyword);
- node.name?.accept(this);
+ node.name.accept(this);
_token(node.extendsKeyword);
node.bound?.accept(this);
}
@@ -1029,7 +1029,7 @@
///
/// If the [endToken] is not `null`, print one token after every node,
/// unless it is the [endToken].
- void _nodeList(List<AstNode> nodeList, [Token endToken]) {
+ void _nodeList(List<AstNode> nodeList, [Token? endToken]) {
var length = nodeList.length;
for (var i = 0; i < length; ++i) {
var node = nodeList[i];
@@ -1047,13 +1047,13 @@
_token(node.covariantKeyword);
}
- void _token(Token token) {
+ void _token(Token? token) {
if (token == null) return;
if (_last != null) {
- if (_last.next != token) {
+ if (_last!.next != token) {
throw StateError(
- '|$_last| must be followed by |${_last.next}|, got |$token|',
+ '|$_last| must be followed by |${_last!.next}|, got |$token|',
);
}
}
@@ -1062,7 +1062,7 @@
if (token.precedingComments != null) {
var lastToken = _last;
_last = null;
- for (var c = token.precedingComments; c != null; c = c.next) {
+ for (Token? c = token.precedingComments; c != null; c = c.next) {
_token(c);
}
_last = lastToken;
@@ -1088,7 +1088,7 @@
_lastEndLine = endLocation.lineNumber - 1;
}
- void _tokenIfNot(Token maybe, Token ifNot) {
+ void _tokenIfNot(Token? maybe, Token ifNot) {
if (maybe == null) return;
if (maybe == ifNot) return;
_token(maybe);
diff --git a/pkg/analyzer/lib/src/summary2/binary_format_doc.dart b/pkg/analyzer/lib/src/summary2/binary_format_doc.dart
index 646328e..069e06e 100644
--- a/pkg/analyzer/lib/src/summary2/binary_format_doc.dart
+++ b/pkg/analyzer/lib/src/summary2/binary_format_doc.dart
@@ -8,7 +8,7 @@
/// The blob with libraries.
///
/// Items of [libraryOffsets] point here.
- List<AstLibrary> libraries;
+ List<AstLibrary>? libraries;
/// Pointers to libraries in the [libraries] blob.
///
@@ -17,73 +17,73 @@
/// we don't know where one library ends, and another starts.
///
/// TODO(scheglov) too complicated? Read all?
- List<Uint30> libraryOffsets;
+ List<Uint30>? libraryOffsets;
/// [stringTableOffset] points here.
- StringTableFormat stringTable;
+ StringTableFormat? stringTable;
/// We record `uint32` to know exactly the location of this field.
/// It is always at the end of the byte buffer `-4`.
- Uint32 librariesOffset;
+ Uint32? librariesOffset;
/// We record `uint32` to know exactly the location of this field.
/// It is always at the end of the byte buffer `-0`.
- Uint32 stringTableOffset;
+ Uint32? stringTableOffset;
}
class AstLibrary {
/// The name from the `library` directive, might be the empty string.
- StringRef name;
+ StringRef? name;
/// The offset `+1` of the name in the `library` directive.
/// So, `0` if absent, decoded then into `-1`.
- Uint30 nameOffset;
+ Uint30? nameOffset;
/// The length of the name in the `library` directive, `0` if absent.
- Uint30 nameLength;
+ Uint30? nameLength;
/// Offsets pointing at [AstUnitFormat.headerOffset].
- List<Uint30> unitOffsets;
+ List<Uint30>? unitOffsets;
}
class AstUnitFormat {
/// The header of the unit, read when create the reader.
/// [headerOffset] points here.
- AstUnitHeader header;
+ AstUnitHeader? header;
/// [AstUnitIndexItem.offset] from [indexOfMembers] points into here.
- Object declarations;
+ Object? declarations;
/// The offset of [header].
- Uint30 headerOffset;
+ Uint30? headerOffset;
/// The index of declarations in the unit.
- List<AstUnitIndexItem> indexOfMembers;
+ List<AstUnitIndexItem>? indexOfMembers;
}
class AstUnitHeader {
/// Four elements: package major/minor, override major/minor.
/// The override is `+1`, if `0` then no override.
- FormatUint32List languageVersion;
+ FormatUint32List? languageVersion;
/// Encoded feature set.
- FormatUint32List featureSet;
+ FormatUint32List? featureSet;
}
class AstUnitIndexItem {
/// The offset in [AstUnitFormat.declarations].
- Uint30 offset;
+ Uint30? offset;
/// The tag of the declaration from [Tag].
- Byte tag;
+ Byte? tag;
/// If not [Tag.TopLevelVariableDeclaration], the name of the declaration.
/// Otherwise absent, [topLevelVariableNames] instead.
- StringRef name;
+ StringRef? name;
/// If [Tag.TopLevelVariableDeclaration], the names of the variables.
/// Otherwise absent, [name] instead.
- List<StringRef> topLevelVariableNames;
+ List<StringRef>? topLevelVariableNames;
}
class Byte {}
@@ -94,7 +94,7 @@
/// The blob with libraries.
///
/// [libraryOffsets] points here.
- List<ResolutionLibrary> libraries;
+ List<ResolutionLibrary>? libraries;
/// Pointers to libraries in the [libraries] blob.
///
@@ -103,65 +103,65 @@
/// we don't know where one library ends, and another starts.
///
/// TODO(scheglov) too complicated? Read all?
- List<Uint30> libraryOffsets;
+ List<Uint30>? libraryOffsets;
/// The index of the parent reference, so we can add its name from
/// the [referenceNames]. Is `0` for the root.
///
/// [referencesOffset] points here.
- List<Uint30> referenceParents;
+ List<Uint30>? referenceParents;
/// The name of this component of a reference, e.g. `String` or `@class`.
/// Is the empty string for the root.
- List<StringRef> referenceNames;
+ List<StringRef>? referenceNames;
/// We record `uint32` to know exactly the location of this field.
/// It is always at the end of the byte buffer `-8`.
- Uint32 librariesOffset;
+ Uint32? librariesOffset;
/// We record `uint32` to know exactly the location of this field.
/// It is always at the end of the byte buffer `-4`.
///
/// Points at [referenceParents].
- Uint32 referencesOffset;
+ Uint32? referencesOffset;
/// We record `uint32` to know exactly the location of this field.
/// It is always at the end of the byte buffer `-0`.
- Uint32 stringTableOffset;
+ Uint32? stringTableOffset;
}
class ResolutionLibrary {
/// The blob with units.
- List<ResolutionUnitFormat> units;
+ List<ResolutionUnitFormat>? units;
/// [ResolutionBundle.libraryOffsets] points here.
- StringRef uriStr;
+ StringRef? uriStr;
/// Indexes of exported elements in [ResolutionBundle.referenceNames].
- List<Uint30> exportedReferences;
+ List<Uint30>? exportedReferences;
/// Absolute offsets pointing at [ResolutionUnitFormat.uriStr].
- List<Uint30> unitOffsets;
+ List<Uint30>? unitOffsets;
}
class ResolutionUnitFormat {
/// [ResolutionLibrary.unitOffsets] points here.
- StringRef uriStr;
+ StringRef? uriStr;
- Byte isSynthetic;
+ Byte? isSynthetic;
- Byte isPart;
+ Byte? isPart;
/// If [isPart], the URI that is used in the `part` directive.
/// The empty string for the defining unit.
- StringRef partUriStr;
+ StringRef? partUriStr;
/// The offset of the resolution information for directives.
/// For example resolution of metadata.
- Uint30 directivesResolutionOffset;
+ Uint30? directivesResolutionOffset;
/// Offsets of the resolution information for each declaration.
- List<Uint30> declarationOffsets;
+ List<Uint30>? declarationOffsets;
}
/// The reference to a [String], in form of [Uint30].
@@ -171,16 +171,16 @@
/// So, we can write each unique string only once.
class StringTableFormat {
/// The blob with WTF8 encoded strings.
- Object strings;
+ Object? strings;
/// The length of [strings] in bytes. So, we know how much to go back in
/// the byte buffer from here to start reading strings.
- Uint30 lengthInBytes;
+ Uint30? lengthInBytes;
/// The length of each string in bytes inside [strings].
///
/// This allows us to read strings lazily as they are requested.
- List<Uint30> lengths;
+ List<Uint30>? lengths;
}
class Uint30 {}
diff --git a/pkg/analyzer/lib/src/summary2/bundle_reader.dart b/pkg/analyzer/lib/src/summary2/bundle_reader.dart
index ea791b0..e178788 100644
--- a/pkg/analyzer/lib/src/summary2/bundle_reader.dart
+++ b/pkg/analyzer/lib/src/summary2/bundle_reader.dart
@@ -22,17 +22,17 @@
import 'package:analyzer/src/summary2/apply_resolution.dart';
import 'package:analyzer/src/summary2/ast_binary_reader.dart';
import 'package:analyzer/src/summary2/ast_binary_tag.dart';
+import 'package:analyzer/src/summary2/ast_binary_tokens.dart';
import 'package:analyzer/src/summary2/data_reader.dart';
import 'package:analyzer/src/summary2/linked_element_factory.dart';
import 'package:analyzer/src/summary2/linked_unit_context.dart';
import 'package:analyzer/src/summary2/reference.dart';
-import 'package:meta/meta.dart';
import 'package:pub_semver/pub_semver.dart';
Map<String, LibraryReader> createLibraryReadersWithAstBytes({
- @required LinkedElementFactory elementFactory,
- @required Uint8List resolutionBytes,
- @required Map<String, Map<String, Uint8List>> uriToLibrary_uriToUnitAstBytes,
+ required LinkedElementFactory elementFactory,
+ required Uint8List resolutionBytes,
+ required Map<String, Map<String, Uint8List>> uriToLibrary_uriToUnitAstBytes,
}) {
var _resolutionReader = SummaryDataReader(resolutionBytes);
@@ -63,8 +63,7 @@
var resolutionUnitOffsets = _resolutionReader.readUint30List();
var exportsIndexList = _resolutionReader.readUint30List();
- var uriToUnitAstBytes = uriToLibrary_uriToUnitAstBytes[libraryUriStr];
- assert(uriToUnitAstBytes != null, libraryUriStr);
+ var uriToUnitAstBytes = uriToLibrary_uriToUnitAstBytes[libraryUriStr]!;
var reference = elementFactory.rootReference.getChild(libraryUriStr);
var libraryReader = LibraryReaderForAstBytes._(
@@ -91,10 +90,10 @@
final Map<String, LibraryReader> libraryMap = {};
BundleReader({
- @required LinkedElementFactory elementFactory,
- @required Uint8List astBytes,
- @required Uint8List resolutionBytes,
- }) : _astReader = SummaryDataReader(astBytes),
+ required LinkedElementFactory elementFactory,
+ required Uint8List astBytes,
+ required Uint8List resolutionBytes,
+ }) : _astReader = SummaryDataReader(astBytes),
_resolutionReader = SummaryDataReader(resolutionBytes) {
_astReader.offset = 0;
_withInformative = _astReader.readByte() == 1;
@@ -159,7 +158,7 @@
}
LibraryReader getLibrary(String uriStr) {
- return libraryMap[uriStr];
+ return libraryMap[uriStr]!;
}
}
@@ -177,9 +176,9 @@
final Uint32List _resolutionUnitOffsets;
final Uint32List _exportsIndexList;
- List<Reference> _exports;
+ List<Reference>? _exports;
- List<UnitReader> _units;
+ List<UnitReader>? _units;
LibraryReader._(
this._elementFactory,
@@ -191,16 +190,9 @@
);
List<Reference> get exports {
- if (_exports == null) {
- var length = _exportsIndexList.length;
- _exports = List.filled(length, null, growable: false);
- for (var i = 0; i < length; i++) {
- var index = _exportsIndexList[i];
- var reference = _referenceReader.referenceOfIndex(index);
- _exports[i] = reference;
- }
- }
- return _exports;
+ return _exports ??= _exportsIndexList
+ .map((index) => _referenceReader.referenceOfIndex(index))
+ .toList();
}
/// Is `true` if the defining unit has [PartOfDirective].
@@ -223,11 +215,11 @@
final Map<String, Uint8List> _uriToUnitAstBytes;
bool _hasNameRead = false;
- bool _withInformative;
- String _name;
- int _nameOffset;
- int _nameLength;
- bool _hasPartOfDirective;
+ late final bool _withInformative;
+ late final String _name;
+ late final int _nameOffset;
+ late final int _nameLength;
+ late final bool _hasPartOfDirective;
LibraryReaderForAstBytes._(
LinkedElementFactory elementFactory,
@@ -276,7 +268,7 @@
@override
List<UnitReader> get units {
- if (_units != null) return _units;
+ if (_units != null) return _units!;
_units = [];
for (var i = 0; i < _resolutionUnitOffsets.length; i++) {
@@ -284,7 +276,7 @@
var unitUriStr = _resolutionReader.readStringReference();
var isSynthetic = _resolutionReader.readByte() != 0;
var isPart = _resolutionReader.readByte() != 0;
- var partUriStr = _resolutionReader.readStringReference();
+ String? partUriStr = _resolutionReader.readStringReference();
if (!isPart) {
partUriStr = null;
}
@@ -296,7 +288,7 @@
unitUriStr = 'null';
}
- var astBytes = _uriToUnitAstBytes[unitUriStr];
+ var astBytes = _uriToUnitAstBytes[unitUriStr]!;
var astReader = SummaryDataReader(astBytes);
astReader.offset = astBytes.length - 4 * 4;
var headerOffset = astReader.readUint32();
@@ -305,7 +297,7 @@
var astStringsOffset = astReader.readUint32();
astReader.createStringTable(astStringsOffset);
- _units.add(
+ _units!.add(
UnitReader._(
this,
resolutionDirectivesOffset,
@@ -320,7 +312,7 @@
);
}
- return _units;
+ return _units!;
}
@override
@@ -334,7 +326,7 @@
_hasNameRead = true;
var uriStr = reference.name;
- var definingUnitBytes = _uriToUnitAstBytes[uriStr];
+ var definingUnitBytes = _uriToUnitAstBytes[uriStr]!;
var reader = SummaryDataReader(definingUnitBytes);
reader.offset = definingUnitBytes.length - 4 * 2;
var libraryDataOffset = reader.readUint32();
@@ -398,7 +390,7 @@
@override
List<UnitReader> get units {
- if (_units != null) return _units;
+ if (_units != null) return _units!;
_units = [];
for (var i = 0; i < _astUnitOffsets.length; i++) {
@@ -413,14 +405,14 @@
var unitUriStr = _resolutionReader.readStringReference();
var isSynthetic = _resolutionReader.readByte() != 0;
var isPart = _resolutionReader.readByte() != 0;
- var partUriStr = _resolutionReader.readStringReference();
+ String? partUriStr = _resolutionReader.readStringReference();
if (!isPart) {
partUriStr = null;
}
var resolutionDirectivesOffset = _resolutionReader.readUInt30();
var resolutionDeclarationOffsets = _resolutionReader.readUint30List();
- _units.add(
+ _units!.add(
UnitReader._(
this,
resolutionDirectivesOffset,
@@ -435,7 +427,7 @@
);
}
- return _units;
+ return _units!;
}
}
@@ -443,7 +435,7 @@
final UnitReader _unitReader;
final AstNode _node;
final int _resolutionIndex;
- final Uint32List _codeOffsetLengthList;
+ final Uint32List? _codeOffsetLengthList;
final Uint32List _documentationTokenIndexList;
@override
@@ -459,18 +451,18 @@
bool _hasDocumentationComment = false;
- _UnitMemberReader _reader;
+ late final _UnitMemberReader _reader;
LinkedContext(
this._unitReader,
this._node, {
- @required this.codeOffset,
- @required this.codeLength,
+ required this.codeOffset,
+ required this.codeLength,
this.isClassWithConstConstructor = false,
- Uint32List codeOffsetLengthList,
- @required int resolutionIndex,
- @required Uint32List documentationTokenIndexList,
- }) : _resolutionIndex = resolutionIndex,
+ Uint32List? codeOffsetLengthList,
+ required int resolutionIndex,
+ required Uint32List documentationTokenIndexList,
+ }) : _resolutionIndex = resolutionIndex,
_codeOffsetLengthList = codeOffsetLengthList,
_documentationTokenIndexList = documentationTokenIndexList;
@@ -524,7 +516,7 @@
var variables = variableList.variables;
for (var i = 0; i < variables.length; i++) {
if (identical(variables[i], node)) {
- return _codeOffsetLengthList[2 * i + 1];
+ return _codeOffsetLengthList![2 * i + 1];
}
}
throw StateError('No |$node| in: $variableList');
@@ -536,7 +528,7 @@
var variables = variableList.variables;
for (var i = 0; i < variables.length; i++) {
if (identical(variables[i], node)) {
- return _codeOffsetLengthList[2 * i + 0];
+ return _codeOffsetLengthList![2 * i + 0];
}
}
throw StateError('No |$node| in: $variableList');
@@ -591,10 +583,14 @@
/// TODO(scheglov) Remove after fixing http://dartbug.com/44449
Uint8List get bytes => _unitReader._resolutionReader.bytes;
- Element nextElement() {
+ Element? nextElement() {
var memberFlags = readByte();
var element = _readRawElement();
+ if (element == null) {
+ return null;
+ }
+
if (memberFlags == Tag.RawElement) {
return element;
}
@@ -608,7 +604,8 @@
(element.enclosingElement as TypeParameterizedElement)
.typeParameters;
var substitution = Substitution.fromPairs(typeParameters, arguments);
- element = ExecutableMember.from2(element, substitution);
+ element =
+ ExecutableMember.from2(element as ExecutableElement, substitution);
}
}
@@ -628,7 +625,7 @@
return _unitReader._resolutionReader.stringOfIndex(index);
}
- DartType nextType() {
+ DartType? nextType() {
var tag = readByte();
if (tag == Tag.NullType) {
return null;
@@ -637,12 +634,8 @@
} else if (tag == Tag.FunctionType) {
return _readFunctionType();
} else if (tag == Tag.InterfaceType) {
- var element = nextElement();
- var length = _readUInt30();
- var typeArguments = List<DartType>.filled(length, null);
- for (var i = 0; i < length; i++) {
- typeArguments[i] = nextType();
- }
+ var element = nextElement() as ClassElement;
+ var typeArguments = _readTypeList();
var nullability = _readNullability();
return InterfaceTypeImpl(
element: element,
@@ -650,21 +643,21 @@
nullabilitySuffix: nullability,
);
} else if (tag == Tag.InterfaceType_noTypeArguments_none) {
- var element = nextElement();
+ var element = nextElement() as ClassElement;
return InterfaceTypeImpl(
element: element,
typeArguments: const <DartType>[],
nullabilitySuffix: NullabilitySuffix.none,
);
} else if (tag == Tag.InterfaceType_noTypeArguments_question) {
- var element = nextElement();
+ var element = nextElement() as ClassElement;
return InterfaceTypeImpl(
element: element,
typeArguments: const <DartType>[],
nullabilitySuffix: NullabilitySuffix.question,
);
} else if (tag == Tag.InterfaceType_noTypeArguments_star) {
- var element = nextElement();
+ var element = nextElement() as ClassElement;
return InterfaceTypeImpl(
element: element,
typeArguments: const <DartType>[],
@@ -674,7 +667,7 @@
var nullability = _readNullability();
return NeverTypeImpl.instance.withNullability(nullability);
} else if (tag == Tag.TypeParameterType) {
- var element = nextElement();
+ var element = nextElement() as TypeParameterElement;
var nullability = _readNullability();
return TypeParameterTypeImpl(
element: element,
@@ -734,16 +727,16 @@
element.bound = bound;
}
- var aliasElement = nextElement();
+ var aliasElement = nextElement() as TypeAliasElement?;
var aliasArguments = aliasElement != null ? _readTypeList() : null;
- var returnType = nextType();
+ var returnType = nextType()!;
var formalParameters = <ParameterElement>[];
var formalParametersLength = _readUInt30();
for (var i = 0; i < formalParametersLength; i++) {
var kindIndex = readByte();
- var type = nextType();
+ var type = nextType()!;
var name = nextString();
formalParameters.add(
ParameterElementImpl.synthetic(
@@ -773,7 +766,7 @@
return NullabilitySuffix.values[index];
}
- Element _readRawElement() {
+ Element? _readRawElement() {
var index = _readUInt30();
if ((index & 0x1) == 0x1) {
@@ -797,7 +790,7 @@
var types = <DartType>[];
var length = _readUInt30();
for (var i = 0; i < length; i++) {
- var argument = nextType();
+ var argument = nextType()!;
types.add(argument);
}
return types;
@@ -846,8 +839,8 @@
final int codeLength;
SummaryDataForFormalParameter({
- @required this.codeOffset,
- @required this.codeLength,
+ required this.codeOffset,
+ required this.codeLength,
});
}
@@ -860,7 +853,7 @@
SummaryDataForLibraryDirective(
this._unitReader,
this._node, {
- @required Uint32List documentationTokenIndexList,
+ required Uint32List documentationTokenIndexList,
}) : _documentationTokenIndexList = documentationTokenIndexList {
_node.summaryData = this;
}
@@ -892,8 +885,8 @@
final int codeLength;
SummaryDataForTypeParameter({
- @required this.codeOffset,
- @required this.codeLength,
+ required this.codeOffset,
+ required this.codeLength,
});
}
@@ -906,7 +899,7 @@
/// If a part, the URI that is used in the [PartDirective].
/// Or `null` for the defining unit.
- final String partUriStr;
+ final String? partUriStr;
final int _directivesResolutionOffset;
bool _isDirectivesResolutionApplied = false;
@@ -915,10 +908,10 @@
final SummaryDataReader astReader;
- int _directivesOffset;
+ late final int _directivesOffset;
final List<_UnitMemberReader> _memberReaders = [];
- CompilationUnitImpl _unit;
+ late final CompilationUnitImpl _unit;
bool _hasDirectives = false;
bool _hasDeclarations = false;
@@ -944,14 +937,14 @@
_directivesOffset = astReader.offset;
_unit = astFactory.compilationUnit(
- beginToken: null,
+ beginToken: Tokens.BANG,
// TODO(scheglov)
// scriptTag: _readNode(data.compilationUnit_scriptTag),
directives: [],
declarations: [],
- endToken: null,
+ endToken: Tokens.BANG,
featureSet: featureSet,
- );
+ ) as CompilationUnitImpl;
_unit.languageVersion = languageVersion;
_unit.lineInfo = lineInfo;
_unit.summaryData = SummaryDataForCompilationUnit(codeLength);
@@ -1167,16 +1160,26 @@
}
}
+class _ClassMemberMock extends AstNodeImpl implements ClassMemberImpl {
+ static final instance = _ClassMemberMock();
+
+ @override
+ AstNode? parent;
+
+ @override
+ noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
+}
+
class _ClassMemberReader implements ReferenceNodeAccessor {
final UnitReader unitReader;
final int offset;
- final NodeListImpl<ClassMember> _members;
+ final List<ClassMember> _members;
final int _membersIndex;
- ClassMemberImpl _node;
+ ClassMemberImpl? _node;
_ClassMemberReader(this.unitReader, this.offset, this._members)
: _membersIndex = _members.length {
- _members.add(null);
+ _members.add(_ClassMemberMock.instance);
}
@override
@@ -1187,9 +1190,9 @@
);
unitReader.astReader.offset = offset;
_node = astReader.readNode() as ClassMemberImpl;
- _members[_membersIndex] = _node;
+ _members[_membersIndex] = _node!;
}
- return _node;
+ return _node!;
}
@override
@@ -1202,14 +1205,14 @@
bool _hasIndex = false;
final List<_ClassMemberReader> _classMemberReaders = [];
- List<ClassMember> _classMembers;
+ late final List<ClassMember> _classMembers;
_ClassReader({
- @required this.reference,
- @required UnitReader unitReader,
- @required int offset,
- @required CompilationUnit unit,
- @required this.indexOffset,
+ required this.reference,
+ required UnitReader unitReader,
+ required int offset,
+ required CompilationUnit unit,
+ required this.indexOffset,
}) : super(unitReader, offset, unit) {
reference.nodeAccessor ??= this;
}
@@ -1293,12 +1296,20 @@
}
}
+class _CompilationUnitMemberMock extends AstNodeImpl
+ implements CompilationUnitMemberImpl {
+ static final instance = _CompilationUnitMemberMock();
+
+ @override
+ noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
+}
+
class _ReferenceReader {
final LinkedElementFactory elementFactory;
final SummaryDataReader _reader;
- Uint32List _parents;
- Uint32List _names;
- List<Reference> _references;
+ late final Uint32List _parents;
+ late final Uint32List _names;
+ late final List<Reference?> _references;
_ReferenceReader(this.elementFactory, this._reader, int offset) {
_reader.offset = offset;
@@ -1339,11 +1350,11 @@
final int offset;
final CompilationUnit _unit;
final int _index;
- CompilationUnitMemberImpl _node;
+ CompilationUnitMemberImpl? _node;
_UnitMemberReader(this.unitReader, this.offset, this._unit)
: _index = _unit.declarations.length {
- _unit.declarations.add(null);
+ _unit.declarations.add(_CompilationUnitMemberMock.instance);
}
@override
@@ -1353,14 +1364,14 @@
reader: unitReader,
);
unitReader.astReader.offset = offset;
- _node = astReader.readNode() as CompilationUnitMember;
- _unit.declarations[_index] = _node;
+ _node = astReader.readNode() as CompilationUnitMemberImpl;
+ _unit.declarations[_index] = _node!;
var hasLinkedContext = _node as HasAstLinkedContext;
var linkedContext = hasLinkedContext.linkedContext as LinkedContext;
linkedContext._reader = this;
}
- return _node;
+ return _node!;
}
@override
diff --git a/pkg/analyzer/lib/src/summary2/bundle_writer.dart b/pkg/analyzer/lib/src/summary2/bundle_writer.dart
index 1aa10ca..c7337c8 100644
--- a/pkg/analyzer/lib/src/summary2/bundle_writer.dart
+++ b/pkg/analyzer/lib/src/summary2/bundle_writer.dart
@@ -16,9 +16,8 @@
import 'package:analyzer/src/summary2/binary_format_doc.dart';
import 'package:analyzer/src/summary2/data_writer.dart';
import 'package:analyzer/src/summary2/reference.dart';
-import 'package:meta/meta.dart';
-Uint8List writeUnitToBytes({@required CompilationUnit unit}) {
+Uint8List writeUnitToBytes({required CompilationUnit unit}) {
var byteSink = ByteSink();
var sink = BufferedSink(byteSink);
var stringIndexer = StringIndexer();
@@ -45,9 +44,9 @@
sink.writeUInt30(declaration.offset);
sink.writeByte(declaration.tag);
if (declaration.name != null) {
- _writeStringReference(declaration.name);
+ _writeStringReference(declaration.name!);
} else {
- sink.writeList(declaration.variableNames, _writeStringReference);
+ sink.writeList(declaration.variableNames!, _writeStringReference);
}
if (declaration.classIndexOffset != 0) {
sink.writeUInt30(declaration.classIndexOffset);
@@ -95,8 +94,8 @@
class BundleWriter {
final bool withInformative;
- BundleWriterAst _astWriter;
- BundleWriterResolution _resolutionWriter;
+ late final BundleWriterAst _astWriter;
+ late final BundleWriterResolution _resolutionWriter;
BundleWriter(this.withInformative, Reference dynamicReference) {
_astWriter = BundleWriterAst(withInformative);
@@ -143,7 +142,7 @@
class BundleWriterAst {
final bool withInformative;
final ByteSink _byteSink = ByteSink();
- BufferedSink sink;
+ late final BufferedSink sink;
final StringIndexer stringIndexer = StringIndexer();
final List<int> _libraryOffsets = [];
@@ -221,9 +220,9 @@
sink.writeUInt30(declaration.offset);
sink.writeByte(declaration.tag);
if (declaration.name != null) {
- _writeStringReference(declaration.name);
+ _writeStringReference(declaration.name!);
} else {
- sink.writeList(declaration.variableNames, _writeStringReference);
+ sink.writeList(declaration.variableNames!, _writeStringReference);
}
if (declaration.classIndexOffset != 0) {
sink.writeUInt30(declaration.classIndexOffset);
@@ -240,10 +239,10 @@
}
class BundleWriterResolution {
- _BundleWriterReferences _references;
+ late final _BundleWriterReferences _references;
final ByteSink _byteSink = ByteSink();
- BufferedSink _sink;
- ResolutionSink _resolutionSink;
+ late final BufferedSink _sink;
+ late final ResolutionSink _resolutionSink;
final StringIndexer _stringIndexer = StringIndexer();
@@ -336,8 +335,8 @@
final Uint8List resolutionBytes;
BundleWriterResult({
- @required this.astBytes,
- @required this.resolutionBytes,
+ required this.astBytes,
+ required this.resolutionBytes,
});
}
@@ -345,7 +344,7 @@
final List<UnitToWriteAst> units;
LibraryToWriteAst({
- @required this.units,
+ required this.units,
});
}
@@ -355,9 +354,9 @@
final List<UnitToWriteResolution> units;
LibraryToWriteResolution({
- @required this.uriStr,
- @required this.exports,
- @required this.units,
+ required this.uriStr,
+ required this.exports,
+ required this.units,
});
}
@@ -368,10 +367,10 @@
final _LocalElementIndexer localElements = _LocalElementIndexer();
ResolutionSink({
- @required StringIndexer stringIndexer,
- @required BufferedSink sink,
- @required _BundleWriterReferences references,
- }) : _stringIndexer = stringIndexer,
+ required StringIndexer stringIndexer,
+ required BufferedSink sink,
+ required _BundleWriterReferences references,
+ }) : _stringIndexer = stringIndexer,
_sink = sink,
_references2 = references;
@@ -384,7 +383,7 @@
/// TODO(scheglov) Triage places where we write elements.
/// Some of then cannot be members, e.g. type names.
- void writeElement(Element element) {
+ void writeElement(Element? element) {
if (element is Member) {
var declaration = element.declaration;
var isLegacy = element.isLegacy;
@@ -408,7 +407,7 @@
}
}
- void writeElement0(Element element) {
+ void writeElement0(Element? element) {
assert(element is! Member, 'Use writeMemberOrElement()');
var elementIndex = _indexOfElement(element);
_sink.writeUInt30(elementIndex);
@@ -421,7 +420,7 @@
}
}
- void writeType(DartType type) {
+ void writeType(DartType? type) {
if (type == null) {
writeByte(Tag.NullType);
} else if (type is DynamicType) {
@@ -470,7 +469,7 @@
_sink.writeUInt30(value);
}
- int _indexOfElement(Element element) {
+ int _indexOfElement(Element? element) {
if (element == null) return 0;
if (element is MultiplyDefinedElement) return 0;
assert(element is! Member);
@@ -532,7 +531,7 @@
var aliasElement = type.aliasElement;
writeElement(aliasElement);
if (aliasElement != null) {
- _writeTypeList(type.aliasArguments);
+ _writeTypeList(type.aliasArguments!);
}
writeType(type.returnType);
@@ -541,7 +540,6 @@
_sink.writeUInt30(parameters.length);
for (var parameter in parameters) {
_writeFormalParameterKind(parameter);
- assert(parameter.type != null);
writeType(parameter.type);
// TODO(scheglov) Don't write names of positional parameters
_writeStringReference(parameter.name);
@@ -572,6 +570,11 @@
Element declaration,
Map<TypeParameterElement, DartType> substitution,
) {
+ // TODO(scheglov) Just keep it null in class Member?
+ if (substitution.isEmpty) {
+ return const [];
+ }
+
var enclosing = declaration.enclosingElement;
if (enclosing is TypeParameterizedElement) {
if (enclosing is! ClassElement && enclosing is! ExtensionElement) {
@@ -584,7 +587,7 @@
}
return typeParameters
- .map((typeParameter) => substitution[typeParameter])
+ .map((typeParameter) => substitution[typeParameter]!)
.toList(growable: false);
}
@@ -617,9 +620,9 @@
final List<int> offsets = [];
ResolutionUnit({
- @required this.library,
- @required this.unit,
- @required this.directivesOffset,
+ required this.library,
+ required this.unit,
+ required this.directivesOffset,
});
/// Should be called on enter into a new declaration on which level
@@ -710,21 +713,21 @@
final CompilationUnit node;
UnitToWriteAst({
- @required this.node,
+ required this.node,
});
}
class UnitToWriteResolution {
final String uriStr;
- final String partUriStr;
+ final String? partUriStr;
final CompilationUnit node;
final bool isSynthetic;
UnitToWriteResolution({
- @required this.uriStr,
- @required this.partUriStr,
- @required this.node,
- @required this.isSynthetic,
+ required this.uriStr,
+ required this.partUriStr,
+ required this.node,
+ required this.isSynthetic,
});
}
@@ -736,7 +739,8 @@
/// References used in all libraries being linked.
/// Element references in nodes are indexes in this list.
- final List<Reference> references = [null];
+ /// TODO(scheglov) Do we really use this list?
+ final List<Reference?> references = [null];
final List<int> _referenceParents = [0];
final List<String> _referenceNames = [''];
@@ -753,10 +757,10 @@
}
}
- int _indexOfReference(Reference reference) {
+ int _indexOfReference(Reference? reference) {
if (reference == null) return 0;
if (reference.parent == null) return 0;
- if (reference.index != null) return reference.index;
+ if (reference.index != null) return reference.index!;
var parentIndex = _indexOfReference(reference.parent);
_referenceParents.add(parentIndex);
@@ -764,7 +768,7 @@
reference.index = references.length;
references.add(reference);
- return reference.index;
+ return reference.index!;
}
}
@@ -797,8 +801,8 @@
final List<ResolutionUnit> units = [];
_ResolutionLibrary({
- @required this.sink,
- @required this.library,
+ required this.sink,
+ required this.library,
});
ResolutionUnit enterUnit(UnitToWriteResolution unitToWrite) {
diff --git a/pkg/analyzer/lib/src/summary2/constructor_initializer_resolver.dart b/pkg/analyzer/lib/src/summary2/constructor_initializer_resolver.dart
index 0c4cea8..aca12f3 100644
--- a/pkg/analyzer/lib/src/summary2/constructor_initializer_resolver.dart
+++ b/pkg/analyzer/lib/src/summary2/constructor_initializer_resolver.dart
@@ -14,21 +14,21 @@
final Linker _linker;
final LibraryElementImpl _libraryElement;
- CompilationUnitElement _unitElement;
- ClassElement _classElement;
- ConstructorElement _constructorElement;
- ConstructorDeclarationImpl _constructorNode;
- AstResolver _astResolver;
+ late CompilationUnitElementImpl _unitElement;
+ late ClassElement _classElement;
+ late ConstructorElement _constructorElement;
+ late ConstructorDeclarationImpl _constructorNode;
+ late AstResolver _astResolver;
ConstructorInitializerResolver(this._linker, this._libraryElement);
void resolve() {
for (var unit in _libraryElement.units) {
- _unitElement = unit;
+ _unitElement = unit as CompilationUnitElementImpl;
for (var classElement in unit.types) {
_classElement = classElement;
for (var constructorElement in classElement.constructors) {
- _constructor(constructorElement);
+ _constructor(constructorElement as ConstructorElementImpl);
}
}
}
@@ -38,7 +38,8 @@
if (constructorElement.isSynthetic) return;
_constructorElement = constructorElement;
- _constructorNode = constructorElement.linkedNode;
+ _constructorNode =
+ constructorElement.linkedNode as ConstructorDeclarationImpl;
var functionScope = LinkingNodeContext.get(_constructorNode).scope;
var initializerScope = ConstructorInitializerScope(
@@ -48,7 +49,7 @@
_astResolver = AstResolver(_linker, _unitElement, initializerScope);
- FunctionBodyImpl body = _constructorNode.body;
+ var body = _constructorNode.body as FunctionBodyImpl;
body.localVariableInfo = LocalVariableInfo();
_initializers();
diff --git a/pkg/analyzer/lib/src/summary2/data_reader.dart b/pkg/analyzer/lib/src/summary2/data_reader.dart
index 143685b..be1e522 100644
--- a/pkg/analyzer/lib/src/summary2/data_reader.dart
+++ b/pkg/analyzer/lib/src/summary2/data_reader.dart
@@ -5,17 +5,15 @@
import 'dart:convert';
import 'dart:typed_data';
-import 'package:meta/meta.dart';
-
/// Helper for reading primitive types from bytes.
class SummaryDataReader {
final Uint8List bytes;
int offset = 0;
- _StringTable _stringTable;
+ late final _StringTable _stringTable;
final Float64List _doubleBuffer = Float64List(1);
- Uint8List _doubleBufferUint8;
+ Uint8List? _doubleBufferUint8;
SummaryDataReader(this.bytes);
@@ -29,15 +27,16 @@
}
double readDouble() {
- _doubleBufferUint8 ??= _doubleBuffer.buffer.asUint8List();
- _doubleBufferUint8[0] = readByte();
- _doubleBufferUint8[1] = readByte();
- _doubleBufferUint8[2] = readByte();
- _doubleBufferUint8[3] = readByte();
- _doubleBufferUint8[4] = readByte();
- _doubleBufferUint8[5] = readByte();
- _doubleBufferUint8[6] = readByte();
- _doubleBufferUint8[7] = readByte();
+ var doubleBufferUint8 =
+ _doubleBufferUint8 ??= _doubleBuffer.buffer.asUint8List();
+ doubleBufferUint8[0] = readByte();
+ doubleBufferUint8[1] = readByte();
+ doubleBufferUint8[2] = readByte();
+ doubleBufferUint8[3] = readByte();
+ doubleBufferUint8[4] = readByte();
+ doubleBufferUint8[5] = readByte();
+ doubleBufferUint8[6] = readByte();
+ doubleBufferUint8[7] = readByte();
return _doubleBuffer[0];
}
@@ -108,9 +107,9 @@
final Uint8List _bytes;
int _byteOffset;
- Uint32List _offsets;
- Uint32List _lengths;
- List<String> _strings;
+ late final Uint32List _offsets;
+ late final Uint32List _lengths;
+ late final List<String?> _strings;
/// The structure of the table:
/// <bytes with encoded strings>
@@ -118,11 +117,10 @@
/// <the number strings>
/// <the array of lengths of individual strings>
_StringTable({
- @required Uint8List bytes,
- @required int startOffset,
- }) : _bytes = bytes {
- _byteOffset = startOffset;
-
+ required Uint8List bytes,
+ required int startOffset,
+ }) : _bytes = bytes,
+ _byteOffset = startOffset {
var offset = startOffset - _readUInt();
var length = _readUInt();
diff --git a/pkg/analyzer/lib/src/summary2/data_writer.dart b/pkg/analyzer/lib/src/summary2/data_writer.dart
index 5428e5b..2f4fd40 100644
--- a/pkg/analyzer/lib/src/summary2/data_writer.dart
+++ b/pkg/analyzer/lib/src/summary2/data_writer.dart
@@ -19,7 +19,7 @@
int length = 0;
final Float64List _doubleBuffer = Float64List(1);
- Uint8List _doubleBufferUint8;
+ Uint8List? _doubleBufferUint8;
BufferedSink(this._sink);
@@ -89,12 +89,13 @@
}
void addDouble(double value) {
- _doubleBufferUint8 ??= _doubleBuffer.buffer.asUint8List();
+ var doubleBufferUint8 =
+ _doubleBufferUint8 ??= _doubleBuffer.buffer.asUint8List();
_doubleBuffer[0] = value;
- addByte4(_doubleBufferUint8[0], _doubleBufferUint8[1],
- _doubleBufferUint8[2], _doubleBufferUint8[3]);
- addByte4(_doubleBufferUint8[4], _doubleBufferUint8[5],
- _doubleBufferUint8[6], _doubleBufferUint8[7]);
+ addByte4(doubleBufferUint8[0], doubleBufferUint8[1], doubleBufferUint8[2],
+ doubleBufferUint8[3]);
+ addByte4(doubleBufferUint8[4], doubleBufferUint8[5], doubleBufferUint8[6],
+ doubleBufferUint8[7]);
}
void flush() {
@@ -124,7 +125,7 @@
/// Write the [value] as UTF8 encoded byte array.
void writeStringUtf8(String value) {
var bytes = utf8.encode(value);
- writeUint8List(bytes);
+ writeUint8List(bytes as Uint8List);
}
@pragma("vm:prefer-inline")
diff --git a/pkg/analyzer/lib/src/summary2/default_types_builder.dart b/pkg/analyzer/lib/src/summary2/default_types_builder.dart
index 2dcb918..103f87e 100644
--- a/pkg/analyzer/lib/src/summary2/default_types_builder.dart
+++ b/pkg/analyzer/lib/src/summary2/default_types_builder.dart
@@ -13,33 +13,32 @@
import 'package:analyzer/src/summary2/named_type_builder.dart';
import 'package:analyzer/src/summary2/type_builder.dart';
import 'package:analyzer/src/util/graph.dart';
-import 'package:meta/meta.dart';
class DefaultTypesBuilder {
void build(List<AstNode> nodes) {
for (var node in nodes) {
if (node is ClassDeclaration) {
- var element = node.declaredElement;
+ var element = node.declaredElement!;
_breakSelfCycles(node.typeParameters);
_breakRawTypeCycles(element, node.typeParameters);
_computeBounds(element, node.typeParameters);
} else if (node is ClassTypeAlias) {
- var element = node.declaredElement;
+ var element = node.declaredElement!;
_breakSelfCycles(node.typeParameters);
_breakRawTypeCycles(element, node.typeParameters);
_computeBounds(element, node.typeParameters);
} else if (node is FunctionTypeAlias) {
- var element = node.declaredElement;
+ var element = node.declaredElement!;
_breakSelfCycles(node.typeParameters);
_breakRawTypeCycles(element, node.typeParameters);
_computeBounds(element, node.typeParameters);
} else if (node is GenericTypeAlias) {
- var element = node.declaredElement;
+ var element = node.declaredElement!;
_breakSelfCycles(node.typeParameters);
_breakRawTypeCycles(element, node.typeParameters);
_computeBounds(element, node.typeParameters);
} else if (node is MixinDeclaration) {
- var element = node.declaredElement;
+ var element = node.declaredElement!;
_breakSelfCycles(node.typeParameters);
_breakRawTypeCycles(element, node.typeParameters);
_computeBounds(element, node.typeParameters);
@@ -62,7 +61,7 @@
void _breakRawTypeCycles(
Element declarationElement,
- TypeParameterList parameterList,
+ TypeParameterList? parameterList,
) {
if (parameterList == null) return;
@@ -73,7 +72,7 @@
var cycles = _findRawTypePathsToDeclaration(
parameter,
- boundNode.type,
+ boundNode.type!,
declarationElement,
Set<Element>.identity(),
);
@@ -92,11 +91,11 @@
}
}
- void _breakSelfCycles(TypeParameterList parameterList) {
+ void _breakSelfCycles(TypeParameterList? parameterList) {
if (parameterList == null) return;
var typeParameters = parameterList.typeParameters;
- Map<String, TypeParameter> typeParametersByName;
+ Map<String, TypeParameter>? typeParametersByName;
for (var parameter in typeParameters) {
var boundNode = parameter.bound;
if (boundNode is TypeName) {
@@ -108,7 +107,7 @@
}
}
- var current = parameter;
+ TypeParameter? current = parameter;
for (var step = 0;
current != null && step < typeParameters.length;
++step) {
@@ -132,7 +131,7 @@
}
/// Build actual default type [DartType]s from computed [TypeBuilder]s.
- void _build(TypeParameterList parameterList) {
+ void _build(TypeParameterList? parameterList) {
if (parameterList == null) return;
for (var parameter in parameterList.typeParameters) {
@@ -149,24 +148,25 @@
/// arguments on raw types with the given type parameters.
void _computeBounds(
Element declarationElement,
- TypeParameterList parameterList,
+ TypeParameterList? parameterList,
) {
if (parameterList == null) return;
- var typeProvider = declarationElement.library.typeProvider;
+ var library = declarationElement.library!;
+ var typeProvider = library.typeProvider;
var dynamicType = DynamicTypeImpl.instance;
- var bottomType = declarationElement.library.isNonNullableByDefault
+ var bottomType = library.isNonNullableByDefault
? NeverTypeImpl.instance
: typeProvider.nullType;
var nodes = parameterList.typeParameters;
var length = nodes.length;
- var elements = List<TypeParameterElementImpl>.filled(length, null);
- var bounds = List<DartType>.filled(length, null);
+ var elements = <TypeParameterElementImpl>[];
+ var bounds = <DartType>[];
for (int i = 0; i < length; i++) {
var node = nodes[i];
- elements[i] = node.declaredElement;
- bounds[i] = node.bound?.type ?? dynamicType;
+ elements.add(node.declaredElement as TypeParameterElementImpl);
+ bounds.add(node.bound?.type ?? dynamicType);
}
var graph = _TypeParametersGraph(elements, bounds);
@@ -234,14 +234,15 @@
]);
} else if (visited.add(startType.element)) {
void recurseParameters(List<TypeParameterElement> parameters) {
- for (TypeParameterElementImpl parameter in parameters) {
- TypeParameter parameterNode = parameter.linkedNode;
+ for (var parameter in parameters) {
+ var parameterImpl = parameter as TypeParameterElementImpl;
+ var parameterNode = parameterImpl.linkedNode as TypeParameter;
// TODO(scheglov) How to we skip already linked?
var bound = parameterNode.bound;
if (bound != null) {
var tails = _findRawTypePathsToDeclaration(
parameterNode,
- bound.type,
+ bound.type!,
end,
visited,
);
@@ -310,11 +311,11 @@
/// declaration.
class _TypeParametersGraph implements Graph<int> {
@override
- List<int> vertices;
+ final List<int> vertices = [];
// Each `edges[i]` is the list of indices of type parameters that reference
// the type parameter with the index `i` in their bounds.
- List<List<int>> _edges;
+ final List<List<int>> _edges = [];
final Map<TypeParameterElement, int> _parameterToIndex = Map.identity();
@@ -324,11 +325,9 @@
) {
assert(parameters.length == bounds.length);
- vertices = List<int>.filled(parameters.length, null);
- _edges = List<List<int>>.filled(parameters.length, null);
- for (int i = 0; i < vertices.length; i++) {
- vertices[i] = i;
- _edges[i] = <int>[];
+ for (int i = 0; i < parameters.length; i++) {
+ vertices.add(i);
+ _edges.add(<int>[]);
_parameterToIndex[parameters[i]] = i;
}
@@ -344,7 +343,7 @@
}
/// Collect references to the [index]th type parameter from the [type].
- void _collectReferencesFrom(int index, DartType type) {
+ void _collectReferencesFrom(int index, DartType? type) {
if (type is FunctionTypeBuilder) {
for (var parameter in type.typeFormals) {
_collectReferencesFrom(index, parameter.bound);
@@ -372,10 +371,10 @@
Variance _variance;
_UpperLowerReplacementVisitor({
- @required Map<TypeParameterElement, DartType> upper,
- @required Map<TypeParameterElement, DartType> lower,
- @required Variance variance,
- }) : _upper = upper,
+ required Map<TypeParameterElement, DartType> upper,
+ required Map<TypeParameterElement, DartType> lower,
+ required Variance variance,
+ }) : _upper = upper,
_lower = lower,
_variance = variance;
@@ -393,7 +392,7 @@
}
@override
- DartType visitTypeArgument(
+ DartType? visitTypeArgument(
TypeParameterElement parameter,
DartType argument,
) {
@@ -409,7 +408,7 @@
}
@override
- DartType visitTypeParameterType(TypeParameterType type) {
+ DartType? visitTypeParameterType(TypeParameterType type) {
if (_variance == Variance.contravariant) {
return _lower[type.element];
} else {
diff --git a/pkg/analyzer/lib/src/summary2/default_value_resolver.dart b/pkg/analyzer/lib/src/summary2/default_value_resolver.dart
index 1e49400..9566af2 100644
--- a/pkg/analyzer/lib/src/summary2/default_value_resolver.dart
+++ b/pkg/analyzer/lib/src/summary2/default_value_resolver.dart
@@ -17,19 +17,19 @@
final LibraryElementImpl _libraryElement;
final TypeSystemImpl _typeSystem;
- ClassElement _classElement;
- CompilationUnitElement _unitElement;
- ExecutableElement _executableElement;
- Scope _scope;
+ late CompilationUnitElementImpl _unitElement;
+ ClassElement? _classElement;
+ late ExecutableElement _executableElement;
+ late Scope _scope;
- AstResolver _astResolver;
+ AstResolver? _astResolver;
DefaultValueResolver(this._linker, this._libraryElement)
: _typeSystem = _libraryElement.typeSystem;
void resolve() {
- for (CompilationUnitElementImpl unit in _libraryElement.units) {
- _unitElement = unit;
+ for (var unit in _libraryElement.units) {
+ _unitElement = unit as CompilationUnitElementImpl;
for (var extensionElement in unit.extensions) {
_extension(extensionElement);
@@ -53,12 +53,12 @@
_classElement = classElement;
for (var element in classElement.constructors) {
- _constructor(element);
+ _constructor(element as ConstructorElementImpl);
}
for (var element in classElement.methods) {
_setScopeFromElement(element);
- _method(element);
+ _method(element as MethodElementImpl);
}
_classElement = null;
@@ -77,11 +77,11 @@
void _extension(ExtensionElement extensionElement) {
for (var element in extensionElement.methods) {
_setScopeFromElement(element);
- _method(element);
+ _method(element as MethodElementImpl);
}
}
- void _function(FunctionElementImpl element) {
+ void _function(FunctionElement element) {
_astResolver = null;
_executableElement = element;
_setScopeFromElement(element);
@@ -100,7 +100,7 @@
void _parameter(ParameterElementImpl parameter) {
// If a function typed parameter, process nested parameters.
for (var localParameter in parameter.parameters) {
- _parameter(localParameter);
+ _parameter(localParameter as ParameterElementImpl);
}
var node = _defaultParameter(parameter);
@@ -108,11 +108,12 @@
var contextType = _typeSystem.eliminateTypeVariables(parameter.type);
- _astResolver ??= AstResolver(_linker, _unitElement, _scope);
- _astResolver.resolve(
- node.defaultValue,
+ var astResolver =
+ _astResolver ??= AstResolver(_linker, _unitElement, _scope);
+ astResolver.resolve(
+ node.defaultValue!,
() {
- var defaultValue = node.defaultValue;
+ var defaultValue = node.defaultValue!;
InferenceContext.setType(defaultValue, contextType);
return defaultValue;
},
@@ -123,15 +124,15 @@
void _parameters(List<ParameterElement> parameters) {
for (var parameter in parameters) {
- _parameter(parameter);
+ _parameter(parameter as ParameterElementImpl);
}
}
void _setScopeFromElement(Element element) {
- _scope = LinkingNodeContext.get((element as ElementImpl).linkedNode).scope;
+ _scope = LinkingNodeContext.get((element as ElementImpl).linkedNode!).scope;
}
- static DefaultFormalParameter _defaultParameter(
+ static DefaultFormalParameter? _defaultParameter(
ParameterElementImpl element) {
var node = element.linkedNode;
if (node is DefaultFormalParameter && node.defaultValue != null) {
diff --git a/pkg/analyzer/lib/src/summary2/export.dart b/pkg/analyzer/lib/src/summary2/export.dart
index a84d39e..2f5e590 100644
--- a/pkg/analyzer/lib/src/summary2/export.dart
+++ b/pkg/analyzer/lib/src/summary2/export.dart
@@ -8,17 +8,15 @@
class Export {
final LibraryBuilder exporter;
- final LibraryBuilder exported;
+ final LibraryBuilder? exported;
final List<Combinator> combinators;
Export(this.exporter, this.exported, this.combinators);
bool addToExportScope(String name, Reference reference) {
- if (combinators != null) {
- for (Combinator combinator in combinators) {
- if (combinator.isShow && !combinator.matches(name)) return false;
- if (combinator.isHide && combinator.matches(name)) return false;
- }
+ for (Combinator combinator in combinators) {
+ if (combinator.isShow && !combinator.matches(name)) return false;
+ if (combinator.isHide && combinator.matches(name)) return false;
}
return exporter.addToExportScope(name, reference);
}
diff --git a/pkg/analyzer/lib/src/summary2/function_type_builder.dart b/pkg/analyzer/lib/src/summary2/function_type_builder.dart
index 4fd730d..bdbc0ba 100644
--- a/pkg/analyzer/lib/src/summary2/function_type_builder.dart
+++ b/pkg/analyzer/lib/src/summary2/function_type_builder.dart
@@ -28,13 +28,13 @@
/// The node for which this builder is created, or `null` if the builder
/// was detached from its node, e.g. during computing default types for
/// type parameters.
- final GenericFunctionTypeImpl node;
+ final GenericFunctionTypeImpl? node;
/// The actual built type, not a [TypeBuilder] anymore.
///
/// When [build] is called, the type is built, stored into this field,
/// and set for the [node].
- DartType _type;
+ DartType? _type;
FunctionTypeBuilder(
this.typeFormals,
@@ -47,7 +47,7 @@
/// [isNNBD] indicates whether the containing library is opted into NNBD.
factory FunctionTypeBuilder.of(
bool isNNBD,
- GenericFunctionType node,
+ GenericFunctionTypeImpl node,
NullabilitySuffix nullabilitySuffix,
) {
return FunctionTypeBuilder(
@@ -60,7 +60,7 @@
}
@override
- Element get element => null;
+ Element? get element => null;
@override
R accept<R>(TypeVisitor<R> visitor) {
@@ -75,15 +75,19 @@
@override
DartType build() {
if (_type != null) {
- return _type;
+ return _type!;
}
- for (TypeParameterElementImpl typeParameter in typeFormals) {
- typeParameter.bound = _buildType(typeParameter.bound);
+ for (var typeParameter in typeFormals) {
+ var typeParameterImpl = typeParameter as TypeParameterElementImpl;
+ var bound = typeParameterImpl.bound;
+ if (bound != null) {
+ typeParameterImpl.bound = _buildType(bound);
+ }
}
- for (ParameterElementImpl parameter in parameters) {
- parameter.type = _buildType(parameter.type);
+ for (var parameter in parameters) {
+ (parameter as ParameterElementImpl).type = _buildType(parameter.type);
}
var builtReturnType = _buildType(returnType);
@@ -95,10 +99,10 @@
);
if (node != null) {
- node.type = _type;
+ node?.type = _type;
}
- return _type;
+ return _type!;
}
@override
@@ -160,11 +164,11 @@
}
/// Return the type of the [node] as is, possibly a [TypeBuilder].
- static DartType _getNodeType(TypeAnnotation node) {
+ static DartType _getNodeType(TypeAnnotation? node) {
if (node == null) {
return _dynamicType;
} else {
- return node.type;
+ return node.type!;
}
}
@@ -197,8 +201,10 @@
}
}
- static List<TypeParameterElement> _getTypeParameters(TypeParameterList node) {
+ static List<TypeParameterElement> _getTypeParameters(
+ TypeParameterList? node,
+ ) {
if (node == null) return const [];
- return node.typeParameters.map((n) => n.declaredElement).toList();
+ return node.typeParameters.map((n) => n.declaredElement!).toList();
}
}
diff --git a/pkg/analyzer/lib/src/summary2/library_builder.dart b/pkg/analyzer/lib/src/summary2/library_builder.dart
index cb2155b0b..e6532f5 100644
--- a/pkg/analyzer/lib/src/summary2/library_builder.dart
+++ b/pkg/analyzer/lib/src/summary2/library_builder.dart
@@ -5,6 +5,7 @@
import 'package:analyzer/dart/analysis/features.dart';
import 'package:analyzer/dart/ast/ast.dart' as ast;
import 'package:analyzer/dart/element/element.dart';
+import 'package:analyzer/src/dart/ast/ast.dart' as ast;
import 'package:analyzer/src/dart/ast/mixin_super_invoked_names.dart';
import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/dart/element/scope.dart';
@@ -26,12 +27,12 @@
final Linker linker;
final Uri uri;
final Reference reference;
- List<Reference> exports;
+ late final List<Reference> exports;
- LinkedLibraryContext context;
+ late final LinkedLibraryContext context;
- LibraryElementImpl element;
- LibraryScope scope;
+ late final LibraryElementImpl element;
+ late final LibraryScope scope;
/// Local declarations.
final Scope localScope = Scope.top();
@@ -45,9 +46,9 @@
void addExporters() {
var unitContext = context.definingUnit;
- for (var directive in unitContext.unit.directives) {
+ for (var directive in unitContext.unit!.directives) {
if (directive is ast.ExportDirective) {
- Uri uri;
+ Uri? uri;
try {
uri = _selectAbsoluteUri(directive);
if (uri == null) continue;
@@ -62,8 +63,9 @@
} else if (node is ast.HideCombinator) {
var nameList = node.hiddenNames.map((i) => i.name).toList();
return Combinator.hide(nameList);
+ } else {
+ throw UnimplementedError();
}
- return null;
}).toList();
var exported = linker.builders[uri];
@@ -99,7 +101,7 @@
var setterRef = unitRef.getChild('@setter');
var variableRef = unitRef.getChild('@variable');
var nextUnnamedExtensionId = 0;
- for (var node in linkingUnit.unit.declarations) {
+ for (var node in linkingUnit.unit!.declarations) {
if (node is ast.ClassDeclaration) {
var name = node.name.name;
var reference = classRef.getChild(name);
@@ -107,7 +109,9 @@
localScope.declare(name, reference);
ClassElementImpl.forLinkedNode(
- linkingUnit.reference.element, reference, node);
+ linkingUnit.reference.element as CompilationUnitElementImpl,
+ reference,
+ node);
} else if (node is ast.ClassTypeAlias) {
var name = node.name.name;
var reference = classRef.getChild(name);
@@ -115,7 +119,9 @@
localScope.declare(name, reference);
ClassElementImpl.forLinkedNode(
- linkingUnit.reference.element, reference, node);
+ linkingUnit.reference.element as CompilationUnitElementImpl,
+ reference,
+ node);
} else if (node is ast.EnumDeclaration) {
var name = node.name.name;
var reference = enumRef.getChild(name);
@@ -123,8 +129,10 @@
localScope.declare(name, reference);
EnumElementImpl.forLinkedNode(
- linkingUnit.reference.element, reference, node);
- } else if (node is ast.ExtensionDeclaration) {
+ linkingUnit.reference.element as CompilationUnitElementImpl,
+ reference,
+ node);
+ } else if (node is ast.ExtensionDeclarationImpl) {
var name = node.name?.name;
var refName = name ?? 'extension-${nextUnnamedExtensionId++}';
@@ -136,7 +144,9 @@
}
ExtensionElementImpl.forLinkedNode(
- linkingUnit.reference.element, reference, node);
+ linkingUnit.reference.element as CompilationUnitElementImpl,
+ reference,
+ node);
} else if (node is ast.FunctionDeclaration) {
var name = node.name.name;
@@ -144,15 +154,15 @@
if (node.isGetter) {
reference = getterRef.getChild(name);
PropertyAccessorElementImpl.forLinkedNode(
- linkingUnit.reference.element, reference, node);
+ linkingUnit.reference.element as ElementImpl, reference, node);
} else if (node.isSetter) {
reference = setterRef.getChild(name);
PropertyAccessorElementImpl.forLinkedNode(
- linkingUnit.reference.element, reference, node);
+ linkingUnit.reference.element as ElementImpl, reference, node);
} else {
reference = functionRef.getChild(name);
FunctionElementImpl.forLinkedNode(
- linkingUnit.reference.element, reference, node);
+ linkingUnit.reference.element as ElementImpl, reference, node);
}
reference.node ??= node;
@@ -169,7 +179,9 @@
localScope.declare(name, reference);
TypeAliasElementImpl.forLinkedNodeFactory(
- linkingUnit.reference.element, reference, node);
+ linkingUnit.reference.element as CompilationUnitElementImpl,
+ reference,
+ node);
} else if (node is ast.GenericTypeAlias) {
var name = node.name.name;
var reference = typeAliasRef.getChild(name);
@@ -178,7 +190,9 @@
localScope.declare(name, reference);
TypeAliasElementImpl.forLinkedNodeFactory(
- linkingUnit.reference.element, reference, node);
+ linkingUnit.reference.element as CompilationUnitElementImpl,
+ reference,
+ node);
} else if (node is ast.MixinDeclaration) {
var name = node.name.name;
var reference = mixinRef.getChild(name);
@@ -186,7 +200,9 @@
localScope.declare(name, reference);
MixinElementImpl.forLinkedNode(
- linkingUnit.reference.element, reference, node);
+ linkingUnit.reference.element as CompilationUnitElementImpl,
+ reference,
+ node);
} else if (node is ast.TopLevelVariableDeclaration) {
for (var variable in node.variables.variables) {
var name = variable.name.name;
@@ -195,7 +211,9 @@
reference.node ??= node;
TopLevelVariableElementImpl.forLinkedNode(
- linkingUnit.reference.element, reference, variable);
+ linkingUnit.reference.element as CompilationUnitElementImpl,
+ reference,
+ variable);
var getter = getterRef.getChild(name);
localScope.declare(name, getter);
@@ -240,7 +258,7 @@
// Store elements only for the defining unit of the library.
var isDefiningUnit = true;
for (var unitContext in context.units) {
- for (var node in unitContext.unit.directives) {
+ for (var node in unitContext.unit!.directives) {
if (node is ast.ExportDirective) {
var exportElement = ExportElementImpl.forLinkedNode(element, node);
if (isDefiningUnit) {
@@ -260,7 +278,7 @@
element.exports = exports;
if (!hasCoreImport) {
- var dartCore = linker.elementFactory.libraryOfUri('dart:core');
+ var dartCore = linker.elementFactory.libraryOfUri2('dart:core');
imports.add(
ImportElementImpl(-1)
..importedLibrary = dartCore
@@ -272,9 +290,8 @@
}
void buildElement() {
- linker.elementFactory.createLibraryElementForLinking(context);
- element = reference.element;
- assert(element != null);
+ element = linker.elementFactory.createLibraryElementForLinking(context)
+ as LibraryElementImpl;
}
void buildInitialExportScope() {
@@ -284,12 +301,12 @@
}
void buildScope() {
- scope = element.scope;
+ scope = element.scope as LibraryScope;
}
void collectMixinSuperInvokedNames() {
for (var unitContext in context.units) {
- for (var declaration in unitContext.unit.declarations) {
+ for (var declaration in unitContext.unit!.declarations) {
if (declaration is ast.MixinDeclaration) {
var names = <String>{};
var collector = MixinSuperInvokedNamesCollector(names);
@@ -314,9 +331,10 @@
}
void resolveMetadata() {
- for (CompilationUnitElementImpl unit in element.units) {
+ for (var unit in element.units) {
+ var unitImpl = unit as CompilationUnitElementImpl;
var resolver = MetadataResolver(linker, scope, unit);
- unit.linkedNode.accept(resolver);
+ unitImpl.linkedNode!.accept(resolver);
}
}
@@ -329,16 +347,16 @@
linker.elementFactory,
element,
unitReference,
- unitContext.unit.featureSet.isEnabled(Feature.non_nullable),
+ unitContext.unit!.featureSet.isEnabled(Feature.non_nullable),
scope,
);
- unitContext.unit.accept(resolver);
+ unitContext.unit!.accept(resolver);
}
}
void resolveUriDirectives() {
var unitContext = context.units[0];
- for (var directive in unitContext.unit.directives) {
+ for (var directive in unitContext.unit!.directives) {
if (directive is ast.NamespaceDirective) {
try {
var uri = _selectAbsoluteUri(directive);
@@ -370,7 +388,7 @@
// }
}
- Uri _selectAbsoluteUri(ast.NamespaceDirective directive) {
+ Uri? _selectAbsoluteUri(ast.NamespaceDirective directive) {
var relativeUriStr = _selectRelativeUri(
directive.configurations,
directive.uri.stringValue,
@@ -382,9 +400,9 @@
return resolveRelativeUri(uri, relativeUri);
}
- String _selectRelativeUri(
+ String? _selectRelativeUri(
List<ast.Configuration> configurations,
- String defaultUri,
+ String? defaultUri,
) {
for (var configuration in configurations) {
var name = configuration.name.components.join('.');
@@ -406,8 +424,7 @@
var unitRef = reference.getChild('@unit');
var unitIndex = 0;
for (var inputUnit in inputLibrary.units) {
- var source = inputUnit.source;
- var uriStr = source != null ? '${source.uri}' : '';
+ var uriStr = inputUnit.uriStr;
var reference = unitRef.getChild(uriStr);
context.units.add(
LinkedUnitContext(
diff --git a/pkg/analyzer/lib/src/summary2/link.dart b/pkg/analyzer/lib/src/summary2/link.dart
index 96e45c6..67797c4 100644
--- a/pkg/analyzer/lib/src/summary2/link.dart
+++ b/pkg/analyzer/lib/src/summary2/link.dart
@@ -19,7 +19,6 @@
import 'package:analyzer/src/summary2/type_alias.dart';
import 'package:analyzer/src/summary2/types_builder.dart';
import 'package:analyzer/src/summary2/variance_builder.dart';
-import 'package:meta/meta.dart';
var timerLinkingLinkingBundle = Stopwatch();
var timerLinkingRemoveBundle = Stopwatch();
@@ -44,11 +43,11 @@
/// Libraries that are being linked.
final Map<Uri, LibraryBuilder> builders = {};
- InheritanceManager3 inheritance; // TODO(scheglov) cache it
+ late InheritanceManager3 inheritance; // TODO(scheglov) cache it
- BundleWriter bundleWriter;
- Uint8List astBytes;
- Uint8List resolutionBytes;
+ late BundleWriter bundleWriter;
+ late Uint8List astBytes;
+ late Uint8List resolutionBytes;
Linker(this.elementFactory, this.withInformative);
@@ -172,8 +171,8 @@
}
void _createTypeSystem() {
- var coreLib = elementFactory.libraryOfUri('dart:core');
- var asyncLib = elementFactory.libraryOfUri('dart:async');
+ var coreLib = elementFactory.libraryOfUri2('dart:core');
+ var asyncLib = elementFactory.libraryOfUri2('dart:async');
elementFactory.createTypeProviders(coreLib, asyncLib);
inheritance = InheritanceManager3();
@@ -240,7 +239,7 @@
return UnitToWriteResolution(
uriStr: e.uriStr,
partUriStr: e.partUriStr,
- node: e.unit,
+ node: e.unit!,
isSynthetic: e.isSynthetic,
);
}).toList(),
@@ -266,7 +265,7 @@
}
class LinkInputUnit {
- final String partUriStr;
+ final String? partUriStr;
final Source source;
final bool isSynthetic;
final CompilationUnit unit;
@@ -279,9 +278,6 @@
);
String get uriStr {
- if (source == null) {
- return '';
- }
return '${source.uri}';
}
}
@@ -291,7 +287,7 @@
final Uint8List resolutionBytes;
LinkResult({
- @required this.astBytes,
- @required this.resolutionBytes,
+ required this.astBytes,
+ required this.resolutionBytes,
});
}
diff --git a/pkg/analyzer/lib/src/summary2/linked_element_factory.dart b/pkg/analyzer/lib/src/summary2/linked_element_factory.dart
index b92ebe9..44aa3ee 100644
--- a/pkg/analyzer/lib/src/summary2/linked_element_factory.dart
+++ b/pkg/analyzer/lib/src/summary2/linked_element_factory.dart
@@ -6,6 +6,7 @@
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/src/context/context.dart';
import 'package:analyzer/src/dart/analysis/session.dart';
+import 'package:analyzer/src/dart/ast/ast.dart';
import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/dart/element/type_provider.dart';
import 'package:analyzer/src/dart/resolver/scope.dart';
@@ -62,13 +63,13 @@
'[exportedReference: $exportedReference]',
);
}
- exportedNames[element.name] = element;
+ exportedNames[element.name!] = element;
}
return Namespace(exportedNames);
}
- LibraryElementImpl createLibraryElementForLinking(
+ LibraryElementImpl? createLibraryElementForLinking(
LinkedLibraryContext libraryContext,
) {
var sourceFactory = analysisContext.sourceFactory;
@@ -79,7 +80,7 @@
if (librarySource == null) return null;
var definingUnitContext = libraryContext.units[0];
- var definingUnitNode = definingUnitContext.unit;
+ var definingUnitNode = definingUnitContext.unit!;
// TODO(scheglov) Do we need this?
var name = '';
@@ -109,9 +110,11 @@
var units = <CompilationUnitElementImpl>[];
var unitContainerRef = libraryContext.reference.getChild('@unit');
for (var unitContext in libraryContext.units) {
- var unitNode = unitContext.unit;
+ var unitNode = unitContext.unit as CompilationUnitImpl;
var unitSource = sourceFactory.forUri(unitContext.uriStr);
+ if (unitSource == null) continue;
+
var unitElement = CompilationUnitElementImpl.forLinkedNode(
libraryElement,
unitContext,
@@ -133,7 +136,7 @@
return libraryElement;
}
- LibraryElementImpl createLibraryElementForReading(String uriStr) {
+ LibraryElementImpl? createLibraryElementForReading(String uriStr) {
var sourceFactory = analysisContext.sourceFactory;
var librarySource = sourceFactory.forUri(uriStr);
@@ -185,9 +188,11 @@
var units = <CompilationUnitElementImpl>[];
for (var unitContext in unitContexts) {
- var unitNode = unitContext.unit;
+ var unitNode = unitContext.unit as CompilationUnitImpl;
var unitSource = sourceFactory.forUri(unitContext.uriStr);
+ if (unitSource == null) continue;
+
var unitElement = CompilationUnitElementImpl.forLinkedNode(
libraryElement,
unitContext,
@@ -213,7 +218,7 @@
LibraryElementImpl /*!*/ dartCore,
LibraryElementImpl /*!*/ dartAsync,
) {
- if (analysisContext.typeProviderNonNullableByDefault != null) {
+ if (analysisContext.hasTypeProvider) {
return;
}
@@ -233,14 +238,14 @@
// During linking we create libraries when typeProvider is not ready.
// Update these libraries now, when typeProvider is ready.
for (var reference in rootReference.children) {
- var libraryElement = reference.element as LibraryElementImpl;
- if (libraryElement != null && libraryElement.typeProvider == null) {
+ var libraryElement = reference.element as LibraryElementImpl?;
+ if (libraryElement != null && !libraryElement.hasTypeProviderSystemSet) {
_setLibraryTypeSystem(libraryElement);
}
}
}
- Element elementOfReference(Reference reference) {
+ Element? elementOfReference(Reference reference) {
if (reference.element != null) {
return reference.element;
}
@@ -253,7 +258,7 @@
return createLibraryElementForReading(uriStr);
}
- var parent = reference.parent.parent;
+ var parent = reference.parent!.parent!;
var parentElement = elementOfReference(parent);
// Named formal parameters are created when we apply resolution to the
@@ -292,75 +297,87 @@
}
// For class, mixin, extension - index members.
- parent.nodeAccessor.readIndex();
+ parent.nodeAccessor!.readIndex();
// For any element - class, method, etc - read the node.
- var node = reference.nodeAccessor.node;
+ var node = reference.nodeAccessor!.node;
if (node is ClassDeclaration) {
- ClassElementImpl.forLinkedNode(parentElement, reference, node);
+ ClassElementImpl.forLinkedNode(
+ parentElement as CompilationUnitElementImpl, reference, node);
assert(reference.element != null);
return reference.element;
} else if (node is ClassTypeAlias) {
- ClassElementImpl.forLinkedNode(parentElement, reference, node);
+ ClassElementImpl.forLinkedNode(
+ parentElement as CompilationUnitElementImpl, reference, node);
assert(reference.element != null);
return reference.element;
- } else if (node is ConstructorDeclaration) {
- ConstructorElementImpl.forLinkedNode(parentElement, reference, node);
+ } else if (node is ConstructorDeclarationImpl) {
+ ConstructorElementImpl.forLinkedNode(
+ parentElement as ClassElementImpl, reference, node);
var element = reference.element as ConstructorElementImpl;
- assert(element != null);
return element;
} else if (node is EnumDeclaration) {
- EnumElementImpl.forLinkedNode(parentElement, reference, node);
+ EnumElementImpl.forLinkedNode(
+ parentElement as CompilationUnitElementImpl, reference, node);
assert(reference.element != null);
return reference.element;
- } else if (node is ExtensionDeclaration) {
- ExtensionElementImpl.forLinkedNode(parentElement, reference, node);
+ } else if (node is ExtensionDeclarationImpl) {
+ ExtensionElementImpl.forLinkedNode(
+ parentElement as CompilationUnitElementImpl, reference, node);
assert(reference.element != null);
return reference.element;
} else if (node is FieldDeclaration) {
var variable = _variableDeclaration(node.fields, reference.name);
if (variable.isConst) {
- ConstFieldElementImpl.forLinkedNode(parentElement, reference, variable);
+ ConstFieldElementImpl.forLinkedNode(
+ parentElement as ElementImpl, reference, variable);
} else {
FieldElementImpl.forLinkedNodeFactory(
- parentElement, reference, variable);
+ parentElement as ElementImpl, reference, variable);
}
assert(reference.element != null);
return reference.element;
} else if (node is FunctionDeclaration) {
if (node.propertyKeyword != null) {
- _topLevelPropertyAccessor(parent, parentElement, reference, node);
+ _topLevelPropertyAccessor(parent,
+ parentElement as CompilationUnitElementImpl, reference, node);
} else {
- FunctionElementImpl.forLinkedNode(parentElement, reference, node);
+ FunctionElementImpl.forLinkedNode(
+ parentElement as CompilationUnitElementImpl, reference, node);
}
assert(reference.element != null);
return reference.element;
} else if (node is FunctionTypeAlias || node is GenericTypeAlias) {
- TypeAliasElementImpl.forLinkedNodeFactory(parentElement, reference, node);
+ TypeAliasElementImpl.forLinkedNodeFactory(
+ parentElement as CompilationUnitElementImpl,
+ reference,
+ node as TypeAlias);
assert(reference.element != null);
return reference.element;
} else if (node is MethodDeclaration) {
if (node.propertyKeyword != null) {
- PropertyAccessorElementImpl.forLinkedNode(
- parentElement, reference, node);
+ _classPropertyAccessor(
+ parent, parentElement as ElementImpl, reference, node);
} else {
- MethodElementImpl.forLinkedNode(parentElement, reference, node);
+ MethodElementImpl.forLinkedNode(
+ parentElement as TypeParameterizedElementMixin, reference, node);
}
assert(reference.element != null);
return reference.element;
} else if (node is MixinDeclaration) {
- MixinElementImpl.forLinkedNode(parentElement, reference, node);
+ MixinElementImpl.forLinkedNode(
+ parentElement as CompilationUnitElementImpl, reference, node);
assert(reference.element != null);
return reference.element;
} else if (node is TopLevelVariableDeclaration) {
var variable = _variableDeclaration(node.variables, reference.name);
if (variable.isConst) {
ConstTopLevelVariableElementImpl.forLinkedNode(
- parentElement, reference, variable);
+ parentElement as ElementImpl, reference, variable);
} else {
TopLevelVariableElementImpl.forLinkedNode(
- parentElement, reference, variable);
+ parentElement as CompilationUnitElementImpl, reference, variable);
}
assert(reference.element != null);
return reference.element;
@@ -386,13 +403,21 @@
}
bool isLibraryUri(String uriStr) {
- var libraryContext = libraryReaders[uriStr];
+ var libraryContext = libraryReaders[uriStr]!;
return !libraryContext.hasPartOfDirective;
}
- LibraryElementImpl libraryOfUri(String uriStr) {
+ LibraryElementImpl? libraryOfUri(String uriStr) {
var reference = rootReference.getChild(uriStr);
- return elementOfReference(reference);
+ return elementOfReference(reference) as LibraryElementImpl?;
+ }
+
+ LibraryElementImpl libraryOfUri2(String uriStr) {
+ var element = libraryOfUri(uriStr);
+ if (element == null) {
+ throw StateError('No library: $uriStr');
+ }
+ return element;
}
/// We have linked the bundle, and need to disconnect its libraries, so
@@ -434,6 +459,42 @@
analysisSession.inheritanceManager.removeOfLibraries(uriStrSet);
}
+ void _classPropertyAccessor(
+ Reference parentReference,
+ ElementImpl parentElement,
+ Reference reference,
+ MethodDeclaration node,
+ ) {
+ var accessor = PropertyAccessorElementImpl.forLinkedNode(
+ parentElement, reference, node);
+
+ var name = reference.name;
+ var fieldRef = parentReference.getChild('@field').getChild(name);
+ var field = fieldRef.element as FieldElementImpl?;
+ if (field == null) {
+ field = FieldElementImpl(name, -1);
+ fieldRef.element = field;
+ field.enclosingElement = parentElement;
+ field.isSynthetic = true;
+ field.isFinal = node.isGetter;
+ field.isStatic = accessor.isStatic;
+ } else {
+ field.isFinal = false;
+ }
+
+ var isSetter = node.isSetter;
+ if (isSetter) {
+ field.isFinal = false;
+ }
+
+ accessor.variable = field;
+ if (isSetter) {
+ field.setter = accessor;
+ } else {
+ field.getter = accessor;
+ }
+ }
+
void _declareDartCoreDynamicNever() {
var dartCoreRef = rootReference.getChild('dart:core');
dartCoreRef.getChild('dynamic').element = DynamicElementImpl.instance;
@@ -444,7 +505,7 @@
// During linking we create libraries when typeProvider is not ready.
// And if we link dart:core and dart:async, we cannot create it.
// We will set typeProvider later, during [createTypeProviders].
- if (analysisContext.typeProviderNonNullableByDefault == null) {
+ if (!analysisContext.hasTypeProvider) {
return;
}
@@ -455,6 +516,7 @@
libraryElement.typeSystem = isNonNullable
? analysisContext.typeSystemNonNullableByDefault
: analysisContext.typeSystemLegacy;
+ libraryElement.hasTypeProviderSystemSet = true;
libraryElement.createLoadLibraryFunction();
}
@@ -470,7 +532,7 @@
var name = reference.name;
var fieldRef = parentReference.getChild('@field').getChild(name);
- var field = fieldRef.element as TopLevelVariableElementImpl;
+ var field = fieldRef.element as TopLevelVariableElementImpl?;
if (field == null) {
field = TopLevelVariableElementImpl(name, -1);
fieldRef.element = field;
diff --git a/pkg/analyzer/lib/src/summary2/linked_unit_context.dart b/pkg/analyzer/lib/src/summary2/linked_unit_context.dart
index cf7722d..12d1a56 100644
--- a/pkg/analyzer/lib/src/summary2/linked_unit_context.dart
+++ b/pkg/analyzer/lib/src/summary2/linked_unit_context.dart
@@ -13,27 +13,26 @@
import 'package:analyzer/src/summary2/linked_element_factory.dart';
import 'package:analyzer/src/summary2/linked_library_context.dart';
import 'package:analyzer/src/summary2/reference.dart';
-import 'package:meta/meta.dart';
/// The context of a unit - the context of the bundle, and the unit tokens.
class LinkedUnitContext {
final LinkedLibraryContext libraryContext;
final int indexInLibrary;
- final String partUriStr;
+ final String? partUriStr;
final String uriStr;
final Reference reference;
final bool isSynthetic;
- final CompilationUnit unit;
- final UnitReader unitReader;
+ final CompilationUnit? unit;
+ final UnitReader? unitReader;
bool _hasDirectivesRead = false;
LinkedUnitContext(this.libraryContext, this.indexInLibrary, this.partUriStr,
this.uriStr, this.reference, this.isSynthetic,
- {@required this.unit, @required this.unitReader});
+ {required this.unit, required this.unitReader});
CompilationUnitElementImpl get element {
- return reference.element;
+ return reference.element as CompilationUnitElementImpl;
}
LinkedElementFactory get elementFactory => libraryContext.elementFactory;
@@ -58,7 +57,7 @@
CompilationUnit get unit_withDeclarations {
unitReader?.readDeclarations();
- return unit;
+ return unit!;
}
/// Ensure that [unit] has directives ready (because we are linking,
@@ -67,9 +66,10 @@
CompilationUnit get unit_withDirectives {
if (unitReader != null && !_hasDirectivesRead) {
_hasDirectivesRead = true;
- unitReader.readDirectives();
- var libraryElement = libraryContext.reference.element;
- for (var directive in unit.directives) {
+ unitReader!.readDirectives();
+ var libraryElement =
+ libraryContext.reference.element as LibraryElementImpl;
+ for (var directive in unit!.directives) {
if (directive is ExportDirective) {
if (directive.element == null) {
ExportElementImpl.forLinkedNode(libraryElement, directive);
@@ -81,12 +81,12 @@
}
}
}
- return unit;
+ return unit!;
}
void applyResolution(AstNode node) {
if (node is VariableDeclaration) {
- node = node.parent.parent;
+ node = node.parent!.parent!;
}
if (node is HasAstLinkedContext) {
var astLinkedContext = (node as HasAstLinkedContext).linkedContext;
@@ -98,7 +98,7 @@
var containerRef = this.reference.getChild('@genericFunctionType');
var reference = containerRef.getChild('$id');
var element = GenericFunctionTypeElementImpl.forLinkedNode(
- this.reference.element,
+ this.reference.element as ElementImpl,
reference,
node,
);
@@ -112,7 +112,7 @@
}
if (node is CompilationUnitImpl) {
- var data = node.summaryData as SummaryDataForCompilationUnit;
+ var data = node.summaryData as SummaryDataForCompilationUnit?;
if (data != null) {
return data.codeLength;
} else {
@@ -125,8 +125,8 @@
} else if (node is TypeParameter) {
return node.length;
} else if (node is VariableDeclaration) {
- var parent2 = node.parent.parent;
- var linked = (parent2 as HasAstLinkedContext).linkedContext;
+ var parent2 = node.parent!.parent!;
+ var linked = (parent2 as HasAstLinkedContext).linkedContext!;
return linked.getVariableDeclarationCodeLength(node);
}
throw UnimplementedError('${node.runtimeType}');
@@ -147,8 +147,8 @@
} else if (node is TypeParameter) {
return node.offset;
} else if (node is VariableDeclaration) {
- var parent2 = node.parent.parent;
- var linked = (parent2 as HasAstLinkedContext).linkedContext;
+ var parent2 = node.parent!.parent!;
+ var linked = (parent2 as HasAstLinkedContext).linkedContext!;
return linked.getVariableDeclarationCodeOffset(node);
}
throw UnimplementedError('${node.runtimeType}');
@@ -160,30 +160,30 @@
return node.initializers;
}
- ConstructorName getConstructorRedirected(ConstructorDeclaration node) {
+ ConstructorName? getConstructorRedirected(ConstructorDeclaration node) {
return node.redirectedConstructor;
}
- List<ConstructorDeclaration> getConstructors(AstNode node) {
+ List<ConstructorDeclarationImpl> getConstructors(AstNode node) {
if (node is ClassOrMixinDeclaration) {
return _getClassOrExtensionOrMixinMembers(node)
- .whereType<ConstructorDeclaration>()
+ .whereType<ConstructorDeclarationImpl>()
.toList();
}
- return const <ConstructorDeclaration>[];
+ return const <ConstructorDeclarationImpl>[];
}
int getDirectiveOffset(Directive node) {
return node.keyword.offset;
}
- Comment getDocumentationComment(AstNode node) {
+ Comment? getDocumentationComment(AstNode node) {
if (node is HasAstLinkedContext) {
var linkedContext = (node as HasAstLinkedContext).linkedContext;
linkedContext?.readDocumentationComment();
return (node as AnnotatedNode).documentationComment;
} else if (node is VariableDeclaration) {
- return getDocumentationComment(node.parent.parent);
+ return getDocumentationComment(node.parent!.parent!);
} else {
throw UnimplementedError('${node.runtimeType}');
}
@@ -215,11 +215,12 @@
return getFormalParameterName(node.parameter);
} else if (node is NormalFormalParameter) {
return node.identifier?.name ?? '';
+ } else {
+ throw UnimplementedError('${node.runtimeType}');
}
- return null;
}
- List<FormalParameter> getFormalParameters(AstNode node) {
+ List<FormalParameter>? getFormalParameters(AstNode node) {
if (node is ConstructorDeclaration) {
return node.parameters.parameters;
} else if (node is FunctionDeclaration) {
@@ -247,7 +248,7 @@
}
}
- ImplementsClause getImplementsClause(AstNode node) {
+ ImplementsClause? getImplementsClause(AstNode node) {
if (node is ClassDeclaration) {
return node.implementsClause;
} else if (node is ClassTypeAlias) {
@@ -259,7 +260,7 @@
}
}
- Expression getInitializer(AstNode node) {
+ Expression? getInitializer(AstNode node) {
if (node is DefaultFormalParameter) {
return node.defaultValue;
} else if (node is VariableDeclaration) {
@@ -270,10 +271,10 @@
}
LibraryLanguageVersion getLanguageVersion(CompilationUnit node) {
- return (node as CompilationUnitImpl).languageVersion;
+ return (node as CompilationUnitImpl).languageVersion!;
}
- Comment getLibraryDocumentationComment() {
+ Comment? getLibraryDocumentationComment() {
for (var directive in unit_withDirectives.directives) {
if (directive is LibraryDirectiveImpl) {
var data = directive.summaryData as SummaryDataForLibraryDirective;
@@ -286,8 +287,8 @@
List<Annotation> getLibraryMetadata() {
unit_withDirectives;
- unitReader.applyDirectivesResolution(this);
- for (var directive in unit.directives) {
+ unitReader!.applyDirectivesResolution(this);
+ for (var directive in unit!.directives) {
if (directive is LibraryDirective) {
return directive.metadata;
}
@@ -334,7 +335,7 @@
} else if (node is TypeParameter) {
return node.metadata;
} else if (node is VariableDeclaration) {
- var parent2 = node.parent.parent;
+ var parent2 = node.parent!.parent!;
if (parent2 is FieldDeclaration) {
return parent2.metadata;
} else if (parent2 is TopLevelVariableDeclaration) {
@@ -353,7 +354,7 @@
int getNameOffset(AstNode node) {
if (node is ConstructorDeclaration) {
if (node.name != null) {
- return node.name.offset;
+ return node.name!.offset;
} else {
return node.returnType.offset;
}
@@ -383,7 +384,7 @@
throw UnimplementedError('${node.runtimeType}');
}
- TypeName getSuperclass(AstNode node) {
+ TypeName? getSuperclass(AstNode node) {
if (node is ClassDeclaration) {
return node.extendsClause?.superclass;
} else if (node is ClassTypeAlias) {
@@ -393,7 +394,7 @@
}
}
- TypeParameterList getTypeParameters2(AstNode node) {
+ TypeParameterList? getTypeParameters2(AstNode node) {
if (node is ClassDeclaration) {
return node.typeParameters;
} else if (node is ClassTypeAlias) {
@@ -429,7 +430,7 @@
}
}
- WithClause getWithClause(AstNode node) {
+ WithClause? getWithClause(AstNode node) {
if (node is ClassDeclaration) {
return node.withClause;
} else if (node is ClassTypeAlias) {
@@ -455,7 +456,7 @@
} else if (node is SimpleFormalParameter) {
return node.type == null;
} else if (node is VariableDeclaration) {
- VariableDeclarationList parent = node.parent;
+ var parent = node.parent as VariableDeclarationList;
return parent.type == null;
}
return false;
@@ -500,7 +501,7 @@
} else if (node is FunctionDeclaration) {
return isAsynchronous(node.functionExpression);
} else if (node is FunctionExpression) {
- return node.body.isAsynchronous;
+ return node.body!.isAsynchronous;
} else if (node is MethodDeclaration) {
return node.body.isAsynchronous;
} else {
@@ -513,7 +514,7 @@
return node.isConst;
}
if (node is VariableDeclaration) {
- VariableDeclarationList parent = node.parent;
+ var parent = node.parent as VariableDeclarationList;
return parent.isConst;
}
throw UnimplementedError('${node.runtimeType}');
@@ -527,7 +528,7 @@
} else if (node is FormalParameter) {
return node.covariantKeyword != null;
} else if (node is VariableDeclaration) {
- var parent2 = node.parent.parent;
+ var parent2 = node.parent!.parent!;
return parent2 is FieldDeclaration && parent2.covariantKeyword != null;
} else {
throw StateError('${node.runtimeType}');
@@ -567,7 +568,7 @@
return false;
}
if (node is VariableDeclaration) {
- VariableDeclarationList parent = node.parent;
+ var parent = node.parent as VariableDeclarationList;
return parent.isFinal;
}
throw UnimplementedError('${node.runtimeType}');
@@ -579,7 +580,7 @@
} else if (node is FunctionDeclaration) {
return isGenerator(node.functionExpression);
} else if (node is FunctionExpression) {
- return node.body.isGenerator;
+ return node.body!.isGenerator;
} else if (node is MethodDeclaration) {
return node.body.isGenerator;
} else {
@@ -631,7 +632,7 @@
} else if (node is MethodDeclaration) {
return node.modifierKeyword != null;
} else if (node is VariableDeclaration) {
- var parent2 = node.parent.parent;
+ var parent2 = node.parent!.parent!;
return parent2 is FieldDeclaration && parent2.isStatic;
}
throw UnimplementedError('${node.runtimeType}');
@@ -639,10 +640,10 @@
bool shouldBeConstFieldElement(AstNode node) {
if (node is VariableDeclaration) {
- VariableDeclarationList variableList = node.parent;
+ var variableList = node.parent as VariableDeclarationList;
if (variableList.isConst) return true;
- FieldDeclaration fieldDeclaration = variableList.parent;
+ var fieldDeclaration = variableList.parent as FieldDeclaration;
if (fieldDeclaration.staticKeyword != null) return false;
if (variableList.isFinal) {
diff --git a/pkg/analyzer/lib/src/summary2/linking_node_scope.dart b/pkg/analyzer/lib/src/summary2/linking_node_scope.dart
index a97dccc..051db73 100644
--- a/pkg/analyzer/lib/src/summary2/linking_node_scope.dart
+++ b/pkg/analyzer/lib/src/summary2/linking_node_scope.dart
@@ -16,7 +16,7 @@
}
static LinkingNodeContext get(AstNode node) {
- LinkingNodeContext context = node.getProperty(_key);
+ var context = node.getProperty(_key) as LinkingNodeContext?;
if (context == null) {
throw StateError('No context for: $node');
}
diff --git a/pkg/analyzer/lib/src/summary2/metadata_resolver.dart b/pkg/analyzer/lib/src/summary2/metadata_resolver.dart
index 61fd6d1..bcd9298 100644
--- a/pkg/analyzer/lib/src/summary2/metadata_resolver.dart
+++ b/pkg/analyzer/lib/src/summary2/metadata_resolver.dart
@@ -4,7 +4,6 @@
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/visitor.dart';
-import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/scope.dart';
import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/summary2/ast_resolver.dart';
@@ -14,7 +13,7 @@
class MetadataResolver extends ThrowingAstVisitor<void> {
final Linker _linker;
final Scope _libraryScope;
- final CompilationUnitElement _unitElement;
+ final CompilationUnitElementImpl _unitElement;
Scope _scope;
MetadataResolver(this._linker, this._libraryScope, this._unitElement)
diff --git a/pkg/analyzer/lib/src/summary2/named_type_builder.dart b/pkg/analyzer/lib/src/summary2/named_type_builder.dart
index d67f186..5fff83c 100644
--- a/pkg/analyzer/lib/src/summary2/named_type_builder.dart
+++ b/pkg/analyzer/lib/src/summary2/named_type_builder.dart
@@ -14,7 +14,6 @@
import 'package:analyzer/src/dart/element/type_system.dart';
import 'package:analyzer/src/dart/element/type_visitor.dart';
import 'package:analyzer/src/summary2/type_builder.dart';
-import 'package:meta/meta.dart';
/// The type builder for a [TypeName].
class NamedTypeBuilder extends TypeBuilder {
@@ -36,13 +35,13 @@
/// The node for which this builder is created, or `null` if the builder
/// was detached from its node, e.g. during computing default types for
/// type parameters.
- final TypeName node;
+ final TypeName? node;
/// The actual built type, not a [TypeBuilder] anymore.
///
/// When [build] is called, the type is built, stored into this field,
/// and set for the [node].
- DartType _type;
+ DartType? _type;
NamedTypeBuilder(
this.typeSystem, this.element, this.arguments, this.nullabilitySuffix,
@@ -57,7 +56,7 @@
List<DartType> arguments;
var argumentList = node.typeArguments;
if (argumentList != null) {
- arguments = argumentList.arguments.map((n) => n.type).toList();
+ arguments = argumentList.arguments.map((n) => n.type!).toList();
} else {
arguments = <DartType>[];
}
@@ -68,7 +67,7 @@
/// TODO(scheglov) Only when enabled both in the element, and target?
bool get _isNonFunctionTypeAliasesEnabled {
- return element.library.featureSet.isEnabled(
+ return element.library!.featureSet.isEnabled(
Feature.nonfunction_type_aliases,
);
}
@@ -86,7 +85,7 @@
@override
DartType build() {
if (_type != null) {
- return _type;
+ return _type!;
}
var element = this.element;
@@ -97,23 +96,19 @@
typeArguments: arguments,
nullabilitySuffix: nullabilitySuffix,
);
- type = typeSystem.toLegacyType(type);
+ type = typeSystem.toLegacyType(type) as InterfaceType;
_type = type;
} else if (element is TypeAliasElementImpl) {
var aliasedType = _getAliasedType(element);
- if (aliasedType != null) {
- var parameters = element.typeParameters;
- var arguments = _buildArguments(parameters);
- element.aliasedType = aliasedType;
- var type = element.instantiate(
- typeArguments: arguments,
- nullabilitySuffix: nullabilitySuffix,
- );
- type = typeSystem.toLegacyType(type);
- _type = type;
- } else {
- _type = _dynamicType;
- }
+ var parameters = element.typeParameters;
+ var arguments = _buildArguments(parameters);
+ element.aliasedType = aliasedType;
+ var type = element.instantiate(
+ typeArguments: arguments,
+ nullabilitySuffix: nullabilitySuffix,
+ );
+ type = typeSystem.toLegacyType(type);
+ _type = type;
} else if (element is NeverElementImpl) {
if (typeSystem.isNonNullableByDefault) {
_type = NeverTypeImpl.instance.withNullability(nullabilitySuffix);
@@ -130,7 +125,7 @@
}
node?.type = _type;
- return _type;
+ return _type!;
}
@override
@@ -155,16 +150,16 @@
node: node);
}
- DartType _buildAliasedType(TypeAnnotation node) {
+ DartType _buildAliasedType(TypeAnnotation? node) {
if (_isNonFunctionTypeAliasesEnabled) {
if (node != null) {
- return _buildType(node?.type);
+ return _buildType(node.type!);
} else {
return _dynamicType;
}
} else {
if (node is GenericFunctionType) {
- return _buildType(node?.type);
+ return _buildType(node.type!);
} else {
return FunctionTypeImpl(
typeFormals: const <TypeParameterElement>[],
@@ -182,24 +177,19 @@
return const <DartType>[];
} else if (arguments.isNotEmpty) {
if (arguments.length == parameters.length) {
- var result = List<DartType>.filled(parameters.length, null);
- for (int i = 0; i < result.length; ++i) {
- var type = arguments[i];
- result[i] = _buildType(type);
- }
- return result;
+ return List.generate(arguments.length, (index) {
+ var type = arguments[index];
+ return _buildType(type);
+ });
} else {
return _listOfDynamic(parameters.length);
}
} else {
- var result = List<DartType>.filled(parameters.length, null);
- for (int i = 0; i < result.length; ++i) {
- TypeParameterElementImpl parameter = parameters[i];
- var defaultType = parameter.defaultType;
- defaultType = _buildType(defaultType);
- result[i] = defaultType;
- }
- return result;
+ return List.generate(parameters.length, (index) {
+ var parameter = parameters[index] as TypeParameterElementImpl;
+ var defaultType = parameter.defaultType!;
+ return _buildType(defaultType);
+ });
}
}
@@ -221,10 +211,10 @@
}
FunctionType _buildFunctionType({
- @required TypeParameterList typeParameterList,
- @required TypeAnnotation returnTypeNode,
- @required FormalParameterList parameterList,
- @required bool hasQuestion,
+ required TypeParameterList? typeParameterList,
+ required TypeAnnotation? returnTypeNode,
+ required FormalParameterList parameterList,
+ required bool hasQuestion,
}) {
var returnType = _buildNodeType(returnTypeNode);
var typeParameters = _typeParameters(typeParameterList);
@@ -238,11 +228,11 @@
);
}
- DartType _buildNodeType(TypeAnnotation node) {
+ DartType _buildNodeType(TypeAnnotation? node) {
if (node == null) {
return _dynamicType;
} else {
- return _buildType(node.type);
+ return _buildType(node.type!);
}
}
@@ -260,14 +250,14 @@
// If the element is not being linked, there is no reason (or a way,
// because the linked node might be read only partially) to go through
// its node - all its types have already been built.
- if (!element.linkedContext.isLinking) {
+ if (!element.linkedContext!.isLinking) {
return element.aliasedType;
}
- var typedefNode = element.linkedNode;
+ var typedefNode = element.linkedNode!;
// Break a possible recursion.
- var existing = typedefNode.getProperty(_aliasedTypeKey) as DartType;
+ var existing = typedefNode.getProperty(_aliasedTypeKey) as DartType?;
if (existing != null) {
return existing;
} else {
@@ -320,10 +310,10 @@
node.setProperty(_aliasedTypeKey, type);
}
- static List<TypeParameterElement> _typeParameters(TypeParameterList node) {
+ static List<TypeParameterElement> _typeParameters(TypeParameterList? node) {
if (node != null) {
return node.typeParameters
- .map<TypeParameterElement>((p) => p.declaredElement)
+ .map<TypeParameterElement>((p) => p.declaredElement!)
.toList();
} else {
return const <TypeParameterElement>[];
diff --git a/pkg/analyzer/lib/src/summary2/package_bundle_format.dart b/pkg/analyzer/lib/src/summary2/package_bundle_format.dart
index cb47263..c876e47 100644
--- a/pkg/analyzer/lib/src/summary2/package_bundle_format.dart
+++ b/pkg/analyzer/lib/src/summary2/package_bundle_format.dart
@@ -21,9 +21,9 @@
}
Uint8List finish({
- @required Uint8List astBytes,
- @required Uint8List resolutionBytes,
- PackageBundleSdk sdk,
+ required Uint8List astBytes,
+ required Uint8List resolutionBytes,
+ PackageBundleSdk? sdk,
}) {
var byteSink = ByteSink();
var sink = BufferedSink(byteSink);
@@ -61,9 +61,9 @@
class PackageBundleReader {
final List<PackageBundleLibrary> libraries = [];
- PackageBundleSdk _sdk;
- Uint8List _astBytes;
- Uint8List _resolutionBytes;
+ late final PackageBundleSdk? _sdk;
+ late final Uint8List _astBytes;
+ late final Uint8List _resolutionBytes;
PackageBundleReader(Uint8List bytes) {
var reader = SummaryDataReader(bytes);
@@ -94,7 +94,7 @@
Uint8List get resolutionBytes => _resolutionBytes;
- PackageBundleSdk get sdk => _sdk;
+ PackageBundleSdk? get sdk => _sdk;
}
class PackageBundleSdk {
@@ -105,9 +105,9 @@
final String allowedExperimentsJson;
PackageBundleSdk({
- @required this.languageVersionMajor,
- @required this.languageVersionMinor,
- @required this.allowedExperimentsJson,
+ required this.languageVersionMajor,
+ required this.languageVersionMinor,
+ required this.allowedExperimentsJson,
});
factory PackageBundleSdk._fromReader(SummaryDataReader reader) {
diff --git a/pkg/analyzer/lib/src/summary2/reference.dart b/pkg/analyzer/lib/src/summary2/reference.dart
index 6cd096b..871b65c 100644
--- a/pkg/analyzer/lib/src/summary2/reference.dart
+++ b/pkg/analyzer/lib/src/summary2/reference.dart
@@ -27,28 +27,28 @@
/// There is only one reference object per [Element].
class Reference {
/// The parent of this reference, or `null` if the root.
- final Reference parent;
+ final Reference? parent;
/// The simple name of the reference in its [parent].
final String name;
/// The node accessor, used to read nodes lazily.
/// Or `null` if a named container.
- ReferenceNodeAccessor nodeAccessor;
+ ReferenceNodeAccessor? nodeAccessor;
/// The corresponding [AstNode], or `null` if a named container.
- AstNode node;
+ AstNode? node;
/// The corresponding [Element], or `null` if a named container.
- Element element;
+ Element? element;
/// Temporary index used during serialization and linking.
- int index;
+ int? index;
- Map<String, Reference> _children;
+ Map<String, Reference>? _children;
/// If this reference is an import prefix, the scope of this prefix.
- Scope prefixScope;
+ Scope? prefixScope;
Reference.root() : this._(null, '');
@@ -56,38 +56,38 @@
Iterable<Reference> get children {
if (_children != null) {
- return _children.values;
+ return _children!.values;
}
return const [];
}
- bool get isClass => parent != null && parent.name == '@class';
+ bool get isClass => parent != null && parent!.name == '@class';
- bool get isConstructor => parent != null && parent.name == '@constructor';
+ bool get isConstructor => parent != null && parent!.name == '@constructor';
bool get isDynamic => name == 'dynamic' && parent?.name == 'dart:core';
- bool get isEnum => parent != null && parent.name == '@enum';
+ bool get isEnum => parent != null && parent!.name == '@enum';
- bool get isGetter => parent != null && parent.name == '@getter';
+ bool get isGetter => parent != null && parent!.name == '@getter';
- bool get isLibrary => parent != null && parent.isRoot;
+ bool get isLibrary => parent != null && parent!.isRoot;
- bool get isParameter => parent != null && parent.name == '@parameter';
+ bool get isParameter => parent != null && parent!.name == '@parameter';
- bool get isPrefix => parent != null && parent.name == '@prefix';
+ bool get isPrefix => parent != null && parent!.name == '@prefix';
bool get isRoot => parent == null;
- bool get isSetter => parent != null && parent.name == '@setter';
+ bool get isSetter => parent != null && parent!.name == '@setter';
- bool get isTypeAlias => parent != null && parent.name == '@typeAlias';
+ bool get isTypeAlias => parent != null && parent!.name == '@typeAlias';
- bool get isUnit => parent != null && parent.name == '@unit';
+ bool get isUnit => parent != null && parent!.name == '@unit';
/// Return the child with the given name, or `null` if does not exist.
- Reference operator [](String name) {
- return _children != null ? _children[name] : null;
+ Reference? operator [](String name) {
+ return _children != null ? _children![name] : null;
}
/// Return the child with the given name, create if does not exist yet.
@@ -104,7 +104,7 @@
if (element != null && this.node == node) {
return true;
} else {
- if (node == null) {
+ if (this.node == null) {
this.node = node;
}
return false;
@@ -112,7 +112,7 @@
}
void removeChild(String name) {
- _children.remove(name);
+ _children!.remove(name);
}
@override
diff --git a/pkg/analyzer/lib/src/summary2/reference_resolver.dart b/pkg/analyzer/lib/src/summary2/reference_resolver.dart
index 73818f7..b8e2973 100644
--- a/pkg/analyzer/lib/src/summary2/reference_resolver.dart
+++ b/pkg/analyzer/lib/src/summary2/reference_resolver.dart
@@ -40,13 +40,13 @@
/// The depth-first number of the next [GenericFunctionType] node.
int _nextGenericFunctionTypeId = 0;
- Reference reference;
+ Reference? reference;
Scope scope;
ReferenceResolver(
this.nodesToBuildType,
this.elementFactory,
- LibraryElement libraryElement,
+ LibraryElementImpl libraryElement,
this.unitReference,
this.isNNBD,
this.scope,
@@ -62,7 +62,7 @@
var outerReference = reference;
var element = node.declaredElement as ClassElementImpl;
- reference = element.reference;
+ reference = element.reference!;
element.accessors; // create elements
element.constructors; // create elements
element.methods; // create elements
@@ -91,15 +91,15 @@
var outerReference = reference;
var element = node.declaredElement as ClassElementImpl;
- reference = element.reference;
+ reference = element.reference!;
_createTypeParameterElements(element, node.typeParameters);
scope = TypeParameterScope(scope, element.typeParameters);
LinkingNodeContext(node, scope);
node.typeParameters?.accept(this);
- node.superclass?.accept(this);
- node.withClause?.accept(this);
+ node.superclass.accept(this);
+ node.withClause.accept(this);
node.implementsClause?.accept(this);
nodesToBuildType.addDeclaration(node);
@@ -119,13 +119,13 @@
var outerReference = reference;
var element = node.declaredElement as ConstructorElementImpl;
- reference = element.reference;
+ reference = element.reference!;
element.parameters; // create elements
scope = TypeParameterScope(scope, element.typeParameters);
LinkingNodeContext(node, scope);
- node.parameters?.accept(this);
+ node.parameters.accept(this);
scope = outerScope;
reference = outerReference;
@@ -153,7 +153,7 @@
var outerReference = reference;
var element = node.declaredElement as ExtensionElementImpl;
- reference = element.reference;
+ reference = element.reference!;
_createTypeParameterElements(element, node.typeParameters);
scope = TypeParameterScope(scope, element.typeParameters);
@@ -208,7 +208,7 @@
var outerReference = reference;
var element = node.declaredElement as ExecutableElementImpl;
- reference = element.reference;
+ reference = element.reference!;
element.parameters; // create elements
_createTypeParameterElements(
@@ -238,7 +238,7 @@
var outerReference = reference;
var element = node.declaredElement as FunctionTypeAliasElementImpl;
- reference = element.reference;
+ reference = element.reference!;
_createTypeParameterElements(element, node.typeParameters);
scope = TypeParameterScope(outerScope, element.typeParameters);
@@ -247,7 +247,7 @@
node.typeParameters?.accept(this);
var functionElement = element.function;
- reference = functionElement.reference;
+ reference = functionElement.reference!;
functionElement.parameters; // create elements
node.parameters.accept(this);
@@ -280,6 +280,7 @@
@override
void visitGenericFunctionType(GenericFunctionType node) {
+ var nodeImpl = node as GenericFunctionTypeImpl;
var outerScope = scope;
var outerReference = reference;
@@ -289,8 +290,8 @@
reference = containerRef.getChild('$id');
var element = GenericFunctionTypeElementImpl.forLinkedNode(
- unitReference.element,
- reference,
+ unitReference.element as CompilationUnitElementImpl,
+ reference!,
node,
);
element.parameters; // create elements
@@ -303,8 +304,8 @@
node.parameters.accept(this);
var nullabilitySuffix = _getNullabilitySuffix(node.question != null);
- var builder = FunctionTypeBuilder.of(isNNBD, node, nullabilitySuffix);
- (node as GenericFunctionTypeImpl).type = builder;
+ var builder = FunctionTypeBuilder.of(isNNBD, nodeImpl, nullabilitySuffix);
+ nodeImpl.type = builder;
nodesToBuildType.addTypeBuilder(builder);
scope = outerScope;
@@ -317,13 +318,13 @@
var outerReference = reference;
var element = node.declaredElement as TypeAliasElementImpl;
- reference = element.reference;
+ reference = element.reference!;
_createTypeParameterElements(element, node.typeParameters);
scope = TypeParameterScope(outerScope, element.typeParameters);
node.typeParameters?.accept(this);
- node.type?.accept(this);
+ node.type.accept(this);
nodesToBuildType.addDeclaration(node);
var aliasedType = node.type;
@@ -348,7 +349,7 @@
var outerReference = reference;
var element = node.declaredElement as ExecutableElementImpl;
- reference = element.reference;
+ reference = element.reference!;
element.parameters; // create elements
_createTypeParameterElements(element, node.typeParameters);
@@ -371,7 +372,7 @@
var outerReference = reference;
var element = node.declaredElement as MixinElementImpl;
- reference = element.reference;
+ reference = element.reference!;
element.accessors; // create elements
element.constructors; // create elements
element.methods; // create elements
@@ -418,7 +419,7 @@
void visitTypeName(TypeName node) {
var typeIdentifier = node.name;
- Element element;
+ Element? element;
if (typeIdentifier is PrefixedIdentifier) {
var prefix = typeIdentifier.prefix;
var prefixName = prefix.name;
@@ -448,7 +449,9 @@
node.typeArguments?.accept(this);
var nullabilitySuffix = _getNullabilitySuffix(node.question != null);
- if (element is TypeParameterElement) {
+ if (element == null) {
+ node.type = DynamicTypeImpl.instance;
+ } else if (element is TypeParameterElement) {
node.type = TypeParameterTypeImpl(
element: element,
nullabilitySuffix: nullabilitySuffix,
@@ -499,7 +502,7 @@
void _createTypeParameterElements(
ElementImpl enclosingElement,
- TypeParameterList typeParameterList,
+ TypeParameterList? typeParameterList,
) {
if (typeParameterList == null) return;
diff --git a/pkg/analyzer/lib/src/summary2/scope.dart b/pkg/analyzer/lib/src/summary2/scope.dart
index 11d7d60..1f355ee 100644
--- a/pkg/analyzer/lib/src/summary2/scope.dart
+++ b/pkg/analyzer/lib/src/summary2/scope.dart
@@ -5,7 +5,7 @@
import 'package:analyzer/src/summary2/reference.dart';
class Scope {
- final Scope parent;
+ final Scope? parent;
final Map<String, Reference> map;
Scope(this.parent, this.map);
@@ -20,11 +20,10 @@
map.forEach(f);
}
- Reference lookup(String name) {
+ Reference? lookup(String name) {
var reference = map[name];
if (reference != null) return reference;
- if (parent == null) return null;
- return parent.lookup(name);
+ return parent?.lookup(name);
}
}
diff --git a/pkg/analyzer/lib/src/summary2/simply_bounded.dart b/pkg/analyzer/lib/src/summary2/simply_bounded.dart
index fb5d0ed..a325de8 100644
--- a/pkg/analyzer/lib/src/summary2/simply_bounded.dart
+++ b/pkg/analyzer/lib/src/summary2/simply_bounded.dart
@@ -136,50 +136,20 @@
/// parameter declarations and their bounds are not included.
static List<TypeAnnotation> _collectTypedefRhsTypes(AstNode node) {
if (node is FunctionTypeAlias) {
- // TODO(scheglov) https://github.com/dart-lang/sdk/issues/41023
- if (node.parameters == null) {
- var buffer = StringBuffer();
- buffer.writeln('Unexpected FunctionTypeAlias state.');
- try {
- buffer.writeln('unit: ');
- buffer.writeln(node.parent.toSource());
- } catch (_) {
- try {
- buffer.writeln('node: ');
- buffer.writeln(node.toSource());
- } catch (_) {
- try {
- buffer.writeln('node parts:');
- buffer.writeln(' name: ${node.name}');
- buffer.writeln(' typeParameters: ${node.typeParameters}');
- buffer.writeln(' returnType: ${node.returnType}');
- buffer.writeln(' parameters: ${node.parameters}');
- } catch (_) {
- buffer.writeln('nothing worked');
- }
- }
- }
- throw StateError(buffer.toString());
- }
-
var collector = _TypeCollector();
collector.addType(node.returnType);
collector.visitParameters(node.parameters);
return collector.types;
} else if (node is GenericTypeAlias) {
var type = node.type;
- if (type != null) {
- var collector = _TypeCollector();
- if (type is GenericFunctionType) {
- collector.addType(type.returnType);
- collector.visitParameters(type.parameters);
- } else {
- collector.addType(type);
- }
- return collector.types;
+ var collector = _TypeCollector();
+ if (type is GenericFunctionType) {
+ collector.addType(type.returnType);
+ collector.visitParameters(type.parameters);
} else {
- return const <TypeAnnotation>[];
+ collector.addType(type);
}
+ return collector.types;
} else {
throw StateError('(${node.runtimeType}) $node');
}
@@ -280,8 +250,6 @@
/// Otherwise `true` is returned.
bool _visitType(List<SimplyBoundedNode> dependencies, TypeAnnotation type,
bool allowTypeParameters) {
- if (type == null) return true;
-
if (type is TypeName) {
var element = type.name.staticElement;
@@ -332,7 +300,7 @@
class _TypeCollector {
final List<TypeAnnotation> types = [];
- void addType(TypeAnnotation type) {
+ void addType(TypeAnnotation? type) {
if (type != null) {
types.add(type);
}
diff --git a/pkg/analyzer/lib/src/summary2/top_level_inference.dart b/pkg/analyzer/lib/src/summary2/top_level_inference.dart
index cafca28..9832cee 100644
--- a/pkg/analyzer/lib/src/summary2/top_level_inference.dart
+++ b/pkg/analyzer/lib/src/summary2/top_level_inference.dart
@@ -18,10 +18,10 @@
import 'package:analyzer/src/summary2/linking_node_scope.dart';
import 'package:analyzer/src/task/inference_error.dart';
import 'package:analyzer/src/task/strong_mode.dart';
-import 'package:meta/meta.dart';
+import 'package:collection/collection.dart';
AstNode _getLinkedNode(Element element) {
- return (element as ElementImpl).linkedNode;
+ return (element as ElementImpl).linkedNode!;
}
/// Resolver for typed constant top-level variables and fields initializers.
@@ -30,10 +30,10 @@
class ConstantInitializersResolver {
final Linker linker;
- CompilationUnitElement _unitElement;
- LibraryElement _library;
+ late CompilationUnitElementImpl _unitElement;
+ late LibraryElement _library;
bool _enclosingClassHasConstConstructor = false;
- Scope _scope;
+ late Scope _scope;
ConstantInitializersResolver(this.linker);
@@ -41,7 +41,7 @@
for (var builder in linker.builders.values) {
_library = builder.element;
for (var unit in _library.units) {
- _unitElement = unit;
+ _unitElement = unit as CompilationUnitElementImpl;
unit.extensions.forEach(_resolveExtensionFields);
unit.mixins.forEach(_resolveClassFields);
unit.types.forEach(_resolveClassFields);
@@ -75,20 +75,20 @@
void _resolveVariable(VariableElement element) {
if (element.isSynthetic) return;
- VariableDeclaration variable = _getLinkedNode(element);
+ var variable = _getLinkedNode(element) as VariableDeclaration;
if (variable.initializer == null) return;
- VariableDeclarationList declarationList = variable.parent;
+ var declarationList = variable.parent as VariableDeclarationList;
var typeNode = declarationList.type;
if (typeNode != null) {
if (declarationList.isConst ||
declarationList.isFinal && _enclosingClassHasConstConstructor) {
var astResolver = AstResolver(linker, _unitElement, _scope);
astResolver.resolve(
- variable.initializer,
+ variable.initializer!,
() {
InferenceContext.setType(variable.initializer, typeNode.type);
- return variable.initializer;
+ return variable.initializer!;
},
isTopLevelVariableInitializer: true,
);
@@ -143,8 +143,7 @@
if (parameterElement is FieldFormalParameterElement) {
var parameterNode = _getLinkedNode(parameterElement);
if (parameterNode is DefaultFormalParameter) {
- var defaultParameter = parameterNode as DefaultFormalParameter;
- parameterNode = defaultParameter.parameter;
+ parameterNode = parameterNode.parameter;
}
if (parameterNode is FieldFormalParameter &&
@@ -170,7 +169,7 @@
@override
List<_InferenceNode> computeDependencies() {
- return _fields.map(_walker.getNode).where((node) => node != null).toList();
+ return _fields.map(_walker.getNode).whereNotNull().toList();
}
@override
@@ -244,7 +243,7 @@
}
}
- _InferenceNode getNode(Element element) {
+ _InferenceNode? getNode(Element element) {
return _nodes[element];
}
@@ -261,15 +260,15 @@
final Linker _linker;
final _InferenceWalker _walker;
- CompilationUnitElement _unitElement;
- Scope _scope;
+ late CompilationUnitElementImpl _unitElement;
+ late Scope _scope;
_InitializerInference(this._linker) : _walker = _InferenceWalker(_linker);
void createNodes() {
for (var builder in _linker.builders.values) {
for (var unit in builder.element.units) {
- _unitElement = unit;
+ _unitElement = unit as CompilationUnitElementImpl;
unit.extensions.forEach(_addExtensionElementFields);
unit.mixins.forEach(_addClassElementFields);
unit.types.forEach(_addClassConstructorFieldFormals);
@@ -355,7 +354,7 @@
class _VariableInferenceNode extends _InferenceNode {
final _InferenceWalker _walker;
- final CompilationUnitElement _unitElement;
+ final CompilationUnitElementImpl _unitElement;
final TypeSystemImpl _typeSystem;
final Scope _scope;
final VariableDeclaration _node;
@@ -376,7 +375,7 @@
}
bool get isImplicitlyTypedInstanceField {
- VariableDeclarationList variables = _node.parent;
+ var variables = _node.parent as VariableDeclarationList;
if (variables.type == null) {
var parent = variables.parent;
return parent is FieldDeclaration && !parent.isStatic;
@@ -393,16 +392,14 @@
_resolveInitializer(forDependencies: true);
var collector = _InferenceDependenciesCollector();
- _node.initializer.accept(collector);
+ _node.initializer!.accept(collector);
if (collector._set.isEmpty) {
return const <_InferenceNode>[];
}
- var dependencies = collector._set
- .map(_walker.getNode)
- .where((node) => node != null)
- .toList();
+ var dependencies =
+ collector._set.map(_walker.getNode).whereNotNull().toList();
for (var node in dependencies) {
if (node is _VariableInferenceNode &&
@@ -421,7 +418,7 @@
_resolveInitializer(forDependencies: false);
if (!_elementImpl.hasTypeInferred) {
- var initializerType = _node.initializer.staticType;
+ var initializerType = _node.initializer!.staticType!;
initializerType = _refineType(initializerType);
_elementImpl.type = initializerType;
}
@@ -447,7 +444,7 @@
}
DartType _refineType(DartType type) {
- if (type == null || type.isDartCoreNull) {
+ if (type.isDartCoreNull) {
return DynamicTypeImpl.instance;
}
@@ -461,11 +458,11 @@
}
}
- void _resolveInitializer({@required bool forDependencies}) {
+ void _resolveInitializer({required bool forDependencies}) {
var astResolver = AstResolver(_walker._linker, _unitElement, _scope);
astResolver.resolve(
- _node.initializer,
- () => _node.initializer,
+ _node.initializer!,
+ () => _node.initializer!,
buildElements: forDependencies,
isTopLevelVariableInitializer: true,
);
diff --git a/pkg/analyzer/lib/src/summary2/type_alias.dart b/pkg/analyzer/lib/src/summary2/type_alias.dart
index 303646c..6309bb5 100644
--- a/pkg/analyzer/lib/src/summary2/type_alias.dart
+++ b/pkg/analyzer/lib/src/summary2/type_alias.dart
@@ -11,7 +11,7 @@
void perform(Linker linker) {
for (var builder in linker.builders.values) {
for (var unitContext in builder.context.units) {
- for (var node in unitContext.unit.declarations) {
+ for (var node in unitContext.unit!.declarations) {
if (node is FunctionTypeAlias) {
var finder = _Finder(node);
finder.functionTypeAlias(node);
@@ -47,7 +47,7 @@
_visit(node.type);
}
- void _argumentList(TypeArgumentList node) {
+ void _argumentList(TypeArgumentList? node) {
if (node != null) {
for (var argument in node.arguments) {
_visit(argument);
@@ -72,7 +72,7 @@
}
}
- void _typeParameterList(TypeParameterList node) {
+ void _typeParameterList(TypeParameterList? node) {
if (node != null) {
for (var parameter in node.typeParameters) {
_visit(parameter.bound);
@@ -80,7 +80,7 @@
}
}
- void _visit(TypeAnnotation node) {
+ void _visit(TypeAnnotation? node) {
if (hasSelfReference) return;
if (node == null) return;
@@ -88,7 +88,7 @@
var element = node.name.staticElement;
if (element is ElementImpl &&
element.enclosingElement != null &&
- element.linkedContext.isLinking) {
+ element.linkedContext!.isLinking) {
var typeNode = element.linkedNode;
if (typeNode == self) {
hasSelfReference = true;
diff --git a/pkg/analyzer/lib/src/summary2/types_builder.dart b/pkg/analyzer/lib/src/summary2/types_builder.dart
index 9ad85a2..cccd41f 100644
--- a/pkg/analyzer/lib/src/summary2/types_builder.dart
+++ b/pkg/analyzer/lib/src/summary2/types_builder.dart
@@ -50,8 +50,8 @@
}
FunctionType _buildFunctionType(
- TypeParameterList typeParameterList,
- TypeAnnotation returnTypeNode,
+ TypeParameterList? typeParameterList,
+ TypeAnnotation? returnTypeNode,
FormalParameterList parameterList,
NullabilitySuffix nullabilitySuffix,
) {
@@ -148,7 +148,7 @@
List<ParameterElement> _formalParameters(FormalParameterList node) {
return node.parameters.asImpl.map((parameter) {
- return parameter.declaredElement;
+ return parameter.declaredElement!;
}).toList();
}
@@ -171,7 +171,7 @@
bool _isNonNullableByDefault(AstNode node) {
var unit = node.thisOrAncestorOfType<CompilationUnit>();
- return unit.featureSet.isEnabled(Feature.non_nullable);
+ return unit!.featureSet.isEnabled(Feature.non_nullable);
}
NullabilitySuffix _nullability(AstNode node, bool hasQuestion) {
@@ -186,13 +186,13 @@
}
}
- List<TypeParameterElement> _typeParameters(TypeParameterList node) {
+ List<TypeParameterElement> _typeParameters(TypeParameterList? node) {
if (node == null) {
return const <TypeParameterElement>[];
}
return node.typeParameters
- .map<TypeParameterElement>((p) => p.declaredElement)
+ .map<TypeParameterElement>((p) => p.declaredElement!)
.toList();
}
}
@@ -204,7 +204,7 @@
final FeatureSet featureSet;
final InterfaceType classType;
- InterfacesMerger interfacesMerger;
+ late final InterfacesMerger interfacesMerger;
_MixinInference(this.element, this.featureSet)
: typeSystem = element.library.typeSystem,
@@ -221,7 +221,7 @@
bool get _nonNullableEnabled => featureSet.isEnabled(Feature.non_nullable);
- void perform(WithClause withClause) {
+ void perform(WithClause? withClause) {
if (withClause == null) return;
for (var mixinNode in withClause.mixinTypes) {
@@ -230,7 +230,7 @@
}
}
- InterfaceType _findInterfaceTypeForElement(
+ InterfaceType? _findInterfaceTypeForElement(
ClassElement element,
List<InterfaceType> interfaceTypes,
) {
@@ -240,7 +240,7 @@
return null;
}
- List<InterfaceType> _findInterfaceTypesForConstraints(
+ List<InterfaceType>? _findInterfaceTypesForConstraints(
List<InterfaceType> constraints,
List<InterfaceType> interfaceTypes,
) {
@@ -262,7 +262,7 @@
}
InterfaceType _inferSingle(TypeName mixinNode) {
- var mixinType = _interfaceType(mixinNode.type);
+ var mixinType = _interfaceType(mixinNode.type!);
if (mixinNode.typeArguments != null) {
return mixinType;
@@ -327,7 +327,7 @@
void perform(List<AstNode> declarations) {
for (var node in declarations) {
if (node is ClassDeclaration || node is ClassTypeAlias) {
- ClassElementImpl element = (node as Declaration).declaredElement;
+ var element = (node as Declaration).declaredElement as ClassElementImpl;
element.linkedMixinInferenceCallback = _callbackWhenRecursion;
}
}
@@ -350,13 +350,13 @@
/// This method is invoked when mixins are asked from the [element], and
/// we are not inferring the [element] now, i.e. there is no loop.
- List<InterfaceType> _callbackWhenRecursion(ClassElementImpl element) {
- _inferDeclaration(element.linkedNode);
+ List<InterfaceType>? _callbackWhenRecursion(ClassElementImpl element) {
+ _inferDeclaration(element.linkedNode!);
// The inference was successful, let the element return actual mixins.
return null;
}
- void _infer(ClassElementImpl element, WithClause withClause) {
+ void _infer(ClassElementImpl element, WithClause? withClause) {
element.linkedMixinInferenceCallback = _callbackWhenLoop;
try {
var featureSet = _unitFeatureSet(element);
@@ -368,9 +368,11 @@
void _inferDeclaration(AstNode node) {
if (node is ClassDeclaration) {
- _infer(node.declaredElement, node.withClause);
+ var element = node.declaredElement as ClassElementImpl;
+ _infer(element, node.withClause);
} else if (node is ClassTypeAlias) {
- _infer(node.declaredElement, node.withClause);
+ var element = node.declaredElement as ClassElementImpl;
+ _infer(element, node.withClause);
}
}
@@ -381,7 +383,7 @@
void _resetHierarchies(List<AstNode> declarations) {
for (var declaration in declarations) {
if (declaration is ClassOrMixinDeclaration) {
- var element = declaration.declaredElement;
+ var element = declaration.declaredElement as ClassElementImpl;
var sessionImpl = element.library.session as AnalysisSessionImpl;
sessionImpl.classHierarchy.remove(element);
}
@@ -389,7 +391,7 @@
}
static FeatureSet _unitFeatureSet(ClassElementImpl element) {
- var unit = element.linkedNode.parent as CompilationUnit;
+ var unit = element.linkedNode!.parent as CompilationUnit;
return unit.featureSet;
}
}
diff --git a/pkg/analyzer/lib/src/summary2/variance_builder.dart b/pkg/analyzer/lib/src/summary2/variance_builder.dart
index 5eb87ce..edae4df 100644
--- a/pkg/analyzer/lib/src/summary2/variance_builder.dart
+++ b/pkg/analyzer/lib/src/summary2/variance_builder.dart
@@ -11,7 +11,6 @@
import 'package:analyzer/src/summary2/function_type_builder.dart';
import 'package:analyzer/src/summary2/link.dart';
import 'package:analyzer/src/summary2/named_type_builder.dart';
-import 'package:meta/meta.dart';
class VarianceBuilder {
final Set<TypeAlias> _pending = Set.identity();
@@ -20,8 +19,10 @@
void perform(Linker linker) {
for (var builder in linker.builders.values) {
for (var unitContext in builder.context.units) {
- for (var node in unitContext.unit.declarations) {
- if (node is FunctionTypeAlias || node is GenericTypeAlias) {
+ for (var node in unitContext.unit!.declarations) {
+ if (node is FunctionTypeAlias) {
+ _pending.add(node);
+ } else if (node is GenericTypeAlias) {
_pending.add(node);
}
}
@@ -30,7 +31,7 @@
for (var builder in linker.builders.values) {
for (var unitContext in builder.context.units) {
- for (var node in unitContext.unit.declarations) {
+ for (var node in unitContext.unit!.declarations) {
if (node is ClassTypeAlias) {
_typeParameters(node.typeParameters);
} else if (node is ClassDeclaration) {
@@ -47,7 +48,7 @@
}
}
- Variance _compute(TypeParameterElement variable, DartType type) {
+ Variance _compute(TypeParameterElement variable, DartType? type) {
if (type is TypeParameterType) {
var element = type.element;
if (element is TypeParameterElement) {
@@ -106,17 +107,15 @@
Variance _computeFunctionType(
TypeParameterElement variable, {
- @required DartType returnType,
- @required List<TypeParameterElement> typeFormals,
- @required List<ParameterElement> parameters,
+ required DartType? returnType,
+ required List<TypeParameterElement>? typeFormals,
+ required List<ParameterElement> parameters,
}) {
var result = Variance.unrelated;
- if (result != null) {
- result = result.meet(
- _compute(variable, returnType),
- );
- }
+ result = result.meet(
+ _compute(variable, returnType),
+ );
// If [variable] is referenced in a bound at all, it makes the
// variance of [variable] in the entire type invariant.
@@ -163,7 +162,7 @@
try {
for (var parameter in parameterList.typeParameters) {
var variance = _computeFunctionType(
- parameter.declaredElement,
+ parameter.declaredElement!,
returnType: node.returnType?.type,
typeFormals: null,
parameters: FunctionTypeBuilder.getParameters(
@@ -197,7 +196,7 @@
return;
}
- var type = node.type?.type;
+ var type = node.type.type;
// Not a function type, recover.
if (type == null) {
@@ -209,7 +208,7 @@
_visit.add(node);
try {
for (var parameter in parameterList.typeParameters) {
- var variance = _compute(parameter.declaredElement, type);
+ var variance = _compute(parameter.declaredElement!, type);
_setVariance(parameter, variance);
}
} finally {
@@ -228,7 +227,7 @@
}
}
- void _typeParameters(TypeParameterList parameterList) {
+ void _typeParameters(TypeParameterList? parameterList) {
if (parameterList == null) {
return;
}
diff --git a/pkg/analyzer/lib/src/task/api/model.dart b/pkg/analyzer/lib/src/task/api/model.dart
index d3d1fac..713d672 100644
--- a/pkg/analyzer/lib/src/task/api/model.dart
+++ b/pkg/analyzer/lib/src/task/api/model.dart
@@ -12,9 +12,9 @@
abstract class AnalysisTarget {
/// If this target is associated with a library, return the source of the
/// library's defining compilation unit; otherwise return `null`.
- Source get librarySource;
+ Source? get librarySource;
/// Return the source associated with this target, or `null` if this target is
/// not associated with a source.
- Source get source;
+ Source? get source;
}
diff --git a/pkg/analyzer/lib/src/task/inference_error.dart b/pkg/analyzer/lib/src/task/inference_error.dart
index 4a686ff..3bba402 100644
--- a/pkg/analyzer/lib/src/task/inference_error.dart
+++ b/pkg/analyzer/lib/src/task/inference_error.dart
@@ -2,8 +2,6 @@
// 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.
-import 'package:meta/meta.dart';
-
/// The top-level type inference error.
class TopLevelInferenceError {
/// The kind of the error.
@@ -13,8 +11,8 @@
final List<String> arguments;
TopLevelInferenceError({
- @required this.kind,
- @required this.arguments,
+ required this.kind,
+ required this.arguments,
});
}
diff --git a/pkg/analyzer/lib/src/task/options.dart b/pkg/analyzer/lib/src/task/options.dart
index 0aaf16d..5ed06e0 100644
--- a/pkg/analyzer/lib/src/task/options.dart
+++ b/pkg/analyzer/lib/src/task/options.dart
@@ -30,7 +30,7 @@
Source source, String content, SourceFactory sourceFactory) {
List<AnalysisError> errors = <AnalysisError>[];
Source initialSource = source;
- SourceSpan initialIncludeSpan;
+ SourceSpan? initialIncludeSpan;
AnalysisOptionsProvider optionsProvider =
AnalysisOptionsProvider(sourceFactory);
@@ -48,8 +48,8 @@
];
errors.add(AnalysisError(
initialSource,
- initialIncludeSpan.start.offset,
- initialIncludeSpan.length,
+ initialIncludeSpan!.start.offset,
+ initialIncludeSpan!.length,
AnalysisOptionsWarningCode.INCLUDED_FILE_WARNING,
args));
}
@@ -57,19 +57,19 @@
errors.addAll(validationErrors);
}
- YamlNode node = getValue(options, AnalyzerOptions.include);
+ var node = getValue(options, AnalyzerOptions.include);
if (node == null) {
return;
}
SourceSpan span = node.span;
initialIncludeSpan ??= span;
String includeUri = span.text;
- Source includedSource = sourceFactory.resolveUri(source, includeUri);
+ var includedSource = sourceFactory.resolveUri(source, includeUri);
if (includedSource == null || !includedSource.exists()) {
errors.add(AnalysisError(
initialSource,
- initialIncludeSpan.start.offset,
- initialIncludeSpan.length,
+ initialIncludeSpan!.start.offset,
+ initialIncludeSpan!.length,
AnalysisOptionsWarningCode.INCLUDE_FILE_NOT_FOUND,
[includeUri, source.fullName]));
return;
@@ -81,16 +81,16 @@
} on OptionsFormatException catch (e) {
var args = [
includedSource.fullName,
- e.span.start.offset.toString(),
- e.span.end.offset.toString(),
+ e.span!.start.offset.toString(),
+ e.span!.end.offset.toString(),
e.message,
];
// Report errors for included option files
// on the include directive located in the initial options file.
errors.add(AnalysisError(
initialSource,
- initialIncludeSpan.start.offset,
- initialIncludeSpan.length,
+ initialIncludeSpan!.start.offset,
+ initialIncludeSpan!.length,
AnalysisOptionsErrorCode.INCLUDED_FILE_PARSE_ERROR,
args));
}
@@ -100,7 +100,7 @@
YamlMap options = optionsProvider.getOptionsFromString(content);
validate(source, options);
} on OptionsFormatException catch (e) {
- SourceSpan span = e.span;
+ SourceSpan span = e.span!;
errors.add(AnalysisError(source, span.start.offset, span.length,
AnalysisOptionsErrorCode.PARSE_ERROR, [e.message]));
}
@@ -242,12 +242,11 @@
/// Builds error reports with value proposals.
class ErrorBuilder {
- String proposal;
- AnalysisOptionsWarningCode code;
+ String? proposal;
+ late final AnalysisOptionsWarningCode code;
/// Create a builder for the given [supportedOptions].
ErrorBuilder(List<String> supportedOptions) {
- assert(supportedOptions != null);
if (supportedOptions.isEmpty) {
code = noProposalCode;
} else if (supportedOptions.length == 1) {
@@ -292,20 +291,20 @@
StringUtilities.printListOfQuotedNames(legalValues);
/// Lazily populated set of error codes (hashed for speedy lookup).
- static HashSet<String> _errorCodes;
+ static HashSet<String>? _errorCodes;
/// Legal error code names.
static Set<String> get errorCodes {
if (_errorCodes == null) {
_errorCodes = HashSet<String>();
// Engine codes.
- _errorCodes.addAll(errorCodeValues.map((ErrorCode code) => code.name));
+ _errorCodes!.addAll(errorCodeValues.map((ErrorCode code) => code.name));
}
- return _errorCodes;
+ return _errorCodes!;
}
/// Lazily populated set of lint codes.
- Set<String> _lintCodes;
+ Set<String>? _lintCodes;
Set<String> get lintCodes {
return _lintCodes ??= Set.from(
@@ -318,7 +317,7 @@
if (analyzer is YamlMap) {
var filters = getValue(analyzer, AnalyzerOptions.errors);
if (filters is YamlMap) {
- String value;
+ String? value;
filters.nodes.forEach((k, v) {
if (k is YamlScalar) {
value = toUpperCase(k.value);
@@ -361,7 +360,7 @@
var language = getValue(analyzer, AnalyzerOptions.language);
if (language is YamlMap) {
language.nodes.forEach((k, v) {
- String key, value;
+ String? key, value;
bool validKey = false;
if (k is YamlScalar) {
key = k.value?.toString();
@@ -383,7 +382,7 @@
if (validKey && v is YamlScalar) {
value = toLowerCase(v.value);
if (!AnalyzerOptions.trueOrFalse.contains(value)) {
- trueOrFalseBuilder.reportError(reporter, key, v);
+ trueOrFalseBuilder.reportError(reporter, key!, v);
}
}
});
@@ -426,7 +425,7 @@
}
} else if (v is YamlMap) {
v.nodes.forEach((k, v) {
- String key, value;
+ String? key, value;
if (k is YamlScalar) {
key = k.value?.toString();
if (key != AnalyzerOptions.chromeOsManifestChecks) {
@@ -435,7 +434,7 @@
} else {
value = toLowerCase(v.value);
if (!AnalyzerOptions.trueOrFalse.contains(value)) {
- trueOrFalseBuilder.reportError(reporter, key, v);
+ trueOrFalseBuilder.reportError(reporter, key!, v);
}
}
}
@@ -494,7 +493,7 @@
}
} else if (v is YamlMap) {
v.nodes.forEach((k, v) {
- String key, value;
+ String? key, value;
bool validKey = false;
if (k is YamlScalar) {
key = k.value?.toString();
@@ -513,7 +512,7 @@
if (validKey && v is YamlScalar) {
value = toLowerCase(v.value);
if (!AnalyzerOptions.trueOrFalse.contains(value)) {
- trueOrFalseBuilder.reportError(reporter, key, v);
+ trueOrFalseBuilder.reportError(reporter, key!, v);
}
}
});
@@ -534,11 +533,11 @@
class TopLevelOptionValidator extends OptionsValidator {
final String pluginName;
final List<String> supportedOptions;
- String _valueProposal;
- AnalysisOptionsWarningCode _warningCode;
+ late final String _valueProposal;
+ late final AnalysisOptionsWarningCode _warningCode;
TopLevelOptionValidator(this.pluginName, this.supportedOptions) {
- assert(supportedOptions != null && supportedOptions.isNotEmpty);
+ assert(supportedOptions.isNotEmpty);
if (supportedOptions.length > 1) {
_valueProposal = StringUtilities.printListOfQuotedNames(supportedOptions);
_warningCode =
@@ -552,7 +551,7 @@
@override
void validate(ErrorReporter reporter, YamlMap options) {
- YamlNode node = getValue(options, pluginName);
+ var node = getValue(options, pluginName);
if (node is YamlMap) {
node.nodes.forEach((k, v) {
if (k is YamlScalar) {
@@ -579,7 +578,7 @@
class _OptionsProcessor {
/// Apply the options in the given [optionMap] to the given analysis
/// [options].
- void applyToAnalysisOptions(AnalysisOptionsImpl options, YamlMap optionMap) {
+ void applyToAnalysisOptions(AnalysisOptionsImpl options, YamlMap? optionMap) {
if (optionMap == null) {
return;
}
@@ -599,7 +598,7 @@
if (experimentNames is YamlList) {
List<String> enabledExperiments = <String>[];
for (var element in experimentNames.nodes) {
- String experimentName = _toString(element);
+ var experimentName = _toString(element);
if (experimentName != null) {
enabledExperiments.add(experimentName);
}
@@ -625,19 +624,19 @@
// Process plugins.
var names = getValue(analyzer, AnalyzerOptions.plugins);
List<String> pluginNames = <String>[];
- String pluginName = _toString(names);
+ var pluginName = _toString(names);
if (pluginName != null) {
pluginNames.add(pluginName);
} else if (names is YamlList) {
for (var element in names.nodes) {
- String pluginName = _toString(element);
+ var pluginName = _toString(element);
if (pluginName != null) {
pluginNames.add(pluginName);
}
}
} else if (names is YamlMap) {
for (var key in names.nodes.keys) {
- String pluginName = _toString(key);
+ var pluginName = _toString(key);
if (pluginName != null) {
pluginNames.add(pluginName);
}
@@ -646,7 +645,7 @@
options.enabledPluginNames = pluginNames;
}
- LintConfig config = parseConfig(optionMap);
+ var config = parseConfig(optionMap);
if (config != null) {
Iterable<LintRule> lintRules = Registry.ruleRegistry.enabled(config);
if (lintRules.isNotEmpty) {
@@ -656,9 +655,9 @@
}
}
- void _applyExcludes(AnalysisOptionsImpl options, YamlNode excludes) {
+ void _applyExcludes(AnalysisOptionsImpl options, YamlNode? excludes) {
if (excludes is YamlList) {
- List<String> excludeList = toStringList(excludes);
+ var excludeList = toStringList(excludes);
if (excludeList != null) {
options.excludePatterns = excludeList;
}
@@ -666,8 +665,8 @@
}
void _applyLanguageOption(
- AnalysisOptionsImpl options, Object feature, Object value) {
- bool boolValue = toBool(value);
+ AnalysisOptionsImpl options, Object? feature, Object value) {
+ var boolValue = toBool(value);
if (boolValue != null) {
if (feature == AnalyzerOptions.strictInference) {
options.strictInference = boolValue;
@@ -678,18 +677,18 @@
}
}
- void _applyLanguageOptions(AnalysisOptionsImpl options, YamlNode configs) {
+ void _applyLanguageOptions(AnalysisOptionsImpl options, YamlNode? configs) {
if (configs is YamlMap) {
configs.nodes.forEach((key, value) {
if (key is YamlScalar && value is YamlScalar) {
- String feature = key.value?.toString();
+ var feature = key.value?.toString();
_applyLanguageOption(options, feature, value.value);
}
});
}
}
- void _applyOptionalChecks(AnalysisOptionsImpl options, YamlNode config) {
+ void _applyOptionalChecks(AnalysisOptionsImpl options, YamlNode? config) {
if (config is YamlMap) {
config.nodes.forEach((k, v) {
if (k is YamlScalar && v is YamlScalar) {
@@ -705,8 +704,8 @@
}
void _applyOptionalChecksOption(
- AnalysisOptionsImpl options, String feature, Object value) {
- bool boolValue = toBool(value);
+ AnalysisOptionsImpl options, String? feature, Object value) {
+ var boolValue = toBool(value);
if (boolValue != null) {
if (feature == AnalyzerOptions.chromeOsManifestChecks) {
options.chromeOsManifestChecks = boolValue;
@@ -714,14 +713,14 @@
}
}
- void _applyProcessors(AnalysisOptionsImpl options, YamlNode codes) {
+ void _applyProcessors(AnalysisOptionsImpl options, YamlNode? codes) {
ErrorConfig config = ErrorConfig(codes);
options.errorProcessors = config.processors;
}
void _applyStrongModeOption(
- AnalysisOptionsImpl options, String feature, Object value) {
- bool boolValue = toBool(value);
+ AnalysisOptionsImpl options, String? feature, Object value) {
+ var boolValue = toBool(value);
if (boolValue != null) {
if (feature == AnalyzerOptions.implicitCasts) {
options.implicitCasts = boolValue;
@@ -732,7 +731,7 @@
}
}
- void _applyStrongOptions(AnalysisOptionsImpl options, YamlNode config) {
+ void _applyStrongOptions(AnalysisOptionsImpl options, YamlNode? config) {
if (config is YamlMap) {
config.nodes.forEach((k, v) {
if (k is YamlScalar && v is YamlScalar) {
@@ -742,7 +741,7 @@
}
}
- String _toString(YamlNode node) {
+ String? _toString(YamlNode? node) {
if (node is YamlScalar) {
var value = node.value;
if (value is String) {
diff --git a/pkg/analyzer/lib/src/task/strong/checker.dart b/pkg/analyzer/lib/src/task/strong/checker.dart
index 7e57d0c..57914fd 100644
--- a/pkg/analyzer/lib/src/task/strong/checker.dart
+++ b/pkg/analyzer/lib/src/task/strong/checker.dart
@@ -21,9 +21,8 @@
import 'package:analyzer/src/error/codes.dart'
show CompileTimeErrorCode, StrongModeCode;
import 'package:analyzer/src/task/inference_error.dart';
-import 'package:meta/meta.dart';
-DartType _elementType(Element e) {
+DartType _elementType(Element? e) {
if (e == null) {
// Malformed code - just return dynamic.
return DynamicTypeImpl.instance;
@@ -31,7 +30,7 @@
return (e as dynamic).type;
}
-Element _getKnownElement(Expression expression) {
+Element? _getKnownElement(Expression expression) {
if (expression is ParenthesizedExpression) {
return _getKnownElement(expression.expression);
} else if (expression is NamedExpression) {
@@ -53,7 +52,7 @@
final InheritanceManager3 inheritance;
final AnalysisErrorListener reporter;
- FeatureSet _featureSet;
+ late final FeatureSet _featureSet;
CodeChecker(TypeProvider typeProvider, TypeSystemImpl rules, this.inheritance,
AnalysisErrorListener reporter)
@@ -82,7 +81,7 @@
int len = list.length;
for (int i = 0; i < len; ++i) {
Expression arg = list[i];
- ParameterElement element = arg.staticParameterElement;
+ var element = arg.staticParameterElement;
if (element == null) {
// We found an argument mismatch, the analyzer will report this too,
// so no need to insert an error for this here.
@@ -93,7 +92,7 @@
}
void checkAssignment(Expression expr, DartType to) {
- checkForCast(expr, from: expr.staticType, to: to);
+ checkForCast(expr, from: expr.staticType!, to: to);
}
/// Analyzer checks boolean conversions, but we need to check too, because
@@ -103,7 +102,7 @@
checkAssignment(expr, typeProvider.boolType);
void checkCollectionElement(
- CollectionElement element, DartType expectedType) {
+ CollectionElement? element, DartType expectedType) {
if (element is ForElement) {
checkCollectionElement(element.body, expectedType);
} else if (element is IfElement) {
@@ -118,7 +117,7 @@
DartType expressionCastType = typeProvider.iterableDynamicType;
checkAssignment(element.expression, expressionCastType);
- var exprType = element.expression.staticType;
+ var exprType = element.expression.staticType!;
var asIterableType = exprType.asInstanceOf(typeProvider.iterableElement);
if (asIterableType != null) {
@@ -133,8 +132,8 @@
void checkForCast(
Expression expr, {
- @required DartType from,
- @required DartType to,
+ required DartType from,
+ required DartType to,
}) {
if (expr is ParenthesizedExpression) {
checkForCast(expr.expression, from: from, to: to);
@@ -143,7 +142,7 @@
}
}
- void checkMapElement(CollectionElement element, DartType expectedKeyType,
+ void checkMapElement(CollectionElement? element, DartType expectedKeyType,
DartType expectedValueType) {
if (element is ForElement) {
checkMapElement(element.body, expectedKeyType, expectedValueType);
@@ -161,7 +160,7 @@
DynamicTypeImpl.instance, DynamicTypeImpl.instance);
checkAssignment(element.expression, expressionCastType);
- var exprType = element.expression.staticType;
+ var exprType = element.expression.staticType!;
var asMapType = exprType.asInstanceOf(typeProvider.mapElement);
if (asMapType != null) {
@@ -179,10 +178,6 @@
}
}
- DartType getAnnotatedType(TypeAnnotation type) {
- return type?.type ?? DynamicTypeImpl.instance;
- }
-
@override
void visitAsExpression(AsExpression node) {
// We could do the same check as the IsExpression below, but that is
@@ -199,7 +194,7 @@
TokenType operatorType = operator.type;
if (operatorType == TokenType.EQ ||
operatorType == TokenType.QUESTION_QUESTION_EQ) {
- checkForCast(right, from: right.staticType, to: node.writeType);
+ checkForCast(right, from: right.staticType!, to: node.writeType!);
} else if (operatorType == TokenType.AMPERSAND_AMPERSAND_EQ ||
operatorType == TokenType.BAR_BAR_EQ) {
checkBoolean(left);
@@ -264,7 +259,7 @@
// [CompileTimeErrorCode.SUPER_IN_REDIRECTING_CONSTRUCTOR] or
// [CompileTimeErrorCode.MULTIPLE_SUPER_INITIALIZERS] is reported for
// this constructor.
- var source = (node.root as CompilationUnit).declaredElement.source;
+ var source = (node.root as CompilationUnit).declaredElement!.source;
var token = initializer.superKeyword;
reporter.onError(AnalysisError(source, token.offset, token.length,
CompileTimeErrorCode.INVALID_SUPER_INVOCATION, [initializer]));
@@ -286,7 +281,6 @@
// Check that defaults have the proper subtype.
var parameter = node.parameter;
var parameterType = _elementType(parameter.declaredElement);
- assert(parameterType != null);
var defaultValue = node.defaultValue;
if (defaultValue != null) {
checkAssignment(defaultValue, parameterType);
@@ -309,7 +303,7 @@
@override
void visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node) {
- _visitForEachParts(node, node.loopVariable?.identifier);
+ _visitForEachParts(node, node.loopVariable.identifier);
node.visitChildren(this);
}
@@ -322,7 +316,7 @@
@override
void visitForPartsWithDeclarations(ForPartsWithDeclarations node) {
if (node.condition != null) {
- checkBoolean(node.condition);
+ checkBoolean(node.condition!);
}
node.visitChildren(this);
}
@@ -330,7 +324,7 @@
@override
void visitForPartsWithExpression(ForPartsWithExpression node) {
if (node.condition != null) {
- checkBoolean(node.condition);
+ checkBoolean(node.condition!);
}
node.visitChildren(this);
}
@@ -368,7 +362,7 @@
var arguments = node.argumentList;
var element = node.constructorName.staticElement;
if (element != null) {
- var type = _elementType(element);
+ var type = _elementType(element) as FunctionType;
checkArgumentList(arguments, type);
}
node.visitChildren(this);
@@ -378,17 +372,14 @@
void visitListLiteral(ListLiteral node) {
DartType type = DynamicTypeImpl.instance;
if (node.typeArguments != null) {
- NodeList<TypeAnnotation> targs = node.typeArguments.arguments;
+ NodeList<TypeAnnotation> targs = node.typeArguments!.arguments;
if (targs.isNotEmpty) {
- type = targs[0].type;
+ type = targs[0].type!;
}
} else {
- DartType staticType = node.staticType;
+ DartType staticType = node.staticType!;
if (staticType is InterfaceType) {
- List<DartType> targs = staticType.typeArguments;
- if (targs != null && targs.isNotEmpty) {
- type = targs[0];
- }
+ type = staticType.typeArguments[0];
}
}
NodeList<CollectionElement> elements = node.elements;
@@ -407,13 +398,12 @@
// Don't visit methodName, we already checked things related to the call.
node.target?.accept(this);
node.typeArguments?.accept(this);
- node.argumentList?.accept(this);
+ node.argumentList.accept(this);
}
@override
void visitPostfixExpression(PostfixExpression node) {
- _checkUnary(node.operand, node.operator, node.staticElement,
- readType: node.readType, writeType: node.writeType);
+ _checkUnary(node, node.operand, node.operator, node.staticElement);
node.visitChildren(this);
}
@@ -422,8 +412,7 @@
if (node.operator.type == TokenType.BANG) {
checkBoolean(node.operand);
} else {
- _checkUnary(node.operand, node.operator, node.staticElement,
- readType: node.readType, writeType: node.writeType);
+ _checkUnary(node, node.operand, node.operator, node.staticElement);
}
node.visitChildren(this);
}
@@ -453,25 +442,17 @@
DartType keyType = DynamicTypeImpl.instance;
DartType valueType = DynamicTypeImpl.instance;
if (node.typeArguments != null) {
- NodeList<TypeAnnotation> typeArguments = node.typeArguments.arguments;
+ NodeList<TypeAnnotation> typeArguments = node.typeArguments!.arguments;
if (typeArguments.isNotEmpty) {
- keyType = typeArguments[0].type;
+ keyType = typeArguments[0].type!;
}
if (typeArguments.length > 1) {
- valueType = typeArguments[1].type;
+ valueType = typeArguments[1].type!;
}
} else {
- DartType staticType = node.staticType;
+ DartType staticType = node.staticType!;
if (staticType is InterfaceType) {
- List<DartType> typeArguments = staticType.typeArguments;
- if (typeArguments != null) {
- if (typeArguments.isNotEmpty) {
- keyType = typeArguments[0];
- }
- if (typeArguments.length > 1) {
- valueType = typeArguments[1];
- }
- }
+ keyType = staticType.typeArguments[0];
}
}
NodeList<CollectionElement> elements = node.elements;
@@ -481,17 +462,14 @@
} else if (node.isSet) {
DartType type = DynamicTypeImpl.instance;
if (node.typeArguments != null) {
- NodeList<TypeAnnotation> typeArguments = node.typeArguments.arguments;
+ NodeList<TypeAnnotation> typeArguments = node.typeArguments!.arguments;
if (typeArguments.isNotEmpty) {
- type = typeArguments[0].type;
+ type = typeArguments[0].type!;
}
} else {
- DartType staticType = node.staticType;
+ DartType staticType = node.staticType!;
if (staticType is InterfaceType) {
- List<DartType> typeArguments = staticType.typeArguments;
- if (typeArguments != null && typeArguments.isNotEmpty) {
- type = typeArguments[0];
- }
+ type = staticType.typeArguments[0];
}
}
NodeList<CollectionElement> elements = node.elements;
@@ -506,7 +484,7 @@
void visitSuperConstructorInvocation(SuperConstructorInvocation node) {
var element = node.staticElement;
if (element != null) {
- var type = node.staticElement.type;
+ var type = element.type;
checkArgumentList(node.argumentList, type);
}
node.visitChildren(this);
@@ -522,31 +500,30 @@
}
@override
- Object visitVariableDeclaration(VariableDeclaration node) {
- VariableElement variableElement =
- node == null ? null : node.declaredElement;
- AstNode parent = node.parent;
+ void visitVariableDeclaration(VariableDeclaration node) {
+ var variableElement = node.declaredElement;
+ var parent = node.parent;
if (variableElement != null &&
parent is VariableDeclarationList &&
parent.type == null &&
node.initializer != null) {
if (variableElement.kind == ElementKind.TOP_LEVEL_VARIABLE ||
variableElement.kind == ElementKind.FIELD) {
- _validateTopLevelInitializer(variableElement.name, node.initializer);
+ _validateTopLevelInitializer(variableElement.name!, node.initializer!);
}
}
- return super.visitVariableDeclaration(node);
+ node.visitChildren(this);
}
@override
void visitVariableDeclarationList(VariableDeclarationList node) {
- TypeAnnotation type = node.type;
+ var type = node.type;
if (type != null) {
for (VariableDeclaration variable in node.variables) {
var initializer = variable.initializer;
if (initializer != null) {
checkForCast(initializer,
- from: initializer.staticType, to: type.type);
+ from: initializer.staticType!, to: type.type!);
}
}
}
@@ -580,9 +557,9 @@
assert(functionType.optionalParameterTypes.isEmpty);
// Refine the return type.
- var rhsType = expr.rightHandSide.staticType;
+ var rhsType = expr.rightHandSide.staticType!;
var returnType = rules.refineBinaryExpressionType(
- expr.readType,
+ expr.readType!,
op,
rhsType,
functionType.returnType,
@@ -601,7 +578,7 @@
// /*implicit assignment cast*/y += 42;
//
_checkImplicitCast(expr.leftHandSide,
- to: expr.writeType, from: returnType, opAssign: true);
+ to: expr.writeType!, from: returnType, opAssign: true);
}
}
@@ -616,10 +593,10 @@
/// Given an expression [expr] of type [fromType], returns true if an implicit
/// downcast is required, false if it is not, or null if the types are
/// unrelated.
- bool _checkFunctionTypeCasts(
+ bool? _checkFunctionTypeCasts(
Expression expr, FunctionType to, DartType fromType) {
bool callTearoff = false;
- FunctionType from;
+ FunctionType? from;
if (fromType is FunctionType) {
from = fromType;
} else if (fromType is InterfaceType) {
@@ -652,8 +629,8 @@
/// If [expr] does not require an implicit cast because it is not related to
/// [to] or is already a subtype of it, does nothing.
void _checkImplicitCast(Expression expr,
- {@required DartType to,
- @required DartType from,
+ {required DartType to,
+ required DartType from,
bool opAssign = false,
bool forSpread = false,
bool forSpreadKey = false,
@@ -672,9 +649,9 @@
}
}
- void _checkReturnOrYield(Expression expression, AstNode node,
+ void _checkReturnOrYield(Expression? expression, AstNode node,
{bool yieldStar = false}) {
- FunctionBody body = node.thisOrAncestorOfType<FunctionBody>();
+ var body = node.thisOrAncestorOfType<FunctionBody>()!;
var type = _getExpectedReturnType(body, yieldStar: yieldStar);
if (type == null) {
// We have a type mismatch: the async/async*/sync* modifier does
@@ -686,56 +663,54 @@
if (expression != null) checkAssignment(expression, type);
}
- void _checkUnary(Expression operand, Token op, MethodElement element,
- {@required DartType readType, @required DartType writeType}) {
+ void _checkUnary(CompoundAssignmentExpression node, Expression operand,
+ Token op, MethodElement? element) {
bool isIncrementAssign = op.type.isIncrementOperator;
- if (op.isUserDefinableOperator || isIncrementAssign) {
- if (element != null && isIncrementAssign) {
- // For ++ and --, even if it is not dynamic, we still need to check
- // that the user defined method accepts an `int` as the RHS.
- //
- // We assume Analyzer has done this already (in ErrorVerifier).
- //
- // However, we also need to check the return type.
+ if (element != null && isIncrementAssign) {
+ // For ++ and --, even if it is not dynamic, we still need to check
+ // that the user defined method accepts an `int` as the RHS.
+ //
+ // We assume Analyzer has done this already (in ErrorVerifier).
+ //
+ // However, we also need to check the return type.
- // Refine the return type.
- var functionType = element.type;
- var rhsType = typeProvider.intType;
- var returnType = rules.refineBinaryExpressionType(
- readType,
- TokenType.PLUS,
- rhsType,
- functionType.returnType,
- element,
- );
+ // Refine the return type.
+ var functionType = element.type;
+ var rhsType = typeProvider.intType;
+ var returnType = rules.refineBinaryExpressionType(
+ node.readType!,
+ TokenType.PLUS,
+ rhsType,
+ functionType.returnType,
+ element,
+ );
- // Skip the argument check - `int` cannot be downcast.
- //
- // Check the return type for an implicit cast.
- //
- // If needed, mark the assignment to indicate a down cast when we assign
- // back to it. So these two implicit casts are equivalent:
- //
- // y = /*implicit cast*/(y + 1);
- // /*implicit assignment cast*/y++;
- //
- _checkImplicitCast(operand,
- to: writeType, from: returnType, opAssign: true);
- }
+ // Skip the argument check - `int` cannot be downcast.
+ //
+ // Check the return type for an implicit cast.
+ //
+ // If needed, mark the assignment to indicate a down cast when we assign
+ // back to it. So these two implicit casts are equivalent:
+ //
+ // y = /*implicit cast*/(y + 1);
+ // /*implicit assignment cast*/y++;
+ //
+ _checkImplicitCast(operand,
+ to: node.writeType!, from: returnType, opAssign: true);
}
}
/// Gets the expected return type of the given function [body], either from
/// a normal return/yield, or from a yield*.
- DartType _getExpectedReturnType(FunctionBody body, {bool yieldStar = false}) {
+ DartType? _getExpectedReturnType(FunctionBody body,
+ {bool yieldStar = false}) {
FunctionType functionType;
var parent = body.parent;
if (parent is Declaration) {
- functionType = _elementType(parent.declaredElement);
+ functionType = _elementType(parent.declaredElement) as FunctionType;
} else {
assert(parent is FunctionExpression);
- functionType =
- (parent as FunctionExpression).staticType ?? DynamicTypeImpl.instance;
+ functionType = (parent as FunctionExpression).staticType as FunctionType;
}
var type = functionType.returnType;
@@ -784,7 +759,7 @@
}
}
- DartType _getInstanceTypeArgument(
+ DartType? _getInstanceTypeArgument(
DartType expressionType, ClassElement instanceType) {
var asInstanceType = expressionType.asInstanceOf(instanceType);
if (asInstanceType != null) {
@@ -797,8 +772,8 @@
/// in the caller position of a call (that is, accounting
/// for the possibility of a call method). Returns null
/// if expression is not statically callable.
- FunctionType _getTypeAsCaller(InvocationExpression node) {
- DartType type = node.staticInvokeType;
+ FunctionType? _getTypeAsCaller(InvocationExpression node) {
+ var type = node.staticInvokeType;
if (type is FunctionType) {
return type;
} else if (type is InterfaceType) {
@@ -814,13 +789,13 @@
/// downcast implicitly).
///
/// If [from] is omitted, uses the static type of [expr]
- bool _needsImplicitCast(Expression expr,
- {@required DartType from, @required DartType to}) {
+ bool? _needsImplicitCast(Expression expr,
+ {required DartType from, required DartType to}) {
// Void is considered Top, but may only be *explicitly* cast.
if (from.isVoid) return null;
if (to is FunctionType) {
- bool needsCast = _checkFunctionTypeCasts(expr, to, from);
+ var needsCast = _checkFunctionTypeCasts(expr, to, from);
if (needsCast != null) return needsCast;
}
@@ -854,7 +829,7 @@
/// This will emit the appropriate error/warning/hint message as well as mark
/// the AST node.
void _recordImplicitCast(Expression expr, DartType to,
- {DartType from,
+ {required DartType from,
bool opAssign = false,
bool forSpread = false,
bool forSpreadKey = false,
@@ -905,7 +880,7 @@
}
if (expr is InstanceCreationExpression) {
- ConstructorElement e = expr.constructorName.staticElement;
+ var e = expr.constructorName.staticElement;
if (e == null || !e.isFactory) {
// fromT should be an exact type - this will almost certainly fail at
// runtime.
@@ -915,14 +890,14 @@
}
}
- Element e = _getKnownElement(expr);
+ var e = _getKnownElement(expr);
if (e is FunctionElement || e is MethodElement && e.isStatic) {
_recordMessage(
expr,
e is MethodElement
? CompileTimeErrorCode.INVALID_CAST_METHOD
: CompileTimeErrorCode.INVALID_CAST_FUNCTION,
- [e.name, from, to]);
+ [e!.name, from, to]);
return;
}
}
@@ -943,7 +918,7 @@
? node.firstTokenAfterCommentAndMetadata.offset
: node.offset;
int length = node.end - begin;
- var source = (node.root as CompilationUnit).declaredElement.source;
+ var source = (node.root as CompilationUnit).declaredElement!.source;
var error = AnalysisError(source, begin, length, errorCode, arguments);
reporter.onError(error);
}
@@ -956,14 +931,11 @@
if (loopVariable.staticElement is! VariableElement) {
return;
}
- VariableElement loopVariableElement = loopVariable.staticElement;
+ var loopVariableElement = loopVariable.staticElement as VariableElement;
// Safely handle malformed statements.
- if (loopVariable == null) {
- return;
- }
- Token awaitKeyword;
- AstNode parent = node.parent;
+ Token? awaitKeyword;
+ var parent = node.parent;
if (parent is ForStatement) {
awaitKeyword = parent.awaitKeyword;
} else if (parent is ForElement) {
@@ -976,7 +948,7 @@
var sequenceElement = awaitKeyword != null
? typeProvider.streamElement
: typeProvider.iterableElement;
- var iterableType = node.iterable.staticType;
+ var iterableType = node.iterable.staticType!;
var elementType = _getInstanceTypeArgument(iterableType, sequenceElement);
// If the sequence is not an Iterable (or Stream for await for) but is a
@@ -1013,7 +985,7 @@
void validateHasType(AstNode n, PropertyAccessorElement e) {
if (e.hasImplicitReturnType) {
var variable = e.declaration.variable as PropertyInducingElementImpl;
- TopLevelInferenceError error = variable.typeInferenceError;
+ var error = variable.typeInferenceError;
if (error != null) {
if (error.kind == TopLevelInferenceErrorKind.dependencyCycle) {
// Errors on const should have been reported with
@@ -1030,13 +1002,13 @@
}
}
- void validateIdentifierElement(AstNode n, Element e,
+ void validateIdentifierElement(AstNode n, Element? e,
{bool isMethodCall = false}) {
if (e == null) {
return;
}
- Element enclosing = e.enclosingElement;
+ var enclosing = e.enclosingElement;
if (enclosing is CompilationUnitElement) {
if (e is PropertyAccessorElement) {
validateHasType(n, e);
@@ -1093,7 +1065,7 @@
@override
visitFunctionExpression(FunctionExpression node) {
- FunctionBody body = node.body;
+ var body = node.body;
if (body is ExpressionFunctionBody) {
body.expression.accept(this);
} else {
@@ -1128,7 +1100,7 @@
@override
visitInstanceCreationExpression(InstanceCreationExpression node) {
var constructor = node.constructorName.staticElement;
- ClassElement class_ = constructor?.enclosingElement;
+ var class_ = constructor?.enclosingElement;
if (node.constructorName.type.typeArguments == null &&
class_ != null &&
class_.typeParameters.isNotEmpty) {
@@ -1169,7 +1141,7 @@
StrongModeCode.TOP_LEVEL_INSTANCE_METHOD, [_name, method.name]);
}
// Type inference might depend on the parameters
- node.argumentList?.accept(this);
+ node.argumentList.accept(this);
}
}
}
diff --git a/pkg/analyzer/lib/src/task/strong_mode.dart b/pkg/analyzer/lib/src/task/strong_mode.dart
index b303bf0..ca1afb2 100644
--- a/pkg/analyzer/lib/src/task/strong_mode.dart
+++ b/pkg/analyzer/lib/src/task/strong_mode.dart
@@ -12,6 +12,7 @@
import 'package:analyzer/src/dart/element/type_algebra.dart';
import 'package:analyzer/src/dart/element/type_system.dart';
import 'package:analyzer/src/task/inference_error.dart';
+import 'package:collection/collection.dart';
/// An object used to infer the type of instance fields and the return types of
/// instance methods within a single compilation unit.
@@ -19,9 +20,9 @@
final InheritanceManager3 inheritance;
final Set<ClassElement> elementsBeingInferred = HashSet<ClassElement>();
- TypeSystemImpl typeSystem;
- bool isNonNullableByDefault;
- ClassElement currentClassElement;
+ late TypeSystemImpl typeSystem;
+ late bool isNonNullableByDefault;
+ late ClassElement currentClassElement;
/// Initialize a newly create inferrer.
InstanceMemberInferrer(this.inheritance);
@@ -31,7 +32,7 @@
/// Infer type information for all of the instance members in the given
/// compilation [unit].
void inferCompilationUnit(CompilationUnitElement unit) {
- typeSystem = unit.library.typeSystem;
+ typeSystem = unit.library.typeSystem as TypeSystemImpl;
isNonNullableByDefault = typeSystem.isNonNullableByDefault;
_inferClasses(unit.mixins);
_inferClasses(unit.types);
@@ -53,7 +54,7 @@
/// Given a method, return the parameter in the method that corresponds to the
/// given [parameter]. If the parameter is positional, then it appears at the
/// given [index] in its enclosing element's list of parameters.
- ParameterElement _getCorrespondingParameter(ParameterElement parameter,
+ ParameterElement? _getCorrespondingParameter(ParameterElement parameter,
int index, List<ParameterElement> methodParameters) {
//
// Find the corresponding parameter.
@@ -63,10 +64,10 @@
// If we're looking for a named parameter, only a named parameter with
// the same name will be matched.
//
- return methodParameters.lastWhere(
+ return methodParameters.lastWhereOrNull(
(ParameterElement methodParameter) =>
- methodParameter.isNamed && methodParameter.name == parameter.name,
- orElse: () => null);
+ methodParameter.isNamed &&
+ methodParameter.name == parameter.name);
}
//
// If we're looking for a positional parameter we ignore the difference
@@ -87,8 +88,8 @@
/// If the given [field] represents a non-synthetic instance field for
/// which no type was provided, infer the type of the field.
void _inferAccessorOrField({
- PropertyAccessorElementImpl accessor,
- FieldElementImpl field,
+ PropertyAccessorElementImpl? accessor,
+ FieldElementImpl? field,
}) {
Uri elementLibraryUri;
String elementName;
@@ -99,14 +100,14 @@
}
elementLibraryUri = accessor.library.source.uri;
elementName = accessor.displayName;
- }
-
- if (field != null) {
+ } else if (field != null) {
if (field.isSynthetic || field.isStatic) {
return;
}
elementLibraryUri = field.library.source.uri;
elementName = field.name;
+ } else {
+ throw UnimplementedError();
}
var getterName = Name(elementLibraryUri, elementName);
@@ -132,7 +133,7 @@
DartType combinedGetterType() {
var combinedGetter = inheritance.combineSignatures(
targetClass: currentClassElement,
- candidates: overriddenGetters,
+ candidates: overriddenGetters!,
doTopMerge: true,
name: getterName,
);
@@ -146,7 +147,7 @@
DartType combinedSetterType() {
var combinedSetter = inheritance.combineSignatures(
targetClass: currentClassElement,
- candidates: overriddenSetters,
+ candidates: overriddenSetters!,
doTopMerge: true,
name: setterName,
);
@@ -233,7 +234,7 @@
if (field != null) {
if (field.setter != null) {
if (overriddenSetters.any(_isCovariantSetter)) {
- var parameter = field.setter.parameters[0] as ParameterElementImpl;
+ var parameter = field.setter!.parameters[0] as ParameterElementImpl;
parameter.inheritsCovariant = true;
}
}
@@ -330,14 +331,18 @@
// Then infer the types for the members.
//
currentClassElement = classElement;
- for (FieldElement field in classElement.fields) {
- _inferAccessorOrField(field: field);
+ for (var field in classElement.fields) {
+ _inferAccessorOrField(
+ field: field as FieldElementImpl,
+ );
}
- for (PropertyAccessorElement accessor in classElement.accessors) {
- _inferAccessorOrField(accessor: accessor);
+ for (var accessor in classElement.accessors) {
+ _inferAccessorOrField(
+ accessor: accessor as PropertyAccessorElementImpl,
+ );
}
- for (MethodElement method in classElement.methods) {
- _inferExecutable(method);
+ for (var method in classElement.methods) {
+ _inferExecutable(method as MethodElementImpl);
}
//
// Infer initializing formal parameter types. This must happen after
@@ -366,7 +371,7 @@
for (ParameterElement parameter in constructor.parameters) {
if (parameter.hasImplicitType &&
parameter is FieldFormalParameterElementImpl) {
- FieldElement field = parameter.field;
+ var field = parameter.field;
if (field != null) {
parameter.type = field.type;
}
@@ -392,7 +397,7 @@
return;
}
- FunctionType combinedSignatureType;
+ FunctionType? combinedSignatureType;
var hasImplicitType = element.hasImplicitReturnType ||
element.parameters.any((e) => e.hasImplicitType);
if (hasImplicitType) {
@@ -476,7 +481,7 @@
/// [combinedSignatureType], which might be `null` if there is no valid
/// combined signature for signatures from direct superinterfaces.
void _inferParameterType(ParameterElementImpl parameter, int index,
- FunctionType combinedSignatureType) {
+ FunctionType? combinedSignatureType) {
if (combinedSignatureType != null) {
var matchingParameter = _getCorrespondingParameter(
parameter,
@@ -497,12 +502,9 @@
/// Infer type information for all of the instance members in the given
/// interface [type].
- void _inferType(InterfaceType type) {
+ void _inferType(InterfaceType? type) {
if (type != null) {
- ClassElement element = type.element;
- if (element != null) {
- _inferClass(element);
- }
+ _inferClass(type.element);
}
}
@@ -525,13 +527,13 @@
return;
}
- ParameterElementImpl parameter = parameters[0];
+ var parameter = parameters[0] as ParameterElementImpl;
if (!parameter.hasImplicitType) {
element.isOperatorEqualWithParameterTypeFromObject = false;
return;
}
- for (MethodElement overridden in overriddenElements) {
+ for (var overridden in overriddenElements) {
overridden = overridden.declaration;
// Skip Object itself.
@@ -566,7 +568,7 @@
/// we must express its parameter and return types in terms of its own
/// parameters. For example, given `m<T>(t)` overriding `m<S>(S s)` we
/// should infer this as `m<T>(T t)`.
- FunctionType _toOverriddenFunctionType(
+ FunctionType? _toOverriddenFunctionType(
ExecutableElement element, ExecutableElement overriddenElement) {
var elementTypeParameters = element.typeParameters;
var overriddenTypeParameters = overriddenElement.typeParameters;
@@ -575,7 +577,7 @@
return null;
}
- var overriddenType = overriddenElement.type;
+ var overriddenType = overriddenElement.type as FunctionTypeImpl;
if (elementTypeParameters.isEmpty) {
return overriddenType;
}
diff --git a/pkg/analyzer/lib/src/test_utilities/find_element.dart b/pkg/analyzer/lib/src/test_utilities/find_element.dart
index 2e8694b..b44613c 100644
--- a/pkg/analyzer/lib/src/test_utilities/find_element.dart
+++ b/pkg/analyzer/lib/src/test_utilities/find_element.dart
@@ -13,13 +13,13 @@
FindElement(this.unit);
@override
- CompilationUnitElement get unitElement => unit.declaredElement;
+ CompilationUnitElement get unitElement => unit.declaredElement!;
ExportElement export(String targetUri) {
- ExportElement result;
+ ExportElement? result;
for (var export in unitElement.library.exports) {
- var exportedUri = export.exportedLibrary.source.uri.toString();
+ var exportedUri = export.exportedLibrary!.source.uri.toString();
if (exportedUri == targetUri) {
if (result != null) {
throw StateError('Not unique: $targetUri');
@@ -48,10 +48,10 @@
}
ImportElement import(String targetUri, {bool mustBeUnique = true}) {
- ImportElement importElement;
+ ImportElement? importElement;
for (var import in unitElement.library.imports) {
- var importedUri = import.importedLibrary.source.uri.toString();
+ var importedUri = import.importedLibrary!.source.uri.toString();
if (importedUri == targetUri) {
if (importElement == null) {
importElement = import;
@@ -73,7 +73,7 @@
}
LabelElement label(String name) {
- LabelElement result;
+ LabelElement? result;
void updateResult(Element element) {
if (element is LabelElement && element.name == name) {
@@ -86,18 +86,18 @@
unit.accept(FunctionAstVisitor(
label: (node) {
- updateResult(node.label.staticElement);
+ updateResult(node.label.staticElement!);
},
));
if (result == null) {
throw StateError('Not found: $name');
}
- return result;
+ return result!;
}
FunctionElement localFunction(String name) {
- FunctionElement result;
+ FunctionElement? result;
unit.accept(FunctionAstVisitor(
functionDeclarationStatement: (node) {
@@ -114,11 +114,11 @@
if (result == null) {
throw StateError('Not found: $name');
}
- return result;
+ return result!;
}
LocalVariableElement localVar(String name) {
- LocalVariableElement result;
+ LocalVariableElement? result;
void updateResult(Element element) {
if (element is LocalVariableElement && element.name == name) {
@@ -131,26 +131,26 @@
unit.accept(FunctionAstVisitor(
declaredIdentifier: (node) {
- updateResult(node.declaredElement);
+ updateResult(node.declaredElement!);
},
simpleIdentifier: (node) {
if (node.parent is CatchClause) {
- updateResult(node.staticElement);
+ updateResult(node.staticElement!);
}
},
variableDeclaration: (node) {
- updateResult(node.declaredElement);
+ updateResult(node.declaredElement!);
},
));
if (result == null) {
throw StateError('Not found: $name');
}
- return result;
+ return result!;
}
ParameterElement parameter(String name) {
- ParameterElement result;
+ ParameterElement? result;
void findIn(List<ParameterElement> parameters) {
for (var parameter in parameters) {
@@ -199,20 +199,20 @@
unit.accept(
FunctionAstVisitor(functionExpression: (node, local) {
if (local) {
- var functionElement = node.declaredElement;
+ var functionElement = node.declaredElement!;
findIn(functionElement.parameters);
}
}),
);
if (result != null) {
- return result;
+ return result!;
}
throw StateError('Not found: $name');
}
CompilationUnitElement part(String targetUri) {
- CompilationUnitElement partElement;
+ CompilationUnitElement? partElement;
for (var part in unitElement.library.parts) {
if (part.uri == targetUri) {
@@ -238,14 +238,14 @@
for (var import_ in unitElement.library.imports) {
var prefix = import_.prefix;
if (prefix?.name == name) {
- return prefix;
+ return prefix!;
}
}
throw StateError('Not found: $name');
}
TypeParameterElement typeParameter(String name) {
- TypeParameterElement result;
+ TypeParameterElement? result;
void findIn(List<TypeParameterElement> typeParameters) {
for (var typeParameter in typeParameters) {
@@ -287,7 +287,7 @@
}
if (result != null) {
- return result;
+ return result!;
}
throw StateError('Not found: $name');
}
@@ -299,9 +299,9 @@
ImportFindElement(this.import);
- LibraryElement get importedLibrary => import.importedLibrary;
+ LibraryElement get importedLibrary => import.importedLibrary!;
- PrefixElement get prefix => import.prefix;
+ PrefixElement? get prefix => import.prefix;
@override
CompilationUnitElement get unitElement {
@@ -342,9 +342,9 @@
throw StateError('Not found: $name');
}
- ConstructorElement constructor(String name, {String of}) {
+ ConstructorElement constructor(String name, {String? of}) {
assert(name != '');
- ConstructorElement result;
+ ConstructorElement? result;
for (var class_ in unitElement.types) {
if (of == null || class_.name == of) {
for (var constructor in class_.constructors) {
@@ -381,8 +381,8 @@
throw StateError('Not found: $name');
}
- FieldElement field(String name, {String of}) {
- FieldElement result;
+ FieldElement field(String name, {String? of}) {
+ FieldElement? result;
void findIn(List<FieldElement> fields) {
for (var field in fields) {
@@ -424,13 +424,13 @@
}
if (result != null) {
- return result;
+ return result!;
}
throw StateError('Not found: $name');
}
- PropertyAccessorElement getter(String name, {String of}) {
- PropertyAccessorElement result;
+ PropertyAccessorElement getter(String name, {String? of}) {
+ PropertyAccessorElement? result;
void findIn(List<PropertyAccessorElement> accessors) {
for (var accessor in accessors) {
@@ -472,13 +472,13 @@
}
if (result != null) {
- return result;
+ return result!;
}
throw StateError('Not found: $name');
}
- MethodElement method(String name, {String of}) {
- MethodElement result;
+ MethodElement method(String name, {String? of}) {
+ MethodElement? result;
void findIn(List<MethodElement> methods) {
for (var method in methods) {
@@ -513,7 +513,7 @@
}
if (result != null) {
- return result;
+ return result!;
}
throw StateError('Not found: $name');
}
@@ -527,8 +527,8 @@
throw StateError('Not found: $name');
}
- PropertyAccessorElement setter(String name, {String of}) {
- PropertyAccessorElement result;
+ PropertyAccessorElement setter(String name, {String? of}) {
+ PropertyAccessorElement? result;
void findIn(List<PropertyAccessorElement> accessors) {
for (var accessor in accessors) {
@@ -563,7 +563,7 @@
}
if (result != null) {
- return result;
+ return result!;
}
throw StateError('Not found: $name');
}
@@ -578,11 +578,11 @@
}
PropertyAccessorElement topGet(String name) {
- return topVar(name).getter;
+ return topVar(name).getter!;
}
PropertyAccessorElement topSet(String name) {
- return topVar(name).setter;
+ return topVar(name).setter!;
}
TopLevelVariableElement topVar(String name) {
@@ -604,6 +604,6 @@
}
ConstructorElement unnamedConstructor(String name) {
- return class_(name).unnamedConstructor;
+ return class_(name).unnamedConstructor!;
}
}
diff --git a/pkg/analyzer/lib/src/test_utilities/find_node.dart b/pkg/analyzer/lib/src/test_utilities/find_node.dart
index 91afc47..566e8d7 100644
--- a/pkg/analyzer/lib/src/test_utilities/find_node.dart
+++ b/pkg/analyzer/lib/src/test_utilities/find_node.dart
@@ -12,7 +12,8 @@
FindNode(this.content, this.unit);
LibraryDirective get libraryDirective {
- return unit.directives.singleWhere((d) => d is LibraryDirective);
+ return unit.directives.singleWhere((d) => d is LibraryDirective)
+ as LibraryDirective;
}
Annotation annotation(String search) {
@@ -357,7 +358,7 @@
return _node(search, (n) => n is WhileStatement);
}
- AstNode _node(String search, bool Function(AstNode) predicate) {
+ T _node<T>(String search, bool Function(AstNode) predicate) {
int offset = this.offset(search);
var node = NodeLocator2(offset).searchWithin(unit);
@@ -371,6 +372,6 @@
throw StateError(
'The node for |$search| had no matching ancestor in:\n$content');
}
- return result;
+ return result as T;
}
}
diff --git a/pkg/analyzer/lib/src/test_utilities/function_ast_visitor.dart b/pkg/analyzer/lib/src/test_utilities/function_ast_visitor.dart
index 4fc84f6..126dd97 100644
--- a/pkg/analyzer/lib/src/test_utilities/function_ast_visitor.dart
+++ b/pkg/analyzer/lib/src/test_utilities/function_ast_visitor.dart
@@ -7,13 +7,13 @@
/// [RecursiveAstVisitor] that delegates visit methods to functions.
class FunctionAstVisitor extends RecursiveAstVisitor<void> {
- final void Function(DeclaredIdentifier) declaredIdentifier;
- final void Function(FunctionDeclarationStatement)
+ final void Function(DeclaredIdentifier)? declaredIdentifier;
+ final void Function(FunctionDeclarationStatement)?
functionDeclarationStatement;
- final void Function(FunctionExpression, bool) functionExpression;
- final void Function(Label) label;
- final void Function(SimpleIdentifier) simpleIdentifier;
- final void Function(VariableDeclaration) variableDeclaration;
+ final void Function(FunctionExpression, bool)? functionExpression;
+ final void Function(Label)? label;
+ final void Function(SimpleIdentifier)? simpleIdentifier;
+ final void Function(VariableDeclaration)? variableDeclaration;
FunctionAstVisitor({
this.declaredIdentifier,
@@ -27,7 +27,7 @@
@override
void visitDeclaredIdentifier(DeclaredIdentifier node) {
if (declaredIdentifier != null) {
- declaredIdentifier(node);
+ declaredIdentifier!(node);
}
super.visitDeclaredIdentifier(node);
}
@@ -35,7 +35,7 @@
@override
void visitFunctionDeclarationStatement(FunctionDeclarationStatement node) {
if (functionDeclarationStatement != null) {
- functionDeclarationStatement(node);
+ functionDeclarationStatement!(node);
}
super.visitFunctionDeclarationStatement(node);
}
@@ -44,8 +44,8 @@
void visitFunctionExpression(FunctionExpression node) {
if (functionExpression != null) {
var local = node.parent is! FunctionDeclaration ||
- node.parent.parent is FunctionDeclarationStatement;
- functionExpression(node, local);
+ node.parent!.parent is FunctionDeclarationStatement;
+ functionExpression!(node, local);
}
super.visitFunctionExpression(node);
}
@@ -53,7 +53,7 @@
@override
void visitLabel(Label node) {
if (label != null) {
- label(node);
+ label!(node);
}
super.visitLabel(node);
}
@@ -61,7 +61,7 @@
@override
void visitSimpleIdentifier(SimpleIdentifier node) {
if (simpleIdentifier != null) {
- simpleIdentifier(node);
+ simpleIdentifier!(node);
}
super.visitSimpleIdentifier(node);
}
@@ -69,7 +69,7 @@
@override
void visitVariableDeclaration(VariableDeclaration node) {
if (variableDeclaration != null) {
- variableDeclaration(node);
+ variableDeclaration!(node);
}
super.visitVariableDeclaration(node);
}
diff --git a/pkg/analyzer/lib/src/test_utilities/mock_sdk.dart b/pkg/analyzer/lib/src/test_utilities/mock_sdk.dart
index 16f0bcd..c6c83c4 100644
--- a/pkg/analyzer/lib/src/test_utilities/mock_sdk.dart
+++ b/pkg/analyzer/lib/src/test_utilities/mock_sdk.dart
@@ -10,7 +10,6 @@
import 'package:analyzer/src/dart/sdk/sdk.dart';
import 'package:analyzer/src/generated/sdk.dart';
import 'package:analyzer/src/generated/source.dart';
-import 'package:meta/meta.dart';
import 'package:pub_semver/src/version.dart';
const String sdkRoot = '/sdk';
@@ -284,6 +283,7 @@
abstract class Comparable<T> {
int compareTo(T other);
+ static int compare(Comparable a, Comparable b) => a.compareTo(b);
}
typedef Comparator<T> = int Function(T a, T b);
@@ -1083,7 +1083,7 @@
],
);
-final List<SdkLibrary> _LIBRARIES = [
+final List<MockSdkLibrary> _LIBRARIES = [
_LIB_CORE,
_LIB_ASYNC,
_LIB_ASYNC2,
@@ -1117,9 +1117,9 @@
final Map<String, String> uriMap = {};
@override
- final List<SdkLibrary> sdkLibraries = [];
+ final List<MockSdkLibrary> sdkLibraries = [];
- File _versionFile;
+ late final File _versionFile;
/// Optional [additionalLibraries] should have unique URIs, and paths in
/// their units are relative (will be put into `sdkRoot/lib`).
@@ -1130,10 +1130,10 @@
/// [sdkVersion], if supplied will override the version stored in the mock
/// SDK's `version` file.
MockSdk({
- @required this.resourceProvider,
+ required this.resourceProvider,
List<MockSdkLibrary> additionalLibraries = const [],
List<String> nullSafePackages = const [],
- String sdkVersion,
+ String? sdkVersion,
}) {
sdkVersion ??= '${ExperimentStatus.currentVersion.major}.'
'${ExperimentStatus.currentVersion.minor}.0';
@@ -1215,7 +1215,7 @@
}
@override
- String get allowedExperimentsJson {
+ String? get allowedExperimentsJson {
try {
var convertedRoot = resourceProvider.convertPath(sdkRoot);
return resourceProvider
@@ -1243,7 +1243,7 @@
sdkLibraries.map((SdkLibrary library) => library.shortName).toList();
@override
- Source fromFileUri(Uri uri) {
+ Source? fromFileUri(Uri uri) {
String filePath = resourceProvider.pathContext.fromUri(uri);
if (!filePath.startsWith(resourceProvider.convertPath('$sdkRoot/lib/'))) {
return null;
@@ -1252,7 +1252,7 @@
String libraryPath = library.path;
if (filePath == libraryPath) {
try {
- File file = resourceProvider.getResource(filePath);
+ var file = resourceProvider.getFile(filePath);
Uri dartUri = Uri.parse(library.shortName);
return file.createSource(dartUri);
} catch (exception) {
@@ -1266,7 +1266,7 @@
String pathInLibrary = filePath.substring(libraryRootPath.length);
String uriStr = '${library.shortName}/$pathInLibrary';
try {
- File file = resourceProvider.getResource(filePath);
+ var file = resourceProvider.getFile(filePath);
Uri dartUri = Uri.parse(uriStr);
return file.createSource(dartUri);
} catch (exception) {
@@ -1278,7 +1278,7 @@
}
@override
- SdkLibrary getSdkLibrary(String dartUri) {
+ SdkLibrary? getSdkLibrary(String dartUri) {
for (SdkLibrary library in _LIBRARIES) {
if (library.shortName == dartUri) {
return library;
@@ -1288,10 +1288,10 @@
}
@override
- Source mapDartUri(String dartUri) {
- String path = uriMap[dartUri];
+ Source? mapDartUri(String dartUri) {
+ var path = uriMap[dartUri];
if (path != null) {
- File file = resourceProvider.getResource(path);
+ var file = resourceProvider.getFile(path);
Uri uri = Uri(scheme: 'dart', path: dartUri.substring(5));
return file.createSource(uri);
}
diff --git a/pkg/analyzer/lib/src/test_utilities/mock_sdk_elements.dart b/pkg/analyzer/lib/src/test_utilities/mock_sdk_elements.dart
index 39b7903..cfd22eb 100644
--- a/pkg/analyzer/lib/src/test_utilities/mock_sdk_elements.dart
+++ b/pkg/analyzer/lib/src/test_utilities/mock_sdk_elements.dart
@@ -12,11 +12,10 @@
import 'package:analyzer/src/generated/engine.dart' as engine;
import 'package:analyzer/src/generated/testing/element_factory.dart';
import 'package:analyzer/src/generated/utilities_dart.dart';
-import 'package:meta/meta.dart';
class MockSdkElements {
- final LibraryElement coreLibrary;
- final LibraryElement asyncLibrary;
+ final LibraryElementImpl coreLibrary;
+ final LibraryElementImpl asyncLibrary;
factory MockSdkElements(
engine.AnalysisContext analysisContext,
@@ -35,39 +34,39 @@
final engine.AnalysisContext analysisContext;
final AnalysisSessionImpl analysisSession;
- ClassElementImpl _boolElement;
- ClassElementImpl _comparableElement;
- ClassElementImpl _completerElement;
- ClassElementImpl _deprecatedElement;
- ClassElementImpl _doubleElement;
- ClassElementImpl _functionElement;
- ClassElementImpl _futureElement;
- ClassElementImpl _futureOrElement;
- ClassElementImpl _intElement;
- ClassElementImpl _iterableElement;
- ClassElementImpl _iteratorElement;
- ClassElementImpl _listElement;
- ClassElementImpl _mapElement;
- ClassElementImpl _nullElement;
- ClassElementImpl _numElement;
- ClassElementImpl _objectElement;
- ClassElementImpl _overrideElement;
- ClassElementImpl _proxyElement;
- ClassElementImpl _setElement;
- ClassElementImpl _stackTraceElement;
- ClassElementImpl _streamElement;
- ClassElementImpl _streamSubscriptionElement;
- ClassElementImpl _stringElement;
- ClassElementImpl _symbolElement;
- ClassElementImpl _typeElement;
+ ClassElementImpl? _boolElement;
+ ClassElementImpl? _comparableElement;
+ ClassElementImpl? _completerElement;
+ ClassElementImpl? _deprecatedElement;
+ ClassElementImpl? _doubleElement;
+ ClassElementImpl? _functionElement;
+ ClassElementImpl? _futureElement;
+ ClassElementImpl? _futureOrElement;
+ ClassElementImpl? _intElement;
+ ClassElementImpl? _iterableElement;
+ ClassElementImpl? _iteratorElement;
+ ClassElementImpl? _listElement;
+ ClassElementImpl? _mapElement;
+ ClassElementImpl? _nullElement;
+ ClassElementImpl? _numElement;
+ ClassElementImpl? _objectElement;
+ ClassElementImpl? _overrideElement;
+ ClassElementImpl? _proxyElement;
+ ClassElementImpl? _setElement;
+ ClassElementImpl? _stackTraceElement;
+ ClassElementImpl? _streamElement;
+ ClassElementImpl? _streamSubscriptionElement;
+ ClassElementImpl? _stringElement;
+ ClassElementImpl? _symbolElement;
+ ClassElementImpl? _typeElement;
- InterfaceType _boolType;
- InterfaceType _doubleType;
- InterfaceType _intType;
- InterfaceType _numType;
- InterfaceType _objectType;
- InterfaceType _stringType;
- InterfaceType _typeType;
+ InterfaceType? _boolType;
+ InterfaceType? _doubleType;
+ InterfaceType? _intType;
+ InterfaceType? _numType;
+ InterfaceType? _objectType;
+ InterfaceType? _stringType;
+ InterfaceType? _typeType;
_MockSdkElementsBuilder(
this.analysisContext,
@@ -75,12 +74,13 @@
);
ClassElementImpl get boolElement {
- if (_boolElement != null) return _boolElement;
+ var boolElement = _boolElement;
+ if (boolElement != null) return boolElement;
- _boolElement = _class(name: 'bool');
- _boolElement.supertype = objectType;
+ _boolElement = boolElement = _class(name: 'bool');
+ boolElement.supertype = objectType;
- _boolElement.constructors = [
+ boolElement.constructors = [
_constructor(
name: 'fromEnvironment',
isConst: true,
@@ -92,7 +92,7 @@
),
];
- return _boolElement;
+ return boolElement;
}
InterfaceType get boolType {
@@ -100,47 +100,50 @@
}
ClassElementImpl get comparableElement {
- if (_comparableElement != null) return _comparableElement;
+ var comparableElement = _comparableElement;
+ if (comparableElement != null) return comparableElement;
var tElement = _typeParameter('T');
- _comparableElement = _class(
+ _comparableElement = comparableElement = _class(
name: 'Comparable',
isAbstract: true,
typeParameters: [tElement],
);
- _comparableElement.supertype = objectType;
+ comparableElement.supertype = objectType;
- return _comparableElement;
+ return comparableElement;
}
ClassElementImpl get completerElement {
- if (_completerElement != null) return _completerElement;
+ var completerElement = _completerElement;
+ if (completerElement != null) return completerElement;
var tElement = _typeParameter('T');
- _completerElement = _class(
+ _completerElement = completerElement = _class(
name: 'Completer',
isAbstract: true,
typeParameters: [tElement],
);
- _completerElement.supertype = objectType;
+ completerElement.supertype = objectType;
- return _completerElement;
+ return completerElement;
}
ClassElementImpl get deprecatedElement {
- if (_deprecatedElement != null) return _deprecatedElement;
+ var deprecatedElement = _deprecatedElement;
+ if (deprecatedElement != null) return deprecatedElement;
- _deprecatedElement = _class(name: 'Deprecated');
- _deprecatedElement.supertype = objectType;
+ _deprecatedElement = deprecatedElement = _class(name: 'Deprecated');
+ deprecatedElement.supertype = objectType;
- _deprecatedElement.fields = <FieldElement>[
+ deprecatedElement.fields = <FieldElement>[
_field('message', stringType, isFinal: true),
];
- _deprecatedElement.accessors =
- _deprecatedElement.fields.map((f) => f.getter).toList();
+ deprecatedElement.accessors =
+ deprecatedElement.fields.map((f) => f.getter!).toList();
- _deprecatedElement.constructors = [
+ deprecatedElement.constructors = [
_constructor(
isConst: true,
parameters: [
@@ -149,20 +152,24 @@
),
];
- return _deprecatedElement;
+ return deprecatedElement;
}
ClassElementImpl get doubleElement {
- if (_doubleElement != null) return _doubleElement;
+ var doubleElement = _doubleElement;
+ if (doubleElement != null) return doubleElement;
- _doubleElement = _class(name: 'double', isAbstract: true);
- _doubleElement.supertype = numType;
+ _doubleElement = doubleElement = _class(
+ name: 'double',
+ isAbstract: true,
+ );
+ doubleElement.supertype = numType;
FieldElement staticConstDoubleField(String name) {
return _field(name, doubleType, isStatic: true, isConst: true);
}
- _doubleElement.fields = <FieldElement>[
+ doubleElement.fields = <FieldElement>[
staticConstDoubleField('nan'),
staticConstDoubleField('infinity'),
staticConstDoubleField('negativeInfinity'),
@@ -170,10 +177,10 @@
staticConstDoubleField('maxFinite'),
];
- _doubleElement.accessors =
- _doubleElement.fields.map((field) => field.getter).toList();
+ doubleElement.accessors =
+ doubleElement.fields.map((field) => field.getter!).toList();
- _doubleElement.methods = [
+ doubleElement.methods = [
_method('+', doubleType, parameters: [
_requiredParameter('other', numType),
]),
@@ -206,7 +213,7 @@
_method('truncate', doubleType),
];
- return _doubleElement;
+ return doubleElement;
}
InterfaceType get doubleType {
@@ -216,12 +223,16 @@
DynamicTypeImpl get dynamicType => DynamicTypeImpl.instance;
ClassElementImpl get functionElement {
- if (_functionElement != null) return _functionElement;
+ var functionElement = _functionElement;
+ if (functionElement != null) return functionElement;
- _functionElement = _class(name: 'Function', isAbstract: true);
- _functionElement.supertype = objectType;
+ _functionElement = functionElement = _class(
+ name: 'Function',
+ isAbstract: true,
+ );
+ functionElement.supertype = objectType;
- return _functionElement;
+ return functionElement;
}
InterfaceType get functionType {
@@ -229,20 +240,21 @@
}
ClassElementImpl get futureElement {
- if (_futureElement != null) return _futureElement;
+ var futureElement = _futureElement;
+ if (futureElement != null) return futureElement;
var tElement = _typeParameter('T');
var tType = _typeParameterType(tElement);
- _futureElement = _class(
+ _futureElement = futureElement = _class(
name: 'Future',
isAbstract: true,
typeParameters: [tElement],
);
- _futureElement.supertype = objectType;
+ futureElement.supertype = objectType;
// factory Future.value([FutureOr<T> value])
- _futureElement.constructors = [
+ futureElement.constructors = [
_constructor(
isFactory: true,
parameters: [
@@ -254,7 +266,7 @@
// Future<R> then<R>(FutureOr<R> onValue(T value), {Function onError})
var rElement = _typeParameter('R');
var rType = _typeParameterType(rElement);
- _futureElement.methods = [
+ futureElement.methods = [
_method(
'then',
futureType(rType),
@@ -273,29 +285,31 @@
),
];
- return _futureElement;
+ return futureElement;
}
ClassElementImpl get futureOrElement {
- if (_futureOrElement != null) return _futureOrElement;
+ var futureOrElement = _futureOrElement;
+ if (futureOrElement != null) return futureOrElement;
var tElement = _typeParameter('T');
- _futureOrElement = _class(
+ _futureOrElement = futureOrElement = _class(
name: 'FutureOr',
typeParameters: [tElement],
);
- _futureOrElement.supertype = objectType;
+ futureOrElement.supertype = objectType;
- return _futureOrElement;
+ return futureOrElement;
}
ClassElementImpl get intElement {
- if (_intElement != null) return _intElement;
+ var intElement = _intElement;
+ if (intElement != null) return intElement;
- _intElement = _class(name: 'int', isAbstract: true);
- _intElement.supertype = numType;
+ _intElement = intElement = _class(name: 'int', isAbstract: true);
+ intElement.supertype = numType;
- _intElement.constructors = [
+ intElement.constructors = [
_constructor(
name: 'fromEnvironment',
isConst: true,
@@ -307,7 +321,7 @@
),
];
- _intElement.methods = [
+ intElement.methods = [
_method('&', intType, parameters: [
_requiredParameter('other', intType),
]),
@@ -333,7 +347,7 @@
_method('toString', stringType),
];
- return _intElement;
+ return intElement;
}
InterfaceType get intType {
@@ -341,77 +355,80 @@
}
ClassElementImpl get iterableElement {
- if (_iterableElement != null) return _iterableElement;
+ var iterableElement = _iterableElement;
+ if (iterableElement != null) return iterableElement;
var eElement = _typeParameter('E');
var eType = _typeParameterType(eElement);
- _iterableElement = _class(
+ _iterableElement = iterableElement = _class(
name: 'Iterable',
isAbstract: true,
typeParameters: [eElement],
);
- _iterableElement.supertype = objectType;
+ iterableElement.supertype = objectType;
- _iterableElement.constructors = [
+ iterableElement.constructors = [
_constructor(isConst: true),
];
- _setAccessors(_iterableElement, [
+ _setAccessors(iterableElement, [
_getter('iterator', iteratorType(eType)),
_getter('last', eType),
]);
- return _iterableElement;
+ return iterableElement;
}
ClassElementImpl get iteratorElement {
- if (_iteratorElement != null) return _iteratorElement;
+ var iteratorElement = _iteratorElement;
+ if (iteratorElement != null) return iteratorElement;
var eElement = _typeParameter('E');
var eType = _typeParameterType(eElement);
- _iteratorElement = _class(
+ _iteratorElement = iteratorElement = _class(
name: 'Iterator',
isAbstract: true,
typeParameters: [eElement],
);
- _iteratorElement.supertype = objectType;
+ iteratorElement.supertype = objectType;
- _setAccessors(_iterableElement, [
+ _setAccessors(iterableElement, [
_getter('current', eType),
]);
- return _iteratorElement;
+ return iteratorElement;
}
ClassElementImpl get listElement {
- if (_listElement != null) return _listElement;
+ var listElement = _listElement;
+ if (listElement != null) return listElement;
var eElement = _typeParameter('E');
var eType = _typeParameterType(eElement);
- _listElement = _class(
+ _listElement = listElement = _class(
name: 'List',
isAbstract: true,
typeParameters: [eElement],
);
- _listElement.supertype = objectType;
- _listElement.interfaces = [
+ listElement.supertype = objectType;
+ listElement.interfaces = [
iterableType(eType),
];
- _listElement.constructors = [
+ listElement.constructors = [
_constructor(isFactory: true, parameters: [
_positionalParameter('length', intType),
]),
];
- _setAccessors(_listElement, [
+ _setAccessors(listElement, [
_getter('length', intType),
]);
- _listElement.methods = [
+ listElement.methods = [
_method('[]', eType, parameters: [
_requiredParameter('index', intType),
]),
@@ -424,29 +441,30 @@
]),
];
- return _listElement;
+ return listElement;
}
ClassElementImpl get mapElement {
- if (_mapElement != null) return _mapElement;
+ var mapElement = _mapElement;
+ if (mapElement != null) return mapElement;
var kElement = _typeParameter('K');
var vElement = _typeParameter('V');
var kType = _typeParameterType(kElement);
var vType = _typeParameterType(vElement);
- _mapElement = _class(
+ _mapElement = mapElement = _class(
name: 'Map',
isAbstract: true,
typeParameters: [kElement, vElement],
);
- _mapElement.supertype = objectType;
+ mapElement.supertype = objectType;
- _setAccessors(_mapElement, [
+ _setAccessors(mapElement, [
_getter('length', intType),
]);
- _mapElement.methods = [
+ mapElement.methods = [
_method('[]', vType, parameters: [
_requiredParameter('key', objectType),
]),
@@ -456,38 +474,40 @@
]),
];
- return _mapElement;
+ return mapElement;
}
ClassElementImpl get nullElement {
- if (_nullElement != null) return _nullElement;
+ var nullElement = _nullElement;
+ if (nullElement != null) return nullElement;
- _nullElement = _class(name: 'Null');
- _nullElement.supertype = objectType;
+ _nullElement = nullElement = _class(name: 'Null');
+ nullElement.supertype = objectType;
- _nullElement.constructors = [
+ nullElement.constructors = [
_constructor(
name: '_uninstantiatable',
isFactory: true,
),
];
- return _nullElement;
+ return nullElement;
}
ClassElementImpl get numElement {
- if (_numElement != null) return _numElement;
+ var numElement = _numElement;
+ if (numElement != null) return numElement;
- _numElement = _class(name: 'num', isAbstract: true);
- _numElement.supertype = objectType;
- _numElement.interfaces = [
+ _numElement = numElement = _class(name: 'num', isAbstract: true);
+ numElement.supertype = objectType;
+ numElement.interfaces = [
_interfaceType(
comparableElement,
typeArguments: [numType],
),
];
- _numElement.methods = [
+ numElement.methods = [
_method('+', numType, parameters: [
_requiredParameter('other', numType),
]),
@@ -545,13 +565,13 @@
]),
];
- _setAccessors(_numElement, [
+ _setAccessors(numElement, [
_getter('isInfinite', boolType),
_getter('isNaN', boolType),
_getter('isNegative', boolType),
]);
- return _numElement;
+ return numElement;
}
InterfaceType get numType {
@@ -559,17 +579,18 @@
}
ClassElementImpl get objectElement {
- if (_objectElement != null) return _objectElement;
+ var objectElement = _objectElement;
+ if (objectElement != null) return objectElement;
- _objectElement = ElementFactory.object;
- _objectElement.interfaces = const <InterfaceType>[];
- _objectElement.mixins = const <InterfaceType>[];
- _objectElement.typeParameters = const <TypeParameterElement>[];
- _objectElement.constructors = [
+ _objectElement = objectElement = ElementFactory.object;
+ objectElement.interfaces = const <InterfaceType>[];
+ objectElement.mixins = const <InterfaceType>[];
+ objectElement.typeParameters = const <TypeParameterElement>[];
+ objectElement.constructors = [
_constructor(isConst: true),
];
- _objectElement.methods = [
+ objectElement.methods = [
_method('toString', stringType),
_method('==', boolType, parameters: [
_requiredParameter('other', objectType),
@@ -579,12 +600,12 @@
]),
];
- _setAccessors(_objectElement, [
+ _setAccessors(objectElement, [
_getter('hashCode', intType),
_getter('runtimeType', typeType),
]);
- return _objectElement;
+ return objectElement;
}
InterfaceType get objectType {
@@ -592,76 +613,84 @@
}
ClassElementImpl get overrideElement {
- if (_overrideElement != null) return _overrideElement;
+ var overrideElement = _overrideElement;
+ if (overrideElement != null) return overrideElement;
- _overrideElement = _class(name: '_Override');
- _overrideElement.supertype = objectType;
+ _overrideElement = overrideElement = _class(name: '_Override');
+ overrideElement.supertype = objectType;
- _overrideElement.constructors = [
+ overrideElement.constructors = [
_constructor(isConst: true),
];
- return _overrideElement;
+ return overrideElement;
}
ClassElementImpl get proxyElement {
- if (_proxyElement != null) return _proxyElement;
+ var proxyElement = _proxyElement;
+ if (proxyElement != null) return proxyElement;
- _proxyElement = _class(name: '_Proxy');
- _proxyElement.supertype = objectType;
+ _proxyElement = proxyElement = _class(name: '_Proxy');
+ proxyElement.supertype = objectType;
- _proxyElement.constructors = [
+ proxyElement.constructors = [
_constructor(isConst: true),
];
- return _proxyElement;
+ return proxyElement;
}
ClassElementImpl get setElement {
- if (_setElement != null) return _setElement;
+ var setElement = _setElement;
+ if (setElement != null) return setElement;
var eElement = _typeParameter('E');
var eType = _typeParameterType(eElement);
- _setElement = _class(
+ _setElement = setElement = _class(
name: 'Set',
isAbstract: true,
typeParameters: [eElement],
);
- _setElement.supertype = objectType;
- _setElement.interfaces = [
+ setElement.supertype = objectType;
+ setElement.interfaces = [
iterableType(eType),
];
- return _setElement;
+ return setElement;
}
ClassElementImpl get stackTraceElement {
- if (_stackTraceElement != null) return _stackTraceElement;
+ var stackTraceElement = _stackTraceElement;
+ if (stackTraceElement != null) return stackTraceElement;
- _stackTraceElement = _class(name: 'StackTrace', isAbstract: true);
- _stackTraceElement.supertype = objectType;
+ _stackTraceElement = stackTraceElement = _class(
+ name: 'StackTrace',
+ isAbstract: true,
+ );
+ stackTraceElement.supertype = objectType;
- return _stackTraceElement;
+ return stackTraceElement;
}
ClassElementImpl get streamElement {
- if (_streamElement != null) return _streamElement;
+ var streamElement = _streamElement;
+ if (streamElement != null) return streamElement;
var tElement = _typeParameter('T');
var tType = _typeParameterType(tElement);
- _streamElement = _class(
+ _streamElement = streamElement = _class(
name: 'Stream',
isAbstract: true,
typeParameters: [tElement],
);
- _streamElement.isAbstract = true;
- _streamElement.supertype = objectType;
+ streamElement.isAbstract = true;
+ streamElement.supertype = objectType;
// StreamSubscription<T> listen(void onData(T event),
// {Function onError, void onDone(), bool cancelOnError});
- _streamElement.methods = [
+ streamElement.methods = [
_method(
'listen',
streamSubscriptionType(tType),
@@ -685,30 +714,35 @@
),
];
- return _streamElement;
+ return streamElement;
}
ClassElementImpl get streamSubscriptionElement {
- if (_streamSubscriptionElement != null) return _streamSubscriptionElement;
+ var streamSubscriptionElement = _streamSubscriptionElement;
+ if (streamSubscriptionElement != null) return streamSubscriptionElement;
var tElement = _typeParameter('T');
- _streamSubscriptionElement = _class(
+ _streamSubscriptionElement = streamSubscriptionElement = _class(
name: 'StreamSubscription',
isAbstract: true,
typeParameters: [tElement],
);
- _streamSubscriptionElement.supertype = objectType;
+ streamSubscriptionElement.supertype = objectType;
- return _streamSubscriptionElement;
+ return streamSubscriptionElement;
}
ClassElementImpl get stringElement {
- if (_stringElement != null) return _stringElement;
+ var stringElement = _stringElement;
+ if (stringElement != null) return stringElement;
- _stringElement = _class(name: 'String', isAbstract: true);
- _stringElement.supertype = objectType;
+ _stringElement = stringElement = _class(
+ name: 'String',
+ isAbstract: true,
+ );
+ stringElement.supertype = objectType;
- _stringElement.constructors = [
+ stringElement.constructors = [
_constructor(
name: 'fromEnvironment',
isConst: true,
@@ -720,21 +754,21 @@
),
];
- _setAccessors(_stringElement, [
+ _setAccessors(stringElement, [
_getter('isEmpty', boolType),
_getter('length', intType),
_getter('codeUnits', listType(intType)),
]);
- _stringElement.methods = [
- _method('+', _stringType, parameters: [
- _requiredParameter('other', _stringType),
+ stringElement.methods = [
+ _method('+', stringType, parameters: [
+ _requiredParameter('other', stringType),
]),
- _method('toLowerCase', _stringType),
- _method('toUpperCase', _stringType),
+ _method('toLowerCase', stringType),
+ _method('toUpperCase', stringType),
];
- return _stringElement;
+ return stringElement;
}
InterfaceType get stringType {
@@ -742,12 +776,16 @@
}
ClassElementImpl get symbolElement {
- if (_symbolElement != null) return _symbolElement;
+ var symbolElement = _symbolElement;
+ if (symbolElement != null) return symbolElement;
- _symbolElement = _class(name: 'Symbol', isAbstract: true);
- _symbolElement.supertype = objectType;
+ _symbolElement = symbolElement = _class(
+ name: 'Symbol',
+ isAbstract: true,
+ );
+ symbolElement.supertype = objectType;
- _symbolElement.constructors = [
+ symbolElement.constructors = [
_constructor(
isConst: true,
isFactory: true,
@@ -757,16 +795,20 @@
),
];
- return _symbolElement;
+ return symbolElement;
}
ClassElementImpl get typeElement {
- if (_typeElement != null) return _typeElement;
+ var typeElement = _typeElement;
+ if (typeElement != null) return typeElement;
- _typeElement = _class(name: 'Type', isAbstract: true);
- _typeElement.supertype = objectType;
+ _typeElement = typeElement = _class(
+ name: 'Type',
+ isAbstract: true,
+ );
+ typeElement.supertype = objectType;
- return _typeElement;
+ return typeElement;
}
InterfaceType get typeType {
@@ -828,7 +870,7 @@
);
var asyncUnit = CompilationUnitElementImpl();
- var asyncSource = analysisContext.sourceFactory.forUri('dart:async');
+ var asyncSource = analysisContext.sourceFactory.forUri('dart:async')!;
asyncUnit.librarySource = asyncUnit.source = asyncSource;
asyncLibrary.definingCompilationUnit = asyncUnit;
@@ -846,7 +888,7 @@
LibraryElementImpl _buildCore() {
var coreUnit = CompilationUnitElementImpl();
- var coreSource = analysisContext.sourceFactory.forUri('dart:core');
+ var coreSource = analysisContext.sourceFactory.forUri('dart:core')!;
coreUnit.librarySource = coreUnit.source = coreSource;
coreUnit.types = <ClassElement>[
@@ -901,9 +943,9 @@
);
coreUnit.accessors = <PropertyAccessorElement>[
- deprecatedVariable.getter,
- overrideVariable.getter,
- proxyVariable.getter,
+ deprecatedVariable.getter!,
+ overrideVariable.getter!,
+ proxyVariable.getter!,
];
coreUnit.topLevelVariables = <TopLevelVariableElement>[
deprecatedVariable,
@@ -925,7 +967,7 @@
}
ClassElementImpl _class({
- @required String name,
+ required String name,
bool isAbstract = false,
List<TypeParameterElement> typeParameters = const [],
}) {
@@ -973,7 +1015,7 @@
}
FunctionType _functionType({
- @required DartType returnType,
+ required DartType returnType,
List<TypeParameterElement> typeFormals = const [],
List<ParameterElement> parameters = const [],
}) {
@@ -1031,7 +1073,7 @@
}
ParameterElement _namedParameter(String name, DartType type,
- {String initializerCode}) {
+ {String? initializerCode}) {
var parameter = DefaultParameterElementImpl(name, 0);
parameter.parameterKind = ParameterKind.NAMED;
parameter.type = type;
diff --git a/pkg/analyzer/lib/src/test_utilities/package_config_file_builder.dart b/pkg/analyzer/lib/src/test_utilities/package_config_file_builder.dart
index 4f19b2e..88c13b0 100644
--- a/pkg/analyzer/lib/src/test_utilities/package_config_file_builder.dart
+++ b/pkg/analyzer/lib/src/test_utilities/package_config_file_builder.dart
@@ -2,8 +2,6 @@
// 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.
-import 'package:meta/meta.dart';
-
/// Helper for building `.dart_tool/package_config.json` files.
///
/// See accepted/future-releases/language-versioning/package-config-file-v2.md
@@ -17,10 +15,10 @@
/// The [packageUri] is optional, a URI reference, resolved against the
/// file URI of the [rootPath]. The result must be inside the [rootPath].
void add({
- @required String name,
- @required String rootPath,
+ required String name,
+ required String rootPath,
String packageUri = 'lib/',
- String languageVersion,
+ String? languageVersion,
}) {
if (_packages.any((e) => e.name == name)) {
throw StateError('Already added: $name');
@@ -42,7 +40,7 @@
}
String toContent({
- @required String Function(String) toUriStr,
+ required String Function(String) toUriStr,
}) {
var buffer = StringBuffer();
@@ -64,10 +62,8 @@
var rootUri = toUriStr(package.rootPath);
buffer.write('$prefix"rootUri": "$rootUri"');
- if (package.packageUri != null) {
- buffer.writeln(',');
- buffer.write('$prefix"packageUri": "${package.packageUri}"');
- }
+ buffer.writeln(',');
+ buffer.write('$prefix"packageUri": "${package.packageUri}"');
if (package.languageVersion != null) {
buffer.writeln(',');
@@ -92,12 +88,12 @@
final String name;
final String rootPath;
final String packageUri;
- final String languageVersion;
+ final String? languageVersion;
_PackageDescription({
- @required this.name,
- @required this.rootPath,
- @required this.packageUri,
- @required this.languageVersion,
+ required this.name,
+ required this.rootPath,
+ required this.packageUri,
+ required this.languageVersion,
});
}
diff --git a/pkg/analyzer/lib/src/test_utilities/resource_provider_mixin.dart b/pkg/analyzer/lib/src/test_utilities/resource_provider_mixin.dart
index 24e1ae5..4358c03 100644
--- a/pkg/analyzer/lib/src/test_utilities/resource_provider_mixin.dart
+++ b/pkg/analyzer/lib/src/test_utilities/resource_provider_mixin.dart
@@ -35,13 +35,13 @@
}
String join(String part1,
- [String part2,
- String part3,
- String part4,
- String part5,
- String part6,
- String part7,
- String part8]) =>
+ [String? part2,
+ String? part3,
+ String? part4,
+ String? part5,
+ String? part6,
+ String? part7,
+ String? part8]) =>
resourceProvider.pathContext
.join(part1, part2, part3, part4, part5, part6, part7, part8);
diff --git a/pkg/analyzer/lib/src/util/asserts.dart b/pkg/analyzer/lib/src/util/asserts.dart
index 3c251d3..127f484 100644
--- a/pkg/analyzer/lib/src/util/asserts.dart
+++ b/pkg/analyzer/lib/src/util/asserts.dart
@@ -5,7 +5,7 @@
/// Ensures that the given [value] is not null.
/// Otherwise throws an [ArgumentError].
/// An optional [description] is used in the error message.
-void notNull(Object value, [String description]) {
+void notNull(Object? value, [String? description]) {
if (value == null) {
if (description == null) {
throw ArgumentError('Must not be null');
diff --git a/pkg/analyzer/lib/src/util/ast_data_extractor.dart b/pkg/analyzer/lib/src/util/ast_data_extractor.dart
index a95a277..8668479 100644
--- a/pkg/analyzer/lib/src/util/ast_data_extractor.dart
+++ b/pkg/analyzer/lib/src/util/ast_data_extractor.dart
@@ -21,46 +21,46 @@
NodeId computeDefaultNodeId(AstNode node) =>
NodeId(_nodeOffset(node), IdKind.node);
- T computeElementValue(Id id, Element element) => null;
+ T? computeElementValue(Id id, Element element) => null;
- void computeForClass(Declaration node, Id id) {
+ void computeForClass(Declaration node, Id? id) {
if (id == null) return;
- T value = computeNodeValue(id, node);
+ T? value = computeNodeValue(id, node);
registerValue(uri, _nodeOffset(node), id, value, node);
}
- void computeForCollectionElement(CollectionElement node, NodeId id) {
+ void computeForCollectionElement(CollectionElement node, NodeId? id) {
if (id == null) return;
- T value = computeNodeValue(id, node);
+ T? value = computeNodeValue(id, node);
registerValue(uri, _nodeOffset(node), id, value, node);
}
- void computeForLibrary(LibraryElement library, Id id) {
+ void computeForLibrary(LibraryElement library, Id? id) {
if (id == null) return;
- T value = computeElementValue(id, library);
+ T? value = computeElementValue(id, library);
registerValue(uri, 0, id, value, library);
}
- void computeForMember(Declaration node, Id id) {
+ void computeForMember(Declaration node, Id? id) {
if (id == null) return;
- T value = computeNodeValue(id, node);
+ T? value = computeNodeValue(id, node);
registerValue(uri, _nodeOffset(node), id, value, node);
}
- void computeForStatement(Statement node, NodeId id) {
+ void computeForStatement(Statement node, NodeId? id) {
if (id == null) return;
- T value = computeNodeValue(id, node);
+ T? value = computeNodeValue(id, node);
registerValue(uri, _nodeOffset(node), id, value, node);
}
/// Implement this to compute the data corresponding to [node].
///
/// If `null` is returned, [node] has no associated data.
- T computeNodeValue(Id id, AstNode node);
+ T? computeNodeValue(Id id, AstNode node);
Id createClassId(Declaration node) {
- var element = node.declaredElement;
- return ClassId(element.name);
+ var element = node.declaredElement!;
+ return ClassId(element.name!);
}
Id createLibraryId(LibraryElement node) {
@@ -73,20 +73,20 @@
}
Id createMemberId(Declaration node) {
- var element = node.declaredElement;
+ var element = node.declaredElement!;
if (element.enclosingElement is CompilationUnitElement) {
- var memberName = element.name;
+ var memberName = element.name!;
if (element is PropertyAccessorElement && element.isSetter) {
memberName += '=';
}
return MemberId.internal(memberName);
} else if (element.enclosingElement is ClassElement) {
- var memberName = element.name;
- var className = element.enclosingElement.name;
+ var memberName = element.name!;
+ var className = element.enclosingElement!.name;
return MemberId.internal(memberName, className: className);
} else if (element.enclosingElement is ExtensionElement) {
var memberName = element.name;
- var extensionName = element.enclosingElement.name;
+ var extensionName = element.enclosingElement!.name;
if (element is PropertyAccessorElement) {
memberName = '${element.isGetter ? 'get' : 'set'}#$memberName';
}
@@ -128,7 +128,7 @@
@override
void visitCompilationUnit(CompilationUnit node) {
- var library = node.declaredElement.library;
+ var library = node.declaredElement!.library;
computeForLibrary(library, createLibraryId(library));
super.visitCompilationUnit(node);
}
@@ -165,9 +165,9 @@
@override
void visitVariableDeclaration(VariableDeclaration node) {
- if (node.parent.parent is TopLevelVariableDeclaration) {
+ if (node.parent!.parent is TopLevelVariableDeclaration) {
computeForMember(node, createMemberId(node));
- } else if (node.parent.parent is FieldDeclaration) {
+ } else if (node.parent!.parent is FieldDeclaration) {
computeForMember(node, createMemberId(node));
}
super.visitVariableDeclaration(node);
@@ -182,14 +182,13 @@
} else {
offset = node.offset;
}
- assert(offset != null && offset >= 0,
- "No fileOffset on $node (${node.runtimeType})");
+ assert(offset >= 0, "No fileOffset on $node (${node.runtimeType})");
return offset;
}
}
class _Failure implements Exception {
- final String message;
+ final String? message;
_Failure([this.message]);
diff --git a/pkg/analyzer/lib/src/util/comment.dart b/pkg/analyzer/lib/src/util/comment.dart
index 3188e04..cb295c6 100644
--- a/pkg/analyzer/lib/src/util/comment.dart
+++ b/pkg/analyzer/lib/src/util/comment.dart
@@ -5,7 +5,7 @@
import 'package:analyzer/dart/ast/ast.dart';
/// Return the raw text of the given comment node.
-String getCommentNodeRawText(Comment node) {
+String? getCommentNodeRawText(Comment? node) {
if (node == null) return null;
return node.tokens
@@ -15,7 +15,7 @@
}
/// Return the plain text from the given DartDoc [rawText], without delimiters.
-String getDartDocPlainText(String rawText) {
+String? getDartDocPlainText(String? rawText) {
if (rawText == null) return null;
// Remove /** */.
@@ -53,7 +53,7 @@
}
/// Return the DartDoc summary, i.e. the portion before the first empty line.
-String getDartDocSummary(String completeText) {
+String? getDartDocSummary(String? completeText) {
if (completeText == null) return null;
var result = StringBuffer();
diff --git a/pkg/analyzer/lib/src/util/glob.dart b/pkg/analyzer/lib/src/util/glob.dart
index 3fa8a1a9..2fc88cd 100644
--- a/pkg/analyzer/lib/src/util/glob.dart
+++ b/pkg/analyzer/lib/src/util/glob.dart
@@ -22,8 +22,8 @@
/// The pattern string.
final String _pattern;
- String _suffix;
- RegExp _regex;
+ String? _suffix;
+ RegExp? _regex;
Glob(this._separator, this._pattern) {
if (_hasJustPrefix(_pattern, '**/*')) {
@@ -46,9 +46,9 @@
bool matches(String path) {
String posixPath = _toPosixPath(path);
if (_suffix != null) {
- return posixPath.toLowerCase().endsWith(_suffix);
+ return posixPath.toLowerCase().endsWith(_suffix!);
}
- return _regex.matchAsPrefix(posixPath) != null;
+ return _regex!.matchAsPrefix(posixPath) != null;
}
@override
diff --git a/pkg/analyzer/lib/src/util/graph.dart b/pkg/analyzer/lib/src/util/graph.dart
index b94a177..cc8f666 100644
--- a/pkg/analyzer/lib/src/util/graph.dart
+++ b/pkg/analyzer/lib/src/util/graph.dart
@@ -26,7 +26,7 @@
// Step 3: For each edge from [vertex] to a neighboring vertex [neighbor]:
for (T neighbor in graph.neighborsOf(vertex)) {
- int neighborPreorderNumber = preorderNumbers[neighbor];
+ var neighborPreorderNumber = preorderNumbers[neighbor];
if (neighborPreorderNumber == null) {
// If the preorder number of [neighbor] has not yet been assigned,
// recursively search [neighbor];
@@ -38,7 +38,7 @@
// * Repeatedly pop vertices from [candidates] until the top element of
// [candidates] has a preorder number less than or equal to the
// preorder number of [neighbor].
- while (preorderNumbers[candidates.last] > neighborPreorderNumber) {
+ while (preorderNumbers[candidates.last]! > neighborPreorderNumber) {
candidates.removeLast();
}
}
diff --git a/pkg/analyzer/lib/src/util/lru_map.dart b/pkg/analyzer/lib/src/util/lru_map.dart
index 050663e..66f6129 100644
--- a/pkg/analyzer/lib/src/util/lru_map.dart
+++ b/pkg/analyzer/lib/src/util/lru_map.dart
@@ -14,14 +14,14 @@
class LRUMap<K, V> {
final LinkedHashMap<K, V> _map = LinkedHashMap<K, V>();
final int _maxSize;
- final EvictionHandler<K, V> _handler;
+ final EvictionHandler<K, V>? _handler;
LRUMap(this._maxSize, [this._handler]);
/// Returns the value for the given [key] or null if [key] is not
/// in the cache.
- V get(K key) {
- V value = _map.remove(key);
+ V? get(K key) {
+ V? value = _map.remove(key);
if (value != null) {
_map[key] = value;
}
@@ -37,9 +37,9 @@
_map[key] = value;
if (_map.length > _maxSize) {
K evictedKey = _map.keys.first;
- V evictedValue = _map.remove(evictedKey);
+ V evictedValue = _map.remove(evictedKey)!;
if (_handler != null) {
- _handler(evictedKey, evictedValue);
+ _handler!.call(evictedKey, evictedValue);
}
}
}
diff --git a/pkg/analyzer/lib/src/util/performance/operation_performance.dart b/pkg/analyzer/lib/src/util/performance/operation_performance.dart
index c2ce9ae..3a090d2 100644
--- a/pkg/analyzer/lib/src/util/performance/operation_performance.dart
+++ b/pkg/analyzer/lib/src/util/performance/operation_performance.dart
@@ -2,7 +2,7 @@
// 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.
-import 'package:meta/meta.dart';
+import 'package:collection/collection.dart';
/// The performance of an operation.
abstract class OperationPerformance {
@@ -22,11 +22,11 @@
/// The name of the operation.
String get name;
- OperationPerformance getChild(String name);
+ OperationPerformance? getChild(String name);
/// Write this operation and its children into the [buffer].
void write({
- @required StringBuffer buffer,
+ required StringBuffer buffer,
String indent = '',
});
}
@@ -72,7 +72,7 @@
final String name;
final Stopwatch _timer = Stopwatch();
- final List<OperationPerformance> _children = [];
+ final List<OperationPerformanceImpl> _children = [];
final Map<String, OperationPerformanceData<Object>> _data = {};
@@ -106,18 +106,21 @@
}
@override
- OperationPerformance getChild(String name) {
- return children.firstWhere(
+ OperationPerformanceImpl? getChild(String name) {
+ return _children.firstWhereOrNull(
(child) => child.name == name,
- orElse: () => null,
);
}
OperationPerformanceDataImpl_int getDataInt(String name) {
- return _data.putIfAbsent(
- name,
- () => OperationPerformanceDataImpl_int(name),
- );
+ var data = _data[name];
+ if (data is OperationPerformanceDataImpl_int) {
+ return data;
+ } else if (data != null) {
+ throw StateError('Not int: ${data.runtimeType}');
+ } else {
+ return _data[name] = OperationPerformanceDataImpl_int(name);
+ }
}
/// Run the [operation] as a child with the given [name].
@@ -166,7 +169,7 @@
}
@override
- void write({@required StringBuffer buffer, String indent = ''}) {
+ void write({required StringBuffer buffer, String indent = ''}) {
buffer.write('$indent${toString()}');
if (_data.isNotEmpty) {
diff --git a/pkg/analyzer/lib/src/util/sdk.dart b/pkg/analyzer/lib/src/util/sdk.dart
index e1dd259..d588cc3 100644
--- a/pkg/analyzer/lib/src/util/sdk.dart
+++ b/pkg/analyzer/lib/src/util/sdk.dart
@@ -6,7 +6,7 @@
import 'package:path/path.dart' as path;
-String getSdkPath([List<String> args]) {
+String getSdkPath([List<String>? args]) {
// Look for --dart-sdk on the command line.
if (args != null) {
int index = args.indexOf('--dart-sdk');
@@ -24,7 +24,7 @@
// Look in env['DART_SDK']
if (Platform.environment['DART_SDK'] != null) {
- return Platform.environment['DART_SDK'];
+ return Platform.environment['DART_SDK']!;
}
// Use Platform.resolvedExecutable.
diff --git a/pkg/analyzer/lib/src/util/yaml.dart b/pkg/analyzer/lib/src/util/yaml.dart
index 47593b0b..1696085 100644
--- a/pkg/analyzer/lib/src/util/yaml.dart
+++ b/pkg/analyzer/lib/src/util/yaml.dart
@@ -4,12 +4,13 @@
import 'dart:collection';
+import 'package:source_span/source_span.dart';
import 'package:yaml/src/event.dart';
import 'package:yaml/yaml.dart';
/// Given a [map], return the [YamlNode] associated with the given [key], or
/// `null` if there is no matching key.
-YamlNode getKey(YamlMap map, String key) {
+YamlNode? getKey(YamlMap map, String key) {
for (YamlNode k in map.nodes.keys) {
if (k is YamlScalar && k.value == key) {
return k;
@@ -20,7 +21,7 @@
/// Given a [map], return the value associated with the key whose value matches
/// the given [key], or `null` if there is no matching key.
-YamlNode getValue(YamlMap map, String key) {
+YamlNode? getValue(YamlMap map, String key) {
for (var k in map.nodes.keys) {
if (k is YamlScalar && k.value == key) {
return map.nodes[k];
@@ -31,7 +32,7 @@
/// If all of the elements of [list] are strings, return a list of strings
/// containing the same elements. Otherwise, return `null`.
-List<String> toStringList(List list) {
+List<String>? toStringList(List? list) {
if (list == null) {
return null;
}
@@ -68,16 +69,17 @@
/// * maps are merged recursively.
/// * if map values cannot be merged, the overriding value is taken.
///
- YamlNode merge(YamlNode o1, YamlNode o2) {
+ YamlNode merge(YamlNode o1, YamlNode? o2) {
// Handle promotion first.
YamlMap listToMap(YamlList list) {
Map<YamlNode, YamlNode> map =
HashMap<YamlNode, YamlNode>(); // equals: _equals, hashCode: _hashCode
- ScalarEvent event = ScalarEvent(null, 'true', ScalarStyle.PLAIN);
+ ScalarEvent event =
+ ScalarEvent(o1.span as FileSpan, 'true', ScalarStyle.PLAIN);
for (var element in list.nodes) {
map[element] = YamlScalar.internal(true, event);
}
- return YamlMap.internal(map, null, CollectionStyle.BLOCK);
+ return YamlMap.internal(map, o1.span, CollectionStyle.BLOCK);
}
if (isListOfString(o1) && isMapToBools(o2)) {
@@ -105,7 +107,7 @@
list.add(n2);
}
}
- return YamlList.internal(list, null, CollectionStyle.BLOCK);
+ return YamlList.internal(list, l1.span, CollectionStyle.BLOCK);
}
/// Merge maps (recursively).
@@ -116,18 +118,24 @@
merged[k] = v;
});
m2.nodes.forEach((k, v) {
- YamlScalar mergedKey = merged.keys
- .firstWhere((key) => key.value == k.value, orElse: () => k);
- merged[mergedKey] = merge(merged[mergedKey], v);
+ var mergedKey =
+ merged.keys.firstWhere((key) => key.value == k.value, orElse: () => k)
+ as YamlScalar;
+ var o1 = merged[mergedKey];
+ if (o1 != null) {
+ merged[mergedKey] = merge(o1, v);
+ } else {
+ merged[mergedKey] = v;
+ }
});
- return YamlMap.internal(merged, null, CollectionStyle.BLOCK);
+ return YamlMap.internal(merged, m1.span, CollectionStyle.BLOCK);
}
- static bool isListOfString(Object o) =>
+ static bool isListOfString(Object? o) =>
o is YamlList &&
o.nodes.every((e) => e is YamlScalar && e.value is String);
- static bool isMapToBools(Object o) =>
+ static bool isMapToBools(Object? o) =>
o is YamlMap &&
o.nodes.values.every((v) => v is YamlScalar && v.value is bool);
}
diff --git a/pkg/analyzer/lib/src/workspace/basic.dart b/pkg/analyzer/lib/src/workspace/basic.dart
index 5f3be2a..bf505d2 100644
--- a/pkg/analyzer/lib/src/workspace/basic.dart
+++ b/pkg/analyzer/lib/src/workspace/basic.dart
@@ -15,19 +15,20 @@
/// The singular package in this workspace.
///
/// Each basic workspace is itself one package.
- BasicWorkspacePackage _theOnlyPackage;
+ late final BasicWorkspacePackage _theOnlyPackage;
BasicWorkspace._(
ResourceProvider provider,
Map<String, List<Folder>> packageMap,
String root,
- ) : super(provider, packageMap, root);
+ ) : super(provider, packageMap, root) {
+ _theOnlyPackage = BasicWorkspacePackage(root, this);
+ }
@override
- WorkspacePackage findPackageFor(String filePath) {
+ WorkspacePackage? findPackageFor(String filePath) {
final Folder folder = provider.getFolder(filePath);
if (provider.pathContext.isWithin(root, folder.path)) {
- _theOnlyPackage ??= BasicWorkspacePackage(root, this);
return _theOnlyPackage;
} else {
return null;
@@ -46,7 +47,7 @@
) {
Resource resource = provider.getResource(path);
if (resource is File) {
- path = resource.parent.path;
+ path = resource.parent!.path;
}
return BasicWorkspace._(provider, packageMap, path);
}
diff --git a/pkg/analyzer/lib/src/workspace/bazel.dart b/pkg/analyzer/lib/src/workspace/bazel.dart
index db269c0..b7fdff1 100644
--- a/pkg/analyzer/lib/src/workspace/bazel.dart
+++ b/pkg/analyzer/lib/src/workspace/bazel.dart
@@ -15,7 +15,7 @@
import 'package:analyzer/src/summary/package_bundle_reader.dart';
import 'package:analyzer/src/util/uri.dart';
import 'package:analyzer/src/workspace/workspace.dart';
-import 'package:meta/meta.dart';
+import 'package:collection/collection.dart';
import 'package:path/path.dart' as path;
import 'package:pub_semver/pub_semver.dart';
import 'package:watcher/watcher.dart';
@@ -41,8 +41,8 @@
BazelFileNotification(this.requested, this.candidates, this._provider);
BazelFileWatcher watcher(
- {@required Duration pollingDelayShort,
- @required Duration pollingDelayLong,
+ {required Duration pollingDelayShort,
+ required Duration pollingDelayLong,
Timer Function(Duration, void Function(Timer)) timerFactory =
_defaultTimerFactory}) =>
BazelFileWatcher(candidates, _provider, pollingDelayShort,
@@ -64,12 +64,12 @@
super(workspace.provider);
@override
- Source resolveAbsolute(Uri uri, [Uri actualUri]) {
+ Source? resolveAbsolute(Uri uri, [Uri? actualUri]) {
if (!ResourceUriResolver.isFileUri(uri)) {
return null;
}
String filePath = fileUriToNormalizedPath(provider.pathContext, uri);
- File file = workspace.findFile(filePath);
+ var file = workspace.findFile(filePath);
if (file != null) {
return file.createSource(actualUri ?? uri);
}
@@ -96,7 +96,7 @@
final _eventsController = StreamController<WatchEvent>.broadcast();
/// The time of last modification of the file under [_validPath].
- int _lastModified;
+ int? _lastModified;
/// How often do we poll a file that we have found.
final Duration _pollingDelayLong;
@@ -108,9 +108,9 @@
/// One of the [_candidates] that is valid, i.e., we found a file with that
/// path.
- String _validPath;
+ String? _validPath;
- Timer _timer;
+ Timer? _timer;
/// Used to contruct a [Timer] for polling.
final Timer Function(Duration, void Function(Timer)) _timerFactory;
@@ -137,14 +137,14 @@
}
void stop() {
- _timer.cancel();
+ _timer?.cancel();
_eventsController.close();
}
void _poll() {
if (_eventsController.isClosed) return;
- int modified;
+ int? modified;
if (_validPath == null) {
var info = _pollAll();
if (info != null) {
@@ -152,7 +152,7 @@
modified = info.modified;
}
} else {
- modified = _pollOne(_validPath);
+ modified = _pollOne(_validPath!);
}
// If there is no file, then we have nothing to do.
@@ -161,14 +161,14 @@
if (modified == null && _lastModified != null) {
// The file is no longer there, so let's issue a REMOVE event, unset
// `_validPath` and set the timer to poll more frequently.
- _eventsController.add(WatchEvent(ChangeType.REMOVE, _validPath));
+ _eventsController.add(WatchEvent(ChangeType.REMOVE, _validPath!));
_validPath = null;
_setPollingDelayToShort();
} else if (modified != null && _lastModified == null) {
- _eventsController.add(WatchEvent(ChangeType.ADD, _validPath));
+ _eventsController.add(WatchEvent(ChangeType.ADD, _validPath!));
_setPollingDelayToLong();
} else if (_lastModified != null && modified != _lastModified) {
- _eventsController.add(WatchEvent(ChangeType.MODIFY, _validPath));
+ _eventsController.add(WatchEvent(ChangeType.MODIFY, _validPath!));
}
_lastModified = modified;
}
@@ -177,7 +177,7 @@
///
/// Will set [_validPath] and return its modified time if a file is found.
/// Returns [null] if nothing is found.
- FileInfo _pollAll() {
+ FileInfo? _pollAll() {
assert(_validPath == null);
for (var path in _candidates) {
var modified = _pollOne(path);
@@ -190,7 +190,7 @@
/// Returns the modified time of the path or `null` if the file does not
/// exist.
- int _pollOne(String path) {
+ int? _pollOne(String path) {
try {
var file = _provider.getFile(path);
return file.modificationStamp;
@@ -229,62 +229,29 @@
}
@override
- Source resolveAbsolute(Uri uri, [Uri actualUri]) {
- return _sourceCache.putIfAbsent(uri, () {
- if (uri.scheme == 'file') {
- var path = fileUriToNormalizedPath(_context, uri);
- var pathRelativeToRoot = _workspace._relativeToRoot(path);
- if (pathRelativeToRoot == null) return null;
- var fullFilePath = _context.join(_workspace.root, pathRelativeToRoot);
- File file = _workspace.findFile(fullFilePath);
- return file?.createSource(uri);
+ Source? resolveAbsolute(Uri uri, [Uri? actualUri]) {
+ var source = _sourceCache[uri];
+ if (source == null) {
+ source = _resolveAbsolute(uri);
+ if (source != null) {
+ _sourceCache[uri] = source;
}
- if (uri.scheme != 'package') {
- return null;
- }
- String uriPath = uri.path;
- int slash = uriPath.indexOf('/');
-
- // If the path either starts with a slash or has no slash, it is invalid.
- if (slash < 1) {
- return null;
- }
-
- if (uriPath.contains('//') || uriPath.contains('..')) {
- return null;
- }
-
- String packageName = uriPath.substring(0, slash);
- String fileUriPart = uriPath.substring(slash + 1);
- String filePath = fileUriPart.replaceAll('/', _context.separator);
-
- if (!packageName.contains('.')) {
- String fullFilePath = _context.join(_workspace.root, 'third_party',
- 'dart', packageName, 'lib', filePath);
- File file = _workspace.findFile(fullFilePath);
- return file?.createSource(uri);
- } else {
- String packagePath = packageName.replaceAll('.', _context.separator);
- String fullFilePath =
- _context.join(_workspace.root, packagePath, 'lib', filePath);
- File file = _workspace.findFile(fullFilePath);
- return file?.createSource(uri);
- }
- });
+ }
+ return source;
}
@override
- Uri restoreAbsolute(Source source) {
+ Uri? restoreAbsolute(Source source) {
String filePath = source.fullName;
// Search in each root.
- for (String root in [
+ for (var root in [
..._workspace.binPaths,
_workspace.genfiles,
_workspace.readonly,
_workspace.root
]) {
- List<String> uriParts = _restoreUriParts(root, filePath);
+ var uriParts = _restoreUriParts(root, filePath);
if (uriParts != null) {
return Uri.parse('package:${uriParts[0]}/${uriParts[1]}');
}
@@ -293,10 +260,52 @@
return null;
}
+ Source? _resolveAbsolute(Uri uri) {
+ if (uri.scheme == 'file') {
+ var path = fileUriToNormalizedPath(_context, uri);
+ var pathRelativeToRoot = _workspace._relativeToRoot(path);
+ if (pathRelativeToRoot == null) return null;
+ var fullFilePath = _context.join(_workspace.root, pathRelativeToRoot);
+ var file = _workspace.findFile(fullFilePath);
+ return file?.createSource(uri);
+ }
+ if (uri.scheme != 'package') {
+ return null;
+ }
+ String uriPath = uri.path;
+ int slash = uriPath.indexOf('/');
+
+ // If the path either starts with a slash or has no slash, it is invalid.
+ if (slash < 1) {
+ return null;
+ }
+
+ if (uriPath.contains('//') || uriPath.contains('..')) {
+ return null;
+ }
+
+ String packageName = uriPath.substring(0, slash);
+ String fileUriPart = uriPath.substring(slash + 1);
+ String filePath = fileUriPart.replaceAll('/', _context.separator);
+
+ if (!packageName.contains('.')) {
+ String fullFilePath = _context.join(
+ _workspace.root, 'third_party', 'dart', packageName, 'lib', filePath);
+ var file = _workspace.findFile(fullFilePath);
+ return file?.createSource(uri);
+ } else {
+ String packagePath = packageName.replaceAll('.', _context.separator);
+ String fullFilePath =
+ _context.join(_workspace.root, packagePath, 'lib', filePath);
+ var file = _workspace.findFile(fullFilePath);
+ return file?.createSource(uri);
+ }
+ }
+
/// Restore [filePath] to its 'package:' URI parts.
///
/// Returns `null` if [root] is null or if [filePath] is not within [root].
- List<String> _restoreUriParts(String root, String filePath) {
+ List<String>? _restoreUriParts(String? root, String filePath) {
path.Context context = _workspace.provider.pathContext;
if (root != null && context.isWithin(root, filePath)) {
String relative = context.relative(filePath, from: root);
@@ -349,7 +358,7 @@
/// The absolute path to the optional read only workspace root, in the
/// `READONLY` folder if a git-based workspace, or `null`.
- final String readonly;
+ final String? readonly;
/// The absolute paths to all `bazel-bin` folders.
///
@@ -382,7 +391,10 @@
UriResolver get packageUriResolver => BazelPackageUriResolver(this);
@override
- SourceFactory createSourceFactory(DartSdk sdk, SummaryDataStore summaryData) {
+ SourceFactory createSourceFactory(
+ DartSdk? sdk,
+ SummaryDataStore? summaryData,
+ ) {
List<UriResolver> resolvers = <UriResolver>[];
if (sdk != null) {
resolvers.add(DartUriResolver(sdk));
@@ -400,7 +412,7 @@
/// then into the workspace root. The file in the workspace root is returned
/// even if it does not exist. Return `null` if the given [absolutePath] is
/// not in the workspace [root].
- File findFile(String absolutePath) {
+ File? findFile(String absolutePath) {
path.Context context = provider.pathContext;
try {
String relative = context.relative(absolutePath, from: root);
@@ -408,10 +420,8 @@
return null;
}
// First check genfiles and bin directories
- var generatedCandidates = <String>[
- if (genfiles != null) genfiles,
- ...?binPaths
- ].map((prefix) => context.join(prefix, relative));
+ var generatedCandidates = <String>[genfiles, ...binPaths]
+ .map((prefix) => context.join(prefix, relative));
for (var path in generatedCandidates) {
File file = provider.getFile(path);
if (file.exists) {
@@ -427,7 +437,7 @@
}
// READONLY
if (readonly != null) {
- File file = provider.getFile(context.join(readonly, relative));
+ File file = provider.getFile(context.join(readonly!, relative));
if (file.exists) {
return file;
}
@@ -444,7 +454,7 @@
}
@override
- WorkspacePackage findPackageFor(String filePath) {
+ BazelWorkspacePackage? findPackageFor(String filePath) {
path.Context context = provider.pathContext;
var directoryPath = context.dirname(filePath);
@@ -469,22 +479,25 @@
}
// Return a Package rooted at [folder].
- BazelWorkspacePackage packageRootedHere() {
- List<String> uriParts = (packageUriResolver as BazelPackageUriResolver)
+ BazelWorkspacePackage? packageRootedHere() {
+ var uriParts = (packageUriResolver as BazelPackageUriResolver)
._restoreUriParts(root, '${folder.path}/lib/__fake__.dart');
- String packageName;
+ String? packageName;
if (uriParts != null && uriParts.isNotEmpty) {
packageName = uriParts[0];
}
// TODO(srawlins): If [packageName] could not be derived from [uriParts],
// I imagine this should throw.
+ if (packageName == null) {
+ return null;
+ }
var package = BazelWorkspacePackage(packageName, folder.path, this);
_directoryToPackage[directoryPath] = package;
return package;
}
while (true) {
- Folder parent = folder.parent;
+ var parent = folder.parent;
if (parent == null) {
return null;
}
@@ -530,10 +543,10 @@
}
}
- String _relativeToRoot(String p) {
+ String? _relativeToRoot(String p) {
path.Context context = provider.pathContext;
// genfiles
- if (genfiles != null && context.isWithin(genfiles, p)) {
+ if (context.isWithin(genfiles, p)) {
return context.relative(p, from: genfiles);
}
// bin
@@ -544,7 +557,7 @@
}
// READONLY
if (readonly != null) {
- if (context.isWithin(readonly, p)) {
+ if (context.isWithin(readonly!, p)) {
return context.relative(p, from: readonly);
}
}
@@ -570,15 +583,15 @@
/// BazelWorkspace rooted at _f_ is returned.
/// * If _f_ has a child file named "WORKSPACE", then a BazelWorkspace rooted
/// at _f_ is returned.
- static BazelWorkspace find(ResourceProvider provider, String filePath) {
+ static BazelWorkspace? find(ResourceProvider provider, String filePath) {
Resource resource = provider.getResource(filePath);
if (resource is File && resource.parent != null) {
- filePath = resource.parent.path;
+ filePath = resource.parent!.path;
}
path.Context context = provider.pathContext;
Folder folder = provider.getFolder(filePath);
while (true) {
- Folder parent = folder.parent;
+ var parent = folder.parent;
if (parent == null) {
return null;
}
@@ -590,7 +603,7 @@
String readonlyRoot =
context.join(readonlyFolder.path, folder.shortName);
if (provider.getFolder(readonlyRoot).exists) {
- List<String> binPaths = _findBinFolderPaths(folder);
+ var binPaths = _findBinFolderPaths(folder);
String symlinkPrefix =
_findSymlinkPrefix(provider, root, binPaths: binPaths);
binPaths ??= [context.join(root, '$symlinkPrefix-bin')];
@@ -602,7 +615,7 @@
if (_firstExistingFolder(parent, ['blaze-out', 'bazel-out']) != null) {
// Found the "out" folder; must be a bazel workspace.
String root = parent.path;
- List<String> binPaths = _findBinFolderPaths(parent);
+ var binPaths = _findBinFolderPaths(parent);
String symlinkPrefix =
_findSymlinkPrefix(provider, root, binPaths: binPaths);
binPaths ??= [context.join(root, '$symlinkPrefix-bin')];
@@ -613,7 +626,7 @@
// Found the WORKSPACE file, must be a non-git workspace.
if (folder.getChildAssumingFile(_WORKSPACE).exists) {
String root = folder.path;
- List<String> binPaths = _findBinFolderPaths(folder);
+ var binPaths = _findBinFolderPaths(folder);
String symlinkPrefix =
_findSymlinkPrefix(provider, root, binPaths: binPaths);
binPaths ??= [context.join(root, '$symlinkPrefix-bin')];
@@ -636,8 +649,8 @@
/// for folders named "bin".
///
/// If no "bin" folder is found in any of those locations, `null` is returned.
- static List<String> _findBinFolderPaths(Folder root) {
- Folder out = _firstExistingFolder(root, ['blaze-out', 'bazel-out']);
+ static List<String>? _findBinFolderPaths(Folder root) {
+ var out = _firstExistingFolder(root, ['blaze-out', 'bazel-out']);
if (out == null) {
return null;
}
@@ -662,7 +675,7 @@
/// assumption according to [defaultSymlinkPrefix] if neither of the folders
/// exists.
static String _findSymlinkPrefix(ResourceProvider provider, String root,
- {List<String> binPaths}) {
+ {List<String>? binPaths}) {
path.Context context = provider.pathContext;
if (binPaths != null && binPaths.isNotEmpty) {
return context.basename(binPaths.first).startsWith('bazel')
@@ -680,9 +693,9 @@
}
/// Return the first folder within [root], chosen from [names], which exists.
- static Folder _firstExistingFolder(Folder root, List<String> names) => names
+ static Folder? _firstExistingFolder(Folder root, List<String> names) => names
.map((name) => root.getChildAssumingFolder(name))
- .firstWhere((folder) => folder.exists, orElse: () => null);
+ .firstWhereOrNull((folder) => folder.exists);
}
/// Information about a package defined in a BazelWorkspace.
@@ -701,20 +714,20 @@
final BazelWorkspace workspace;
bool _buildFileReady = false;
- List<String> _enabledExperiments;
- Version _languageVersion;
+ List<String>? _enabledExperiments;
+ Version? _languageVersion;
BazelWorkspacePackage(String packageName, this.root, this.workspace)
: _uriPrefix = 'package:$packageName/';
@override
- List<String> get enabledExperiments {
+ List<String>? get enabledExperiments {
_readBuildFile();
return _enabledExperiments;
}
@override
- Version get languageVersion {
+ Version? get languageVersion {
_readBuildFile();
return _languageVersion;
}
@@ -724,8 +737,7 @@
if (source.uri.isScheme('package')) {
return source.uri.toString().startsWith(_uriPrefix);
}
- String filePath = source.fullName;
- if (filePath == null) return false;
+ var filePath = source.fullName;
if (workspace.findFile(filePath) == null) {
return false;
}
@@ -736,7 +748,7 @@
// Just because [filePath] is within [root] does not mean it is in this
// package; it could be in a "subpackage." Must go through the work of
// learning exactly which package [filePath] is contained in.
- return workspace.findPackageFor(filePath).root == root;
+ return workspace.findPackageFor(filePath)!.root == root;
}
@override
diff --git a/pkg/analyzer/lib/src/workspace/gn.dart b/pkg/analyzer/lib/src/workspace/gn.dart
index 3ceaea6..070c7cd 100644
--- a/pkg/analyzer/lib/src/workspace/gn.dart
+++ b/pkg/analyzer/lib/src/workspace/gn.dart
@@ -13,6 +13,7 @@
import 'package:analyzer/src/source/package_map_resolver.dart';
import 'package:analyzer/src/summary/package_bundle_reader.dart';
import 'package:analyzer/src/workspace/workspace.dart';
+import 'package:collection/collection.dart';
import 'package:meta/meta.dart';
import 'package:path/path.dart' as path;
@@ -47,7 +48,10 @@
PackageMapUriResolver(provider, _packageMap);
@override
- SourceFactory createSourceFactory(DartSdk sdk, SummaryDataStore summaryData) {
+ SourceFactory createSourceFactory(
+ DartSdk? sdk,
+ SummaryDataStore? summaryData,
+ ) {
if (summaryData != null) {
throw UnsupportedError(
'Summary files are not supported in a GN workspace.');
@@ -64,7 +68,7 @@
/// Return the file with the given [absolutePath].
///
/// Return `null` if the given [absolutePath] is not in the workspace [root].
- File findFile(String absolutePath) {
+ File? findFile(String absolutePath) {
try {
File writableFile = provider.getFile(absolutePath);
if (writableFile.exists) {
@@ -75,11 +79,11 @@
}
@override
- WorkspacePackage findPackageFor(String path) {
+ WorkspacePackage? findPackageFor(String path) {
Folder folder = provider.getFolder(provider.pathContext.dirname(path));
while (true) {
- Folder parent = folder.parent;
+ var parent = folder.parent;
if (parent == null) {
return null;
}
@@ -103,14 +107,14 @@
/// Return `null` if a workspace could not be found. For a workspace to be
/// found, both a `.jiri_root` file must be found, and at least one "packages"
/// file must be found in [filePath]'s output directory.
- static GnWorkspace find(ResourceProvider provider, String filePath) {
+ static GnWorkspace? find(ResourceProvider provider, String filePath) {
Resource resource = provider.getResource(filePath);
if (resource is File) {
- filePath = resource.parent.path;
+ filePath = resource.parent!.path;
}
Folder folder = provider.getFolder(filePath);
while (true) {
- Folder parent = folder.parent;
+ var parent = folder.parent;
if (parent == null) {
return null;
}
@@ -159,7 +163,7 @@
) {
path.Context pathContext = provider.pathContext;
String sourceDirectory = pathContext.relative(filePath, from: root);
- Folder outDirectory = _getOutDirectory(root, provider);
+ var outDirectory = _getOutDirectory(root, provider);
if (outDirectory == null) {
return const <File>[];
}
@@ -180,7 +184,7 @@
///
/// First attempts to read a config file at the root of the source tree. If
/// that file cannot be found, looks for standard output directory locations.
- static Folder _getOutDirectory(String root, ResourceProvider provider) {
+ static Folder? _getOutDirectory(String root, ResourceProvider provider) {
const String fuchsiaDirConfigFile = '.fx-build-dir';
path.Context pathContext = provider.pathContext;
@@ -199,12 +203,14 @@
if (!outDirectory.exists) {
return null;
}
- return outDirectory.getChildren().whereType<Folder>().firstWhere((folder) {
- String baseName = pathContext.basename(folder.path);
- // Taking a best guess to identify a build dir. This is clearly a fallback
- // to the config-based method.
- return baseName.startsWith('debug') || baseName.startsWith('release');
- }, orElse: () => null);
+ return outDirectory.getChildren().whereType<Folder>().firstWhereOrNull(
+ (folder) {
+ String baseName = pathContext.basename(folder.path);
+ // Taking a best guess to identify a build dir. This is clearly a fallback
+ // to the config-based method.
+ return baseName.startsWith('debug') || baseName.startsWith('release');
+ },
+ );
}
}
@@ -224,7 +230,7 @@
@override
bool contains(Source source) {
- String filePath = filePathFromSource(source);
+ var filePath = filePathFromSource(source);
if (filePath == null) return false;
if (workspace.findFile(filePath) == null) {
return false;
@@ -236,7 +242,7 @@
// Just because [filePath] is within [root] does not mean it is in this
// package; it could be in a "subpackage." Must go through the work of
// learning exactly which package [filePath] is contained in.
- return workspace.findPackageFor(filePath).root == root;
+ return workspace.findPackageFor(filePath)!.root == root;
}
@override
diff --git a/pkg/analyzer/lib/src/workspace/package_build.dart b/pkg/analyzer/lib/src/workspace/package_build.dart
index 17ac171..df4e821 100644
--- a/pkg/analyzer/lib/src/workspace/package_build.dart
+++ b/pkg/analyzer/lib/src/workspace/package_build.dart
@@ -28,7 +28,7 @@
super(workspace.provider);
@override
- Source resolveAbsolute(Uri uri, [Uri actualUri]) {
+ Source? resolveAbsolute(Uri uri, [Uri? actualUri]) {
if (!ResourceUriResolver.isFileUri(uri)) {
return null;
}
@@ -37,7 +37,7 @@
if (resource is! File) {
return null;
}
- File file = workspace.findFile(filePath);
+ var file = workspace.findFile(filePath);
if (file != null) {
return file.createSource(actualUri ?? uri);
}
@@ -60,13 +60,13 @@
Map<String, List<Folder>> get packageMap => _workspace._packageMap;
@override
- Source resolveAbsolute(Uri _ignore, [Uri uri]) {
+ Source? resolveAbsolute(Uri _ignore, [Uri? uri]) {
uri ??= _ignore;
if (uri.scheme != 'package') {
return null;
}
- Source basicResolverSource = _normalUriResolver.resolveAbsolute(uri);
+ var basicResolverSource = _normalUriResolver.resolveAbsolute(uri);
if (basicResolverSource != null && basicResolverSource.exists()) {
return basicResolverSource;
}
@@ -83,7 +83,7 @@
String fileUriPart = uriPath.substring(slash + 1);
String filePath = fileUriPart.replaceAll('/', _context.separator);
- File file = _workspace.builtFile(
+ var file = _workspace.builtFile(
_workspace.builtPackageSourcePath(filePath), packageName);
if (file != null && file.exists) {
return file.createSource(uri);
@@ -92,11 +92,11 @@
}
@override
- Uri restoreAbsolute(Source source) {
+ Uri? restoreAbsolute(Source source) {
String filePath = source.fullName;
if (_context.isWithin(_workspace.root, filePath)) {
- List<String> uriParts = _restoreUriParts(filePath);
+ var uriParts = _restoreUriParts(filePath);
if (uriParts != null) {
return Uri.parse('package:${uriParts[0]}/${uriParts[1]}');
}
@@ -105,7 +105,7 @@
return _normalUriResolver.restoreAbsolute(source);
}
- List<String> _restoreUriParts(String filePath) {
+ List<String>? _restoreUriParts(String filePath) {
String relative = _context.relative(filePath, from: _workspace.root);
List<String> components = _context.split(relative);
if (components.length > 5 &&
@@ -167,7 +167,7 @@
/// The singular package in this workspace.
///
/// Each "package:build" workspace is itself one package.
- PackageBuildWorkspacePackage _theOnlyPackage;
+ late final PackageBuildWorkspacePackage _theOnlyPackage;
PackageBuildWorkspace._(
this.provider,
@@ -176,7 +176,9 @@
this.projectPackageName,
this.generatedRootPath,
this.generatedThisPath,
- );
+ ) {
+ _theOnlyPackage = PackageBuildWorkspacePackage(root, this);
+ }
@override
UriResolver get packageUriResolver => PackageBuildPackageUriResolver(
@@ -189,7 +191,7 @@
/// To get a [builtPath] for a package source file to use in this method,
/// use [builtPackageSourcePath]. For `bin/`, `web/`, etc, it must be relative
/// to the project root.
- File builtFile(String builtPath, String packageName) {
+ File? builtFile(String builtPath, String packageName) {
if (!_packageMap.containsKey(packageName)) {
return null;
}
@@ -211,7 +213,10 @@
}
@override
- SourceFactory createSourceFactory(DartSdk sdk, SummaryDataStore summaryData) {
+ SourceFactory createSourceFactory(
+ DartSdk? sdk,
+ SummaryDataStore? summaryData,
+ ) {
if (summaryData != null) {
throw UnsupportedError(
'Summary files are not supported in a package:build workspace.');
@@ -231,14 +236,14 @@
///
/// The file in the workspace [root] is returned even if it does not exist.
/// Return `null` if the given [filePath] is not in the workspace root.
- File findFile(String filePath) {
+ File? findFile(String filePath) {
path.Context context = provider.pathContext;
assert(context.isAbsolute(filePath), 'Not an absolute path: $filePath');
try {
final String relativePath = context.relative(filePath, from: root);
- final File file = builtFile(relativePath, projectPackageName);
+ final file = builtFile(relativePath, projectPackageName);
- if (file.exists) {
+ if (file!.exists) {
return file;
}
@@ -249,7 +254,7 @@
}
@override
- WorkspacePackage findPackageFor(String path) {
+ PackageBuildWorkspacePackage? findPackageFor(String path) {
var pathContext = provider.pathContext;
// Must be in this workspace.
@@ -264,17 +269,17 @@
}
}
- return _theOnlyPackage ??= PackageBuildWorkspacePackage(root, this);
+ return _theOnlyPackage;
}
/// Find the package:build workspace that contains the given [filePath].
///
/// Return `null` if the filePath is not in a package:build workspace.
- static PackageBuildWorkspace find(ResourceProvider provider,
+ static PackageBuildWorkspace? find(ResourceProvider provider,
Map<String, List<Folder>> packageMap, String filePath) {
Folder folder = provider.getFolder(filePath);
while (true) {
- Folder parent = folder.parent;
+ var parent = folder.parent;
if (parent == null) {
return null;
}
diff --git a/pkg/analyzer/lib/src/workspace/pub.dart b/pkg/analyzer/lib/src/workspace/pub.dart
index 1fed22e..ce2351c 100644
--- a/pkg/analyzer/lib/src/workspace/pub.dart
+++ b/pkg/analyzer/lib/src/workspace/pub.dart
@@ -17,7 +17,7 @@
/// The singular package in this workspace.
///
/// Each Pub workspace is itself one package.
- PubWorkspacePackage _theOnlyPackage;
+ late final PubWorkspacePackage _theOnlyPackage;
/// The associated pubspec file.
final File _pubspecFile;
@@ -27,13 +27,14 @@
Map<String, List<Folder>> packageMap,
String root,
this._pubspecFile,
- ) : super(provider, packageMap, root);
+ ) : super(provider, packageMap, root) {
+ _theOnlyPackage = PubWorkspacePackage(root, this);
+ }
@override
- WorkspacePackage findPackageFor(String filePath) {
+ WorkspacePackage? findPackageFor(String filePath) {
final Folder folder = provider.getFolder(filePath);
if (provider.pathContext.isWithin(root, folder.path)) {
- _theOnlyPackage ??= PubWorkspacePackage(root, this);
return _theOnlyPackage;
} else {
return null;
@@ -41,18 +42,18 @@
}
/// Find the pub workspace that contains the given [path].
- static PubWorkspace find(
+ static PubWorkspace? find(
ResourceProvider provider,
Map<String, List<Folder>> packageMap,
String filePath,
) {
Resource resource = provider.getResource(filePath);
if (resource is File) {
- filePath = resource.parent.path;
+ filePath = resource.parent!.path;
}
Folder folder = provider.getFolder(filePath);
while (true) {
- Folder parent = folder.parent;
+ var parent = folder.parent;
if (parent == null) {
return null;
}
@@ -79,7 +80,7 @@
@override
final String root;
- Pubspec _pubspec;
+ Pubspec? _pubspec;
/// A flag to indicate if we've tried to parse the pubspec.
bool _parsedPubspec = false;
@@ -91,7 +92,7 @@
/// Get the associated parsed [Pubspec], or `null` if there was an error in
/// reading or parsing.
- Pubspec get pubspec {
+ Pubspec? get pubspec {
if (!_parsedPubspec) {
_parsedPubspec = true;
try {
@@ -106,7 +107,7 @@
@override
bool contains(Source source) {
- String filePath = filePathFromSource(source);
+ var filePath = filePathFromSource(source);
if (filePath == null) return false;
// There is a 1-1 relationship between [PubWorkspace]s and
// [PubWorkspacePackage]s. If a file is in a package's workspace, then it
diff --git a/pkg/analyzer/lib/src/workspace/simple.dart b/pkg/analyzer/lib/src/workspace/simple.dart
index 5933878..4f9cc06 100644
--- a/pkg/analyzer/lib/src/workspace/simple.dart
+++ b/pkg/analyzer/lib/src/workspace/simple.dart
@@ -32,7 +32,10 @@
PackageMapUriResolver(provider, packageMap);
@override
- SourceFactory createSourceFactory(DartSdk sdk, SummaryDataStore summaryData) {
+ SourceFactory createSourceFactory(
+ DartSdk? sdk,
+ SummaryDataStore? summaryData,
+ ) {
if (summaryData != null) {
throw UnsupportedError(
'Summary files are not supported in a Pub workspace.');
diff --git a/pkg/analyzer/lib/src/workspace/workspace.dart b/pkg/analyzer/lib/src/workspace/workspace.dart
index 777f116..4b86e1d 100644
--- a/pkg/analyzer/lib/src/workspace/workspace.dart
+++ b/pkg/analyzer/lib/src/workspace/workspace.dart
@@ -23,14 +23,15 @@
/// Create the source factory that should be used to resolve Uris to
/// [Source]s. The [sdk] may be `null`. The [summaryData] can also be `null`.
- SourceFactory createSourceFactory(DartSdk sdk, SummaryDataStore summaryData);
+ SourceFactory createSourceFactory(
+ DartSdk? sdk, SummaryDataStore? summaryData);
/// Find the [WorkspacePackage] where the library at [path] is defined.
///
/// Separate from [Packages] or [packageMap], this method is designed to find
/// the package, by its root, in which a library at an arbitrary path is
/// defined.
- WorkspacePackage findPackageFor(String path);
+ WorkspacePackage? findPackageFor(String path);
}
/// Abstract superclass of classes that provide information about a package
@@ -43,7 +44,7 @@
/// Return the experiments enabled for all files in the package.
///
/// Return `null` if this package does not have enabled experiments.
- List<String> get enabledExperiments => null;
+ List<String>? get enabledExperiments => null;
/// Return the language version override for all files in the package.
///
@@ -52,7 +53,7 @@
/// to disable Null Safety for packages that are not migrated yet.
///
/// Return `null` if this package does not have a language version override.
- Version get languageVersion => null;
+ Version? get languageVersion => null;
String get root;
@@ -65,7 +66,7 @@
/// If [source]'s URI scheme is package, it's fullName might be unusable (for
/// example, the case of a [InSummarySource]). In this case, use
/// [workspace]'s package URI resolver to fetch the file path.
- String filePathFromSource(Source source) {
+ String? filePathFromSource(Source source) {
if (source.uri.scheme == 'package') {
return workspace.packageUriResolver.resolveAbsolute(source.uri)?.fullName;
} else {
diff --git a/pkg/analyzer/pubspec.yaml b/pkg/analyzer/pubspec.yaml
index 19837d5..bca7fa6 100644
--- a/pkg/analyzer/pubspec.yaml
+++ b/pkg/analyzer/pubspec.yaml
@@ -1,33 +1,33 @@
name: analyzer
-version: 0.41.2-dev
+version: 0.42.0
description: This package provides a library that performs static analysis of Dart code.
homepage: https://github.com/dart-lang/sdk/tree/master/pkg/analyzer
environment:
- sdk: '>=2.9.0 <3.0.0'
+ sdk: '>=2.12.0-0 <3.0.0'
dependencies:
_fe_analyzer_shared: ^14.0.0
- args: ^1.0.0
- cli_util: '>=0.1.4 <0.3.0'
+ args: ^2.0.0-nullsafety.0
+ cli_util: ^0.3.0-nullsafety.0
collection: ^1.15.0-nullsafety.5
- convert: ^2.0.0
- crypto: '>=2.0.0 <4.0.0'
- glob: '>=1.0.3 <3.0.0'
- meta: ^1.2.3
+ convert: ^3.0.0-nullsafety.0
+ crypto: ^3.0.0-nullsafety.0
+ glob: ^2.0.0-nullsafety.0
+ meta: ^1.3.0-nullsafety.6
package_config: ^1.0.0
- path: ^1.0.0
- pub_semver: ^1.4.2
- source_span: ^1.2.0
+ path: ^1.8.0-nullsafety.3
+ pub_semver: ^2.0.0-nullsafety.0
+ source_span: ^1.8.0-nullsafety.4
watcher: ^0.9.6
- yaml: ">=2.1.2 <4.0.0"
+ yaml: ^3.0.0-nullsafety.0
dev_dependencies:
analyzer_utilities:
path: ../analyzer_utilities
- async: ^2.0.0
- linter: any
- matcher: ^0.12.3
- pedantic: ^1.9.0
- test: ^1.0.0
- test_api: ^0.2.6
- test_reflective_loader: ^0.1.8
+ async: ^2.5.0-nullsafety.3
+# linter: any
+ matcher: ^0.12.10-nullsafety.3
+ pedantic: ^1.10.0-nullsafety.3
+ test: ^1.16.0-nullsafety.13
+ test_api: ^0.2.19-nullsafety.6
+ test_reflective_loader: ^0.2.0-nullsafety.0
diff --git a/pkg/analyzer/test/dart/analysis/from_environment_evaluator_test.dart b/pkg/analyzer/test/dart/analysis/from_environment_evaluator_test.dart
index 47d6dcb..f73cbf8 100644
--- a/pkg/analyzer/test/dart/analysis/from_environment_evaluator_test.dart
+++ b/pkg/analyzer/test/dart/analysis/from_environment_evaluator_test.dart
@@ -22,8 +22,8 @@
class FromEnvironmentEvaluatorTest {
static const String _defaultValue = 'defaultValue';
- /*late final*/ TypeProvider typeProvider;
- /*late final*/ TypeSystemImpl typeSystem;
+ late final TypeProvider typeProvider;
+ late final TypeSystemImpl typeSystem;
DartObjectImpl get _boolValueFalse {
return DartObjectImpl(
@@ -217,7 +217,7 @@
return variables.getBool2(
name,
namedValues,
- typeProvider.boolElement.getNamedConstructor('fromEnvironment'),
+ typeProvider.boolElement.getNamedConstructor('fromEnvironment')!,
);
}
@@ -229,7 +229,7 @@
return variables.getInt2(
name,
namedValues,
- typeProvider.intElement.getNamedConstructor('fromEnvironment'),
+ typeProvider.intElement.getNamedConstructor('fromEnvironment')!,
);
}
@@ -241,7 +241,7 @@
return variables.getString2(
name,
namedValues,
- typeProvider.stringElement.getNamedConstructor('fromEnvironment'),
+ typeProvider.stringElement.getNamedConstructor('fromEnvironment')!,
);
}
diff --git a/pkg/analyzer/test/dart/analysis/utilities_test.dart b/pkg/analyzer/test/dart/analysis/utilities_test.dart
index da03e22..2ac1bac 100644
--- a/pkg/analyzer/test/dart/analysis/utilities_test.dart
+++ b/pkg/analyzer/test/dart/analysis/utilities_test.dart
@@ -60,7 +60,7 @@
String content = '''
void main() => print('Hello, world!')
''';
- /*late*/ String expectedPath;
+ late String expectedPath;
ParseStringResult result =
_withMemoryFile(content, (resourceProvider, path) {
expectedPath = path;
@@ -221,7 +221,7 @@
featureSet: FeatureSet.latestLanguageVersion(),
);
- var languageVersion = result.unit.languageVersionToken;
+ var languageVersion = result.unit.languageVersionToken!;
expect(languageVersion.major, 2);
expect(languageVersion.minor, 7);
}
diff --git a/pkg/analyzer/test/dart/ast/ast_test.dart b/pkg/analyzer/test/dart/ast/ast_test.dart
index 913ea87..d5a0cf9 100644
--- a/pkg/analyzer/test/dart/ast/ast_test.dart
+++ b/pkg/analyzer/test/dart/ast/ast_test.dart
@@ -64,7 +64,7 @@
expect(clazz.getConstructor(null), same(defaultConstructor));
expect(clazz.getConstructor("a"), same(aConstructor));
expect(clazz.getConstructor("b"), same(bConstructor));
- expect(clazz.getConstructor("noSuchConstructor"), same(null));
+ expect(clazz.getConstructor("noSuchConstructor"), isNull);
}
void test_getField() {
@@ -79,7 +79,7 @@
expect(clazz.getField("a"), same(aVar));
expect(clazz.getField("b"), same(bVar));
expect(clazz.getField("c"), same(cVar));
- expect(clazz.getField("noSuchField"), same(null));
+ expect(clazz.getField("noSuchField"), isNull);
}
void test_getMethod() {
@@ -101,7 +101,7 @@
null, "Test", null, null, null, null, [aMethod, bMethod]);
expect(clazz.getMethod("a"), same(aMethod));
expect(clazz.getMethod("b"), same(bMethod));
- expect(clazz.getMethod("noSuchMethod"), same(null));
+ expect(clazz.getMethod("noSuchMethod"), isNull);
}
void test_isAbstract() {
@@ -121,12 +121,23 @@
class ClassTypeAliasTest extends ParserTestCase {
void test_isAbstract() {
expect(
- AstTestFactory.classTypeAlias("A", null, null, null, null, null)
+ AstTestFactory.classTypeAlias(
+ "A",
+ null,
+ null,
+ AstTestFactory.typeName4('B'),
+ AstTestFactory.withClause([AstTestFactory.typeName4('M')]),
+ null)
.isAbstract,
isFalse);
expect(
AstTestFactory.classTypeAlias(
- "B", null, Keyword.ABSTRACT, null, null, null)
+ "B",
+ null,
+ Keyword.ABSTRACT,
+ AstTestFactory.typeName4('A'),
+ AstTestFactory.withClause([AstTestFactory.typeName4('M')]),
+ null)
.isAbstract,
isTrue);
}
@@ -142,12 +153,12 @@
Keyword.FACTORY,
AstTestFactory.identifier3('int'),
null,
- null,
- null,
- null);
+ AstTestFactory.formalParameterList(),
+ [],
+ AstTestFactory.emptyFunctionBody());
declaration.externalKeyword = externalKeyword;
- declaration.constKeyword.offset = 8;
- Token factoryKeyword = declaration.factoryKeyword;
+ declaration.constKeyword!.offset = 8;
+ Token factoryKeyword = declaration.factoryKeyword!;
factoryKeyword.offset = 0;
expect(declaration.firstTokenAfterCommentAndMetadata, factoryKeyword);
}
@@ -160,12 +171,12 @@
Keyword.FACTORY,
AstTestFactory.identifier3('int'),
null,
- null,
- null,
- null);
+ AstTestFactory.formalParameterList(),
+ [],
+ AstTestFactory.emptyFunctionBody());
declaration.externalKeyword = token;
- declaration.constKeyword.offset = 9;
- declaration.factoryKeyword.offset = 15;
+ declaration.constKeyword!.offset = 9;
+ declaration.factoryKeyword!.offset = 15;
expect(declaration.firstTokenAfterCommentAndMetadata, token);
}
@@ -175,9 +186,9 @@
null,
AstTestFactory.identifier3('int'),
null,
- null,
- null,
- null);
+ AstTestFactory.formalParameterList(),
+ [],
+ AstTestFactory.emptyFunctionBody());
expect(declaration.firstTokenAfterCommentAndMetadata,
declaration.constKeyword);
}
@@ -185,7 +196,13 @@
void test_firstTokenAfterCommentAndMetadata_externalOnly() {
Token externalKeyword = TokenFactory.tokenFromKeyword(Keyword.EXTERNAL);
ConstructorDeclaration declaration = AstTestFactory.constructorDeclaration2(
- null, null, AstTestFactory.identifier3('int'), null, null, null, null);
+ null,
+ null,
+ AstTestFactory.identifier3('int'),
+ null,
+ AstTestFactory.formalParameterList(),
+ [],
+ AstTestFactory.emptyFunctionBody());
declaration.externalKeyword = externalKeyword;
expect(declaration.firstTokenAfterCommentAndMetadata, externalKeyword);
}
@@ -196,9 +213,9 @@
Keyword.FACTORY,
AstTestFactory.identifier3('int'),
null,
- null,
- null,
- null);
+ AstTestFactory.formalParameterList(),
+ [],
+ AstTestFactory.emptyFunctionBody());
expect(declaration.firstTokenAfterCommentAndMetadata,
declaration.factoryKeyword);
}
@@ -215,7 +232,7 @@
void test_endToken_parameters() {
FieldFormalParameter parameter = AstTestFactory.fieldFormalParameter(
null, null, 'field', AstTestFactory.formalParameterList([]));
- expect(parameter.endToken, parameter.parameters.endToken);
+ expect(parameter.endToken, parameter.parameters!.endToken);
}
}
@@ -584,36 +601,44 @@
@reflectiveTest
class MethodDeclarationTest {
void test_firstTokenAfterCommentAndMetadata_external() {
- MethodDeclaration declaration =
- AstTestFactory.methodDeclaration4(external: true, name: 'm');
+ MethodDeclaration declaration = AstTestFactory.methodDeclaration4(
+ external: true, name: 'm', body: AstTestFactory.emptyFunctionBody());
expect(declaration.firstTokenAfterCommentAndMetadata,
declaration.externalKeyword);
}
void test_firstTokenAfterCommentAndMetadata_external_getter() {
MethodDeclaration declaration = AstTestFactory.methodDeclaration4(
- external: true, property: Keyword.GET, name: 'm');
+ external: true,
+ property: Keyword.GET,
+ name: 'm',
+ body: AstTestFactory.emptyFunctionBody());
expect(declaration.firstTokenAfterCommentAndMetadata,
declaration.externalKeyword);
}
void test_firstTokenAfterCommentAndMetadata_external_operator() {
MethodDeclaration declaration = AstTestFactory.methodDeclaration4(
- external: true, operator: true, name: 'm');
+ external: true,
+ operator: true,
+ name: 'm',
+ body: AstTestFactory.emptyFunctionBody());
expect(declaration.firstTokenAfterCommentAndMetadata,
declaration.externalKeyword);
}
void test_firstTokenAfterCommentAndMetadata_getter() {
- MethodDeclaration declaration =
- AstTestFactory.methodDeclaration4(property: Keyword.GET, name: 'm');
+ MethodDeclaration declaration = AstTestFactory.methodDeclaration4(
+ property: Keyword.GET,
+ name: 'm',
+ body: AstTestFactory.emptyFunctionBody());
expect(declaration.firstTokenAfterCommentAndMetadata,
declaration.propertyKeyword);
}
void test_firstTokenAfterCommentAndMetadata_operator() {
- MethodDeclaration declaration =
- AstTestFactory.methodDeclaration4(operator: true, name: 'm');
+ MethodDeclaration declaration = AstTestFactory.methodDeclaration4(
+ operator: true, name: 'm', body: AstTestFactory.emptyFunctionBody());
expect(declaration.firstTokenAfterCommentAndMetadata,
declaration.operatorKeyword);
}
@@ -823,7 +848,6 @@
expect(list.indexOf(secondNode), 1);
expect(list.indexOf(thirdNode), 2);
expect(list.indexOf(fourthNode), -1);
- expect(list.indexOf(null), -1);
}
void test_remove() {
@@ -925,7 +949,7 @@
final featureSet = FeatureSet.forTesting(sdkVersion: '2.2.2');
- CompilationUnit _unit;
+ CompilationUnit? _unit;
CompilationUnit get unit {
if (_unit == null) {
@@ -945,7 +969,7 @@
featureSet: featureSet,
).parseCompilationUnit(tokens);
}
- return _unit;
+ return _unit!;
}
Token findToken(String lexeme) {
@@ -954,20 +978,20 @@
if (token.lexeme == lexeme) {
return token;
}
- token = token.next;
+ token = token.next!;
}
fail('Failed to find $lexeme');
}
void test_findPrevious_basic_class() {
var clazz = unit.declarations[0] as ClassDeclaration;
- expect(clazz.findPrevious(findToken('A')).lexeme, 'class');
+ expect(clazz.findPrevious(findToken('A'))!.lexeme, 'class');
}
void test_findPrevious_basic_method() {
var clazz = unit.declarations[0] as ClassDeclaration;
var method = clazz.members[0] as MethodDeclaration;
- expect(method.findPrevious(findToken('foo')).lexeme, 'B');
+ expect(method.findPrevious(findToken('foo'))!.lexeme, 'B');
}
void test_findPrevious_basic_statement() {
@@ -975,8 +999,8 @@
var method = clazz.members[0] as MethodDeclaration;
var body = method.body as BlockFunctionBody;
Statement statement = body.block.statements[0];
- expect(statement.findPrevious(findToken('bar')).lexeme, 'return');
- expect(statement.findPrevious(findToken(';')).lexeme, 'bar');
+ expect(statement.findPrevious(findToken('bar'))!.lexeme, 'return');
+ expect(statement.findPrevious(findToken(';'))!.lexeme, 'bar');
}
void test_findPrevious_missing() {
@@ -995,13 +1019,12 @@
Token missing = scanner.tokenize();
expect(statement.findPrevious(missing), null);
- expect(statement.findPrevious(null), null);
}
void test_findPrevious_parent_method() {
var clazz = unit.declarations[0] as ClassDeclaration;
var method = clazz.members[0] as MethodDeclaration;
- expect(method.findPrevious(findToken('B')).lexeme, '{');
+ expect(method.findPrevious(findToken('B'))!.lexeme, '{');
}
void test_findPrevious_parent_statement() {
@@ -1009,18 +1032,18 @@
var method = clazz.members[0] as MethodDeclaration;
var body = method.body as BlockFunctionBody;
Statement statement = body.block.statements[0];
- expect(statement.findPrevious(findToken('return')).lexeme, '{');
+ expect(statement.findPrevious(findToken('return'))!.lexeme, '{');
}
void test_findPrevious_sibling_class() {
CompilationUnitMember declaration = unit.declarations[1];
- expect(declaration.findPrevious(findToken('E')).lexeme, '}');
+ expect(declaration.findPrevious(findToken('E'))!.lexeme, '}');
}
void test_findPrevious_sibling_method() {
var clazz = unit.declarations[0] as ClassDeclaration;
var method = clazz.members[1] as MethodDeclaration;
- expect(method.findPrevious(findToken('D')).lexeme, '}');
+ expect(method.findPrevious(findToken('D'))!.lexeme, '}');
}
}
@@ -1128,8 +1151,7 @@
assignment == _AssignmentKind.COMPOUND_RIGHT ||
assignment == _AssignmentKind.POSTFIX_BANG ||
assignment == _AssignmentKind.PREFIX_NOT ||
- assignment == _AssignmentKind.SIMPLE_RIGHT ||
- assignment == _AssignmentKind.NONE) {
+ assignment == _AssignmentKind.SIMPLE_RIGHT) {
if (identifier.inSetterContext()) {
fail("Expected ${_topMostNode(identifier).toSource()} to be false");
}
@@ -1215,7 +1237,9 @@
} else if (wrapper == _WrapperKind.PROPERTY_RIGHT) {
expression = AstTestFactory.propertyAccess(
AstTestFactory.identifier3("_"), identifier);
- } else if (wrapper == _WrapperKind.NONE) {}
+ } else {
+ throw UnimplementedError();
+ }
break;
}
while (true) {
@@ -1244,7 +1268,9 @@
} else if (assignment == _AssignmentKind.SIMPLE_RIGHT) {
AstTestFactory.assignmentExpression(
AstTestFactory.identifier3("_"), TokenType.EQ, expression);
- } else if (assignment == _AssignmentKind.NONE) {}
+ } else {
+ throw UnimplementedError();
+ }
break;
}
return identifier;
@@ -1257,7 +1283,7 @@
/// @return the root of the AST structure containing the identifier
AstNode _topMostNode(SimpleIdentifier identifier) {
AstNode child = identifier;
- AstNode parent = identifier.parent;
+ var parent = identifier.parent;
while (parent != null) {
child = parent;
parent = parent.parent;
@@ -1478,25 +1504,25 @@
// '
{
var token = TokenFactory.tokenFromString("'X'");
- var node = astFactory.simpleStringLiteral(token, null);
+ var node = astFactory.simpleStringLiteral(token, 'X');
expect(node.isSingleQuoted, isTrue);
}
// '''
{
var token = TokenFactory.tokenFromString("'''X'''");
- var node = astFactory.simpleStringLiteral(token, null);
+ var node = astFactory.simpleStringLiteral(token, 'X');
expect(node.isSingleQuoted, isTrue);
}
// "
{
var token = TokenFactory.tokenFromString('"X"');
- var node = astFactory.simpleStringLiteral(token, null);
+ var node = astFactory.simpleStringLiteral(token, 'X');
expect(node.isSingleQuoted, isFalse);
}
// """
{
var token = TokenFactory.tokenFromString('"""X"""');
- var node = astFactory.simpleStringLiteral(token, null);
+ var node = astFactory.simpleStringLiteral(token, 'X');
expect(node.isSingleQuoted, isFalse);
}
}
@@ -1505,25 +1531,25 @@
// r'
{
var token = TokenFactory.tokenFromString("r'X'");
- var node = astFactory.simpleStringLiteral(token, null);
+ var node = astFactory.simpleStringLiteral(token, 'X');
expect(node.isSingleQuoted, isTrue);
}
// r'''
{
var token = TokenFactory.tokenFromString("r'''X'''");
- var node = astFactory.simpleStringLiteral(token, null);
+ var node = astFactory.simpleStringLiteral(token, 'X');
expect(node.isSingleQuoted, isTrue);
}
// r"
{
var token = TokenFactory.tokenFromString('r"X"');
- var node = astFactory.simpleStringLiteral(token, null);
+ var node = astFactory.simpleStringLiteral(token, 'X');
expect(node.isSingleQuoted, isFalse);
}
// r"""
{
var token = TokenFactory.tokenFromString('r"""X"""');
- var node = astFactory.simpleStringLiteral(token, null);
+ var node = astFactory.simpleStringLiteral(token, 'X');
expect(node.isSingleQuoted, isFalse);
}
}
@@ -1692,8 +1718,7 @@
VariableDeclaration varDecl = AstTestFactory.variableDeclaration("a");
TopLevelVariableDeclaration decl =
AstTestFactory.topLevelVariableDeclaration2(Keyword.VAR, [varDecl]);
- Comment comment =
- astFactory.documentationComment(List<Token>.filled(0, null));
+ Comment comment = astFactory.documentationComment([]);
expect(varDecl.documentationComment, isNull);
decl.documentationComment = comment;
expect(varDecl.documentationComment, isNotNull);
@@ -1702,8 +1727,7 @@
void test_getDocumentationComment_onNode() {
VariableDeclaration decl = AstTestFactory.variableDeclaration("a");
- Comment comment =
- astFactory.documentationComment(List<Token>.filled(0, null));
+ Comment comment = astFactory.documentationComment([]);
decl.documentationComment = comment;
expect(decl.documentationComment, isNotNull);
}
@@ -1733,8 +1757,6 @@
static const _AssignmentKind SIMPLE_RIGHT =
_AssignmentKind('SIMPLE_RIGHT', 9);
- static const _AssignmentKind NONE = _AssignmentKind('NONE', 10);
-
static const List<_AssignmentKind> values = [
BINARY,
COMPOUND_LEFT,
@@ -1746,7 +1768,6 @@
PREFIX_NOT,
SIMPLE_LEFT,
SIMPLE_RIGHT,
- NONE
];
final String name;
@@ -1773,14 +1794,11 @@
static const _WrapperKind PROPERTY_RIGHT = _WrapperKind('PROPERTY_RIGHT', 3);
- static const _WrapperKind NONE = _WrapperKind('NONE', 4);
-
static const List<_WrapperKind> values = [
PREFIXED_LEFT,
PREFIXED_RIGHT,
PROPERTY_LEFT,
PROPERTY_RIGHT,
- NONE
];
final String name;
diff --git a/pkg/analyzer/test/embedder_tests.dart b/pkg/analyzer/test/embedder_tests.dart
index ac01db8..8ad116d 100644
--- a/pkg/analyzer/test/embedder_tests.dart
+++ b/pkg/analyzer/test/embedder_tests.dart
@@ -14,8 +14,8 @@
final String foxPath = '/home/.pub-cache/fox';
final String foxLib = '/home/.pub-cache/fox/lib';
- /*late*/ TestPathTranslator pathTranslator;
- /*late*/ ResourceProvider resourceProvider;
+ late final TestPathTranslator pathTranslator;
+ late final ResourceProvider resourceProvider;
buildResourceProvider() {
MemoryResourceProvider rawProvider = MemoryResourceProvider();
diff --git a/pkg/analyzer/test/error/error_reporter_test.dart b/pkg/analyzer/test/error/error_reporter_test.dart
index 4abbae8..dba624a 100644
--- a/pkg/analyzer/test/error/error_reporter_test.dart
+++ b/pkg/analyzer/test/error/error_reporter_test.dart
@@ -166,7 +166,7 @@
var fa = findNode.topLevelVariableDeclaration('fa');
var fb = findNode.topLevelVariableDeclaration('fb');
- var source = result.unit.declaredElement.source;
+ var source = result.unit!.declaredElement!.source;
var reporter = ErrorReporter(
listener,
source,
@@ -175,7 +175,7 @@
reporter.reportErrorForNode(
CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE,
findNode.simple('x'),
- [fa.variables.type.type, fb.variables.type.type],
+ [fa.variables.type!.type, fb.variables.type!.type],
);
var error = listener.errors[0];
@@ -201,7 +201,7 @@
var ba = findNode.topLevelVariableDeclaration('ba');
var bb = findNode.topLevelVariableDeclaration('bb');
- var source = result.unit.declaredElement.source;
+ var source = result.unit!.declaredElement!.source;
var reporter = ErrorReporter(
listener,
source,
@@ -210,7 +210,7 @@
reporter.reportErrorForNode(
CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE,
findNode.simple('x'),
- [ba.variables.type.type, bb.variables.type.type],
+ [ba.variables.type!.type, bb.variables.type!.type],
);
var error = listener.errors[0];
diff --git a/pkg/analyzer/test/error/error_test.dart b/pkg/analyzer/test/error/error_test.dart
index d2daf51..6e14b89 100644
--- a/pkg/analyzer/test/error/error_test.dart
+++ b/pkg/analyzer/test/error/error_test.dart
@@ -5,7 +5,9 @@
import 'dart:core';
import 'dart:io';
+import 'package:analyzer/dart/analysis/utilities.dart';
import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer/src/dart/analysis/experiments.dart';
import 'package:path/path.dart' as path;
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -21,7 +23,7 @@
});
}
-List<String> _analyzerRootComponents;
+late List<String> _analyzerRootComponents;
@reflectiveTest
class ErrorCodeValuesTest extends ParserTestCase {
@@ -34,7 +36,7 @@
CompilationUnit definingUnit = parseFile(relativeComponents);
for (CompilationUnitMember declaration in definingUnit.declarations) {
if (declaration is ClassDeclaration) {
- ExtendsClause extendsClause = declaration.extendsClause;
+ var extendsClause = declaration.extendsClause;
if (extendsClause != null &&
extendsClause.superclass.name.name == 'ErrorCode') {
String className = declaration.name.name;
@@ -42,7 +44,7 @@
if (member is FieldDeclaration && member.isStatic) {
var fields = member.fields;
if ((fields.type == null ? bad() : true) &&
- fields.type.toSource() == className) {
+ fields.type!.toSource() == className) {
String fieldName = fields.variables[0].name.name;
declaredCodes.add(className + '.' + fieldName);
}
@@ -59,11 +61,10 @@
CompilationUnit listingUnit = parseFile(['lib', 'error', 'error.dart']);
TopLevelVariableDeclaration declaration = listingUnit.declarations
.whereType<TopLevelVariableDeclaration>()
- .firstWhere(
- (member) =>
- member.variables.variables[0].name.name == 'errorCodeValues',
- orElse: () => null);
- ListLiteral listLiteral = declaration.variables.variables[0].initializer;
+ .firstWhere((member) =>
+ member.variables.variables[0].name.name == 'errorCodeValues');
+ var listLiteral =
+ declaration.variables.variables[0].initializer as ListLiteral;
for (var element in listLiteral.elements.cast<PrefixedIdentifier>()) {
listedCodes.add(element.name);
}
@@ -74,7 +75,11 @@
List<String> pathComponents = _analyzerRootComponents.toList()
..addAll(relativeComponents);
String filePath = path.normalize(path.joinAll(pathComponents));
- return parseCompilationUnit(File(filePath).readAsStringSync());
+ return parseString(
+ path: filePath,
+ content: File(filePath).readAsStringSync(),
+ featureSet: ExperimentStatus.latestWithNullSafety,
+ ).unit;
}
test_errorCodeValues() {
diff --git a/pkg/analyzer/test/file_system/file_system_test_support.dart b/pkg/analyzer/test/file_system/file_system_test_support.dart
index adf8754..e432f4d 100644
--- a/pkg/analyzer/test/file_system/file_system_test_support.dart
+++ b/pkg/analyzer/test/file_system/file_system_test_support.dart
@@ -4,7 +4,6 @@
import 'package:analyzer/file_system/file_system.dart';
import 'package:analyzer/src/generated/source.dart';
-import 'package:meta/meta.dart';
import 'package:path/path.dart' as path;
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -37,22 +36,22 @@
/// have the [defaultFileContent]. If the file does not exist then the content
/// is ignored. If a [filePath] is provided, then the file will be located at
/// that path; otherwise the file will have the [defaultFilePath].
- File getFile({@required bool exists, String content, String filePath});
+ File getFile({required bool exists, String? content, String? filePath});
/// Return a folder accessed through the resource provider. If [exists] is
/// `true` then the returned folder will exist, otherwise it won't. If a
/// [folderPath] is provided, then the folder will be located at that path;
/// otherwise the folder will have the [defaultFolderPath].
- Folder getFolder({@required bool exists, String folderPath});
+ Folder getFolder({required bool exists, String? folderPath});
/// Return a file path composed of the provided parts as defined by the
/// current path context.
String join(String part1,
- [String part2,
- String part3,
- String part4,
- String part5,
- String part6]) =>
+ [String? part2,
+ String? part3,
+ String? part4,
+ String? part5,
+ String? part6]) =>
provider.pathContext.join(part1, part2, part3, part4, part5, part6);
}
@@ -189,8 +188,7 @@
test_parent() {
File file = getFile(exists: true);
- Folder parent = file.parent;
- expect(parent, isNotNull);
+ var parent = file.parent!;
expect(parent.exists, isTrue);
expect(parent.path, defaultFolderPath);
}
@@ -426,7 +424,7 @@
test_delete() {
File file =
getFile(exists: true, filePath: join(defaultFolderPath, 'myFile'));
- Folder folder = file.parent;
+ var folder = file.parent!;
expect(folder.exists, isTrue);
expect(file.exists, isTrue);
@@ -596,7 +594,7 @@
test_parent() {
Folder folder = getFolder(exists: true);
- Folder parent = folder.parent;
+ var parent = folder.parent!;
expect(parent.path, equals(tempPath));
//
// Since the OS is in control of where tempPath is, we don't know how far it
@@ -604,7 +602,7 @@
// in a folder with a shorter path, and that we reach the root eventually.
//
while (true) {
- Folder grandParent = parent.parent;
+ var grandParent = parent.parent;
if (grandParent == null) {
break;
}
@@ -645,8 +643,8 @@
}
}
for (String fileName in sourceFiles.keys) {
- File sourceChild = sourceFiles[fileName];
- File copiedChild = copyFiles[fileName];
+ var sourceChild = sourceFiles[fileName]!;
+ var copiedChild = copyFiles[fileName];
if (copiedChild == null) {
fail('Failed to copy file ${sourceChild.path}');
}
@@ -654,8 +652,8 @@
reason: 'Incorrectly copied file ${sourceChild.path}');
}
for (String fileName in sourceFolders.keys) {
- Folder sourceChild = sourceFolders[fileName];
- Folder copiedChild = copyFolders[fileName];
+ var sourceChild = sourceFolders[fileName]!;
+ var copiedChild = copyFolders[fileName];
if (copiedChild == null) {
fail('Failed to copy folder ${sourceChild.path}');
}
@@ -700,14 +698,14 @@
test_getModificationTimes_existing() async {
Source source = getFile(exists: true).createSource();
- List<int> times = await provider.getModificationTimes([source]);
+ var times = await provider.getModificationTimes([source]);
expect(times, [source.modificationStamp]);
}
test_getModificationTimes_notExisting() async {
Source source = getFile(exists: false).createSource();
- List<int> times = await provider.getModificationTimes([source]);
+ var times = await provider.getModificationTimes([source]);
expect(times, [-1]);
}
@@ -733,10 +731,10 @@
}
test_getStateLocation_uniqueness() {
- Folder folderOne = provider.getStateLocation('one');
+ var folderOne = provider.getStateLocation('one')!;
expect(folderOne, isNotNull);
- Folder folderTwo = provider.getStateLocation('two');
+ var folderTwo = provider.getStateLocation('two')!;
expect(folderTwo, isNotNull);
expect(folderTwo, isNot(equals(folderOne)));
diff --git a/pkg/analyzer/test/file_system/memory_file_system_test.dart b/pkg/analyzer/test/file_system/memory_file_system_test.dart
index c5a929b..ff2ae8c 100644
--- a/pkg/analyzer/test/file_system/memory_file_system_test.dart
+++ b/pkg/analyzer/test/file_system/memory_file_system_test.dart
@@ -7,7 +7,6 @@
import 'package:analyzer/src/generated/engine.dart' show TimestampedData;
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/generated/utilities_dart.dart';
-import 'package:meta/meta.dart';
import 'package:path/path.dart' as path;
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -29,20 +28,20 @@
abstract class BaseTest extends FileSystemTestSupport {
/// The resource provider to be used by the tests. Tests should use [provider]
/// to access the resource provider.
- MemoryResourceProvider _provider;
+ MemoryResourceProvider? _provider;
/// The absolute path to the temporary directory in which all of the tests are
/// to work.
@override
- /*late*/ String tempPath;
+ late final String tempPath;
/// A path to a folder within the [tempPath] that can be used by tests.
@override
- /*late*/ String defaultFolderPath;
+ late final String defaultFolderPath;
/// A path to a file within the [defaultFolderPath] that can be used by tests.
@override
- /*late*/ String defaultFilePath;
+ late final String defaultFilePath;
/// The content used for the file at the [defaultFilePath] if it is created
/// and no other content is provided.
@@ -59,7 +58,7 @@
MemoryResourceProvider createProvider() => MemoryResourceProvider();
@override
- File getFile({@required bool exists, String content, String filePath}) {
+ File getFile({required bool exists, String? content, String? filePath}) {
if (filePath == null) {
filePath = defaultFilePath;
} else {
@@ -72,7 +71,7 @@
}
@override
- Folder getFolder({@required bool exists, String folderPath}) {
+ Folder getFolder({required bool exists, String? folderPath}) {
if (folderPath == null) {
folderPath = defaultFolderPath;
} else {
@@ -104,8 +103,8 @@
@reflectiveTest
class MemoryFileSourceExistingTest extends BaseTest {
- /*late*/ String sourcePath;
- /*late*/ Source source;
+ late final String sourcePath;
+ late final Source source;
@override
setUp() {
@@ -184,8 +183,8 @@
@reflectiveTest
class MemoryFileSourceNotExistingTest extends BaseTest {
- /*late*/ String sourcePath;
- /*late*/ Source source;
+ late final String sourcePath;
+ late final Source source;
@override
setUp() {
diff --git a/pkg/analyzer/test/file_system/overlay_file_system_test.dart b/pkg/analyzer/test/file_system/overlay_file_system_test.dart
index b93e057..2513ebb 100644
--- a/pkg/analyzer/test/file_system/overlay_file_system_test.dart
+++ b/pkg/analyzer/test/file_system/overlay_file_system_test.dart
@@ -6,7 +6,6 @@
import 'package:analyzer/file_system/memory_file_system.dart';
import 'package:analyzer/file_system/overlay_file_system.dart';
import 'package:analyzer/src/generated/source.dart';
-import 'package:meta/meta.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -37,7 +36,7 @@
File targetFile =
provider.getFile(baseProvider.convertPath('/foo/test.dart'));
expect(targetFile.exists, isFalse);
- file.copyTo(file.parent.parent);
+ file.copyTo(file.parent!.parent!);
expect(targetFile.exists, isTrue);
}
@@ -47,7 +46,7 @@
File targetFile =
provider.getFile(baseProvider.convertPath('/foo/test.dart'));
expect(targetFile.exists, isFalse);
- file.copyTo(file.parent.parent);
+ file.copyTo(file.parent!.parent!);
expect(targetFile.exists, isTrue);
expect(targetFile.readAsStringSync(), 'overlay');
provider.removeOverlay(targetFile.path);
@@ -60,7 +59,7 @@
File targetFile =
provider.getFile(baseProvider.convertPath('/foo/test.dart'));
expect(targetFile.exists, isFalse);
- file.copyTo(file.parent.parent);
+ file.copyTo(file.parent!.parent!);
expect(targetFile.exists, isTrue);
expect(targetFile.readAsStringSync(), 'overlay');
provider.removeOverlay(targetFile.path);
@@ -165,8 +164,7 @@
}
test_parent() {
- Folder parent = _file(exists: true).parent;
- expect(parent, isNotNull);
+ var parent = _file(exists: true).parent!;
expect(parent.exists, isTrue);
expect(parent.path, defaultFolderPath);
}
@@ -579,7 +577,7 @@
test_getChildren_nonExisting_withOverlay() {
File file = _file(exists: false, withOverlay: true);
- List<Resource> children = file.parent.parent.getChildren();
+ List<Resource> children = file.parent!.parent!.getChildren();
expect(children, hasLength(1));
expect(children[0], _isFolder);
}
@@ -600,14 +598,13 @@
}
test_parent_ofNonRoot() {
- Folder parent = _folder(exists: true).parent;
- expect(parent, isNotNull);
+ Folder parent = _folder(exists: true).parent!;
expect(parent.exists, isTrue);
expect(parent.path, baseProvider.convertPath('/foo'));
}
test_parent_ofRoot() {
- Folder parent = _folder(exists: true, path: '/').parent;
+ var parent = _folder(exists: true, path: '/').parent;
expect(parent, isNull);
}
@@ -672,8 +669,8 @@
}
}
for (String fileName in sourceFiles.keys) {
- File sourceChild = sourceFiles[fileName];
- File copiedChild = copyFiles[fileName];
+ var sourceChild = sourceFiles[fileName]!;
+ var copiedChild = copyFiles[fileName];
if (copiedChild == null) {
fail('Failed to copy file ${sourceChild.path}');
}
@@ -681,8 +678,8 @@
reason: 'Incorrectly copied file ${sourceChild.path}');
}
for (String fileName in sourceFolders.keys) {
- Folder sourceChild = sourceFolders[fileName];
- Folder copiedChild = copyFolders[fileName];
+ var sourceChild = sourceFolders[fileName]!;
+ var copiedChild = copyFolders[fileName];
if (copiedChild == null) {
fail('Failed to copy folder ${sourceChild.path}');
}
@@ -737,7 +734,7 @@
test_getFolder_notExisting_withOverlay() {
File file = _file(exists: false, withOverlay: true);
- Folder folder = file.parent;
+ Folder folder = file.parent!;
expect(folder, isNotNull);
expect(folder.path, defaultFolderPath);
expect(folder.exists, isTrue);
@@ -794,11 +791,11 @@
test_getStateLocation_uniqueness() {
String idOne = 'one';
- Folder folderOne = provider.getStateLocation(idOne);
- expect(folderOne, isNotNull);
+ Folder folderOne = provider.getStateLocation(idOne)!;
+
String idTwo = 'two';
- Folder folderTwo = provider.getStateLocation(idTwo);
- expect(folderTwo, isNotNull);
+ Folder folderTwo = provider.getStateLocation(idTwo)!;
+
expect(folderTwo, isNot(equals(folderOne)));
expect(provider.getStateLocation(idOne), equals(folderOne));
}
@@ -819,11 +816,11 @@
}
class OverlayTestSupport {
- /*late*/ MemoryResourceProvider baseProvider;
- /*late*/ OverlayResourceProvider provider;
+ late final MemoryResourceProvider baseProvider;
+ late final OverlayResourceProvider provider;
- /*late*/ String defaultFolderPath;
- /*late*/ String defaultFilePath;
+ late final String defaultFolderPath;
+ late final String defaultFilePath;
void setUp() {
baseProvider = MemoryResourceProvider();
@@ -834,9 +831,9 @@
}
File _file(
- {@required bool exists,
- String content,
- String path,
+ {required bool exists,
+ String? content,
+ String? path,
bool withOverlay = false,
String overlayContent = 'bbb'}) {
if (path == null) {
@@ -853,7 +850,7 @@
return provider.getFile(path);
}
- Folder _folder({@required bool exists, String path}) {
+ Folder _folder({required bool exists, String? path}) {
if (path == null) {
path = defaultFolderPath;
} else {
diff --git a/pkg/analyzer/test/file_system/physical_file_system_test.dart b/pkg/analyzer/test/file_system/physical_file_system_test.dart
index 8f41e08..c1c70a5 100644
--- a/pkg/analyzer/test/file_system/physical_file_system_test.dart
+++ b/pkg/analyzer/test/file_system/physical_file_system_test.dart
@@ -6,7 +6,6 @@
import 'package:analyzer/file_system/file_system.dart';
import 'package:analyzer/file_system/physical_file_system.dart';
-import 'package:meta/meta.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -25,24 +24,24 @@
abstract class BaseTest extends FileSystemTestSupport {
/// The resource provider to be used by the tests. Tests should use [provider]
/// to access the resource provider.
- PhysicalResourceProvider _provider;
+ PhysicalResourceProvider? _provider;
/// A temporary directory on disk. All files and folders created by the tests
/// should be inside this directory.
- /*late*/ io.Directory tempDirectory;
+ late final io.Directory tempDirectory;
/// The absolute path to the [tempDirectory]. This path will contain a
/// symbolic link on some operating systems.
@override
- /*late*/ String tempPath;
+ late final String tempPath;
/// A path to a folder within the [tempDirectory] that can be used by tests.
@override
- /*late*/ String defaultFolderPath;
+ late final String defaultFolderPath;
/// A path to a file within the [defaultFolderPath] that can be used by tests.
@override
- /*late*/ String defaultFilePath;
+ late final String defaultFilePath;
/// The content used for the file at the [defaultFilePath] if it is created
/// and no other content is provided.
@@ -59,17 +58,17 @@
PhysicalResourceProvider createProvider() => PhysicalResourceProvider();
@override
- File getFile({@required bool exists, String content, String filePath}) {
+ File getFile({required bool exists, String? content, String? filePath}) {
File file = provider.getFile(filePath ?? defaultFilePath);
if (exists) {
- file.parent.create();
+ file.parent!.create();
file.writeAsStringSync(content ?? defaultFileContent);
}
return file;
}
@override
- Folder getFolder({@required bool exists, String folderPath}) {
+ Folder getFolder({required bool exists, String? folderPath}) {
Folder folder = provider.getFolder(folderPath ?? defaultFolderPath);
if (exists) {
folder.create();
diff --git a/pkg/analyzer/test/file_system/resource_uri_resolver_test.dart b/pkg/analyzer/test/file_system/resource_uri_resolver_test.dart
index 657586c..c6192fb 100644
--- a/pkg/analyzer/test/file_system/resource_uri_resolver_test.dart
+++ b/pkg/analyzer/test/file_system/resource_uri_resolver_test.dart
@@ -16,7 +16,7 @@
@reflectiveTest
class ResourceUriResolverTest with ResourceProviderMixin {
- /*late*/ ResourceUriResolver resolver;
+ late final ResourceUriResolver resolver;
void setUp() {
resolver = ResourceUriResolver(resourceProvider);
@@ -32,8 +32,7 @@
void test_resolveAbsolute_file() {
var uri = toUri('/test.dart');
- Source source = resolver.resolveAbsolute(uri);
- expect(source, isNotNull);
+ var source = resolver.resolveAbsolute(uri)!;
expect(source.exists(), isTrue);
expect(source.fullName, convertPath('/test.dart'));
}
@@ -41,8 +40,7 @@
void test_resolveAbsolute_folder() {
var uri = toUri('/folder');
- Source source = resolver.resolveAbsolute(uri);
- expect(source, isNotNull);
+ var source = resolver.resolveAbsolute(uri)!;
expect(source.exists(), isFalse);
expect(source.fullName, convertPath('/folder'));
}
@@ -50,26 +48,25 @@
void test_resolveAbsolute_notFile_dartUri() {
var uri = Uri(scheme: 'dart', path: 'core');
- Source source = resolver.resolveAbsolute(uri);
+ var source = resolver.resolveAbsolute(uri);
expect(source, isNull);
}
void test_resolveAbsolute_notFile_httpsUri() {
var uri = Uri(scheme: 'https', path: '127.0.0.1/test.dart');
- Source source = resolver.resolveAbsolute(uri);
+ var source = resolver.resolveAbsolute(uri);
expect(source, isNull);
}
void test_restoreAbsolute() {
var uri = toUri('/test.dart');
- Source source = resolver.resolveAbsolute(uri);
- expect(source, isNotNull);
+ var source = resolver.resolveAbsolute(uri)!;
expect(resolver.restoreAbsolute(source), uri);
expect(
- resolver
- .restoreAbsolute(NonExistingSource(source.fullName, null, null)),
+ resolver.restoreAbsolute(NonExistingSource(
+ source.fullName, Uri.parse('dart:math'), UriKind.DART_URI)),
uri);
}
}
diff --git a/pkg/analyzer/test/generated/all_the_rest_test.dart b/pkg/analyzer/test/generated/all_the_rest_test.dart
index d6c1131..0784b9c 100644
--- a/pkg/analyzer/test/generated/all_the_rest_test.dart
+++ b/pkg/analyzer/test/generated/all_the_rest_test.dart
@@ -49,7 +49,7 @@
@reflectiveTest
class DartUriResolverTest extends _SimpleDartSdkTest {
- DartUriResolver resolver;
+ late final DartUriResolver resolver;
@override
setUp() {
@@ -68,37 +68,36 @@
}
void test_resolve_dart_library() {
- Source source = resolver.resolveAbsolute(Uri.parse('dart:core'));
+ var source = resolver.resolveAbsolute(Uri.parse('dart:core'));
expect(source, isNotNull);
}
void test_resolve_dart_nonExistingLibrary() {
- Source result = resolver.resolveAbsolute(Uri.parse("dart:cor"));
+ var result = resolver.resolveAbsolute(Uri.parse("dart:cor"));
expect(result, isNull);
}
void test_resolve_dart_part() {
- Source source = resolver.resolveAbsolute(Uri.parse('dart:core/int.dart'));
+ var source = resolver.resolveAbsolute(Uri.parse('dart:core/int.dart'));
expect(source, isNotNull);
}
void test_resolve_nonDart() {
- Source result =
- resolver.resolveAbsolute(Uri.parse("package:some/file.dart"));
+ var result = resolver.resolveAbsolute(Uri.parse("package:some/file.dart"));
expect(result, isNull);
}
void test_restoreAbsolute_library() {
_SourceMock source = _SourceMock();
source.uri = toUri('/sdk/lib/core/core.dart');
- Uri dartUri = resolver.restoreAbsolute(source);
+ var dartUri = resolver.restoreAbsolute(source);
expect(dartUri.toString(), 'dart:core');
}
void test_restoreAbsolute_part() {
_SourceMock source = _SourceMock();
source.uri = toUri('/sdk/lib/core/int.dart');
- Uri dartUri = resolver.restoreAbsolute(source);
+ var dartUri = resolver.restoreAbsolute(source);
expect(dartUri.toString(), 'dart:core/int.dart');
}
}
@@ -164,7 +163,7 @@
test_equals_false_null() async {
JavaFile file = FileUtilities2.createFile("/does/not/exist1.dart");
FileBasedSource source1 = FileBasedSource(file);
- expect(source1 == null, isFalse);
+ expect(source1, isNotNull);
}
test_equals_true() async {
@@ -201,13 +200,13 @@
UriResolver resolver = DartUriResolver(sdk);
SourceFactory factory = SourceFactory([resolver]);
// resolve dart:core
- Source result = resolver.resolveAbsolute(Uri.parse("dart:core"));
+ var result = resolver.resolveAbsolute(Uri.parse("dart:core"));
expect(result, isNotNull);
- expect(result.isInSystemLibrary, isTrue);
+ expect(result!.isInSystemLibrary, isTrue);
// system libraries reference only other system libraries
- Source partSource = factory.resolveUri(result, "num.dart");
+ var partSource = factory.resolveUri(result, "num.dart");
expect(partSource, isNotNull);
- expect(partSource.isInSystemLibrary, isTrue);
+ expect(partSource!.isInSystemLibrary, isTrue);
}
test_isInSystemLibrary_false() async {
@@ -338,7 +337,7 @@
expect(UriKind.fromEncoding(0x64), same(UriKind.DART_URI));
expect(UriKind.fromEncoding(0x66), same(UriKind.FILE_URI));
expect(UriKind.fromEncoding(0x70), same(UriKind.PACKAGE_URI));
- expect(UriKind.fromEncoding(0x58), same(null));
+ expect(UriKind.fromEncoding(0x58), isNull);
}
test_getEncoding() async {
@@ -349,7 +348,7 @@
}
class _SimpleDartSdkTest with ResourceProviderMixin {
- /*late*/ DartSdk sdk;
+ late final DartSdk sdk;
void setUp() {
newFile('/sdk/lib/_internal/sdk_library_metadata/lib/libraries.dart',
@@ -375,7 +374,7 @@
class _SourceMock implements Source {
@override
- Uri uri;
+ late final Uri uri;
@override
noSuchMethod(Invocation invocation) {
diff --git a/pkg/analyzer/test/generated/class_member_parser_test.dart b/pkg/analyzer/test/generated/class_member_parser_test.dart
index 36f4c5d..f45c248 100644
--- a/pkg/analyzer/test/generated/class_member_parser_test.dart
+++ b/pkg/analyzer/test/generated/class_member_parser_test.dart
@@ -48,7 +48,7 @@
var body = method.body as BlockFunctionBody;
var statement = body.block.statements[0] as ExpressionStatement;
var invocation = statement.expression as MethodInvocation;
- expect(invocation.operator.lexeme, '.');
+ expect(invocation.operator!.lexeme, '.');
expect(invocation.toSource(), 'new C().late()');
}
@@ -58,7 +58,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isMethodDeclaration);
- MethodDeclaration method = member;
+ var method = member as MethodDeclaration;
FunctionBody body = method.body;
expect(body, isBlockFunctionBody);
Statement statement = (body as BlockFunctionBody).block.statements[0];
@@ -66,7 +66,7 @@
Expression expression = (statement as ExpressionStatement).expression;
expect(expression, isAwaitExpression);
expect((expression as AwaitExpression).awaitKeyword, isNotNull);
- expect((expression as AwaitExpression).expression, isNotNull);
+ expect(expression.expression, isNotNull);
}
void test_parseAwaitExpression_asStatement_inSync() {
@@ -75,7 +75,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isMethodDeclaration);
- MethodDeclaration method = member;
+ var method = member as MethodDeclaration;
FunctionBody body = method.body;
expect(body, isBlockFunctionBody);
Statement statement = (body as BlockFunctionBody).block.statements[0];
@@ -84,7 +84,7 @@
void test_parseAwaitExpression_inSync() {
createParser('m() { return await x + await y; }');
- MethodDeclaration method = parser.parseClassMember('C');
+ var method = parser.parseClassMember('C') as MethodDeclaration;
expect(method, isNotNull);
listener.assertErrors([
expectedError(ParserErrorCode.UNEXPECTED_TOKEN, 13, 5),
@@ -94,7 +94,7 @@
expect(body, isBlockFunctionBody);
Statement statement = (body as BlockFunctionBody).block.statements[0];
expect(statement, isReturnStatement);
- Expression expression = (statement as ReturnStatement).expression;
+ Expression expression = (statement as ReturnStatement).expression!;
expect(expression, isBinaryExpression);
}
@@ -112,7 +112,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isConstructorDeclaration);
- ConstructorDeclaration constructor = member;
+ var constructor = member as ConstructorDeclaration;
expect(constructor.body, isNotNull);
expect(constructor.separator, isNotNull);
expect(constructor.externalKeyword, isNull);
@@ -131,7 +131,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isFieldDeclaration);
- FieldDeclaration field = member;
+ var field = member as FieldDeclaration;
expect(field.covariantKeyword, isNotNull);
expect(field.documentationComment, isNull);
expect(field.metadata, hasLength(0));
@@ -155,7 +155,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isFieldDeclaration);
- FieldDeclaration field = member;
+ var field = member as FieldDeclaration;
expect(field.covariantKeyword, isNull);
expect(field.documentationComment, isNull);
expect(field.metadata, hasLength(0));
@@ -168,15 +168,15 @@
expect(list.isFinal, isFalse);
expect(list.isLate, isFalse);
expect(list.lateKeyword, isNull);
- TypeName type = list.type;
+ var type = list.type as TypeName;
expect(type.name.name, 'List');
- NodeList typeArguments = type.typeArguments.arguments;
+ List typeArguments = type.typeArguments!.arguments;
expect(typeArguments, hasLength(1));
- TypeName type2 = typeArguments[0];
+ var type2 = typeArguments[0] as TypeName;
expect(type2.name.name, 'List');
- NodeList typeArguments2 = type2.typeArguments.arguments;
+ NodeList typeArguments2 = type2.typeArguments!.arguments;
expect(typeArguments2, hasLength(1));
- TypeName type3 = typeArguments2[0];
+ var type3 = typeArguments2[0] as TypeName;
expect(type3.name.name, 'N');
NodeList<VariableDeclaration> variables = list.variables;
expect(variables, hasLength(1));
@@ -212,7 +212,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isFieldDeclaration);
- FieldDeclaration field = member;
+ var field = member as FieldDeclaration;
expect(field.covariantKeyword, isNull);
expect(field.documentationComment, isNull);
expect(field.metadata, hasLength(0));
@@ -238,7 +238,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isFieldDeclaration);
- FieldDeclaration field = member;
+ var field = member as FieldDeclaration;
expect(field.covariantKeyword, isNull);
expect(field.documentationComment, isNull);
expect(field.metadata, hasLength(0));
@@ -263,7 +263,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isFieldDeclaration);
- FieldDeclaration field = member;
+ var field = member as FieldDeclaration;
expect(field.covariantKeyword, isNull);
expect(field.documentationComment, isNull);
expect(field.metadata, hasLength(0));
@@ -288,7 +288,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isFieldDeclaration);
- FieldDeclaration field = member;
+ var field = member as FieldDeclaration;
expect(field.covariantKeyword, isNull);
expect(field.documentationComment, isNull);
expect(field.metadata, hasLength(0));
@@ -314,7 +314,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isFieldDeclaration);
- FieldDeclaration field = member;
+ var field = member as FieldDeclaration;
expect(field.covariantKeyword, isNull);
expect(field.documentationComment, isNull);
expect(field.metadata, hasLength(0));
@@ -364,7 +364,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isFieldDeclaration);
- FieldDeclaration field = member;
+ var field = member as FieldDeclaration;
expect(field.covariantKeyword, isNull);
expect(field.documentationComment, isNull);
expect(field.metadata, hasLength(0));
@@ -401,7 +401,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isMethodDeclaration);
- MethodDeclaration method = member;
+ var method = member as MethodDeclaration;
expect(method.documentationComment, isNull);
expect(method.externalKeyword, isNull);
expect(method.modifierKeyword, isNull);
@@ -419,7 +419,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isMethodDeclaration);
- MethodDeclaration method = member;
+ var method = member as MethodDeclaration;
expect(method.documentationComment, isNull);
expect(method.externalKeyword, isNull);
expect(method.modifierKeyword, isNull);
@@ -438,7 +438,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isMethodDeclaration);
- MethodDeclaration method = member;
+ var method = member as MethodDeclaration;
expect(method.documentationComment, isNull);
expect(method.externalKeyword, isNotNull);
expect(method.modifierKeyword, isNull);
@@ -462,7 +462,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isMethodDeclaration);
- MethodDeclaration method = member;
+ var method = member as MethodDeclaration;
expect(method.body, isNotNull);
expect(method.documentationComment, isNull);
expect(method.externalKeyword, isNotNull);
@@ -481,7 +481,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isMethodDeclaration);
- MethodDeclaration method = member;
+ var method = member as MethodDeclaration;
expect(method.documentationComment, isNull);
expect(method.externalKeyword, isNull);
expect(method.modifierKeyword, isNull);
@@ -500,7 +500,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isMethodDeclaration);
- MethodDeclaration method = member;
+ var method = member as MethodDeclaration;
expect(method.documentationComment, isNull);
expect(method.externalKeyword, isNull);
expect(method.modifierKeyword, isNull);
@@ -510,7 +510,7 @@
expect(method.operatorKeyword, isNull);
expect(method.typeParameters, isNotNull);
- FormalParameterList parameters = method.parameters;
+ FormalParameterList parameters = method.parameters!;
expect(parameters, isNotNull);
expect(parameters.parameters, hasLength(1));
var parameter = parameters.parameters[0] as SimpleFormalParameter;
@@ -526,7 +526,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isMethodDeclaration);
- MethodDeclaration method = member;
+ var method = member as MethodDeclaration;
expect(method.documentationComment, isNull);
expect(method.externalKeyword, isNull);
expect(method.modifierKeyword, isNull);
@@ -545,7 +545,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isMethodDeclaration);
- MethodDeclaration method = member;
+ var method = member as MethodDeclaration;
expect(method.documentationComment, isNull);
expect(method.externalKeyword, isNull);
expect(method.modifierKeyword, isNull);
@@ -554,7 +554,7 @@
expect(method.name, isNotNull);
expect(method.operatorKeyword, isNull);
expect(method.typeParameters, isNotNull);
- TypeParameter tp = method.typeParameters.typeParameters[0];
+ TypeParameter tp = method.typeParameters!.typeParameters[0];
expect(tp.name.name, 'T');
expect(tp.extendsKeyword, isNotNull);
expect((tp.bound as TypeName).name.name, 'num');
@@ -568,7 +568,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isMethodDeclaration);
- MethodDeclaration method = member;
+ var method = member as MethodDeclaration;
expect(method.documentationComment, isNull);
expect(method.externalKeyword, isNull);
expect(method.modifierKeyword, isNull);
@@ -579,7 +579,7 @@
expect(returnType, isNotNull);
expect(returnType.name.name, 'Map');
- List<TypeAnnotation> typeArguments = returnType.typeArguments.arguments;
+ List<TypeAnnotation> typeArguments = returnType.typeArguments!.arguments;
expect(typeArguments, hasLength(2));
expect((typeArguments[0] as TypeName).name.name, 'int');
expect((typeArguments[1] as TypeName).name.name, 'T');
@@ -598,7 +598,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isMethodDeclaration);
- MethodDeclaration method = member;
+ var method = member as MethodDeclaration;
expect(method.documentationComment, isNull);
expect(method.externalKeyword, isNull);
expect(method.modifierKeyword, isNotNull);
@@ -618,7 +618,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isMethodDeclaration);
- MethodDeclaration method = member;
+ var method = member as MethodDeclaration;
expect(method.documentationComment, isNull);
expect(method.externalKeyword, isNull);
expect(method.modifierKeyword, isNull);
@@ -637,7 +637,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isMethodDeclaration);
- MethodDeclaration method = member;
+ var method = member as MethodDeclaration;
expect(method.documentationComment, isNull);
expect(method.externalKeyword, isNull);
expect(method.modifierKeyword, isNull);
@@ -658,7 +658,7 @@
expectedError(ParserErrorCode.MEMBER_WITH_CLASS_NAME, 15, 1),
]);
expect(member, isMethodDeclaration);
- MethodDeclaration method = member;
+ var method = member as MethodDeclaration;
expect(method.documentationComment, isNull);
expect(method.externalKeyword, isNull);
expect(method.modifierKeyword, isNotNull);
@@ -677,7 +677,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isMethodDeclaration);
- MethodDeclaration method = member;
+ var method = member as MethodDeclaration;
expect(method.documentationComment, isNull);
expect(method.externalKeyword, isNull);
expect(method.modifierKeyword, isNull);
@@ -696,7 +696,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isMethodDeclaration);
- MethodDeclaration method = member;
+ var method = member as MethodDeclaration;
expect(method.documentationComment, isNull);
expect(method.externalKeyword, isNull);
expect(method.modifierKeyword, isNull);
@@ -789,7 +789,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isMethodDeclaration);
- MethodDeclaration method = member;
+ var method = member as MethodDeclaration;
expect(method.documentationComment, isNull);
expect(method.externalKeyword, isNull);
expect(method.modifierKeyword, isNull);
@@ -808,7 +808,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isMethodDeclaration);
- MethodDeclaration method = member;
+ var method = member as MethodDeclaration;
expect(method.documentationComment, isNull);
expect(method.externalKeyword, isNull);
expect(method.modifierKeyword, isNull);
@@ -827,7 +827,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isMethodDeclaration);
- MethodDeclaration method = member;
+ var method = member as MethodDeclaration;
expect(method.documentationComment, isNull);
expect(method.externalKeyword, isNull);
expect(method.modifierKeyword, isNull);
@@ -846,7 +846,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isMethodDeclaration);
- MethodDeclaration method = member;
+ var method = member as MethodDeclaration;
expect(method.documentationComment, isNull);
expect(method.externalKeyword, isNull);
expect(method.modifierKeyword, isNull);
@@ -866,7 +866,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isMethodDeclaration);
- MethodDeclaration method = member;
+ var method = member as MethodDeclaration;
expect(method.documentationComment, isNull);
expect(method.externalKeyword, isNull);
expect(method.modifierKeyword, isNull);
@@ -885,7 +885,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isMethodDeclaration);
- MethodDeclaration method = member;
+ var method = member as MethodDeclaration;
expect(method.documentationComment, isNull);
expect(method.externalKeyword, isNull);
expect(method.modifierKeyword, isNull);
@@ -906,7 +906,7 @@
expectedError(ParserErrorCode.MEMBER_WITH_CLASS_NAME, 16, 1),
]);
expect(member, isMethodDeclaration);
- MethodDeclaration method = member;
+ var method = member as MethodDeclaration;
expect(method.documentationComment, isNull);
expect(method.externalKeyword, isNull);
expect(method.modifierKeyword, isNotNull);
@@ -925,7 +925,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isMethodDeclaration);
- MethodDeclaration method = member;
+ var method = member as MethodDeclaration;
expect(method.documentationComment, isNull);
expect(method.externalKeyword, isNull);
expect(method.modifierKeyword, isNull);
@@ -944,7 +944,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isMethodDeclaration);
- MethodDeclaration method = member;
+ var method = member as MethodDeclaration;
expect(method.documentationComment, isNull);
expect(method.externalKeyword, isNull);
expect(method.modifierKeyword, isNull);
@@ -960,8 +960,8 @@
void test_parseClassMember_method_static_class() {
var unit = parseCompilationUnit('class C { static void m() {} }');
- ClassDeclaration c = unit.declarations[0];
- MethodDeclaration method = c.members[0];
+ var c = unit.declarations[0] as ClassDeclaration;
+ var method = c.members[0] as MethodDeclaration;
expect(method.documentationComment, isNull);
expect(method.externalKeyword, isNull);
expect(method.modifierKeyword, isNotNull);
@@ -976,8 +976,8 @@
void test_parseClassMember_method_static_mixin() {
var unit = parseCompilationUnit('mixin C { static void m() {} }');
- MixinDeclaration c = unit.declarations[0];
- MethodDeclaration method = c.members[0];
+ var c = unit.declarations[0] as MixinDeclaration;
+ var method = c.members[0] as MethodDeclaration;
expect(method.documentationComment, isNull);
expect(method.externalKeyword, isNull);
expect(method.modifierKeyword, isNotNull);
@@ -996,7 +996,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isMethodDeclaration);
- MethodDeclaration method = member;
+ var method = member as MethodDeclaration;
expect(method.documentationComment, isNull);
expect(method.externalKeyword, isNull);
expect(method.modifierKeyword, isNull);
@@ -1015,7 +1015,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isMethodDeclaration);
- MethodDeclaration method = member;
+ var method = member as MethodDeclaration;
expect(method.documentationComment, isNull);
expect(method.externalKeyword, isNull);
expect(method.modifierKeyword, isNull);
@@ -1025,7 +1025,7 @@
expect(method.operatorKeyword, isNotNull);
expect(method.typeParameters, isNull);
expect(method.parameters, isNotNull);
- NodeList<FormalParameter> parameters = method.parameters.parameters;
+ NodeList<FormalParameter> parameters = method.parameters!.parameters;
expect(parameters, hasLength(1));
expect(
(parameters[0] as SimpleFormalParameter).type, isGenericFunctionType);
@@ -1075,7 +1075,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isMethodDeclaration);
- MethodDeclaration method = member;
+ var method = member as MethodDeclaration;
expect(method.documentationComment, isNull);
expect(method.externalKeyword, isNull);
expect(method.modifierKeyword, isNull);
@@ -1094,7 +1094,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isMethodDeclaration);
- MethodDeclaration method = member;
+ var method = member as MethodDeclaration;
expect(method.documentationComment, isNull);
expect(method.externalKeyword, isNull);
expect(method.modifierKeyword, isNull);
@@ -1113,7 +1113,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isMethodDeclaration);
- MethodDeclaration method = member;
+ var method = member as MethodDeclaration;
expect(method.documentationComment, isNull);
expect(method.externalKeyword, isNull);
expect(method.modifierKeyword, isNull);
@@ -1132,20 +1132,20 @@
assertNoErrors();
expect(constructor, isNotNull);
expect(constructor.externalKeyword, isNull);
- expect(constructor.constKeyword.keyword, Keyword.CONST);
- expect(constructor.factoryKeyword.keyword, Keyword.FACTORY);
+ expect(constructor.constKeyword!.keyword, Keyword.CONST);
+ expect(constructor.factoryKeyword!.keyword, Keyword.FACTORY);
expect(constructor.returnType.name, 'C');
expect(constructor.period, isNull);
expect(constructor.name, isNull);
- _assertIsDeclarationName(constructor.returnType, false);
+ _assertIsDeclarationName(constructor.returnType as SimpleIdentifier, false);
expect(constructor.parameters, isNotNull);
expect(constructor.parameters.parameters, isEmpty);
- expect(constructor.separator.type, TokenType.EQ);
+ expect(constructor.separator!.type, TokenType.EQ);
expect(constructor.initializers, isEmpty);
expect(constructor.redirectedConstructor, isNotNull);
- expect(constructor.redirectedConstructor.type.name.name, 'prefix.B');
- expect(constructor.redirectedConstructor.period.type, TokenType.PERIOD);
- expect(constructor.redirectedConstructor.name.name, 'foo');
+ expect(constructor.redirectedConstructor!.type.name.name, 'prefix.B');
+ expect(constructor.redirectedConstructor!.period!.type, TokenType.PERIOD);
+ expect(constructor.redirectedConstructor!.name!.name, 'foo');
expect(constructor.body, isEmptyFunctionBody);
}
@@ -1156,7 +1156,7 @@
expect(constructor, isNotNull);
expect(constructor.externalKeyword, isNull);
expect(constructor.constKeyword, isNull);
- expect(constructor.factoryKeyword.keyword, Keyword.FACTORY);
+ expect(constructor.factoryKeyword!.keyword, Keyword.FACTORY);
expect(constructor.returnType.name, 'C');
expect(constructor.period, isNull);
expect(constructor.name, isNull);
@@ -1180,22 +1180,22 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isConstructorDeclaration);
- ConstructorDeclaration constructor = member;
+ var constructor = member as ConstructorDeclaration;
expect(constructor.externalKeyword, isNull);
expect(constructor.constKeyword, isNull);
- expect(constructor.factoryKeyword.keyword, Keyword.FACTORY);
+ expect(constructor.factoryKeyword!.keyword, Keyword.FACTORY);
expect(constructor.returnType.name, 'C');
- _assertIsDeclarationName(constructor.returnType, false);
+ _assertIsDeclarationName(constructor.returnType as SimpleIdentifier, false);
expect(constructor.period, isNull);
expect(constructor.name, isNull);
expect(constructor.parameters, isNotNull);
expect(constructor.parameters.parameters, isEmpty);
- expect(constructor.separator.type, TokenType.EQ);
+ expect(constructor.separator!.type, TokenType.EQ);
expect(constructor.initializers, isEmpty);
expect(constructor.redirectedConstructor, isNotNull);
- expect(constructor.redirectedConstructor.type.name.name, 'B');
- expect(constructor.redirectedConstructor.period, isNull);
- expect(constructor.redirectedConstructor.name, isNull);
+ expect(constructor.redirectedConstructor!.type.name.name, 'B');
+ expect(constructor.redirectedConstructor!.period, isNull);
+ expect(constructor.redirectedConstructor!.name, isNull);
expect(constructor.body, isEmptyFunctionBody);
}
@@ -1210,7 +1210,7 @@
expect(initializers, hasLength(3));
ConstructorInitializer initializer = initializers[1];
expect(initializer, isAssertInitializer);
- AssertInitializer assertInitializer = initializer;
+ var assertInitializer = initializer as AssertInitializer;
expect(assertInitializer.condition, isNotNull);
expect(assertInitializer.message, isNull);
}
@@ -1234,10 +1234,10 @@
expect(constructor.constKeyword, isNull);
expect(constructor.factoryKeyword, isNotNull);
expect(constructor.returnType.name, 'C');
- _assertIsDeclarationName(constructor.returnType, false);
- expect(constructor.period.type, TokenType.PERIOD);
- expect(constructor.name.name, 'foo');
- _assertIsDeclarationName(constructor.name);
+ _assertIsDeclarationName(constructor.returnType as SimpleIdentifier, false);
+ expect(constructor.period!.type, TokenType.PERIOD);
+ expect(constructor.name!.name, 'foo');
+ _assertIsDeclarationName(constructor.name!);
expect(constructor.parameters, isNotNull);
expect(constructor.parameters.parameters, isEmpty);
expect(constructor.separator, isNull);
@@ -1290,10 +1290,10 @@
expect(constructor.constKeyword, isNull);
expect(constructor.factoryKeyword, isNull);
expect(constructor.returnType.name, 'C');
- _assertIsDeclarationName(constructor.returnType, false);
- expect(constructor.period.type, TokenType.PERIOD);
- expect(constructor.name.name, 'foo');
- _assertIsDeclarationName(constructor.name);
+ _assertIsDeclarationName(constructor.returnType as SimpleIdentifier, false);
+ expect(constructor.period!.type, TokenType.PERIOD);
+ expect(constructor.name!.name, 'foo');
+ _assertIsDeclarationName(constructor.name!);
expect(constructor.parameters, isNotNull);
expect(constructor.parameters.parameters, isEmpty);
expect(constructor.separator, isNull);
@@ -1344,13 +1344,13 @@
expect(constructor.constKeyword, isNull);
expect(constructor.factoryKeyword, isNull);
expect(constructor.returnType.name, 'C');
- _assertIsDeclarationName(constructor.returnType, false);
+ _assertIsDeclarationName(constructor.returnType as SimpleIdentifier, false);
expect(constructor.name, isNull);
expect(constructor.parameters, isNotNull);
expect(constructor.parameters.parameters, isEmpty);
- expect(constructor.separator.lexeme, ':');
+ expect(constructor.separator!.lexeme, ':');
expect(constructor.initializers, hasLength(1));
- SuperConstructorInvocation initializer = constructor.initializers[0];
+ var initializer = constructor.initializers[0] as SuperConstructorInvocation;
expect(initializer.argumentList.arguments, isEmpty);
expect(constructor.redirectedConstructor, isNull);
expect(constructor.body, isEmptyFunctionBody);
@@ -1368,13 +1368,14 @@
expect(constructor.constKeyword, isNull);
expect(constructor.factoryKeyword, isNull);
expect(constructor.returnType.name, 'C');
- _assertIsDeclarationName(constructor.returnType, false);
+ _assertIsDeclarationName(constructor.returnType as SimpleIdentifier, false);
expect(constructor.name, isNull);
expect(constructor.parameters, isNotNull);
expect(constructor.parameters.parameters, isEmpty);
- expect(constructor.separator.lexeme, ':');
+ expect(constructor.separator!.lexeme, ':');
expect(constructor.initializers, hasLength(1));
- RedirectingConstructorInvocation initializer = constructor.initializers[0];
+ var initializer =
+ constructor.initializers[0] as RedirectingConstructorInvocation;
expect(initializer.argumentList.arguments, isEmpty);
expect(constructor.redirectedConstructor, isNull);
expect(constructor.body, isEmptyFunctionBody);
@@ -1389,7 +1390,7 @@
expect(constructor.constKeyword, isNull);
expect(constructor.factoryKeyword, isNull);
expect(constructor.returnType.name, 'C');
- _assertIsDeclarationName(constructor.returnType, false);
+ _assertIsDeclarationName(constructor.returnType as SimpleIdentifier, false);
expect(constructor.period, isNull);
expect(constructor.name, isNull);
expect(constructor.parameters, isNotNull);
@@ -1755,7 +1756,7 @@
void test_parseGetter_identifier_colon_issue_36961() {
createParser('get a:');
- ConstructorDeclaration constructor = parser.parseClassMember('C');
+ var constructor = parser.parseClassMember('C') as ConstructorDeclaration;
expect(constructor, isNotNull);
listener.assertErrors([
expectedError(ParserErrorCode.GETTER_CONSTRUCTOR, 0, 3),
@@ -1774,7 +1775,7 @@
void test_parseGetter_nonStatic() {
createParser('/// Doc\nT get a;');
- MethodDeclaration method = parser.parseClassMember('C');
+ var method = parser.parseClassMember('C') as MethodDeclaration;
expect(method, isNotNull);
assertNoErrors();
expect(method.body, isNotNull);
@@ -1790,13 +1791,13 @@
void test_parseGetter_static() {
createParser('/// Doc\nstatic T get a => 42;');
- MethodDeclaration method = parser.parseClassMember('C');
+ var method = parser.parseClassMember('C') as MethodDeclaration;
expect(method, isNotNull);
assertNoErrors();
expect(method.body, isNotNull);
expectCommentText(method.documentationComment, '/// Doc');
expect(method.externalKeyword, isNull);
- expect(method.modifierKeyword.lexeme, 'static');
+ expect(method.modifierKeyword!.lexeme, 'static');
expect(method.name, isNotNull);
expect(method.operatorKeyword, isNull);
expect(method.typeParameters, isNull);
@@ -1807,7 +1808,7 @@
void test_parseInitializedIdentifierList_type() {
createParser("/// Doc\nstatic T a = 1, b, c = 3;");
- FieldDeclaration declaration = parser.parseClassMember('C');
+ var declaration = parser.parseClassMember('C') as FieldDeclaration;
expect(declaration, isNotNull);
assertNoErrors();
expectCommentText(declaration.documentationComment, '/// Doc');
@@ -1816,28 +1817,28 @@
expect(fields.keyword, isNull);
expect((fields.type as TypeName).name.name, 'T');
expect(fields.variables, hasLength(3));
- expect(declaration.staticKeyword.lexeme, 'static');
+ expect(declaration.staticKeyword!.lexeme, 'static');
expect(declaration.semicolon, isNotNull);
}
void test_parseInitializedIdentifierList_var() {
createParser('/// Doc\nstatic var a = 1, b, c = 3;');
- FieldDeclaration declaration = parser.parseClassMember('C');
+ var declaration = parser.parseClassMember('C') as FieldDeclaration;
expect(declaration, isNotNull);
assertNoErrors();
expectCommentText(declaration.documentationComment, '/// Doc');
VariableDeclarationList fields = declaration.fields;
expect(fields, isNotNull);
- expect(fields.keyword.lexeme, 'var');
+ expect(fields.keyword!.lexeme, 'var');
expect(fields.type, isNull);
expect(fields.variables, hasLength(3));
- expect(declaration.staticKeyword.lexeme, 'static');
+ expect(declaration.staticKeyword!.lexeme, 'static');
expect(declaration.semicolon, isNotNull);
}
void test_parseOperator() {
createParser('/// Doc\nT operator +(A a);');
- MethodDeclaration method = parser.parseClassMember('C');
+ var method = parser.parseClassMember('C') as MethodDeclaration;
expect(method, isNotNull);
assertNoErrors();
expect(method.body, isNotNull);
@@ -1854,7 +1855,7 @@
void test_parseSetter_nonStatic() {
createParser('/// Doc\nT set a(var x);');
- MethodDeclaration method = parser.parseClassMember('C');
+ var method = parser.parseClassMember('C') as MethodDeclaration;
expect(method, isNotNull);
assertNoErrors();
expect(method.body, isNotNull);
@@ -1871,13 +1872,13 @@
void test_parseSetter_static() {
createParser('/// Doc\nstatic T set a(var x) {}');
- MethodDeclaration method = parser.parseClassMember('C');
+ var method = parser.parseClassMember('C') as MethodDeclaration;
expect(method, isNotNull);
assertNoErrors();
expect(method.body, isNotNull);
expectCommentText(method.documentationComment, '/// Doc');
expect(method.externalKeyword, isNull);
- expect(method.modifierKeyword.lexeme, 'static');
+ expect(method.modifierKeyword!.lexeme, 'static');
expect(method.name, isNotNull);
expect(method.operatorKeyword, isNull);
expect(method.typeParameters, isNull);
@@ -1893,7 +1894,7 @@
int x) {}
''');
var function = parseFullCompilationUnitMember() as FunctionDeclaration;
- var parameter = function.functionExpression.parameters.parameters[0]
+ var parameter = function.functionExpression.parameters!.parameters[0]
as NormalFormalParameter;
expectCommentText(parameter.documentationComment, '/// Doc');
}
diff --git a/pkg/analyzer/test/generated/collection_literal_parser_test.dart b/pkg/analyzer/test/generated/collection_literal_parser_test.dart
index 76e1dc8..b5b211a 100644
--- a/pkg/analyzer/test/generated/collection_literal_parser_test.dart
+++ b/pkg/analyzer/test/generated/collection_literal_parser_test.dart
@@ -20,9 +20,9 @@
@reflectiveTest
class CollectionLiteralParserTest extends FastaParserTestCase {
Expression parseCollectionLiteral(String source,
- {List<ErrorCode> codes,
- List<ExpectedError> errors,
- int expectedEndOffset,
+ {List<ErrorCode>? codes,
+ List<ExpectedError>? errors,
+ int? expectedEndOffset,
bool inAsync = false}) {
return parseExpression(source,
codes: codes,
@@ -414,7 +414,8 @@
}
void test_mapLiteral_ifSpread() {
- SetOrMapLiteral map = parseCollectionLiteral('{1:1, if (true) ...{2:4}}');
+ var map =
+ parseCollectionLiteral('{1:1, if (true) ...{2:4}}') as SetOrMapLiteral;
expect(map.elements, hasLength(2));
var first = map.elements[0] as MapLiteralEntry;
var firstValue = first.value as IntegerLiteral;
@@ -444,7 +445,7 @@
var map = parseCollectionLiteral('<int, int>{1: 2, ...{3: 4}}')
as SetOrMapLiteral;
expect(map.constKeyword, isNull);
- expect(map.typeArguments.arguments, hasLength(2));
+ expect(map.typeArguments!.arguments, hasLength(2));
expect(map.elements, hasLength(2));
var element = map.elements[1] as SpreadElement;
@@ -457,7 +458,7 @@
var map =
parseCollectionLiteral('<int, int>{...{3: 4}}') as SetOrMapLiteral;
expect(map.constKeyword, isNull);
- expect(map.typeArguments.arguments, hasLength(2));
+ expect(map.typeArguments!.arguments, hasLength(2));
expect(map.elements, hasLength(1));
var element = map.elements[0] as SpreadElement;
@@ -482,7 +483,7 @@
var map = parseCollectionLiteral('<int, int>{1: 2, ...?{3: 4}}')
as SetOrMapLiteral;
expect(map.constKeyword, isNull);
- expect(map.typeArguments.arguments, hasLength(2));
+ expect(map.typeArguments!.arguments, hasLength(2));
expect(map.elements, hasLength(2));
var element = map.elements[1] as SpreadElement;
@@ -495,7 +496,7 @@
var map =
parseCollectionLiteral('<int, int>{...?{3: 4}}') as SetOrMapLiteral;
expect(map.constKeyword, isNull);
- expect(map.typeArguments.arguments, hasLength(2));
+ expect(map.typeArguments!.arguments, hasLength(2));
expect(map.elements, hasLength(1));
var element = map.elements[0] as SpreadElement;
diff --git a/pkg/analyzer/test/generated/complex_parser_test.dart b/pkg/analyzer/test/generated/complex_parser_test.dart
index 67ae21b..59752a5 100644
--- a/pkg/analyzer/test/generated/complex_parser_test.dart
+++ b/pkg/analyzer/test/generated/complex_parser_test.dart
@@ -27,43 +27,43 @@
@reflectiveTest
class ComplexParserTest extends FastaParserTestCase {
void test_additiveExpression_normal() {
- BinaryExpression expression = parseExpression("x + y - z");
+ var expression = parseExpression("x + y - z") as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
void test_additiveExpression_noSpaces() {
- BinaryExpression expression = parseExpression("i+1");
+ var expression = parseExpression("i+1") as BinaryExpression;
expect(expression.leftOperand, isSimpleIdentifier);
expect(expression.rightOperand, isIntegerLiteral);
}
void test_additiveExpression_precedence_multiplicative_left() {
- BinaryExpression expression = parseExpression("x * y + z");
+ var expression = parseExpression("x * y + z") as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
void test_additiveExpression_precedence_multiplicative_left_withSuper() {
- BinaryExpression expression = parseExpression("super * y - z");
+ var expression = parseExpression("super * y - z") as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
void test_additiveExpression_precedence_multiplicative_right() {
- BinaryExpression expression = parseExpression("x + y * z");
+ var expression = parseExpression("x + y * z") as BinaryExpression;
expect(expression.rightOperand, isBinaryExpression);
}
void test_additiveExpression_super() {
- BinaryExpression expression = parseExpression("super + y - z");
+ var expression = parseExpression("super + y - z") as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
void test_assignableExpression_arguments_normal_chain() {
- PropertyAccess propertyAccess1 = parseExpression("a(b)(c).d(e).f");
+ var propertyAccess1 = parseExpression("a(b)(c).d(e).f") as PropertyAccess;
expect(propertyAccess1.propertyName.name, "f");
//
// a(b)(c).d(e)
//
- MethodInvocation invocation2 = propertyAccess1.target;
+ var invocation2 = propertyAccess1.target as MethodInvocation;
expect(invocation2.methodName.name, "d");
expect(invocation2.typeArguments, isNull);
ArgumentList argumentList2 = invocation2.argumentList;
@@ -72,7 +72,7 @@
//
// a(b)(c)
//
- FunctionExpressionInvocation invocation3 = invocation2.target;
+ var invocation3 = invocation2.target as FunctionExpressionInvocation;
expect(invocation3.typeArguments, isNull);
ArgumentList argumentList3 = invocation3.argumentList;
expect(argumentList3, isNotNull);
@@ -80,7 +80,7 @@
//
// a(b)
//
- MethodInvocation invocation4 = invocation3.function;
+ var invocation4 = invocation3.function as MethodInvocation;
expect(invocation4.methodName.name, "a");
expect(invocation4.typeArguments, isNull);
ArgumentList argumentList4 = invocation4.argumentList;
@@ -94,25 +94,25 @@
}
void test_assignmentExpression_compound() {
- AssignmentExpression expression = parseExpression("x = y = 0");
+ var expression = parseExpression("x = y = 0") as AssignmentExpression;
expect(expression.leftHandSide, isSimpleIdentifier);
expect(expression.rightHandSide, isAssignmentExpression);
}
void test_assignmentExpression_indexExpression() {
- AssignmentExpression expression = parseExpression("x[1] = 0");
+ var expression = parseExpression("x[1] = 0") as AssignmentExpression;
expect(expression.leftHandSide, isIndexExpression);
expect(expression.rightHandSide, isIntegerLiteral);
}
void test_assignmentExpression_prefixedIdentifier() {
- AssignmentExpression expression = parseExpression("x.y = 0");
+ var expression = parseExpression("x.y = 0") as AssignmentExpression;
expect(expression.leftHandSide, isPrefixedIdentifier);
expect(expression.rightHandSide, isIntegerLiteral);
}
void test_assignmentExpression_propertyAccess() {
- AssignmentExpression expression = parseExpression("super.y = 0");
+ var expression = parseExpression("super.y = 0") as AssignmentExpression;
expect(expression.leftHandSide, isPropertyAccess);
expect(expression.rightHandSide, isIntegerLiteral);
}
@@ -128,69 +128,86 @@
expect(rhs.name, 'y');
}
+ void test_binary_operator_written_out_expression_logical() {
+ var expression = parseExpression('x > 0 and y > 1', errors: [
+ expectedError(ParserErrorCode.BINARY_OPERATOR_WRITTEN_OUT, 6, 3),
+ ]) as BinaryExpression;
+ var lhs = expression.leftOperand as BinaryExpression;
+ expect((lhs.leftOperand as SimpleIdentifier).name, 'x');
+ expect(lhs.operator.lexeme, '>');
+ expect((lhs.rightOperand as IntegerLiteral).value, 0);
+
+ expect(expression.operator.lexeme, '&&');
+
+ var rhs = expression.rightOperand as BinaryExpression;
+ expect((rhs.leftOperand as SimpleIdentifier).name, 'y');
+ expect(rhs.operator.lexeme, '>');
+ expect((rhs.rightOperand as IntegerLiteral).value, 1);
+ }
+
void test_bitwiseAndExpression_normal() {
- BinaryExpression expression = parseExpression("x & y & z");
+ var expression = parseExpression("x & y & z") as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
void test_bitwiseAndExpression_precedence_equality_left() {
- BinaryExpression expression = parseExpression("x == y && z");
+ var expression = parseExpression("x == y && z") as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
void test_bitwiseAndExpression_precedence_equality_right() {
- BinaryExpression expression = parseExpression("x && y == z");
+ var expression = parseExpression("x && y == z") as BinaryExpression;
expect(expression.rightOperand, isBinaryExpression);
}
void test_bitwiseAndExpression_super() {
- BinaryExpression expression = parseExpression("super & y & z");
+ var expression = parseExpression("super & y & z") as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
void test_bitwiseOrExpression_normal() {
- BinaryExpression expression = parseExpression("x | y | z");
+ var expression = parseExpression("x | y | z") as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
void test_bitwiseOrExpression_precedence_xor_left() {
- BinaryExpression expression = parseExpression("x ^ y | z");
+ var expression = parseExpression("x ^ y | z") as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
void test_bitwiseOrExpression_precedence_xor_right() {
- BinaryExpression expression = parseExpression("x | y ^ z");
+ var expression = parseExpression("x | y ^ z") as BinaryExpression;
expect(expression.rightOperand, isBinaryExpression);
}
void test_bitwiseOrExpression_super() {
- BinaryExpression expression = parseExpression("super | y | z");
+ var expression = parseExpression("super | y | z") as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
void test_bitwiseXorExpression_normal() {
- BinaryExpression expression = parseExpression("x ^ y ^ z");
+ var expression = parseExpression("x ^ y ^ z") as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
void test_bitwiseXorExpression_precedence_and_left() {
- BinaryExpression expression = parseExpression("x & y ^ z");
+ var expression = parseExpression("x & y ^ z") as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
void test_bitwiseXorExpression_precedence_and_right() {
- BinaryExpression expression = parseExpression("x ^ y & z");
+ var expression = parseExpression("x ^ y & z") as BinaryExpression;
expect(expression.rightOperand, isBinaryExpression);
}
void test_bitwiseXorExpression_super() {
- BinaryExpression expression = parseExpression("super ^ y ^ z");
+ var expression = parseExpression("super ^ y ^ z") as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
void test_cascade_withAssignment() {
- CascadeExpression cascade =
- parseExpression("new Map()..[3] = 4 ..[0] = 11");
+ var cascade =
+ parseExpression("new Map()..[3] = 4 ..[0] = 11") as CascadeExpression;
Expression target = cascade.target;
for (Expression section in cascade.cascadeSections) {
expect(section, isAssignmentExpression);
@@ -203,18 +220,19 @@
}
void test_conditionalExpression_precedence_ifNullExpression() {
- ConditionalExpression expression = parseExpression('a ?? b ? y : z');
+ var expression = parseExpression('a ?? b ? y : z') as ConditionalExpression;
expect(expression.condition, isBinaryExpression);
}
void test_conditionalExpression_precedence_logicalOrExpression() {
- ConditionalExpression expression = parseExpression("a | b ? y : z");
+ var expression = parseExpression("a | b ? y : z") as ConditionalExpression;
expect(expression.condition, isBinaryExpression);
}
void test_conditionalExpression_precedence_nullableType_as() {
- ExpressionStatement statement = parseStatement('x as bool ? (x + y) : z;');
- ConditionalExpression expression = statement.expression;
+ var statement =
+ parseStatement('x as bool ? (x + y) : z;') as ExpressionStatement;
+ var expression = statement.expression as ConditionalExpression;
Expression condition = expression.condition;
expect(condition, isAsExpression);
Expression thenExpression = expression.thenExpression;
@@ -229,7 +247,7 @@
var expression = statement.expression as ConditionalExpression;
var asExpression = expression.condition as AsExpression;
var type = asExpression.type as TypeName;
- expect(type.question.lexeme, '?');
+ expect(type.question!.lexeme, '?');
Expression thenExpression = expression.thenExpression;
expect(thenExpression, isParenthesizedExpression);
Expression elseExpression = expression.elseExpression;
@@ -244,7 +262,7 @@
var condition = expression.condition as ParenthesizedExpression;
var asExpression = condition.expression as AsExpression;
var type = asExpression.type as TypeName;
- expect(type.question.lexeme, '?');
+ expect(type.question!.lexeme, '?');
Expression thenExpression = expression.thenExpression;
expect(thenExpression, isParenthesizedExpression);
Expression elseExpression = expression.elseExpression;
@@ -253,9 +271,9 @@
}
void test_conditionalExpression_precedence_nullableType_is() {
- ExpressionStatement statement =
- parseStatement('x is String ? (x + y) : z;');
- ConditionalExpression expression = statement.expression;
+ var statement =
+ parseStatement('x is String ? (x + y) : z;') as ExpressionStatement;
+ var expression = statement.expression as ConditionalExpression;
Expression condition = expression.condition;
expect(condition, isIsExpression);
Expression thenExpression = expression.thenExpression;
@@ -270,7 +288,7 @@
var expression = statement.expression as ConditionalExpression;
var isExpression = expression.condition as IsExpression;
var type = isExpression.type as TypeName;
- expect(type.question.lexeme, '?');
+ expect(type.question!.lexeme, '?');
Expression thenExpression = expression.thenExpression;
expect(thenExpression, isParenthesizedExpression);
Expression elseExpression = expression.elseExpression;
@@ -285,7 +303,7 @@
var condition = expression.condition as ParenthesizedExpression;
var isExpression = condition.expression as IsExpression;
var type = isExpression.type as TypeName;
- expect(type.question.lexeme, '?');
+ expect(type.question!.lexeme, '?');
Expression thenExpression = expression.thenExpression;
expect(thenExpression, isParenthesizedExpression);
Expression elseExpression = expression.elseExpression;
@@ -294,9 +312,9 @@
}
void test_conditionalExpression_precedence_nullableTypeWithTypeArg1_is() {
- ExpressionStatement statement =
- parseStatement('x is String<S> ? (x + y) : z;');
- ConditionalExpression expression = statement.expression;
+ var statement =
+ parseStatement('x is String<S> ? (x + y) : z;') as ExpressionStatement;
+ var expression = statement.expression as ConditionalExpression;
Expression condition = expression.condition;
expect(condition, TypeMatcher<IsExpression>());
Expression thenExpression = expression.thenExpression;
@@ -306,9 +324,9 @@
}
void test_conditionalExpression_precedence_nullableTypeWithTypeArg1GFT_is() {
- ExpressionStatement statement =
- parseStatement('x is String<S> Function() ? (x + y) : z;');
- ConditionalExpression expression = statement.expression;
+ var statement = parseStatement('x is String<S> Function() ? (x + y) : z;')
+ as ExpressionStatement;
+ var expression = statement.expression as ConditionalExpression;
Expression condition = expression.condition;
expect(condition, TypeMatcher<IsExpression>());
Expression thenExpression = expression.thenExpression;
@@ -318,9 +336,9 @@
}
void test_conditionalExpression_precedence_nullableTypeWithTypeArg2_is() {
- ExpressionStatement statement =
- parseStatement('x is String<S,T> ? (x + y) : z;');
- ConditionalExpression expression = statement.expression;
+ var statement = parseStatement('x is String<S,T> ? (x + y) : z;')
+ as ExpressionStatement;
+ var expression = statement.expression as ConditionalExpression;
Expression condition = expression.condition;
expect(condition, TypeMatcher<IsExpression>());
Expression thenExpression = expression.thenExpression;
@@ -330,10 +348,11 @@
}
void test_conditionalExpression_precedence_prefixedNullableType_is() {
- ExpressionStatement statement = parseStatement('x is p.A ? (x + y) : z;');
- ConditionalExpression expression = statement.expression;
+ var statement =
+ parseStatement('x is p.A ? (x + y) : z;') as ExpressionStatement;
+ var expression = statement.expression as ConditionalExpression;
- Expression condition = expression.condition;
+ var condition = expression.condition;
expect(condition, TypeMatcher<IsExpression>());
Expression thenExpression = expression.thenExpression;
expect(thenExpression, TypeMatcher<ParenthesizedExpression>());
@@ -342,29 +361,31 @@
}
void test_conditionalExpression_precedence_withAssignment() {
- ExpressionStatement statement = parseStatement('b ? c = true : g();');
- ConditionalExpression expression = statement.expression;
+ var statement =
+ parseStatement('b ? c = true : g();') as ExpressionStatement;
+ var expression = statement.expression as ConditionalExpression;
expect(expression.condition, TypeMatcher<SimpleIdentifier>());
expect(expression.thenExpression, TypeMatcher<AssignmentExpression>());
}
void test_conditionalExpression_precedence_withAssignment2() {
- ExpressionStatement statement = parseStatement('b.x ? c = true : g();');
- ConditionalExpression expression = statement.expression;
+ var statement =
+ parseStatement('b.x ? c = true : g();') as ExpressionStatement;
+ var expression = statement.expression as ConditionalExpression;
expect(expression.condition, TypeMatcher<PrefixedIdentifier>());
expect(expression.thenExpression, TypeMatcher<AssignmentExpression>());
}
void test_conditionalExpression_prefixedValue() {
- ExpressionStatement statement = parseStatement('a.b ? y : z;');
- ConditionalExpression expression = statement.expression;
+ var statement = parseStatement('a.b ? y : z;') as ExpressionStatement;
+ var expression = statement.expression as ConditionalExpression;
expect(expression.condition, TypeMatcher<PrefixedIdentifier>());
expect(expression.thenExpression, TypeMatcher<SimpleIdentifier>());
}
void test_conditionalExpression_prefixedValue2() {
- ExpressionStatement statement = parseStatement('a.b ? x.y : z;');
- ConditionalExpression expression = statement.expression;
+ var statement = parseStatement('a.b ? x.y : z;') as ExpressionStatement;
+ var expression = statement.expression as ConditionalExpression;
expect(expression.condition, TypeMatcher<PrefixedIdentifier>());
expect(expression.thenExpression, TypeMatcher<PrefixedIdentifier>());
}
@@ -381,151 +402,154 @@
}
void test_equalityExpression_normal() {
- BinaryExpression expression = parseExpression("x == y != z",
- codes: [ParserErrorCode.EQUALITY_CANNOT_BE_EQUALITY_OPERAND]);
+ var expression = parseExpression("x == y != z",
+ codes: [ParserErrorCode.EQUALITY_CANNOT_BE_EQUALITY_OPERAND])
+ as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
void test_equalityExpression_precedence_relational_left() {
- BinaryExpression expression = parseExpression("x is y == z");
+ var expression = parseExpression("x is y == z") as BinaryExpression;
expect(expression.leftOperand, isIsExpression);
}
void test_equalityExpression_precedence_relational_right() {
- BinaryExpression expression = parseExpression("x == y is z");
+ var expression = parseExpression("x == y is z") as BinaryExpression;
expect(expression.rightOperand, isIsExpression);
}
void test_equalityExpression_super() {
- BinaryExpression expression = parseExpression("super == y != z",
- codes: [ParserErrorCode.EQUALITY_CANNOT_BE_EQUALITY_OPERAND]);
+ var expression = parseExpression("super == y != z",
+ codes: [ParserErrorCode.EQUALITY_CANNOT_BE_EQUALITY_OPERAND])
+ as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
void test_ifNullExpression() {
- BinaryExpression expression = parseExpression('x ?? y ?? z');
+ var expression = parseExpression('x ?? y ?? z') as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
void test_ifNullExpression_precedence_logicalOr_left() {
- BinaryExpression expression = parseExpression('x || y ?? z');
+ var expression = parseExpression('x || y ?? z') as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
void test_ifNullExpression_precedence_logicalOr_right() {
- BinaryExpression expression = parseExpression('x ?? y || z');
+ var expression = parseExpression('x ?? y || z') as BinaryExpression;
expect(expression.rightOperand, isBinaryExpression);
}
void test_logicalAndExpression() {
- BinaryExpression expression = parseExpression("x && y && z");
+ var expression = parseExpression("x && y && z") as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
void test_logicalAndExpression_precedence_bitwiseOr_left() {
- BinaryExpression expression = parseExpression("x | y < z");
+ var expression = parseExpression("x | y < z") as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
void test_logicalAndExpression_precedence_bitwiseOr_right() {
- BinaryExpression expression = parseExpression("x < y | z");
+ var expression = parseExpression("x < y | z") as BinaryExpression;
expect(expression.rightOperand, isBinaryExpression);
}
void test_logicalAndExpressionStatement() {
// Assert that `<` and `>` are not interpreted as type arguments.
- ExpressionStatement statement = parseStatement("C<T && T>U;");
- BinaryExpression expression = statement.expression;
+ var statement = parseStatement("C<T && T>U;") as ExpressionStatement;
+ var expression = statement.expression as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
void test_logicalOrExpression() {
- BinaryExpression expression = parseExpression("x || y || z");
+ var expression = parseExpression("x || y || z") as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
void test_logicalOrExpression_precedence_logicalAnd_left() {
- BinaryExpression expression = parseExpression("x && y || z");
+ var expression = parseExpression("x && y || z") as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
void test_logicalOrExpression_precedence_logicalAnd_right() {
- BinaryExpression expression = parseExpression("x || y && z");
+ var expression = parseExpression("x || y && z") as BinaryExpression;
expect(expression.rightOperand, isBinaryExpression);
}
void test_methodInvocation1() {
// Assert that `<` and `>` are not interpreted as type arguments.
- ExpressionStatement statement = parseStatement("f(a < b, c > 3);");
+ var statement = parseStatement("f(a < b, c > 3);") as ExpressionStatement;
assertNoErrors();
- MethodInvocation method = statement.expression;
+ var method = statement.expression as MethodInvocation;
expect(method.argumentList.arguments, hasLength(2));
}
void test_methodInvocation2() {
// Assert that `<` and `>` are not interpreted as type arguments.
- ExpressionStatement statement = parseStatement("f(a < b, c >> 3);");
+ var statement = parseStatement("f(a < b, c >> 3);") as ExpressionStatement;
assertNoErrors();
- MethodInvocation method = statement.expression;
+ var method = statement.expression as MethodInvocation;
expect(method.argumentList.arguments, hasLength(2));
}
void test_methodInvocation3() {
// Assert that `<` and `>` are not interpreted as type arguments.
- ExpressionStatement statement = parseStatement("f(a < b, c < d >> 3);");
+ var statement =
+ parseStatement("f(a < b, c < d >> 3);") as ExpressionStatement;
assertNoErrors();
- MethodInvocation method = statement.expression;
+ var method = statement.expression as MethodInvocation;
expect(method.argumentList.arguments, hasLength(2));
}
void test_multipleLabels_statement() {
- LabeledStatement statement = parseStatement("a: b: c: return x;");
+ var statement = parseStatement("a: b: c: return x;") as LabeledStatement;
expect(statement.labels, hasLength(3));
expect(statement.statement, isReturnStatement);
}
void test_multiplicativeExpression_normal() {
- BinaryExpression expression = parseExpression("x * y / z");
+ var expression = parseExpression("x * y / z") as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
void test_multiplicativeExpression_precedence_unary_left() {
- BinaryExpression expression = parseExpression("-x * y");
+ var expression = parseExpression("-x * y") as BinaryExpression;
expect(expression.leftOperand, isPrefixExpression);
}
void test_multiplicativeExpression_precedence_unary_right() {
- BinaryExpression expression = parseExpression("x * -y");
+ var expression = parseExpression("x * -y") as BinaryExpression;
expect(expression.rightOperand, isPrefixExpression);
}
void test_multiplicativeExpression_super() {
- BinaryExpression expression = parseExpression("super * y / z");
+ var expression = parseExpression("super * y / z") as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
void test_relationalExpression_precedence_shift_right() {
- IsExpression expression = parseExpression("x << y is z");
+ var expression = parseExpression("x << y is z") as IsExpression;
expect(expression.expression, isBinaryExpression);
}
void test_shiftExpression_normal() {
- BinaryExpression expression = parseExpression("x >> 4 << 3");
+ var expression = parseExpression("x >> 4 << 3") as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
void test_shiftExpression_precedence_additive_left() {
- BinaryExpression expression = parseExpression("x + y << z");
+ var expression = parseExpression("x + y << z") as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
void test_shiftExpression_precedence_additive_right() {
- BinaryExpression expression = parseExpression("x << y + z");
+ var expression = parseExpression("x << y + z") as BinaryExpression;
expect(expression.rightOperand, isBinaryExpression);
}
void test_shiftExpression_super() {
- BinaryExpression expression = parseExpression("super >> 4 << 3");
+ var expression = parseExpression("super >> 4 << 3") as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
@@ -541,12 +565,13 @@
void _validate_assignableExpression_arguments_normal_chain_typeArguments(
String code,
[List<ErrorCode> errorCodes = const <ErrorCode>[]]) {
- PropertyAccess propertyAccess1 = parseExpression(code, codes: errorCodes);
+ var propertyAccess1 =
+ parseExpression(code, codes: errorCodes) as PropertyAccess;
expect(propertyAccess1.propertyName.name, "f");
//
// a<E>(b)<F>(c).d<G>(e)
//
- MethodInvocation invocation2 = propertyAccess1.target;
+ var invocation2 = propertyAccess1.target as MethodInvocation;
expect(invocation2.methodName.name, "d");
expect(invocation2.typeArguments, isNotNull);
ArgumentList argumentList2 = invocation2.argumentList;
@@ -555,7 +580,7 @@
//
// a<E>(b)<F>(c)
//
- FunctionExpressionInvocation invocation3 = invocation2.target;
+ var invocation3 = invocation2.target as FunctionExpressionInvocation;
expect(invocation3.typeArguments, isNotNull);
ArgumentList argumentList3 = invocation3.argumentList;
expect(argumentList3, isNotNull);
@@ -563,7 +588,7 @@
//
// a(b)
//
- MethodInvocation invocation4 = invocation3.function;
+ var invocation4 = invocation3.function as MethodInvocation;
expect(invocation4.methodName.name, "a");
expect(invocation4.typeArguments, isNotNull);
ArgumentList argumentList4 = invocation4.argumentList;
diff --git a/pkg/analyzer/test/generated/constant_test.dart b/pkg/analyzer/test/generated/constant_test.dart
index 996f5cc..f350ad7 100644
--- a/pkg/analyzer/test/generated/constant_test.dart
+++ b/pkg/analyzer/test/generated/constant_test.dart
@@ -5,6 +5,7 @@
@deprecated
library analyzer.test.constant_test;
+import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/generated/constant.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -60,12 +61,11 @@
''',
);
expect(result.isValid, isTrue);
- DartObject value = result.value;
- expect(value, isNotNull);
+ DartObject value = result.value!;
assertType(value.type, 'Center');
- DartObject superclassFields = value.getField(GenericState.SUPERCLASS_FIELD);
- DartObject widthFactor = superclassFields.getField('widthFactor');
- expect(widthFactor, isNotNull);
+ DartObject superclassFields =
+ value.getField(GenericState.SUPERCLASS_FIELD)!;
+ DartObject widthFactor = superclassFields.getField('widthFactor')!;
expect(widthFactor.isNull, isTrue);
}
@@ -76,8 +76,7 @@
}
''');
expect(result.isValid, isTrue);
- DartObject value = result.value;
- expect(value, isNotNull);
+ DartObject value = result.value!;
assertType(value.type, 'C');
}
@@ -89,11 +88,9 @@
}
''');
expect(result.isValid, isTrue);
- DartObject value = result.value;
- expect(value, isNotNull);
+ DartObject value = result.value!;
assertType(value.type, 'C');
- DartObject x = value.getField('x');
- expect(x, isNotNull);
+ DartObject x = value.getField('x')!;
assertType(x.type, 'int');
expect(x.toIntValue(), 2);
}
@@ -104,8 +101,7 @@
context: 'class C {const C();}',
);
expect(result.isValid, isTrue);
- DartObject value = result.value;
- expect(value, isNotNull);
+ DartObject value = result.value!;
assertType(value.type, 'C');
}
@@ -115,7 +111,7 @@
context: 'class C {}',
);
expect(result.isValid, isFalse);
- DartObject value = result.value;
+ var value = result.value;
expect(value, isNull);
}
@@ -126,8 +122,7 @@
}
''');
expect(result.isValid, isTrue);
- DartObject value = result.value;
- expect(value, isNotNull);
+ DartObject value = result.value!;
assertType(value.type, 'C');
}
@@ -138,9 +133,9 @@
test_divide_double_double_byZero() async {
var result = await _getExpressionValue("3.2 / 0.0");
expect(result.isValid, isTrue);
- DartObject value = result.value;
+ DartObject value = result.value!;
assertType(value.type, "double");
- expect(value.toDoubleValue().isInfinite, isTrue);
+ expect(value.toDoubleValue()!.isInfinite, isTrue);
}
test_divide_int_int() async {
@@ -186,7 +181,7 @@
test_identifier_class() async {
var result = await _getExpressionValue("?");
expect(result.isValid, isTrue);
- DartObject value = result.value;
+ var value = result.value;
expect(value, null);
}
@@ -194,7 +189,7 @@
test_identifier_function() async {
var result = await _getExpressionValue("?");
expect(result.isValid, isTrue);
- DartObject value = result.value;
+ var value = result.value;
expect(value, null);
}
@@ -202,7 +197,7 @@
test_identifier_static() async {
var result = await _getExpressionValue("?");
expect(result.isValid, isTrue);
- DartObject value = result.value;
+ var value = result.value;
expect(value, null);
}
@@ -210,7 +205,7 @@
test_identifier_staticMethod() async {
var result = await _getExpressionValue("?");
expect(result.isValid, isTrue);
- DartObject value = result.value;
+ var value = result.value;
expect(value, null);
}
@@ -218,7 +213,7 @@
test_identifier_topLevel() async {
var result = await _getExpressionValue("?");
expect(result.isValid, isTrue);
- DartObject value = result.value;
+ var value = result.value;
expect(value, null);
}
@@ -226,7 +221,7 @@
test_identifier_typeParameter() async {
var result = await _getExpressionValue("?");
expect(result.isValid, isTrue);
- DartObject value = result.value;
+ var value = result.value;
expect(value, null);
}
@@ -268,14 +263,14 @@
"const {'a' : 'm', 'b' : 'n', 'c' : 'o'}",
);
expect(result.isValid, isTrue);
- Map<DartObject, DartObject> map = result.value.toMapValue();
- expect(map.keys.map((k) => k.toStringValue()), ['a', 'b', 'c']);
+ var map = result.value!.toMapValue()!;
+ expect(map.keys.map((k) => k!.toStringValue()), ['a', 'b', 'c']);
}
test_literal_null() async {
var result = await _getExpressionValue("null");
expect(result.isValid, isTrue);
- DartObject value = result.value;
+ DartObject value = result.value!;
expect(value.isNull, isTrue);
}
@@ -379,7 +374,7 @@
test_prefixedIdentifier_invalid() async {
var result = await _getExpressionValue("?");
expect(result.isValid, isTrue);
- DartObject value = result.value;
+ var value = result.value;
expect(value, null);
}
@@ -387,7 +382,7 @@
test_prefixedIdentifier_valid() async {
var result = await _getExpressionValue("?");
expect(result.isValid, isTrue);
- DartObject value = result.value;
+ var value = result.value;
expect(value, null);
}
@@ -395,7 +390,7 @@
test_propertyAccess_invalid() async {
var result = await _getExpressionValue("?");
expect(result.isValid, isTrue);
- DartObject value = result.value;
+ var value = result.value;
expect(value, null);
}
@@ -403,7 +398,7 @@
test_propertyAccess_valid() async {
var result = await _getExpressionValue("?");
expect(result.isValid, isTrue);
- DartObject value = result.value;
+ var value = result.value;
expect(value, null);
}
@@ -423,7 +418,7 @@
test_simpleIdentifier_invalid() async {
var result = await _getExpressionValue("?");
expect(result.isValid, isTrue);
- DartObject value = result.value;
+ var value = result.value;
expect(value, null);
}
@@ -431,7 +426,7 @@
test_simpleIdentifier_valid() async {
var result = await _getExpressionValue("?");
expect(result.isValid, isTrue);
- DartObject value = result.value;
+ var value = result.value;
expect(value, null);
}
@@ -461,7 +456,7 @@
Future<void> _assertValueBool(bool expectedValue, String contents) async {
var result = await _getExpressionValue(contents);
- DartObject value = result.value;
+ DartObject value = result.value!;
assertType(value.type, "bool");
expect(value.toBoolValue(), expectedValue);
}
@@ -469,7 +464,7 @@
Future<void> _assertValueDouble(double expectedValue, String contents) async {
var result = await _getExpressionValue(contents);
expect(result.isValid, isTrue);
- DartObject value = result.value;
+ DartObject value = result.value!;
assertType(value.type, "double");
expect(value.toDoubleValue(), expectedValue);
}
@@ -477,14 +472,14 @@
Future<void> _assertValueInt(int expectedValue, String contents) async {
var result = await _getExpressionValue(contents);
expect(result.isValid, isTrue);
- DartObject value = result.value;
+ DartObject value = result.value!;
assertType(value.type, "int");
expect(value.toIntValue(), expectedValue);
}
Future<void> _assertValueString(String expectedValue, String contents) async {
var result = await _getExpressionValue(contents);
- DartObject value = result.value;
+ DartObject value = result.value!;
assertType(value.type, 'String');
}
@@ -496,12 +491,12 @@
$context
''');
- var expression = findNode.variableDeclaration('x =').initializer;
+ var expression = findNode.variableDeclaration('x =').initializer!;
- var file = getFile(result.path);
+ var file = getFile(result.path!);
var evaluator = ConstantEvaluator(
file.createSource(result.uri),
- result.libraryElement,
+ result.libraryElement as LibraryElementImpl,
);
return evaluator.evaluate(expression);
diff --git a/pkg/analyzer/test/generated/element_resolver_test.dart b/pkg/analyzer/test/generated/element_resolver_test.dart
index 53e2e9a..31f410d 100644
--- a/pkg/analyzer/test/generated/element_resolver_test.dart
+++ b/pkg/analyzer/test/generated/element_resolver_test.dart
@@ -54,16 +54,12 @@
const A.named();
}
''');
- await _validateAnnotation('', '@A.named()', (SimpleIdentifier name1,
- SimpleIdentifier name2,
- SimpleIdentifier name3,
- Element annotationElement) {
- assert(name1 != null);
- assert(name2 != null);
- expect(name1.staticElement, isClassElement);
- expect(name1.staticElement.displayName, 'A');
- expect(name2.staticElement, isConstructorElement);
- expect(name2.staticElement.displayName, 'named');
+ await _validateAnnotation('', '@A.named()',
+ (name1, name2, name3, annotationElement) {
+ expect(name1!.staticElement, isClassElement);
+ expect(name1.staticElement!.displayName, 'A');
+ expect(name2!.staticElement, isConstructorElement);
+ expect(name2.staticElement!.displayName, 'named');
expect(name3, isNull);
if (annotationElement is ConstructorElement) {
expect(annotationElement, same(name2.staticElement));
@@ -72,7 +68,7 @@
expect(annotationElement.parameters, isEmpty);
} else {
fail('Expected "annotationElement" is ConstructorElement, '
- 'but (${annotationElement?.runtimeType}) $annotationElement found.');
+ 'but (${annotationElement.runtimeType}) $annotationElement found.');
}
});
}
@@ -83,19 +79,14 @@
const A.named();
}
''');
- await _validateAnnotation('as p', '@p.A.named()', (SimpleIdentifier name1,
- SimpleIdentifier name2,
- SimpleIdentifier name3,
- Element annotationElement) {
- assert(name1 != null);
- assert(name2 != null);
- assert(name3 != null);
- expect(name1.staticElement, isPrefixElement);
- expect(name1.staticElement.displayName, 'p');
- expect(name2.staticElement, isClassElement);
- expect(name2.staticElement.displayName, 'A');
- expect(name3.staticElement, isConstructorElement);
- expect(name3.staticElement.displayName, 'named');
+ await _validateAnnotation('as p', '@p.A.named()',
+ (name1, name2, name3, annotationElement) {
+ expect(name1!.staticElement, isPrefixElement);
+ expect(name1.staticElement!.displayName, 'p');
+ expect(name2!.staticElement, isClassElement);
+ expect(name2.staticElement!.displayName, 'A');
+ expect(name3!.staticElement, isConstructorElement);
+ expect(name3.staticElement!.displayName, 'named');
if (annotationElement is ConstructorElement) {
expect(annotationElement, same(name3.staticElement));
expect(annotationElement.enclosingElement, name2.staticElement);
@@ -103,7 +94,7 @@
expect(annotationElement.parameters, isEmpty);
} else {
fail('Expected "annotationElement" is ConstructorElement, '
- 'but (${annotationElement?.runtimeType}) $annotationElement found.');
+ 'but (${annotationElement.runtimeType}) $annotationElement found.');
}
});
}
@@ -114,26 +105,21 @@
static const V = 0;
}
''');
- await _validateAnnotation('as p', '@p.A.V', (SimpleIdentifier name1,
- SimpleIdentifier name2,
- SimpleIdentifier name3,
- Element annotationElement) {
- assert(name1 != null);
- assert(name2 != null);
- assert(name3 != null);
- expect(name1.staticElement, isPrefixElement);
- expect(name1.staticElement.displayName, 'p');
- expect(name2.staticElement, isClassElement);
- expect(name2.staticElement.displayName, 'A');
- expect(name3.staticElement, isPropertyAccessorElement);
- expect(name3.staticElement.displayName, 'V');
+ await _validateAnnotation('as p', '@p.A.V',
+ (name1, name2, name3, annotationElement) {
+ expect(name1!.staticElement, isPrefixElement);
+ expect(name1.staticElement!.displayName, 'p');
+ expect(name2!.staticElement, isClassElement);
+ expect(name2.staticElement!.displayName, 'A');
+ expect(name3!.staticElement, isPropertyAccessorElement);
+ expect(name3.staticElement!.displayName, 'V');
if (annotationElement is PropertyAccessorElement) {
expect(annotationElement, same(name3.staticElement));
expect(annotationElement.enclosingElement, name2.staticElement);
expect(annotationElement.displayName, 'V');
} else {
fail('Expected "annotationElement" is PropertyAccessorElement, '
- 'but (${annotationElement?.runtimeType}) $annotationElement found.');
+ 'but (${annotationElement.runtimeType}) $annotationElement found.');
}
});
}
@@ -144,16 +130,12 @@
const A();
}
''');
- await _validateAnnotation('as p', '@p.A', (SimpleIdentifier name1,
- SimpleIdentifier name2,
- SimpleIdentifier name3,
- Element annotationElement) {
- assert(name1 != null);
- assert(name2 != null);
- expect(name1.staticElement, isPrefixElement);
- expect(name1.staticElement.displayName, 'p');
- expect(name2.staticElement, isClassElement);
- expect(name2.staticElement.displayName, 'A');
+ await _validateAnnotation('as p', '@p.A',
+ (name1, name2, name3, annotationElement) {
+ expect(name1!.staticElement, isPrefixElement);
+ expect(name1.staticElement!.displayName, 'p');
+ expect(name2!.staticElement, isClassElement);
+ expect(name2.staticElement!.displayName, 'A');
expect(name3, isNull);
if (annotationElement is ConstructorElement) {
expect(annotationElement.enclosingElement, name2.staticElement);
@@ -161,7 +143,7 @@
expect(annotationElement.parameters, isEmpty);
} else {
fail('Expected "annotationElement" is ConstructorElement, '
- 'but (${annotationElement?.runtimeType}) $annotationElement found.');
+ 'but (${annotationElement.runtimeType}) $annotationElement found.');
}
});
}
@@ -172,16 +154,12 @@
static const V = 0;
}
''');
- await _validateAnnotation('', '@A.V', (SimpleIdentifier name1,
- SimpleIdentifier name2,
- SimpleIdentifier name3,
- Element annotationElement) {
- assert(name1 != null);
- assert(name2 != null);
- expect(name1.staticElement, isClassElement);
- expect(name1.staticElement.displayName, 'A');
- expect(name2.staticElement, isPropertyAccessorElement);
- expect(name2.staticElement.displayName, 'V');
+ await _validateAnnotation('', '@A.V',
+ (name1, name2, name3, annotationElement) {
+ expect(name1!.staticElement, isClassElement);
+ expect(name1.staticElement!.displayName, 'A');
+ expect(name2!.staticElement, isPropertyAccessorElement);
+ expect(name2.staticElement!.displayName, 'V');
expect(name3, isNull);
if (annotationElement is PropertyAccessorElement) {
expect(annotationElement, same(name2.staticElement));
@@ -189,7 +167,7 @@
expect(annotationElement.displayName, 'V');
} else {
fail('Expected "annotationElement" is PropertyAccessorElement, '
- 'but (${annotationElement?.runtimeType}) $annotationElement found.');
+ 'but (${annotationElement.runtimeType}) $annotationElement found.');
}
});
}
@@ -200,13 +178,10 @@
const A();
}
''');
- await _validateAnnotation('', '@A', (SimpleIdentifier name1,
- SimpleIdentifier name2,
- SimpleIdentifier name3,
- Element annotationElement) {
- assert(name1 != null);
- expect(name1.staticElement, isClassElement);
- expect(name1.staticElement.displayName, 'A');
+ await _validateAnnotation('', '@A',
+ (name1, name2, name3, annotationElement) {
+ expect(name1!.staticElement, isClassElement);
+ expect(name1.staticElement!.displayName, 'A');
expect(name2, isNull);
expect(name3, isNull);
if (annotationElement is ConstructorElement) {
@@ -215,7 +190,7 @@
expect(annotationElement.parameters, isEmpty);
} else {
fail('Expected "annotationElement" is ConstructorElement, '
- 'but (${annotationElement?.runtimeType}) $annotationElement found.');
+ 'but (${annotationElement.runtimeType}) $annotationElement found.');
}
});
}
@@ -224,13 +199,10 @@
newFile('$testPackageLibPath/a.dart', content: r'''
const V = 0;
''');
- await _validateAnnotation('', '@V', (SimpleIdentifier name1,
- SimpleIdentifier name2,
- SimpleIdentifier name3,
- Element annotationElement) {
- assert(name1 != null);
- expect(name1.staticElement, isPropertyAccessorElement);
- expect(name1.staticElement.displayName, 'V');
+ await _validateAnnotation('', '@V',
+ (name1, name2, name3, annotationElement) {
+ expect(name1!.staticElement, isPropertyAccessorElement);
+ expect(name1.staticElement!.displayName, 'V');
expect(name2, isNull);
expect(name3, isNull);
if (annotationElement is PropertyAccessorElement) {
@@ -239,7 +211,7 @@
expect(annotationElement.displayName, 'V');
} else {
fail('Expected "annotationElement" is PropertyAccessorElement, '
- 'but (${annotationElement?.runtimeType}) $annotationElement found.');
+ 'but (${annotationElement.runtimeType}) $annotationElement found.');
}
});
}
@@ -248,16 +220,12 @@
newFile('$testPackageLibPath/a.dart', content: r'''
const V = 0;
''');
- await _validateAnnotation('as p', '@p.V', (SimpleIdentifier name1,
- SimpleIdentifier name2,
- SimpleIdentifier name3,
- Element annotationElement) {
- assert(name1 != null);
- assert(name2 != null);
- expect(name1.staticElement, isPrefixElement);
- expect(name1.staticElement.displayName, 'p');
- expect(name2.staticElement, isPropertyAccessorElement);
- expect(name2.staticElement.displayName, 'V');
+ await _validateAnnotation('as p', '@p.V',
+ (name1, name2, name3, annotationElement) {
+ expect(name1!.staticElement, isPrefixElement);
+ expect(name1.staticElement!.displayName, 'p');
+ expect(name2!.staticElement, isPropertyAccessorElement);
+ expect(name2.staticElement!.displayName, 'V');
expect(name3, isNull);
if (annotationElement is PropertyAccessorElement) {
expect(annotationElement, same(name2.staticElement));
@@ -265,7 +233,7 @@
expect(annotationElement.displayName, 'V');
} else {
fail('Expected "annotationElement" is PropertyAccessorElement, '
- 'but (${annotationElement?.runtimeType}) $annotationElement found.');
+ 'but (${annotationElement.runtimeType}) $annotationElement found.');
}
});
}
@@ -273,8 +241,8 @@
Future<void> _validateAnnotation(
String annotationPrefix,
String annotationText,
- Function(SimpleIdentifier name1, SimpleIdentifier name2,
- SimpleIdentifier name3, Element annotationElement)
+ Function(SimpleIdentifier? name, SimpleIdentifier? name2,
+ SimpleIdentifier? name3, Element annotationElement)
validator) async {
await resolveTestCode('''
import 'a.dart' $annotationPrefix;
@@ -284,14 +252,14 @@
var clazz = findNode.classDeclaration('C');
Annotation annotation = clazz.metadata.single;
Identifier name = annotation.name;
- Element annotationElement = annotation.element;
+ Element annotationElement = annotation.element!;
if (name is SimpleIdentifier) {
validator(name, null, annotation.constructorName, annotationElement);
} else if (name is PrefixedIdentifier) {
validator(name.prefix, name.identifier, annotation.constructorName,
annotationElement);
} else {
- fail('Uknown "name": ${name?.runtimeType} $name');
+ fail('Uknown "name": ${name.runtimeType} $name');
}
}
}
@@ -299,19 +267,19 @@
@reflectiveTest
class ElementResolverTest with ResourceProviderMixin, ElementsTypesMixin {
/// The error listener to which errors will be reported.
- /*late*/ GatheringErrorListener _listener;
+ late GatheringErrorListener _listener;
/// The type provider used to access the types.
- /*late*/ TypeProvider _typeProvider;
+ late TypeProvider _typeProvider;
/// The library containing the code being resolved.
- /*late*/ LibraryElementImpl _definingLibrary;
+ late LibraryElementImpl _definingLibrary;
/// The resolver visitor that maintains the state for the resolver.
- /*late*/ ResolverVisitor _visitor;
+ late ResolverVisitor _visitor;
/// The resolver being used to resolve the test cases.
- /*late*/ ElementResolver _resolver;
+ late ElementResolver _resolver;
@override
TypeProvider get typeProvider => _typeProvider;
@@ -320,7 +288,7 @@
_fail("Not yet tested");
// Need to set up the exported library so that the identifier can be
// resolved.
- ExportDirective directive = AstTestFactory.exportDirective2(null, [
+ ExportDirective directive = AstTestFactory.exportDirective2('dart:math', [
AstTestFactory.hideCombinator2(["A"])
]);
_resolveNode(directive);
@@ -336,7 +304,8 @@
_fail("Not yet tested");
// Need to set up the imported library so that the identifier can be
// resolved.
- ImportDirective directive = AstTestFactory.importDirective3(null, null, [
+ ImportDirective directive =
+ AstTestFactory.importDirective3('dart:math', null, [
AstTestFactory.showCombinator2(["A"])
]);
_resolveNode(directive);
@@ -349,10 +318,11 @@
// resolved.
String prefixName = "p";
_definingLibrary.imports = <ImportElement>[
- ElementFactory.importFor(null, ElementFactory.prefix(prefixName))
+ ElementFactory.importFor(
+ _LibraryElementMock(), ElementFactory.prefix(prefixName))
];
ImportDirective directive =
- AstTestFactory.importDirective3(null, prefixName, [
+ AstTestFactory.importDirective3('dart:math', prefixName, [
AstTestFactory.showCombinator2(["A"]),
AstTestFactory.hideCombinator2(["B"])
]);
@@ -370,6 +340,7 @@
_createResolver();
}
+ @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/44522')
test_visitBreakStatement_withLabel() async {
// loop: while (true) {
// break loop;
@@ -392,6 +363,7 @@
_listener.assertNoErrors();
}
+ @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/44522')
test_visitCommentReference_prefixedIdentifier_class_getter() async {
ClassElementImpl classA = ElementFactory.classElement2("A");
// set accessors
@@ -402,7 +374,7 @@
ElementFactory.setterElement(propName, false, _typeProvider.intType);
classA.accessors = <PropertyAccessorElement>[getter, setter];
// set name scope
- _visitor.nameScope = LocalScope(null)..add(classA);
+ _visitor.nameScope = LocalScope(_RootScopeMock.instance)..add(classA);
// prepare "A.p"
PrefixedIdentifier prefixed = AstTestFactory.identifier5('A', 'p');
CommentReference commentReference =
@@ -414,6 +386,7 @@
_listener.assertNoErrors();
}
+ @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/44522')
test_visitCommentReference_prefixedIdentifier_class_method() async {
ClassElementImpl classA = ElementFactory.classElement2("A");
// set method
@@ -421,7 +394,7 @@
ElementFactory.methodElement("m", _typeProvider.intType);
classA.methods = <MethodElement>[method];
// set name scope
- _visitor.nameScope = LocalScope(null)..add(classA);
+ _visitor.nameScope = LocalScope(_RootScopeMock.instance)..add(classA);
// prepare "A.m"
PrefixedIdentifier prefixed = AstTestFactory.identifier5('A', 'm');
CommentReference commentReference =
@@ -433,6 +406,7 @@
_listener.assertNoErrors();
}
+ @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/44522')
test_visitCommentReference_prefixedIdentifier_class_operator() async {
ClassElementImpl classA = ElementFactory.classElement2("A");
// set method
@@ -440,7 +414,7 @@
ElementFactory.methodElement("==", _typeProvider.boolType);
classA.methods = <MethodElement>[method];
// set name scope
- _visitor.nameScope = LocalScope(null)..add(classA);
+ _visitor.nameScope = LocalScope(_RootScopeMock.instance)..add(classA);
// prepare "A.=="
PrefixedIdentifier prefixed = AstTestFactory.identifier5('A', '==');
CommentReference commentReference =
@@ -469,7 +443,7 @@
test_visitConstructorName_unnamed() async {
ClassElementImpl classA = ElementFactory.classElement2("A");
_encloseElement(classA);
- String constructorName;
+ String constructorName = 'named';
ConstructorElement constructor =
ElementFactory.constructorElement2(classA, constructorName);
classA.constructors = <ConstructorElement>[constructor];
@@ -480,6 +454,7 @@
_listener.assertNoErrors();
}
+ @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/44522')
test_visitContinueStatement_withLabel() async {
// loop: while (true) {
// continue loop;
@@ -503,8 +478,9 @@
_listener.assertNoErrors();
}
+ @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/44522')
test_visitExportDirective_noCombinators() async {
- ExportDirective directive = AstTestFactory.exportDirective2(null);
+ ExportDirective directive = AstTestFactory.exportDirective2('dart:math');
directive.element = ElementFactory.exportFor(
ElementFactory.library(_definingLibrary.context, "lib"));
_resolveNode(directive);
@@ -526,17 +502,20 @@
parameterElement.type = intType;
parameter.identifier.staticElement = parameterElement;
_resolveInClass(parameter, classA);
- expect(parameter.declaredElement.type, same(intType));
+ expect(parameter.declaredElement!.type, same(intType));
}
+ @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/44522')
test_visitImportDirective_noCombinators_noPrefix() async {
- ImportDirective directive = AstTestFactory.importDirective3(null, null);
+ ImportDirective directive =
+ AstTestFactory.importDirective3('dart:math', null);
directive.element = ElementFactory.importFor(
ElementFactory.library(_definingLibrary.context, "lib"), null);
_resolveNode(directive);
_listener.assertNoErrors();
}
+ @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/44522')
test_visitImportDirective_noCombinators_prefix() async {
String prefixName = "p";
ImportElement importElement = ElementFactory.importFor(
@@ -544,16 +523,17 @@
ElementFactory.prefix(prefixName));
_definingLibrary.imports = <ImportElement>[importElement];
ImportDirective directive =
- AstTestFactory.importDirective3(null, prefixName);
+ AstTestFactory.importDirective3('dart:math', prefixName);
directive.element = importElement;
_resolveNode(directive);
_listener.assertNoErrors();
}
+ @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/44522')
test_visitImportDirective_withCombinators() async {
ShowCombinator combinator = AstTestFactory.showCombinator2(["A", "B", "C"]);
ImportDirective directive =
- AstTestFactory.importDirective3(null, null, [combinator]);
+ AstTestFactory.importDirective3('dart:math', null, [combinator]);
LibraryElementImpl library =
ElementFactory.library(_definingLibrary.context, "lib");
TopLevelVariableElementImpl varA =
@@ -565,10 +545,10 @@
CompilationUnitElementImpl unit =
library.definingCompilationUnit as CompilationUnitElementImpl;
unit.accessors = <PropertyAccessorElement>[
- varA.getter,
- varA.setter,
- varB.getter,
- varC.setter
+ varA.getter!,
+ varA.setter!,
+ varB.getter!,
+ varC.setter!
];
unit.topLevelVariables = <TopLevelVariableElement>[varA, varB, varC];
directive.element = ElementFactory.importFor(library, null);
@@ -596,7 +576,7 @@
test_visitInstanceCreationExpression_unnamed() async {
ClassElementImpl classA = ElementFactory.classElement2("A");
- String constructorName;
+ String constructorName = 'named';
ConstructorElement constructor =
ElementFactory.constructorElement2(classA, constructorName);
classA.constructors = <ConstructorElement>[constructor];
@@ -611,7 +591,7 @@
test_visitInstanceCreationExpression_unnamed_namedParameter() async {
ClassElementImpl classA = ElementFactory.classElement2("A");
- String constructorName;
+ String constructorName = 'named';
ConstructorElementImpl constructor =
ElementFactory.constructorElement2(classA, constructorName);
String parameterName = "a";
@@ -644,7 +624,7 @@
MethodInvocation invocation =
AstTestFactory.methodInvocation(left, methodName);
_resolveNode(invocation);
- expect(invocation.methodName.staticElement.declaration,
+ expect(invocation.methodName.staticElement!.declaration,
same(numType.getMethod(methodName)));
_listener.assertNoErrors();
}
@@ -679,7 +659,8 @@
SuperConstructorInvocation invocation =
AstTestFactory.superConstructorInvocation();
AstTestFactory.classDeclaration(null, 'C', null, null, null, null, [
- AstTestFactory.constructorDeclaration(null, 'C', null, [invocation])
+ AstTestFactory.constructorDeclaration(AstTestFactory.identifier3('C'),
+ null, AstTestFactory.formalParameterList(), [invocation])
]);
_resolveInClass(invocation, subclass);
expect(invocation.staticElement, superConstructor);
@@ -706,7 +687,8 @@
AstTestFactory.namedExpression2(parameterName, AstTestFactory.integer(0))
]);
AstTestFactory.classDeclaration(null, 'C', null, null, null, null, [
- AstTestFactory.constructorDeclaration(null, 'C', null, [invocation])
+ AstTestFactory.constructorDeclaration(AstTestFactory.identifier3('C'),
+ null, AstTestFactory.formalParameterList(), [invocation])
]);
_resolveInClass(invocation, subclass);
expect(invocation.staticElement, superConstructor);
@@ -752,10 +734,10 @@
/// resolver has resolved it. [labelElement] is the label element to be
/// defined in the statement's label scope, and [labelTarget] is the statement
/// the label resolves to.
- Element _resolveBreak(BreakStatement statement, LabelElementImpl labelElement,
- Statement labelTarget) {
+ Element? _resolveBreak(BreakStatement statement,
+ LabelElementImpl labelElement, Statement labelTarget) {
_resolveStatement(statement, labelElement, labelTarget);
- return statement.label.staticElement;
+ return statement.label!.staticElement;
}
/// Return the element associated with the label [statement] after the
@@ -767,10 +749,10 @@
/// @param labelElement the label element to be defined in the statement's
/// label scope
/// @return the element to which the statement's label was resolved
- Element _resolveContinue(ContinueStatement statement,
+ Element? _resolveContinue(ContinueStatement statement,
LabelElementImpl labelElement, AstNode labelTarget) {
_resolveStatement(statement, labelElement, labelTarget);
- return statement.label.staticElement;
+ return statement.label!.staticElement;
}
/// Return the element associated with the given identifier after the resolver
@@ -803,7 +785,7 @@
/// @param definedElements the elements that are to be defined in the scope in
/// which the element is being resolved
/// @return the element to which the expression was resolved
- void _resolveNode(AstNode node, [List<Element> definedElements]) {
+ void _resolveNode(AstNode node, [List<Element>? definedElements]) {
Scope outerScope = _visitor.nameScope;
try {
var innerScope = LocalScope(outerScope);
@@ -826,16 +808,16 @@
/// @param labelElement the label element to be defined in the statement's
/// label scope
/// @return the element to which the statement's label was resolved
- void _resolveStatement(
- Statement statement, LabelElementImpl labelElement, AstNode labelTarget) {
- LabelScope outerScope = _visitor.labelScope;
+ void _resolveStatement(Statement statement, LabelElementImpl? labelElement,
+ AstNode? labelTarget) {
+ LabelScope? outerScope = _visitor.labelScope;
try {
- LabelScope innerScope;
+ LabelScope? innerScope;
if (labelElement == null) {
innerScope = outerScope;
} else {
innerScope = LabelScope(
- outerScope, labelElement.name, labelTarget, labelElement);
+ outerScope, labelElement.name, labelTarget!, labelElement);
}
_visitor.labelScope = innerScope;
statement.accept(_resolver);
@@ -844,3 +826,15 @@
}
}
}
+
+class _LibraryElementMock implements LibraryElement {
+ @override
+ noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
+}
+
+class _RootScopeMock implements Scope {
+ static final Scope instance = _RootScopeMock();
+
+ @override
+ noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
+}
diff --git a/pkg/analyzer/test/generated/elements_types_mixin.dart b/pkg/analyzer/test/generated/elements_types_mixin.dart
index becf671..68e092a 100644
--- a/pkg/analyzer/test/generated/elements_types_mixin.dart
+++ b/pkg/analyzer/test/generated/elements_types_mixin.dart
@@ -16,7 +16,6 @@
import 'package:analyzer/src/generated/engine.dart';
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/generated/utilities_dart.dart';
-import 'package:meta/meta.dart';
mixin ElementsTypesMixin {
InterfaceType get boolNone {
@@ -149,23 +148,23 @@
return interfaceTypeStar(element);
}
- LibraryElementImpl get testLibrary => null;
+ LibraryElementImpl get testLibrary => throw UnimplementedError();
- TypeProvider /*!*/ get typeProvider;
+ TypeProvider get typeProvider;
VoidTypeImpl get voidNone => VoidTypeImpl.instance;
ClassElementImpl class_({
- @required String name,
+ required String name,
bool isAbstract = false,
- InterfaceType superType,
+ InterfaceType? superType,
List<TypeParameterElement> typeParameters = const [],
List<InterfaceType> interfaces = const [],
List<InterfaceType> mixins = const [],
List<MethodElement> methods = const [],
}) {
var element = ClassElementImpl(name, 0);
- element.enclosingElement = testLibrary;
+ element.enclosingElement = testLibrary.definingCompilationUnit;
element.typeParameters = typeParameters;
element.supertype = superType ?? typeProvider.objectType;
element.interfaces = interfaces;
@@ -176,7 +175,7 @@
InterfaceType comparableNone(DartType type) {
var coreLibrary = typeProvider.intElement.library;
- var element = coreLibrary.getType('Comparable');
+ var element = coreLibrary.getType('Comparable')!;
return element.instantiate(
typeArguments: [type],
nullabilitySuffix: NullabilitySuffix.none,
@@ -185,7 +184,7 @@
InterfaceType comparableQuestion(DartType type) {
var coreLibrary = typeProvider.intElement.library;
- var element = coreLibrary.getType('Comparable');
+ var element = coreLibrary.getType('Comparable')!;
return element.instantiate(
typeArguments: [type],
nullabilitySuffix: NullabilitySuffix.question,
@@ -194,7 +193,7 @@
InterfaceType comparableStar(DartType type) {
var coreLibrary = typeProvider.intElement.library;
- var element = coreLibrary.getType('Comparable');
+ var element = coreLibrary.getType('Comparable')!;
return element.instantiate(
typeArguments: [type],
nullabilitySuffix: NullabilitySuffix.star,
@@ -202,10 +201,10 @@
}
FunctionTypeImpl functionType({
- @required List<TypeParameterElement> typeFormals,
- @required List<ParameterElement> parameters,
- @required DartType returnType,
- @required NullabilitySuffix nullabilitySuffix,
+ required List<TypeParameterElement> typeFormals,
+ required List<ParameterElement> parameters,
+ required DartType returnType,
+ required NullabilitySuffix nullabilitySuffix,
}) {
return FunctionTypeImpl(
typeFormals: typeFormals,
@@ -218,7 +217,7 @@
FunctionTypeImpl functionTypeNone({
List<TypeParameterElement> typeFormals = const [],
List<ParameterElement> parameters = const [],
- @required DartType returnType,
+ required DartType returnType,
}) {
return functionType(
typeFormals: typeFormals,
@@ -231,7 +230,7 @@
FunctionTypeImpl functionTypeQuestion({
List<TypeParameterElement> typeFormals = const [],
List<ParameterElement> parameters = const [],
- @required DartType returnType,
+ required DartType returnType,
}) {
return functionType(
typeFormals: typeFormals,
@@ -244,7 +243,7 @@
FunctionTypeImpl functionTypeStar({
List<TypeParameterElement> typeFormals = const [],
List<ParameterElement> parameters = const [],
- @required DartType returnType,
+ required DartType returnType,
}) {
return functionType(
typeFormals: typeFormals,
@@ -301,22 +300,10 @@
return interfaceTypeStar(futureElement, typeArguments: [T]);
}
- GenericFunctionTypeElementImpl genericFunctionType({
- List<TypeParameterElement> typeParameters,
- List<ParameterElement> parameters,
- DartType returnType,
- }) {
- var result = GenericFunctionTypeElementImpl.forOffset(0);
- result.typeParameters = typeParameters;
- result.parameters = parameters;
- result.returnType = returnType ?? typeProvider.voidType;
- return result;
- }
-
InterfaceType interfaceType(
ClassElement element, {
List<DartType> typeArguments = const [],
- @required NullabilitySuffix nullabilitySuffix,
+ required NullabilitySuffix nullabilitySuffix,
}) {
return element.instantiate(
typeArguments: typeArguments,
@@ -376,10 +363,10 @@
}
LibraryElementImpl library_({
- @required String uriStr,
- @required TypeSystemImpl typeSystem,
- @required AnalysisContext analysisContext,
- @required AnalysisSessionImpl analysisSession,
+ required String uriStr,
+ required TypeSystemImpl typeSystem,
+ required AnalysisContext analysisContext,
+ required AnalysisSessionImpl analysisSession,
}) {
var library = LibraryElementImpl(
analysisContext,
@@ -467,13 +454,13 @@
}
MixinElementImpl mixin_({
- @required String name,
+ required String name,
List<TypeParameterElement> typeParameters = const [],
- List<InterfaceType> constraints,
+ List<InterfaceType>? constraints,
List<InterfaceType> interfaces = const [],
}) {
var element = MixinElementImpl(name, 0);
- element.enclosingElement = testLibrary;
+ element.enclosingElement = testLibrary.definingCompilationUnit;
element.typeParameters = typeParameters;
element.superclassConstraints = constraints ?? [typeProvider.objectType];
element.interfaces = interfaces;
@@ -482,8 +469,8 @@
}
ParameterElement namedParameter({
- @required String name,
- @required DartType type,
+ required String name,
+ required DartType type,
bool isCovariant = false,
}) {
var parameter = ParameterElementImpl(name, 0);
@@ -494,8 +481,8 @@
}
ParameterElement namedRequiredParameter({
- @required String name,
- @required DartType type,
+ required String name,
+ required DartType type,
bool isCovariant = false,
}) {
var parameter = ParameterElementImpl(name, 0);
@@ -506,8 +493,8 @@
}
ParameterElement positionalParameter({
- String name,
- @required DartType type,
+ String? name,
+ required DartType type,
bool isCovariant = false,
}) {
var parameter = ParameterElementImpl(name ?? '', 0);
@@ -518,9 +505,9 @@
}
TypeParameterTypeImpl promotedTypeParameterType({
- @required TypeParameterElement element,
- @required NullabilitySuffix nullabilitySuffix,
- @required DartType promotedBound,
+ required TypeParameterElement element,
+ required NullabilitySuffix nullabilitySuffix,
+ required DartType promotedBound,
}) {
return TypeParameterTypeImpl(
element: element,
@@ -563,8 +550,8 @@
}
ParameterElement requiredParameter({
- String name,
- @required DartType type,
+ String? name,
+ required DartType type,
bool isCovariant = false,
}) {
var parameter = ParameterElementImpl(name ?? '', 0);
@@ -575,18 +562,19 @@
}
TypeAliasElementImpl typeAlias({
- @required String name,
- @required List<TypeParameterElement> typeParameters,
- @required DartType aliasedType,
+ required String name,
+ required List<TypeParameterElement> typeParameters,
+ required DartType aliasedType,
}) {
var element = TypeAliasElementImpl(name, 0);
+ element.enclosingElement = testLibrary.definingCompilationUnit;
element.typeParameters = typeParameters;
element.aliasedType = aliasedType;
return element;
}
TypeParameterElementImpl typeParameter(String name,
- {DartType bound, Variance variance}) {
+ {DartType? bound, Variance? variance}) {
var element = TypeParameterElementImpl.synthetic(name);
element.bound = bound;
element.variance = variance;
@@ -595,8 +583,8 @@
TypeParameterTypeImpl typeParameterType(
TypeParameterElement element, {
- @required NullabilitySuffix nullabilitySuffix,
- DartType promotedBound,
+ required NullabilitySuffix nullabilitySuffix,
+ DartType? promotedBound,
}) {
return TypeParameterTypeImpl(
element: element,
@@ -607,7 +595,7 @@
TypeParameterTypeImpl typeParameterTypeNone(
TypeParameterElement element, {
- DartType promotedBound,
+ DartType? promotedBound,
}) {
return typeParameterType(
element,
@@ -618,7 +606,7 @@
TypeParameterTypeImpl typeParameterTypeQuestion(
TypeParameterElement element, {
- DartType promotedBound,
+ DartType? promotedBound,
}) {
return typeParameterType(
element,
@@ -629,7 +617,7 @@
TypeParameterTypeImpl typeParameterTypeStar(
TypeParameterElement element, {
- DartType promotedBound,
+ DartType? promotedBound,
}) {
return typeParameterType(
element,
diff --git a/pkg/analyzer/test/generated/error_parser_test.dart b/pkg/analyzer/test/generated/error_parser_test.dart
index 73f8f5f..235f297 100644
--- a/pkg/analyzer/test/generated/error_parser_test.dart
+++ b/pkg/analyzer/test/generated/error_parser_test.dart
@@ -139,32 +139,33 @@
}
void test_breakOutsideOfLoop_breakInDoStatement() {
- DoStatement statement = parseStatement('do {break;} while (x);');
+ var statement = parseStatement('do {break;} while (x);') as DoStatement;
expectNotNullIfNoErrors(statement);
assertNoErrors();
}
void test_breakOutsideOfLoop_breakInForStatement() {
- Statement statement = parseStatement('for (; x;) {break;}');
+ var statement = parseStatement('for (; x;) {break;}');
expectNotNullIfNoErrors(statement);
assertNoErrors();
}
void test_breakOutsideOfLoop_breakInIfStatement() {
- IfStatement statement = parseStatement('if (x) {break;}');
+ var statement = parseStatement('if (x) {break;}') as IfStatement;
expectNotNullIfNoErrors(statement);
listener.assertErrors(
[expectedError(ParserErrorCode.BREAK_OUTSIDE_OF_LOOP, 8, 5)]);
}
void test_breakOutsideOfLoop_breakInSwitchStatement() {
- SwitchStatement statement = parseStatement('switch (x) {case 1: break;}');
+ var statement =
+ parseStatement('switch (x) {case 1: break;}') as SwitchStatement;
expectNotNullIfNoErrors(statement);
assertNoErrors();
}
void test_breakOutsideOfLoop_breakInWhileStatement() {
- WhileStatement statement = parseStatement('while (x) {break;}');
+ var statement = parseStatement('while (x) {break;}') as WhileStatement;
expectNotNullIfNoErrors(statement);
assertNoErrors();
}
@@ -427,33 +428,33 @@
}
void test_continueOutsideOfLoop_continueInDoStatement() {
- DoStatement statement = parseStatement('do {continue;} while (x);');
+ var statement = parseStatement('do {continue;} while (x);') as DoStatement;
expectNotNullIfNoErrors(statement);
assertNoErrors();
}
void test_continueOutsideOfLoop_continueInForStatement() {
- Statement statement = parseStatement('for (; x;) {continue;}');
+ var statement = parseStatement('for (; x;) {continue;}');
expectNotNullIfNoErrors(statement);
assertNoErrors();
}
void test_continueOutsideOfLoop_continueInIfStatement() {
- IfStatement statement = parseStatement('if (x) {continue;}');
+ var statement = parseStatement('if (x) {continue;}') as IfStatement;
expectNotNullIfNoErrors(statement);
listener.assertErrors(
[expectedError(ParserErrorCode.CONTINUE_OUTSIDE_OF_LOOP, 8, 8)]);
}
void test_continueOutsideOfLoop_continueInSwitchStatement() {
- SwitchStatement statement =
- parseStatement('switch (x) {case 1: continue a;}');
+ var statement =
+ parseStatement('switch (x) {case 1: continue a;}') as SwitchStatement;
expectNotNullIfNoErrors(statement);
assertNoErrors();
}
void test_continueOutsideOfLoop_continueInWhileStatement() {
- WhileStatement statement = parseStatement('while (x) {continue;}');
+ var statement = parseStatement('while (x) {continue;}') as WhileStatement;
expectNotNullIfNoErrors(statement);
assertNoErrors();
}
@@ -469,23 +470,24 @@
}
void test_continueWithoutLabelInCase_error() {
- SwitchStatement statement =
- parseStatement('switch (x) {case 1: continue;}');
+ var statement =
+ parseStatement('switch (x) {case 1: continue;}') as SwitchStatement;
expectNotNullIfNoErrors(statement);
listener.assertErrors(
[expectedError(ParserErrorCode.CONTINUE_WITHOUT_LABEL_IN_CASE, 20, 8)]);
}
void test_continueWithoutLabelInCase_noError() {
- SwitchStatement statement =
- parseStatement('switch (x) {case 1: continue a;}');
+ var statement =
+ parseStatement('switch (x) {case 1: continue a;}') as SwitchStatement;
expectNotNullIfNoErrors(statement);
assertNoErrors();
}
void test_continueWithoutLabelInCase_noError_switchInLoop() {
- WhileStatement statement =
- parseStatement('while (a) { switch (b) {default: continue;}}');
+ var statement =
+ parseStatement('while (a) { switch (b) {default: continue;}}')
+ as WhileStatement;
expectNotNullIfNoErrors(statement);
assertNoErrors();
}
@@ -523,7 +525,7 @@
void test_covariantConstructor() {
createParser('class C { covariant C(); }');
- ClassDeclaration member = parseFullCompilationUnitMember();
+ var member = parseFullCompilationUnitMember() as ClassDeclaration;
expectNotNullIfNoErrors(member);
listener
.assertErrors([expectedError(ParserErrorCode.COVARIANT_MEMBER, 10, 9)]);
@@ -555,7 +557,7 @@
void test_covariantTopLevelDeclaration_class() {
createParser('covariant class C {}');
- ClassDeclaration member = parseFullCompilationUnitMember();
+ var member = parseFullCompilationUnitMember() as ClassDeclaration;
expectNotNullIfNoErrors(member);
listener.assertErrors(
[expectedError(ParserErrorCode.COVARIANT_TOP_LEVEL_DECLARATION, 0, 9)]);
@@ -563,7 +565,7 @@
void test_covariantTopLevelDeclaration_enum() {
createParser('covariant enum E { v }');
- EnumDeclaration member = parseFullCompilationUnitMember();
+ var member = parseFullCompilationUnitMember() as EnumDeclaration;
expectNotNullIfNoErrors(member);
listener.assertErrors(
[expectedError(ParserErrorCode.COVARIANT_TOP_LEVEL_DECLARATION, 0, 9)]);
@@ -674,8 +676,9 @@
}
void test_duplicateLabelInSwitchStatement() {
- SwitchStatement statement =
- parseStatement('switch (e) {l1: case 0: break; l1: case 1: break;}');
+ var statement =
+ parseStatement('switch (e) {l1: case 0: break; l1: case 1: break;}')
+ as SwitchStatement;
expectNotNullIfNoErrors(statement);
listener.assertErrors([
expectedError(ParserErrorCode.DUPLICATE_LABEL_IN_SWITCH_STATEMENT, 31, 2)
@@ -684,7 +687,7 @@
void test_emptyEnumBody() {
createParser('enum E {}');
- EnumDeclaration declaration = parseFullCompilationUnitMember();
+ var declaration = parseFullCompilationUnitMember() as EnumDeclaration;
expectNotNullIfNoErrors(declaration);
// TODO(brianwilkerson) Convert codes to errors when highlighting is fixed.
listener.assertErrorsWithCodes([ParserErrorCode.EMPTY_ENUM_BODY]);
@@ -726,7 +729,7 @@
}
void test_expectedCaseOrDefault() {
- SwitchStatement statement = parseStatement('switch (e) {break;}');
+ var statement = parseStatement('switch (e) {break;}') as SwitchStatement;
expectNotNullIfNoErrors(statement);
listener
.assertErrors([expectedError(ParserErrorCode.EXPECTED_TOKEN, 12, 5)]);
@@ -804,8 +807,9 @@
}
void test_expectedInterpolationIdentifier() {
- StringLiteral literal = parseExpression("'\$x\$'",
- errors: [expectedError(ScannerErrorCode.MISSING_IDENTIFIER, 4, 1)]);
+ var literal = parseExpression("'\$x\$'",
+ errors: [expectedError(ScannerErrorCode.MISSING_IDENTIFIER, 4, 1)])
+ as StringLiteral;
expectNotNullIfNoErrors(literal);
}
@@ -813,8 +817,9 @@
// The scanner inserts an empty string token between the two $'s; we need to
// make sure that the MISSING_IDENTIFIER error that is generated has a
// nonzero width so that it will show up in the editor UI.
- StringLiteral literal = parseExpression("'\$\$foo'",
- errors: [expectedError(ScannerErrorCode.MISSING_IDENTIFIER, 2, 1)]);
+ var literal = parseExpression("'\$\$foo'",
+ errors: [expectedError(ScannerErrorCode.MISSING_IDENTIFIER, 2, 1)])
+ as StringLiteral;
expectNotNullIfNoErrors(literal);
}
@@ -1292,7 +1297,7 @@
parseStatement("get x { return _x; }", expectedEndOffset: 4);
// Fasta considers `get` to be an identifier in this situation.
// TODO(danrubel): Investigate better recovery.
- ExpressionStatement statement = result;
+ var statement = result as ExpressionStatement;
listener
.assertErrors([expectedError(ParserErrorCode.EXPECTED_TOKEN, 0, 3)]);
expect(statement.expression.toSource(), 'get');
@@ -1411,7 +1416,7 @@
}
void test_initializedVariableInForEach() {
- Statement statement = parseStatement('for (int a = 0 in foo) {}');
+ var statement = parseStatement('for (int a = 0 in foo) {}');
expectNotNullIfNoErrors(statement);
listener.assertErrors([
expectedError(ParserErrorCode.INITIALIZED_VARIABLE_IN_FOR_EACH, 11, 1)
@@ -1419,7 +1424,7 @@
}
void test_initializedVariableInForEach_annotation() {
- Statement statement = parseStatement('for (@Foo var a = 0 in foo) {}');
+ var statement = parseStatement('for (@Foo var a = 0 in foo) {}');
expectNotNullIfNoErrors(statement);
listener.assertErrors([
expectedError(ParserErrorCode.INITIALIZED_VARIABLE_IN_FOR_EACH, 16, 1)
@@ -1427,7 +1432,7 @@
}
void test_initializedVariableInForEach_localFunction() {
- Statement statement = parseStatement('for (f()) {}');
+ var statement = parseStatement('for (f()) {}');
expectNotNullIfNoErrors(statement);
listener.assertErrors([
expectedError(ParserErrorCode.EXPECTED_TOKEN, 7, 1),
@@ -1437,7 +1442,7 @@
}
void test_initializedVariableInForEach_localFunction2() {
- Statement statement = parseStatement('for (T f()) {}');
+ var statement = parseStatement('for (T f()) {}');
expectNotNullIfNoErrors(statement);
listener.assertErrors([
expectedError(ParserErrorCode.EXPECTED_TOKEN, 7, 1),
@@ -1447,7 +1452,7 @@
}
void test_initializedVariableInForEach_var() {
- Statement statement = parseStatement('for (var a = 0 in foo) {}');
+ var statement = parseStatement('for (var a = 0 in foo) {}');
expectNotNullIfNoErrors(statement);
listener.assertErrors([
expectedError(ParserErrorCode.INITIALIZED_VARIABLE_IN_FOR_EACH, 11, 1)
@@ -1455,15 +1460,16 @@
}
void test_invalidAwaitInFor() {
- Statement statement = parseStatement('await for (; ;) {}');
+ var statement = parseStatement('await for (; ;) {}');
expectNotNullIfNoErrors(statement);
listener.assertErrors(
[expectedError(ParserErrorCode.INVALID_AWAIT_IN_FOR, 0, 5)]);
}
void test_invalidCodePoint() {
- StringLiteral literal = parseExpression("'begin \\u{110000}'",
- errors: [expectedError(ParserErrorCode.INVALID_CODE_POINT, 7, 9)]);
+ var literal = parseExpression("'begin \\u{110000}'",
+ errors: [expectedError(ParserErrorCode.INVALID_CODE_POINT, 7, 9)])
+ as StringLiteral;
expectNotNullIfNoErrors(literal);
}
@@ -1471,7 +1477,7 @@
void test_invalidCommentReference__new_nonIdentifier() {
// This test fails because the method parseCommentReference returns null.
createParser('');
- CommentReference reference = parseCommentReference('new 42', 0);
+ var reference = parseCommentReference('new 42', 0) as CommentReference;
expectNotNullIfNoErrors(reference);
listener.assertErrors(
[expectedError(ParserErrorCode.INVALID_COMMENT_REFERENCE, 0, 6)]);
@@ -1480,7 +1486,7 @@
@failingTest
void test_invalidCommentReference__new_tooMuch() {
createParser('');
- CommentReference reference = parseCommentReference('new a.b.c.d', 0);
+ var reference = parseCommentReference('new a.b.c.d', 0) as CommentReference;
expectNotNullIfNoErrors(reference);
listener.assertErrors(
[expectedError(ParserErrorCode.INVALID_COMMENT_REFERENCE, 0, 11)]);
@@ -1490,7 +1496,7 @@
void test_invalidCommentReference__nonNew_nonIdentifier() {
// This test fails because the method parseCommentReference returns null.
createParser('');
- CommentReference reference = parseCommentReference('42', 0);
+ var reference = parseCommentReference('42', 0) as CommentReference;
expectNotNullIfNoErrors(reference);
listener.assertErrors(
[expectedError(ParserErrorCode.INVALID_COMMENT_REFERENCE, 0, 2)]);
@@ -1499,7 +1505,7 @@
@failingTest
void test_invalidCommentReference__nonNew_tooMuch() {
createParser('');
- CommentReference reference = parseCommentReference('a.b.c.d', 0);
+ var reference = parseCommentReference('a.b.c.d', 0) as CommentReference;
expectNotNullIfNoErrors(reference);
listener.assertErrors(
[expectedError(ParserErrorCode.INVALID_COMMENT_REFERENCE, 0, 7)]);
@@ -1541,14 +1547,16 @@
}
void test_invalidHexEscape_invalidDigit() {
- StringLiteral literal = parseExpression("'not \\x0 a'",
- errors: [expectedError(ParserErrorCode.INVALID_HEX_ESCAPE, 5, 3)]);
+ var literal = parseExpression("'not \\x0 a'",
+ errors: [expectedError(ParserErrorCode.INVALID_HEX_ESCAPE, 5, 3)])
+ as StringLiteral;
expectNotNullIfNoErrors(literal);
}
void test_invalidHexEscape_tooFewDigits() {
- StringLiteral literal = parseExpression("'\\x0'",
- errors: [expectedError(ParserErrorCode.INVALID_HEX_ESCAPE, 1, 3)]);
+ var literal = parseExpression("'\\x0'",
+ errors: [expectedError(ParserErrorCode.INVALID_HEX_ESCAPE, 1, 3)])
+ as StringLiteral;
expectNotNullIfNoErrors(literal);
}
@@ -1572,8 +1580,9 @@
}
void test_invalidInterpolationIdentifier_startWithDigit() {
- StringLiteral literal = parseExpression("'\$1'",
- errors: [expectedError(ScannerErrorCode.MISSING_IDENTIFIER, 2, 1)]);
+ var literal = parseExpression("'\$1'",
+ errors: [expectedError(ScannerErrorCode.MISSING_IDENTIFIER, 2, 1)])
+ as StringLiteral;
expectNotNullIfNoErrors(literal);
}
@@ -1755,12 +1764,12 @@
CompilationUnit unit =
parseCompilationUnit("class C { m() { @Foo f() {} } }");
expect(unit.declarations, hasLength(1));
- ClassDeclaration declaration = unit.declarations[0];
+ var declaration = unit.declarations[0] as ClassDeclaration;
expect(declaration.members, hasLength(1));
- MethodDeclaration member = declaration.members[0];
- BlockFunctionBody body = member.body;
+ var member = declaration.members[0] as MethodDeclaration;
+ var body = member.body as BlockFunctionBody;
expect(body.block.statements, hasLength(1));
- FunctionDeclarationStatement statement = body.block.statements[0];
+ var statement = body.block.statements[0] as FunctionDeclarationStatement;
expect(statement.functionDeclaration.metadata, hasLength(1));
Annotation metadata = statement.functionDeclaration.metadata[0];
expect(metadata.name.name, 'Foo');
@@ -1796,7 +1805,7 @@
listener
.assertErrors([expectedError(ParserErrorCode.EXPECTED_TOKEN, 7, 7)]);
expect(member, isMethodDeclaration);
- MethodDeclaration method = member;
+ var method = member as MethodDeclaration;
expect(method.parameters.toString(), '(E)',
reason: 'parser recovers what it can');
}
@@ -1808,7 +1817,7 @@
listener
.assertErrors([expectedError(ParserErrorCode.EXPECTED_TOKEN, 10, 5)]);
expect(member, isMethodDeclaration);
- MethodDeclaration method = member;
+ var method = member as MethodDeclaration;
expect(method.typeParameters.toString(), '<E, hello>',
reason: 'parser recovers what it can');
}
@@ -1853,12 +1862,12 @@
CompilationUnit unit = parseCompilationUnit('main() {super;}', errors: [
expectedError(ParserErrorCode.MISSING_ASSIGNABLE_SELECTOR, 8, 5)
]);
- FunctionDeclaration declaration = unit.declarations.first;
- BlockFunctionBody blockBody = declaration.functionExpression.body;
- ExpressionStatement statement = blockBody.block.statements.first;
- Expression expression = statement.expression;
+ var declaration = unit.declarations.first as FunctionDeclaration;
+ var blockBody = declaration.functionExpression.body as BlockFunctionBody;
+ var statement = blockBody.block.statements.first as ExpressionStatement;
+ var expression = statement.expression;
expect(expression, isSuperExpression);
- SuperExpression superExpression = expression;
+ var superExpression = expression as SuperExpression;
expect(superExpression.superKeyword, isNotNull);
}
@@ -1867,7 +1876,7 @@
}
void test_missingCatchOrFinally() {
- TryStatement statement = parseStatement('try {}');
+ var statement = parseStatement('try {}') as TryStatement;
expectNotNullIfNoErrors(statement);
listener.assertErrors(
[expectedError(ParserErrorCode.MISSING_CATCH_OR_FINALLY, 0, 3)]);
@@ -1897,7 +1906,7 @@
void test_missingEnumBody() {
createParser('enum E;', expectedEndOffset: 6);
- EnumDeclaration declaration = parseFullCompilationUnitMember();
+ var declaration = parseFullCompilationUnitMember() as EnumDeclaration;
expectNotNullIfNoErrors(declaration);
listener
.assertErrors([expectedError(ParserErrorCode.MISSING_ENUM_BODY, 6, 1)]);
@@ -1905,15 +1914,15 @@
void test_missingEnumComma() {
createParser('enum E {one two}');
- EnumDeclaration declaration = parseFullCompilationUnitMember();
+ var declaration = parseFullCompilationUnitMember() as EnumDeclaration;
expectNotNullIfNoErrors(declaration);
listener
.assertErrors([expectedError(ParserErrorCode.EXPECTED_TOKEN, 12, 3)]);
}
void test_missingExpressionInThrow() {
- ThrowExpression expression =
- (parseStatement('throw;') as ExpressionStatement).expression;
+ var expression = (parseStatement('throw;') as ExpressionStatement)
+ .expression as ThrowExpression;
expectNotNullIfNoErrors(expression);
listener.assertErrors(
[expectedError(ParserErrorCode.MISSING_EXPRESSION_IN_THROW, 5, 1)]);
@@ -1983,7 +1992,7 @@
CompilationUnit unit = parseCompilationUnit("void f { return x;}", errors: [
expectedError(ParserErrorCode.MISSING_FUNCTION_PARAMETERS, 5, 1)
]);
- FunctionDeclaration funct = unit.declarations[0];
+ var funct = unit.declarations[0] as FunctionDeclaration;
expect(funct.functionExpression.parameters, hasLength(0));
}
@@ -1991,13 +2000,13 @@
CompilationUnit unit = parseCompilationUnit("void f => x;", errors: [
expectedError(ParserErrorCode.MISSING_FUNCTION_PARAMETERS, 5, 1)
]);
- FunctionDeclaration funct = unit.declarations[0];
+ var funct = unit.declarations[0] as FunctionDeclaration;
expect(funct.functionExpression.parameters, hasLength(0));
}
void test_missingIdentifier_afterOperator() {
createParser('1 *');
- BinaryExpression expression = parser.parseMultiplicativeExpression();
+ var expression = parser.parseMultiplicativeExpression() as BinaryExpression;
expectNotNullIfNoErrors(expression);
listener.assertErrors(
[expectedError(ParserErrorCode.MISSING_IDENTIFIER, 3, 0)]);
@@ -2015,7 +2024,7 @@
void test_missingIdentifier_inEnum() {
createParser('enum E {, TWO}');
- EnumDeclaration declaration = parseFullCompilationUnitMember();
+ var declaration = parseFullCompilationUnitMember() as EnumDeclaration;
expectNotNullIfNoErrors(declaration);
listener.assertErrors(
[expectedError(ParserErrorCode.MISSING_IDENTIFIER, 8, 1)]);
@@ -2061,7 +2070,7 @@
void test_missingKeywordOperator() {
createParser('+(x) {}');
- MethodDeclaration method = parser.parseClassMember('C');
+ var method = parser.parseClassMember('C') as MethodDeclaration;
expectNotNullIfNoErrors(method);
listener.assertErrors(
[expectedError(ParserErrorCode.MISSING_KEYWORD_OPERATOR, 0, 1)]);
@@ -2098,7 +2107,7 @@
listener.assertErrors(
[expectedError(ParserErrorCode.MISSING_METHOD_PARAMETERS, 5, 1)]);
expect(member, isMethodDeclaration);
- MethodDeclaration method = member;
+ var method = member as MethodDeclaration;
expect(method.parameters, hasLength(0));
}
@@ -2164,7 +2173,8 @@
void test_missingStartAfterSync() {
createParser('sync {}');
- FunctionBody functionBody = parser.parseFunctionBody(false, null, false);
+ FunctionBody functionBody = parser.parseFunctionBody(
+ false, ParserErrorCode.MISSING_FUNCTION_BODY, false);
expectNotNullIfNoErrors(functionBody);
listener.assertErrors(
[expectedError(ParserErrorCode.MISSING_STAR_AFTER_SYNC, 0, 4)]);
@@ -2220,7 +2230,7 @@
}
void test_missingVariableInForEach() {
- Statement statement = parseStatement('for (a < b in foo) {}');
+ var statement = parseStatement('for (a < b in foo) {}');
expectNotNullIfNoErrors(statement);
listener
.assertErrors([expectedError(ParserErrorCode.UNEXPECTED_TOKEN, 7, 1)]);
@@ -2288,7 +2298,7 @@
}
void test_multipleVariablesInForEach() {
- Statement statement = parseStatement('for (int a, b in foo) {}');
+ var statement = parseStatement('for (int a, b in foo) {}');
expectNotNullIfNoErrors(statement);
listener
.assertErrors([expectedError(ParserErrorCode.UNEXPECTED_TOKEN, 10, 1)]);
@@ -2388,7 +2398,7 @@
}
void test_parseCascadeSection_missingIdentifier() {
- MethodInvocation methodInvocation = parseCascadeSection('..()');
+ var methodInvocation = parseCascadeSection('..()') as MethodInvocation;
expectNotNullIfNoErrors(methodInvocation);
listener.assertErrors([
// Cascade section is preceded by `null` in this test
@@ -2402,7 +2412,7 @@
}
void test_parseCascadeSection_missingIdentifier_typeArguments() {
- MethodInvocation methodInvocation = parseCascadeSection('..<E>()');
+ var methodInvocation = parseCascadeSection('..<E>()') as MethodInvocation;
expectNotNullIfNoErrors(methodInvocation);
listener.assertErrors([
// Cascade section is preceded by `null` in this test
@@ -2599,23 +2609,25 @@
}
void test_switchCase_missingColon() {
- SwitchStatement statement = parseStatement('switch (a) {case 1 return 0;}');
+ var statement =
+ parseStatement('switch (a) {case 1 return 0;}') as SwitchStatement;
expect(statement, isNotNull);
listener
.assertErrors([expectedError(ParserErrorCode.EXPECTED_TOKEN, 19, 6)]);
}
void test_switchDefault_missingColon() {
- SwitchStatement statement =
- parseStatement('switch (a) {default return 0;}');
+ var statement =
+ parseStatement('switch (a) {default return 0;}') as SwitchStatement;
expect(statement, isNotNull);
listener
.assertErrors([expectedError(ParserErrorCode.EXPECTED_TOKEN, 20, 6)]);
}
void test_switchHasCaseAfterDefaultCase() {
- SwitchStatement statement =
- parseStatement('switch (a) {default: return 0; case 1: return 1;}');
+ var statement =
+ parseStatement('switch (a) {default: return 0; case 1: return 1;}')
+ as SwitchStatement;
expectNotNullIfNoErrors(statement);
listener.assertErrors([
expectedError(ParserErrorCode.SWITCH_HAS_CASE_AFTER_DEFAULT_CASE, 31, 4)
@@ -2623,8 +2635,9 @@
}
void test_switchHasCaseAfterDefaultCase_repeated() {
- SwitchStatement statement = parseStatement(
- 'switch (a) {default: return 0; case 1: return 1; case 2: return 2;}');
+ var statement = parseStatement(
+ 'switch (a) {default: return 0; case 1: return 1; case 2: return 2;}')
+ as SwitchStatement;
expectNotNullIfNoErrors(statement);
listener.assertErrors([
expectedError(ParserErrorCode.SWITCH_HAS_CASE_AFTER_DEFAULT_CASE, 31, 4),
@@ -2633,8 +2646,9 @@
}
void test_switchHasMultipleDefaultCases() {
- SwitchStatement statement =
- parseStatement('switch (a) {default: return 0; default: return 1;}');
+ var statement =
+ parseStatement('switch (a) {default: return 0; default: return 1;}')
+ as SwitchStatement;
expectNotNullIfNoErrors(statement);
listener.assertErrors([
expectedError(ParserErrorCode.SWITCH_HAS_MULTIPLE_DEFAULT_CASES, 31, 7)
@@ -2642,8 +2656,9 @@
}
void test_switchHasMultipleDefaultCases_repeated() {
- SwitchStatement statement = parseStatement(
- 'switch (a) {default: return 0; default: return 1; default: return 2;}');
+ var statement = parseStatement(
+ 'switch (a) {default: return 0; default: return 1; default: return 2;}')
+ as SwitchStatement;
expectNotNullIfNoErrors(statement);
listener.assertErrors([
expectedError(ParserErrorCode.SWITCH_HAS_MULTIPLE_DEFAULT_CASES, 31, 7),
@@ -2652,8 +2667,8 @@
}
void test_switchMissingBlock() {
- SwitchStatement statement =
- parseStatement('switch (a) return;', expectedEndOffset: 11);
+ var statement = parseStatement('switch (a) return;', expectedEndOffset: 11)
+ as SwitchStatement;
expect(statement, isNotNull);
listener.assertErrors([expectedError(ParserErrorCode.EXPECTED_BODY, 9, 1)]);
}
@@ -2664,7 +2679,7 @@
expectNotNullIfNoErrors(member);
assertNoErrors();
expect(member, isFunctionDeclaration);
- FunctionDeclaration function = member;
+ var function = member as FunctionDeclaration;
expect(function.functionExpression.parameters, isNull);
}
@@ -2792,7 +2807,7 @@
void test_unexpectedToken_semicolonBetweenClassMembers() {
createParser('class C { int x; ; int y;}');
- ClassDeclaration declaration = parseFullCompilationUnitMember();
+ var declaration = parseFullCompilationUnitMember() as ClassDeclaration;
expectNotNullIfNoErrors(declaration);
listener.assertErrors(
[expectedError(ParserErrorCode.EXPECTED_CLASS_MEMBER, 17, 1)]);
@@ -2890,10 +2905,10 @@
expectNotNullIfNoErrors(expression);
listener.assertErrors(
[expectedError(ParserErrorCode.MISSING_IDENTIFIER, 0, 1)]);
- BinaryExpression binaryExpression = expression;
+ var binaryExpression = expression as BinaryExpression;
expect(binaryExpression.leftOperand.isSynthetic, isTrue);
expect(binaryExpression.rightOperand.isSynthetic, isFalse);
- SimpleIdentifier identifier = binaryExpression.rightOperand;
+ var identifier = binaryExpression.rightOperand as SimpleIdentifier;
expect(identifier.name, 'x');
}
@@ -2965,8 +2980,8 @@
}
void test_voidParameter() {
- NormalFormalParameter parameter =
- parseFormalParameterList('(void a)').parameters[0];
+ var parameter = parseFormalParameterList('(void a)').parameters[0]
+ as NormalFormalParameter;
expectNotNullIfNoErrors(parameter);
assertNoErrors();
}
@@ -3024,7 +3039,7 @@
void test_withWithoutExtends() {
createParser('class A with B, C {}');
- ClassDeclaration declaration = parseFullCompilationUnitMember();
+ var declaration = parseFullCompilationUnitMember() as ClassDeclaration;
expectNotNullIfNoErrors(declaration);
listener.assertNoErrors();
}
diff --git a/pkg/analyzer/test/generated/expression_parser_test.dart b/pkg/analyzer/test/generated/expression_parser_test.dart
index 567af1a..b721f79 100644
--- a/pkg/analyzer/test/generated/expression_parser_test.dart
+++ b/pkg/analyzer/test/generated/expression_parser_test.dart
@@ -670,7 +670,7 @@
expect(expression, isNotNull);
assertNoErrors();
expect(expression, isInstanceCreationExpression);
- InstanceCreationExpression instanceCreation = expression;
+ var instanceCreation = expression as InstanceCreationExpression;
expect(instanceCreation.keyword, isNotNull);
ConstructorName name = instanceCreation.constructorName;
expect(name, isNotNull);
@@ -806,8 +806,8 @@
Expression expression = parseExpression('() async {}');
var functionExpression = expression as FunctionExpression;
expect(functionExpression.body, isNotNull);
- expect(functionExpression.body.isAsynchronous, isTrue);
- expect(functionExpression.body.isGenerator, isFalse);
+ expect(functionExpression.body!.isAsynchronous, isTrue);
+ expect(functionExpression.body!.isGenerator, isFalse);
expect(functionExpression.parameters, isNotNull);
}
@@ -815,8 +815,8 @@
Expression expression = parseExpression('() async* {}');
var functionExpression = expression as FunctionExpression;
expect(functionExpression.body, isNotNull);
- expect(functionExpression.body.isAsynchronous, isTrue);
- expect(functionExpression.body.isGenerator, isTrue);
+ expect(functionExpression.body!.isAsynchronous, isTrue);
+ expect(functionExpression.body!.isGenerator, isTrue);
expect(functionExpression.parameters, isNotNull);
}
@@ -824,8 +824,8 @@
Expression expression = parseExpression('() {}');
var functionExpression = expression as FunctionExpression;
expect(functionExpression.body, isNotNull);
- expect(functionExpression.body.isAsynchronous, isFalse);
- expect(functionExpression.body.isGenerator, isFalse);
+ expect(functionExpression.body!.isAsynchronous, isFalse);
+ expect(functionExpression.body!.isGenerator, isFalse);
expect(functionExpression.parameters, isNotNull);
}
@@ -833,8 +833,8 @@
Expression expression = parseExpression('() sync* {}');
var functionExpression = expression as FunctionExpression;
expect(functionExpression.body, isNotNull);
- expect(functionExpression.body.isAsynchronous, isFalse);
- expect(functionExpression.body.isGenerator, isTrue);
+ expect(functionExpression.body!.isAsynchronous, isFalse);
+ expect(functionExpression.body!.isGenerator, isTrue);
expect(functionExpression.parameters, isNotNull);
}
@@ -863,20 +863,20 @@
void test_parseExpression_sendWithTypeParam_afterIndex() {
final unit = parseCompilationUnit('main() { factories[C]<num, int>(); }');
expect(unit.declarations, hasLength(1));
- FunctionDeclaration mainMethod = unit.declarations[0];
- BlockFunctionBody body = mainMethod.functionExpression.body;
+ var mainMethod = unit.declarations[0] as FunctionDeclaration;
+ var body = mainMethod.functionExpression.body as BlockFunctionBody;
NodeList<Statement> statements = body.block.statements;
expect(statements, hasLength(1));
- ExpressionStatement statement = statements[0];
- FunctionExpressionInvocation expression = statement.expression;
+ var statement = statements[0] as ExpressionStatement;
+ var expression = statement.expression as FunctionExpressionInvocation;
- IndexExpression function = expression.function;
- SimpleIdentifier target = function.target;
+ var function = expression.function as IndexExpression;
+ var target = function.target as SimpleIdentifier;
expect(target.name, 'factories');
- SimpleIdentifier index = function.index;
+ var index = function.index as SimpleIdentifier;
expect(index.name, 'C');
- NodeList<TypeAnnotation> typeArguments = expression.typeArguments.arguments;
+ List<TypeAnnotation> typeArguments = expression.typeArguments!.arguments;
expect(typeArguments, hasLength(2));
expect((typeArguments[0] as NamedType).name.name, 'num');
expect((typeArguments[1] as NamedType).name.name, 'int');
@@ -887,22 +887,22 @@
void test_parseExpression_sendWithTypeParam_afterSend() {
final unit = parseCompilationUnit('main() { factories(C)<num, int>(); }');
expect(unit.declarations, hasLength(1));
- FunctionDeclaration mainMethod = unit.declarations[0];
- BlockFunctionBody body = mainMethod.functionExpression.body;
+ var mainMethod = unit.declarations[0] as FunctionDeclaration;
+ var body = mainMethod.functionExpression.body as BlockFunctionBody;
NodeList<Statement> statements = body.block.statements;
expect(statements, hasLength(1));
- ExpressionStatement statement = statements[0];
- FunctionExpressionInvocation expression = statement.expression;
+ var statement = statements[0] as ExpressionStatement;
+ var expression = statement.expression as FunctionExpressionInvocation;
- MethodInvocation invocation = expression.function;
+ var invocation = expression.function as MethodInvocation;
expect(invocation.methodName.name, 'factories');
NodeList<Expression> invocationArguments =
invocation.argumentList.arguments;
expect(invocationArguments, hasLength(1));
- SimpleIdentifier index = invocationArguments[0];
+ var index = invocationArguments[0] as SimpleIdentifier;
expect(index.name, 'C');
- NodeList<TypeAnnotation> typeArguments = expression.typeArguments.arguments;
+ List<TypeAnnotation> typeArguments = expression.typeArguments!.arguments;
expect(typeArguments, hasLength(2));
expect((typeArguments[0] as NamedType).name.name, 'num');
expect((typeArguments[1] as NamedType).name.name, 'int');
@@ -931,7 +931,7 @@
void test_parseExpression_superMethodInvocation_typeArguments_chained() {
Expression expression = parseExpression('super.b.c<D>()');
MethodInvocation invocation = expression as MethodInvocation;
- Expression target = invocation.target;
+ var target = invocation.target as Expression;
expect(target, isPropertyAccess);
expect(invocation.methodName, isNotNull);
expect(invocation.methodName.name, 'c');
@@ -1024,8 +1024,8 @@
Expression expression = parseExpression('<test(' ', (){});>[0, 1, 2]',
codes: [ParserErrorCode.EXPECTED_TOKEN]);
expect(expression, isNotNull);
- ListLiteral literal = expression;
- expect(literal.typeArguments.arguments, hasLength(1));
+ var literal = expression as ListLiteral;
+ expect(literal.typeArguments!.arguments, hasLength(1));
}
void test_parseFunctionExpression_typeParameters() {
@@ -1044,7 +1044,7 @@
parseInstanceCreationExpression('A.B()', token);
expect(expression, isNotNull);
assertNoErrors();
- expect(expression.keyword.keyword, Keyword.NEW);
+ expect(expression.keyword!.keyword, Keyword.NEW);
ConstructorName name = expression.constructorName;
expect(name, isNotNull);
TypeName type = name.type;
@@ -1061,7 +1061,7 @@
parseInstanceCreationExpression('A.B.c()', token);
expect(expression, isNotNull);
assertNoErrors();
- expect(expression.keyword.keyword, Keyword.NEW);
+ expect(expression.keyword!.keyword, Keyword.NEW);
ConstructorName name = expression.constructorName;
expect(name, isNotNull);
TypeName type = name.type;
@@ -1079,12 +1079,12 @@
parseInstanceCreationExpression('A.B<E>.c()', token);
expect(expression, isNotNull);
assertNoErrors();
- expect(expression.keyword.keyword, Keyword.NEW);
+ expect(expression.keyword!.keyword, Keyword.NEW);
ConstructorName name = expression.constructorName;
expect(name, isNotNull);
TypeName type = name.type;
expect(type, isNotNull);
- expect(type.typeArguments.arguments, hasLength(1));
+ expect(type.typeArguments!.arguments, hasLength(1));
expect(name.period, isNotNull);
expect(name.name, isNotNull);
expect(expression.argumentList, isNotNull);
@@ -1096,12 +1096,12 @@
parseInstanceCreationExpression('A.B<E>()', token);
expect(expression, isNotNull);
assertNoErrors();
- expect(expression.keyword.keyword, Keyword.NEW);
+ expect(expression.keyword!.keyword, Keyword.NEW);
ConstructorName name = expression.constructorName;
expect(name, isNotNull);
TypeName type = name.type;
expect(type, isNotNull);
- expect(type.typeArguments.arguments, hasLength(1));
+ expect(type.typeArguments!.arguments, hasLength(1));
expect(name.period, isNull);
expect(name.name, isNull);
expect(expression.argumentList, isNotNull);
@@ -1113,7 +1113,7 @@
parseInstanceCreationExpression('A()', token);
expect(expression, isNotNull);
assertNoErrors();
- expect(expression.keyword.keyword, Keyword.NEW);
+ expect(expression.keyword!.keyword, Keyword.NEW);
ConstructorName name = expression.constructorName;
expect(name, isNotNull);
TypeName type = name.type;
@@ -1130,7 +1130,7 @@
parseInstanceCreationExpression('A.c()', token);
expect(expression, isNotNull);
assertNoErrors();
- expect(expression.keyword.keyword, Keyword.NEW);
+ expect(expression.keyword!.keyword, Keyword.NEW);
ConstructorName name = expression.constructorName;
expect(name, isNotNull);
TypeName type = name.type;
@@ -1143,16 +1143,16 @@
void test_parseInstanceCreationExpression_type_named_typeArguments() {
Token token = TokenFactory.tokenFromKeyword(Keyword.NEW);
- InstanceCreationExpressionImpl expression =
- parseInstanceCreationExpression('A<B>.c()', token);
+ var expression = parseInstanceCreationExpression('A<B>.c()', token)
+ as InstanceCreationExpressionImpl;
expect(expression, isNotNull);
assertNoErrors();
- expect(expression.keyword.keyword, Keyword.NEW);
+ expect(expression.keyword!.keyword, Keyword.NEW);
ConstructorName name = expression.constructorName;
expect(name, isNotNull);
TypeName type = name.type;
expect(type, isNotNull);
- expect(type.typeArguments.arguments, hasLength(1));
+ expect(type.typeArguments!.arguments, hasLength(1));
expect(name.period, isNotNull);
expect(name.name, isNotNull);
expect(expression.argumentList, isNotNull);
@@ -1160,13 +1160,12 @@
}
void test_parseInstanceCreationExpression_type_named_typeArguments_34403() {
- InstanceCreationExpressionImpl expression =
- parseExpression('new a.b.c<C>()', errors: [
+ var expression = parseExpression('new a.b.c<C>()', errors: [
expectedError(
CompileTimeErrorCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR, 8, 1)
- ]);
+ ]) as InstanceCreationExpressionImpl;
expect(expression, isNotNull);
- expect(expression.keyword.keyword, Keyword.NEW);
+ expect(expression.keyword!.keyword, Keyword.NEW);
ConstructorName name = expression.constructorName;
expect(name, isNotNull);
TypeName type = name.type;
@@ -1175,7 +1174,7 @@
expect(name.period, isNotNull);
expect(name.name, isNotNull);
expect(expression.argumentList, isNotNull);
- expect(expression.typeArguments.arguments, hasLength(1));
+ expect(expression.typeArguments!.arguments, hasLength(1));
}
void test_parseInstanceCreationExpression_type_typeArguments() {
@@ -1184,12 +1183,12 @@
parseInstanceCreationExpression('A<B>()', token);
expect(expression, isNotNull);
assertNoErrors();
- expect(expression.keyword.keyword, Keyword.NEW);
+ expect(expression.keyword!.keyword, Keyword.NEW);
ConstructorName name = expression.constructorName;
expect(name, isNotNull);
TypeName type = name.type;
expect(type, isNotNull);
- expect(type.typeArguments.arguments, hasLength(1));
+ expect(type.typeArguments!.arguments, hasLength(1));
expect(name.period, isNull);
expect(name.name, isNull);
expect(expression.argumentList, isNotNull);
@@ -1200,7 +1199,7 @@
ListLiteral literal = parseListLiteral(token, null, '[]');
expect(literal, isNotNull);
assertNoErrors();
- expect(literal.constKeyword.keyword, Keyword.CONST);
+ expect(literal.constKeyword!.keyword, Keyword.CONST);
expect(literal.typeArguments, isNull);
expect(literal.leftBracket, isNotNull);
expect(literal.elements, hasLength(0));
@@ -1225,7 +1224,7 @@
ListLiteral literal = parseListLiteral(token, null, '[ ]');
expect(literal, isNotNull);
assertNoErrors();
- expect(literal.constKeyword.keyword, Keyword.CONST);
+ expect(literal.constKeyword!.keyword, Keyword.CONST);
expect(literal.typeArguments, isNull);
expect(literal.leftBracket, isNotNull);
expect(literal.elements, hasLength(0));
@@ -1341,7 +1340,7 @@
SetOrMapLiteral literal = parseMapLiteral(token, '<String, int>', '{}');
expect(literal, isNotNull);
assertNoErrors();
- expect(literal.constKeyword.keyword, Keyword.CONST);
+ expect(literal.constKeyword!.keyword, Keyword.CONST);
expect(literal.typeArguments, isNotNull);
expect(literal.leftBracket, isNotNull);
expect(literal.elements, hasLength(0));
@@ -1473,7 +1472,7 @@
assertNoErrors();
var methodInvocation = expression as MethodInvocation;
expect(methodInvocation.target, isNotNull);
- expect(methodInvocation.operator.type, TokenType.PERIOD);
+ expect(methodInvocation.operator!.type, TokenType.PERIOD);
expect(methodInvocation.methodName, isNotNull);
expect(methodInvocation.typeArguments, isNull);
expect(methodInvocation.argumentList, isNotNull);
@@ -1485,7 +1484,7 @@
assertNoErrors();
var methodInvocation = expression as MethodInvocation;
expect(methodInvocation.target, isNotNull);
- expect(methodInvocation.operator.type, TokenType.QUESTION_PERIOD);
+ expect(methodInvocation.operator!.type, TokenType.QUESTION_PERIOD);
expect(methodInvocation.methodName, isNotNull);
expect(methodInvocation.typeArguments, isNull);
expect(methodInvocation.argumentList, isNotNull);
@@ -1498,7 +1497,7 @@
assertNoErrors();
var methodInvocation = expression as MethodInvocation;
expect(methodInvocation.target, isNotNull);
- expect(methodInvocation.operator.type, TokenType.QUESTION_PERIOD);
+ expect(methodInvocation.operator!.type, TokenType.QUESTION_PERIOD);
expect(methodInvocation.methodName, isNotNull);
expect(methodInvocation.typeArguments, isNotNull);
expect(methodInvocation.argumentList, isNotNull);
@@ -1510,7 +1509,7 @@
assertNoErrors();
var methodInvocation = expression as MethodInvocation;
expect(methodInvocation.target, isNotNull);
- expect(methodInvocation.operator.type, TokenType.PERIOD);
+ expect(methodInvocation.operator!.type, TokenType.PERIOD);
expect(methodInvocation.methodName, isNotNull);
expect(methodInvocation.typeArguments, isNotNull);
expect(methodInvocation.argumentList, isNotNull);
@@ -1649,7 +1648,7 @@
assertNoErrors();
var literal = expression as ListLiteral;
expect(literal.typeArguments, isNotNull);
- expect(literal.typeArguments.arguments, hasLength(1));
+ expect(literal.typeArguments!.arguments, hasLength(1));
}
void test_parsePrimaryExpression_mapLiteral() {
@@ -1667,7 +1666,7 @@
assertNoErrors();
var literal = expression as SetOrMapLiteral;
expect(literal.typeArguments, isNotNull);
- expect(literal.typeArguments.arguments, hasLength(2));
+ expect(literal.typeArguments!.arguments, hasLength(2));
}
void test_parsePrimaryExpression_new() {
@@ -1683,7 +1682,7 @@
expect(expression, isNotNull);
assertNoErrors();
expect(expression, isNullLiteral);
- NullLiteral literal = expression;
+ var literal = expression as NullLiteral;
expect(literal.literal, isNotNull);
}
@@ -1774,13 +1773,14 @@
}
void test_parseRelationalExpression_as_chained() {
- AsExpression asExpression = parseExpression('x as Y as Z',
- errors: [expectedError(ParserErrorCode.UNEXPECTED_TOKEN, 7, 2)]);
+ var asExpression = parseExpression('x as Y as Z',
+ errors: [expectedError(ParserErrorCode.UNEXPECTED_TOKEN, 7, 2)])
+ as AsExpression;
expect(asExpression, isNotNull);
- SimpleIdentifier identifier = asExpression.expression;
+ var identifier = asExpression.expression as SimpleIdentifier;
expect(identifier.name, 'x');
expect(asExpression.asOperator, isNotNull);
- TypeName typeName = asExpression.type;
+ var typeName = asExpression.type as TypeName;
expect(typeName.name.name, 'Y');
}
@@ -1847,13 +1847,14 @@
}
void test_parseRelationalExpression_is_chained() {
- IsExpression isExpression = parseExpression('x is Y is! Z',
- errors: [expectedError(ParserErrorCode.UNEXPECTED_TOKEN, 7, 2)]);
+ var isExpression = parseExpression('x is Y is! Z',
+ errors: [expectedError(ParserErrorCode.UNEXPECTED_TOKEN, 7, 2)])
+ as IsExpression;
expect(isExpression, isNotNull);
- SimpleIdentifier identifier = isExpression.expression;
+ var identifier = isExpression.expression as SimpleIdentifier;
expect(identifier.name, 'x');
expect(isExpression.isOperator, isNotNull);
- TypeName typeName = isExpression.type;
+ var typeName = isExpression.type as TypeName;
expect(typeName.name.name, 'Y');
}
@@ -1959,15 +1960,15 @@
var interpolation = expression as StringInterpolation;
expect(interpolation.elements, hasLength(3));
expect(interpolation.elements[0], isInterpolationString);
- InterpolationString element0 = interpolation.elements[0];
+ var element0 = interpolation.elements[0] as InterpolationString;
expect(element0.value, 'x');
expect(interpolation.elements[1], isInterpolationExpression);
- InterpolationExpression element1 = interpolation.elements[1];
+ var element1 = interpolation.elements[1] as InterpolationExpression;
expect(element1.leftBracket.lexeme, '\$');
expect(element1.expression, isSimpleIdentifier);
expect(element1.rightBracket, isNull);
expect(interpolation.elements[2], isInterpolationString);
- InterpolationString element2 = interpolation.elements[2];
+ var element2 = interpolation.elements[2] as InterpolationString;
expect(element2.value, '');
}
@@ -1976,7 +1977,7 @@
expect(expression, isNotNull);
assertNoErrors();
expect(expression, isStringInterpolation);
- StringInterpolation literal = expression;
+ var literal = expression as StringInterpolation;
NodeList<InterpolationElement> elements = literal.elements;
expect(elements, hasLength(5));
expect(elements[0] is InterpolationString, isTrue);
@@ -1985,7 +1986,7 @@
expect(elements[3] is InterpolationExpression, isTrue);
expect(elements[4] is InterpolationString, isTrue);
expect((elements[1] as InterpolationExpression).leftBracket.lexeme, '\${');
- expect((elements[1] as InterpolationExpression).rightBracket.lexeme, '}');
+ expect((elements[1] as InterpolationExpression).rightBracket!.lexeme, '}');
expect((elements[3] as InterpolationExpression).leftBracket.lexeme, '\$');
expect((elements[3] as InterpolationExpression).rightBracket, isNull);
}
@@ -2023,13 +2024,13 @@
var interpolation = expression as StringInterpolation;
expect(interpolation.elements, hasLength(3));
expect(interpolation.elements[0], isInterpolationString);
- InterpolationString element0 = interpolation.elements[0];
+ var element0 = interpolation.elements[0] as InterpolationString;
expect(element0.value, 'x');
expect(interpolation.elements[1], isInterpolationExpression);
- InterpolationExpression element1 = interpolation.elements[1];
+ var element1 = interpolation.elements[1] as InterpolationExpression;
expect(element1.expression, isSimpleIdentifier);
expect(interpolation.elements[2], isInterpolationString);
- InterpolationString element2 = interpolation.elements[2];
+ var element2 = interpolation.elements[2] as InterpolationString;
expect(element2.value, '');
}
@@ -2112,13 +2113,13 @@
var interpolation = expression as StringInterpolation;
expect(interpolation.elements, hasLength(3));
expect(interpolation.elements[0], isInterpolationString);
- InterpolationString element0 = interpolation.elements[0];
+ var element0 = interpolation.elements[0] as InterpolationString;
expect(element0.value, '');
expect(interpolation.elements[1], isInterpolationExpression);
- InterpolationExpression element1 = interpolation.elements[1];
+ var element1 = interpolation.elements[1] as InterpolationExpression;
expect(element1.expression, isSimpleIdentifier);
expect(interpolation.elements[2], isInterpolationString);
- InterpolationString element2 = interpolation.elements[2];
+ var element2 = interpolation.elements[2] as InterpolationString;
expect(element2.value, "'y");
}
@@ -2129,13 +2130,13 @@
var interpolation = expression as StringInterpolation;
expect(interpolation.elements, hasLength(3));
expect(interpolation.elements[0], isInterpolationString);
- InterpolationString element0 = interpolation.elements[0];
+ var element0 = interpolation.elements[0] as InterpolationString;
expect(element0.value, '');
expect(interpolation.elements[1], isInterpolationExpression);
- InterpolationExpression element1 = interpolation.elements[1];
+ var element1 = interpolation.elements[1] as InterpolationExpression;
expect(element1.expression, isSimpleIdentifier);
expect(interpolation.elements[2], isInterpolationString);
- InterpolationString element2 = interpolation.elements[2];
+ var element2 = interpolation.elements[2] as InterpolationString;
expect(element2.value, 'y');
}
@@ -2173,13 +2174,13 @@
var interpolation = expression as StringInterpolation;
expect(interpolation.elements, hasLength(3));
expect(interpolation.elements[0], isInterpolationString);
- InterpolationString element0 = interpolation.elements[0];
+ var element0 = interpolation.elements[0] as InterpolationString;
expect(element0.value, '');
expect(interpolation.elements[1], isInterpolationExpression);
- InterpolationExpression element1 = interpolation.elements[1];
+ var element1 = interpolation.elements[1] as InterpolationExpression;
expect(element1.expression, isSimpleIdentifier);
expect(interpolation.elements[2], isInterpolationString);
- InterpolationString element2 = interpolation.elements[2];
+ var element2 = interpolation.elements[2] as InterpolationString;
expect(element2.value, '"');
}
@@ -2199,13 +2200,13 @@
var interpolation = expression as StringInterpolation;
expect(interpolation.elements, hasLength(3));
expect(interpolation.elements[0], isInterpolationString);
- InterpolationString element0 = interpolation.elements[0];
+ var element0 = interpolation.elements[0] as InterpolationString;
expect(element0.value, '');
expect(interpolation.elements[1], isInterpolationExpression);
- InterpolationExpression element1 = interpolation.elements[1];
+ var element1 = interpolation.elements[1] as InterpolationExpression;
expect(element1.expression, isSimpleIdentifier);
expect(interpolation.elements[2], isInterpolationString);
- InterpolationString element2 = interpolation.elements[2];
+ var element2 = interpolation.elements[2] as InterpolationString;
expect(element2.value, 'y');
}
@@ -2303,7 +2304,7 @@
}
void test_parseUnaryExpression_decrement_identifier_index() {
- PrefixExpression expression = parseExpression('--a[0]');
+ var expression = parseExpression('--a[0]') as PrefixExpression;
expect(expression, isNotNull);
assertNoErrors();
expect(expression.operator, isNotNull);
@@ -2376,7 +2377,7 @@
}
void test_parseUnaryExpression_increment_identifier_index() {
- PrefixExpression expression = parseExpression('++a[0]');
+ var expression = parseExpression('++a[0]') as PrefixExpression;
expect(expression, isNotNull);
assertNoErrors();
expect(expression.operator, isNotNull);
@@ -2421,7 +2422,7 @@
}
void test_parseUnaryExpression_minus_identifier_index() {
- PrefixExpression expression = parseExpression('-a[0]');
+ var expression = parseExpression('-a[0]') as PrefixExpression;
expect(expression, isNotNull);
assertNoErrors();
expect(expression.operator, isNotNull);
@@ -2487,7 +2488,7 @@
}
void test_parseUnaryExpression_tilde_identifier_index() {
- PrefixExpression expression = parseExpression('~a[0]');
+ var expression = parseExpression('~a[0]') as PrefixExpression;
expect(expression, isNotNull);
assertNoErrors();
expect(expression.operator, isNotNull);
@@ -2499,60 +2500,60 @@
}
void test_setLiteral() {
- SetOrMapLiteral set = parseExpression('{3}');
+ var set = parseExpression('{3}') as SetOrMapLiteral;
expect(set.constKeyword, isNull);
expect(set.typeArguments, isNull);
expect(set.elements, hasLength(1));
- IntegerLiteral value = set.elements[0];
+ var value = set.elements[0] as IntegerLiteral;
expect(value.value, 3);
}
void test_setLiteral_const() {
- SetOrMapLiteral set = parseExpression('const {3, 6}');
+ var set = parseExpression('const {3, 6}') as SetOrMapLiteral;
expect(set.constKeyword, isNotNull);
expect(set.typeArguments, isNull);
expect(set.elements, hasLength(2));
- IntegerLiteral value1 = set.elements[0];
+ var value1 = set.elements[0] as IntegerLiteral;
expect(value1.value, 3);
- IntegerLiteral value2 = set.elements[1];
+ var value2 = set.elements[1] as IntegerLiteral;
expect(value2.value, 6);
}
void test_setLiteral_const_typed() {
- SetOrMapLiteral set = parseExpression('const <int>{3}');
+ var set = parseExpression('const <int>{3}') as SetOrMapLiteral;
expect(set.constKeyword, isNotNull);
- expect(set.typeArguments.arguments, hasLength(1));
- NamedType typeArg = set.typeArguments.arguments[0];
+ expect(set.typeArguments!.arguments, hasLength(1));
+ var typeArg = set.typeArguments!.arguments[0] as NamedType;
expect(typeArg.name.name, 'int');
expect(set.elements.length, 1);
- IntegerLiteral value = set.elements[0];
+ var value = set.elements[0] as IntegerLiteral;
expect(value.value, 3);
}
void test_setLiteral_nested_typeArgument() {
- SetOrMapLiteral set = parseExpression('<Set<int>>{{3}}');
+ var set = parseExpression('<Set<int>>{{3}}') as SetOrMapLiteral;
expect(set.constKeyword, isNull);
- expect(set.typeArguments.arguments, hasLength(1));
- NamedType typeArg1 = set.typeArguments.arguments[0];
+ expect(set.typeArguments!.arguments, hasLength(1));
+ var typeArg1 = set.typeArguments!.arguments[0] as NamedType;
expect(typeArg1.name.name, 'Set');
- expect(typeArg1.typeArguments.arguments, hasLength(1));
- NamedType typeArg2 = typeArg1.typeArguments.arguments[0];
+ expect(typeArg1.typeArguments!.arguments, hasLength(1));
+ var typeArg2 = typeArg1.typeArguments!.arguments[0] as NamedType;
expect(typeArg2.name.name, 'int');
expect(set.elements.length, 1);
- SetOrMapLiteral intSet = set.elements[0];
+ var intSet = set.elements[0] as SetOrMapLiteral;
expect(intSet.elements, hasLength(1));
- IntegerLiteral value = intSet.elements[0];
+ var value = intSet.elements[0] as IntegerLiteral;
expect(value.value, 3);
}
void test_setLiteral_typed() {
- SetOrMapLiteral set = parseExpression('<int>{3}');
+ var set = parseExpression('<int>{3}') as SetOrMapLiteral;
expect(set.constKeyword, isNull);
- expect(set.typeArguments.arguments, hasLength(1));
- NamedType typeArg = set.typeArguments.arguments[0];
+ expect(set.typeArguments!.arguments, hasLength(1));
+ var typeArg = set.typeArguments!.arguments[0] as NamedType;
expect(typeArg.name.name, 'int');
expect(set.elements.length, 1);
- IntegerLiteral value = set.elements[0];
+ var value = set.elements[0] as IntegerLiteral;
expect(value.value, 3);
}
}
diff --git a/pkg/analyzer/test/generated/extension_methods_parser_test.dart b/pkg/analyzer/test/generated/extension_methods_parser_test.dart
index e5b42d3..e76b4ac 100644
--- a/pkg/analyzer/test/generated/extension_methods_parser_test.dart
+++ b/pkg/analyzer/test/generated/extension_methods_parser_test.dart
@@ -32,7 +32,7 @@
]);
expect(unit.declarations, hasLength(1));
var extension = unit.declarations[0] as ExtensionDeclaration;
- expect(extension.name.name, 'E');
+ expect(extension.name!.name, 'E');
expect(extension.onKeyword.lexeme, 'extends');
expect((extension.extendedType as NamedType).name.name, 'A');
expect(extension.members, hasLength(0));
@@ -45,7 +45,7 @@
]);
expect(unit.declarations, hasLength(1));
var extension = unit.declarations[0] as ExtensionDeclaration;
- expect(extension.name.name, 'E');
+ expect(extension.name!.name, 'E');
expect(extension.onKeyword.lexeme, 'implements');
expect((extension.extendedType as NamedType).name.name, 'C');
expect(extension.members, hasLength(0));
@@ -55,11 +55,11 @@
var unit = parseCompilationUnit('extension E on C<T> { }');
expect(unit.declarations, hasLength(1));
var extension = unit.declarations[0] as ExtensionDeclaration;
- expect(extension.name.name, 'E');
+ expect(extension.name!.name, 'E');
expect(extension.onKeyword.lexeme, 'on');
var namedType = extension.extendedType as NamedType;
expect(namedType.name.name, 'C');
- expect(namedType.typeArguments.arguments, hasLength(1));
+ expect(namedType.typeArguments!.arguments, hasLength(1));
expect(extension.members, hasLength(0));
}
@@ -67,11 +67,11 @@
var unit = parseCompilationUnit('extension E<T> on C<T> { }');
expect(unit.declarations, hasLength(1));
var extension = unit.declarations[0] as ExtensionDeclaration;
- expect(extension.name.name, 'E');
+ expect(extension.name!.name, 'E');
expect(extension.onKeyword.lexeme, 'on');
var namedType = extension.extendedType as NamedType;
expect(namedType.name.name, 'C');
- expect(namedType.typeArguments.arguments, hasLength(1));
+ expect(namedType.typeArguments!.arguments, hasLength(1));
expect(extension.members, hasLength(0));
}
@@ -83,7 +83,7 @@
expect(extension.onKeyword.lexeme, 'on');
var namedType = extension.extendedType as NamedType;
expect(namedType.name.name, 'C');
- expect(namedType.typeArguments.arguments, hasLength(1));
+ expect(namedType.typeArguments!.arguments, hasLength(1));
expect(extension.members, hasLength(0));
}
@@ -123,7 +123,7 @@
]);
expect(unit.declarations, hasLength(1));
var extension = unit.declarations[0] as ExtensionDeclaration;
- expect(extension.name.name, 'E');
+ expect(extension.name!.name, 'E');
expect(extension.onKeyword.lexeme, 'on');
expect((extension.extendedType as NamedType).name.name, '');
expect(extension.members, hasLength(0));
@@ -136,7 +136,7 @@
]);
expect(unit.declarations, hasLength(1));
var extension = unit.declarations[0] as ExtensionDeclaration;
- expect(extension.name.name, 'E');
+ expect(extension.name!.name, 'E');
expect(extension.onKeyword.lexeme, 'on');
expect((extension.extendedType as NamedType).name.name, '');
expect(extension.members, hasLength(0));
@@ -148,16 +148,17 @@
]);
expect(unit.declarations, hasLength(1));
var extension = unit.declarations[0] as ExtensionDeclaration;
- expect(extension.name.name, 'E');
+ expect(extension.name!.name, 'E');
expect(extension.onKeyword.lexeme, 'on');
expect((extension.extendedType as NamedType).name.name, 'C');
expect(extension.members, hasLength(0));
}
void test_parse_toplevel_member_called_late_calling_self() {
- CompilationUnitImpl unit = parseCompilationUnit('void late() { late(); }',
- featureSet: nonNullable);
- FunctionDeclaration method = unit.declarations[0];
+ var unit =
+ parseCompilationUnit('void late() { late(); }', featureSet: nonNullable)
+ as CompilationUnitImpl;
+ var method = unit.declarations[0] as FunctionDeclaration;
expect(method.documentationComment, isNull);
expect(method.externalKeyword, isNull);
@@ -166,9 +167,9 @@
expect(method.name.name, 'late');
expect(method.functionExpression, isNotNull);
- BlockFunctionBody body = method.functionExpression.body;
- ExpressionStatement statement = body.block.statements[0];
- MethodInvocation invocation = statement.expression;
+ var body = method.functionExpression.body as BlockFunctionBody;
+ var statement = body.block.statements[0] as ExpressionStatement;
+ var invocation = statement.expression as MethodInvocation;
expect(invocation.operator, isNull);
expect(invocation.toSource(), 'late()');
}
@@ -177,7 +178,7 @@
var unit = parseCompilationUnit('extension E on C { }');
expect(unit.declarations, hasLength(1));
var extension = unit.declarations[0] as ExtensionDeclaration;
- expect(extension.name.name, 'E');
+ expect(extension.name!.name, 'E');
expect(extension.onKeyword.lexeme, 'on');
expect((extension.extendedType as NamedType).name.name, 'C');
var namedType = extension.extendedType as NamedType;
@@ -192,7 +193,7 @@
]);
expect(unit.declarations, hasLength(1));
var extension = unit.declarations[0] as ExtensionDeclaration;
- expect(extension.name.name, 'E');
+ expect(extension.name!.name, 'E');
expect(extension.onKeyword.lexeme, 'extends');
expect((extension.extendedType as NamedType).name.name, 'C');
expect(extension.members, hasLength(0));
@@ -204,7 +205,7 @@
]);
expect(unit.declarations, hasLength(1));
var extension = unit.declarations[0] as ExtensionDeclaration;
- expect(extension.name.name, 'E');
+ expect(extension.name!.name, 'E');
expect(extension.onKeyword.lexeme, 'implements');
expect((extension.extendedType as NamedType).name.name, 'C');
expect(extension.members, hasLength(0));
@@ -243,7 +244,7 @@
]);
expect(unit.declarations, hasLength(1));
var extension = unit.declarations[0] as ExtensionDeclaration;
- expect(extension.name.name, 'E');
+ expect(extension.name!.name, 'E');
expect(extension.onKeyword.lexeme, 'with');
expect((extension.extendedType as NamedType).name.name, 'C');
expect(extension.members, hasLength(0));
@@ -253,7 +254,7 @@
var unit = parseCompilationUnit('extension E on void { }');
expect(unit.declarations, hasLength(1));
var extension = unit.declarations[0] as ExtensionDeclaration;
- expect(extension.name.name, 'E');
+ expect(extension.name!.name, 'E');
expect(extension.onKeyword.lexeme, 'on');
expect((extension.extendedType as NamedType).name.name, 'void');
expect(extension.members, hasLength(0));
diff --git a/pkg/analyzer/test/generated/formal_parameter_parser_test.dart b/pkg/analyzer/test/generated/formal_parameter_parser_test.dart
index da72d4b..41de193 100644
--- a/pkg/analyzer/test/generated/formal_parameter_parser_test.dart
+++ b/pkg/analyzer/test/generated/formal_parameter_parser_test.dart
@@ -24,7 +24,7 @@
@reflectiveTest
class FormalParameterParserTest extends FastaParserTestCase {
FormalParameter parseNNBDFormalParameter(String code, ParameterKind kind,
- {List<ExpectedError> errors}) {
+ {List<ExpectedError>? errors}) {
String parametersCode;
if (kind == ParameterKind.REQUIRED) {
parametersCode = '($code)';
@@ -48,7 +48,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isFieldFormalParameter);
- FieldFormalParameter functionParameter = parameter;
+ var functionParameter = parameter as FieldFormalParameter;
expect(functionParameter.type, isNotNull);
expect(functionParameter.identifier, isNotNull);
expect(functionParameter.typeParameters, isNull);
@@ -158,7 +158,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isDefaultFormalParameter);
- DefaultFormalParameter defaultParameter = parameter;
+ var defaultParameter = parameter as DefaultFormalParameter;
SimpleFormalParameter simpleParameter =
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNotNull);
@@ -178,7 +178,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isSimpleFormalParameter);
- SimpleFormalParameter simpleParameter = parameter;
+ var simpleParameter = parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNotNull);
expect(simpleParameter.requiredKeyword, isNull);
expect(simpleParameter.identifier, isNotNull);
@@ -194,7 +194,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isDefaultFormalParameter);
- DefaultFormalParameter defaultParameter = parameter;
+ var defaultParameter = parameter as DefaultFormalParameter;
SimpleFormalParameter simpleParameter =
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNotNull);
@@ -215,7 +215,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isDefaultFormalParameter);
- DefaultFormalParameter defaultParameter = parameter;
+ var defaultParameter = parameter as DefaultFormalParameter;
SimpleFormalParameter simpleParameter =
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNotNull);
@@ -236,7 +236,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isSimpleFormalParameter);
- SimpleFormalParameter simpleParameter = parameter;
+ var simpleParameter = parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNotNull);
expect(simpleParameter.requiredKeyword, isNull);
expect(simpleParameter.identifier, isNotNull);
@@ -252,7 +252,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isDefaultFormalParameter);
- DefaultFormalParameter defaultParameter = parameter;
+ var defaultParameter = parameter as DefaultFormalParameter;
SimpleFormalParameter simpleParameter =
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNotNull);
@@ -273,7 +273,7 @@
errors: [expectedError(ParserErrorCode.MODIFIER_OUT_OF_ORDER, 12, 8)]);
expect(parameter, isNotNull);
expect(parameter, isDefaultFormalParameter);
- DefaultFormalParameter defaultParameter = parameter;
+ var defaultParameter = parameter as DefaultFormalParameter;
SimpleFormalParameter simpleParameter =
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNotNull);
@@ -294,7 +294,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isSimpleFormalParameter);
- SimpleFormalParameter simpleParameter = parameter;
+ var simpleParameter = parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNotNull);
expect(simpleParameter.requiredKeyword, isNull);
expect(simpleParameter.identifier, isNotNull);
@@ -310,7 +310,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isDefaultFormalParameter);
- DefaultFormalParameter defaultParameter = parameter;
+ var defaultParameter = parameter as DefaultFormalParameter;
SimpleFormalParameter simpleParameter =
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNotNull);
@@ -331,7 +331,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isSimpleFormalParameter);
- SimpleFormalParameter simpleParameter = parameter;
+ var simpleParameter = parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNotNull);
expect(simpleParameter.requiredKeyword, isNull);
expect(simpleParameter.identifier, isNotNull);
@@ -347,7 +347,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isDefaultFormalParameter);
- DefaultFormalParameter defaultParameter = parameter;
+ var defaultParameter = parameter as DefaultFormalParameter;
SimpleFormalParameter simpleParameter =
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNotNull);
@@ -368,7 +368,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isDefaultFormalParameter);
- DefaultFormalParameter defaultParameter = parameter;
+ var defaultParameter = parameter as DefaultFormalParameter;
SimpleFormalParameter simpleParameter =
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNotNull);
@@ -388,7 +388,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isSimpleFormalParameter);
- SimpleFormalParameter simpleParameter = parameter;
+ var simpleParameter = parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNotNull);
expect(simpleParameter.requiredKeyword, isNull);
expect(simpleParameter.identifier, isNotNull);
@@ -404,7 +404,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isDefaultFormalParameter);
- DefaultFormalParameter defaultParameter = parameter;
+ var defaultParameter = parameter as DefaultFormalParameter;
SimpleFormalParameter simpleParameter =
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNotNull);
@@ -430,7 +430,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isDefaultFormalParameter);
- DefaultFormalParameter defaultParameter = parameter;
+ var defaultParameter = parameter as DefaultFormalParameter;
SimpleFormalParameter simpleParameter =
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
@@ -450,7 +450,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isSimpleFormalParameter);
- SimpleFormalParameter simpleParameter = parameter;
+ var simpleParameter = parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
expect(simpleParameter.requiredKeyword, isNull);
expect(simpleParameter.identifier, isNotNull);
@@ -465,7 +465,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isDefaultFormalParameter);
- DefaultFormalParameter defaultParameter = parameter;
+ var defaultParameter = parameter as DefaultFormalParameter;
SimpleFormalParameter simpleParameter =
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
@@ -486,7 +486,7 @@
errors: [expectedError(ParserErrorCode.MODIFIER_OUT_OF_ORDER, 8, 8)]);
expect(parameter, isNotNull);
expect(parameter, isDefaultFormalParameter);
- DefaultFormalParameter defaultParameter = parameter;
+ var defaultParameter = parameter as DefaultFormalParameter;
SimpleFormalParameter simpleParameter =
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
@@ -506,7 +506,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isDefaultFormalParameter);
- DefaultFormalParameter defaultParameter = parameter;
+ var defaultParameter = parameter as DefaultFormalParameter;
SimpleFormalParameter simpleParameter =
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
@@ -526,7 +526,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isSimpleFormalParameter);
- SimpleFormalParameter simpleParameter = parameter;
+ var simpleParameter = parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
expect(simpleParameter.requiredKeyword, isNull);
expect(simpleParameter.identifier, isNotNull);
@@ -541,7 +541,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isDefaultFormalParameter);
- DefaultFormalParameter defaultParameter = parameter;
+ var defaultParameter = parameter as DefaultFormalParameter;
SimpleFormalParameter simpleParameter =
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
@@ -561,7 +561,7 @@
parseNNBDFormalParameter('required covariant A a : null', kind);
expect(parameter, isNotNull);
expect(parameter, isDefaultFormalParameter);
- DefaultFormalParameter defaultParameter = parameter;
+ var defaultParameter = parameter as DefaultFormalParameter;
SimpleFormalParameter simpleParameter =
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNotNull);
@@ -581,7 +581,7 @@
parseNNBDFormalParameter('required final a : null', kind);
expect(parameter, isNotNull);
expect(parameter, isDefaultFormalParameter);
- DefaultFormalParameter defaultParameter = parameter;
+ var defaultParameter = parameter as DefaultFormalParameter;
SimpleFormalParameter simpleParameter =
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
@@ -601,7 +601,7 @@
parseNNBDFormalParameter('required A a : null', kind);
expect(parameter, isNotNull);
expect(parameter, isDefaultFormalParameter);
- DefaultFormalParameter defaultParameter = parameter;
+ var defaultParameter = parameter as DefaultFormalParameter;
SimpleFormalParameter simpleParameter =
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
@@ -621,7 +621,7 @@
parseNNBDFormalParameter('required var a : null', kind);
expect(parameter, isNotNull);
expect(parameter, isDefaultFormalParameter);
- DefaultFormalParameter defaultParameter = parameter;
+ var defaultParameter = parameter as DefaultFormalParameter;
SimpleFormalParameter simpleParameter =
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
@@ -642,7 +642,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isSimpleFormalParameter);
- SimpleFormalParameter simpleParameter = parameter;
+ var simpleParameter = parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
expect(simpleParameter.requiredKeyword, isNull);
expect(simpleParameter.identifier, isNotNull);
@@ -657,7 +657,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isDefaultFormalParameter);
- DefaultFormalParameter defaultParameter = parameter;
+ var defaultParameter = parameter as DefaultFormalParameter;
SimpleFormalParameter simpleParameter =
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
@@ -677,7 +677,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isDefaultFormalParameter);
- DefaultFormalParameter defaultParameter = parameter;
+ var defaultParameter = parameter as DefaultFormalParameter;
SimpleFormalParameter simpleParameter =
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
@@ -697,7 +697,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isSimpleFormalParameter);
- SimpleFormalParameter simpleParameter = parameter;
+ var simpleParameter = parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
expect(simpleParameter.requiredKeyword, isNull);
expect(simpleParameter.identifier, isNotNull);
@@ -712,7 +712,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isDefaultFormalParameter);
- DefaultFormalParameter defaultParameter = parameter;
+ var defaultParameter = parameter as DefaultFormalParameter;
SimpleFormalParameter simpleParameter =
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
@@ -732,7 +732,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isDefaultFormalParameter);
- DefaultFormalParameter defaultParameter = parameter;
+ var defaultParameter = parameter as DefaultFormalParameter;
SimpleFormalParameter simpleParameter =
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
@@ -752,7 +752,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isDefaultFormalParameter);
- DefaultFormalParameter defaultParameter = parameter;
+ var defaultParameter = parameter as DefaultFormalParameter;
SimpleFormalParameter simpleParameter =
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
@@ -772,7 +772,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isSimpleFormalParameter);
- SimpleFormalParameter simpleParameter = parameter;
+ var simpleParameter = parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
expect(simpleParameter.requiredKeyword, isNull);
expect(simpleParameter.identifier, isNotNull);
@@ -787,7 +787,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isDefaultFormalParameter);
- DefaultFormalParameter defaultParameter = parameter;
+ var defaultParameter = parameter as DefaultFormalParameter;
SimpleFormalParameter simpleParameter =
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
@@ -808,7 +808,7 @@
errors: [expectedError(ParserErrorCode.MODIFIER_OUT_OF_ORDER, 6, 8)]);
expect(parameter, isNotNull);
expect(parameter, isDefaultFormalParameter);
- DefaultFormalParameter defaultParameter = parameter;
+ var defaultParameter = parameter as DefaultFormalParameter;
SimpleFormalParameter simpleParameter =
defaultParameter.parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
@@ -902,16 +902,16 @@
expect(parameters, hasLength(2));
expect(parameters[0], isSimpleFormalParameter);
- SimpleFormalParameter required = parameters[0];
+ var required = parameters[0] as SimpleFormalParameter;
expect(required.identifier, isNull);
expect(required.type, isTypeName);
expect((required.type as TypeName).name.name, 'A');
expect(parameters[1], isDefaultFormalParameter);
- DefaultFormalParameter named = parameters[1];
+ var named = parameters[1] as DefaultFormalParameter;
expect(named.identifier, isNotNull);
expect(named.parameter, isSimpleFormalParameter);
- SimpleFormalParameter simple = named.parameter;
+ var simple = named.parameter as SimpleFormalParameter;
expect(simple.type, isTypeName);
expect((simple.type as TypeName).name.name, 'B');
}
@@ -1014,11 +1014,11 @@
expect(list.leftDelimiter, isNull);
expect(list.parameters, hasLength(1));
// TODO(danrubel): Investigate and improve recovery of parameter type/name.
- SimpleFormalParameter parameter = list.parameters[0];
+ var parameter = list.parameters[0] as SimpleFormalParameter;
expect(parameter.toSource(), 'io.File ');
- expect(parameter.identifier.token.isSynthetic, isTrue);
- TypeName type = parameter.type;
- PrefixedIdentifier typeName = type.name;
+ expect(parameter.identifier!.token.isSynthetic, isTrue);
+ var type = parameter.type as TypeName;
+ var typeName = type.name as PrefixedIdentifier;
expect(typeName.prefix.token.isSynthetic, isFalse);
expect(typeName.identifier.token.isSynthetic, isFalse);
expect(list.rightDelimiter, isNull);
@@ -1035,11 +1035,11 @@
expect(list.leftDelimiter, isNull);
expect(list.parameters, hasLength(1));
// TODO(danrubel): Investigate and improve recovery of parameter type/name.
- SimpleFormalParameter parameter = list.parameters[0];
+ var parameter = list.parameters[0] as SimpleFormalParameter;
expect(parameter.toSource(), 'io. ');
- expect(parameter.identifier.token.isSynthetic, isTrue);
- TypeName type = parameter.type;
- PrefixedIdentifier typeName = type.name;
+ expect(parameter.identifier!.token.isSynthetic, isTrue);
+ var type = parameter.type as TypeName;
+ var typeName = type.name as PrefixedIdentifier;
expect(typeName.prefix.token.isSynthetic, isFalse);
expect(typeName.identifier.token.isSynthetic, isTrue);
expect(list.rightDelimiter, isNull);
@@ -1066,7 +1066,7 @@
errorCodes: [ParserErrorCode.EXTRANEOUS_MODIFIER]);
expect(parameter, isNotNull);
expect(parameter, isFieldFormalParameter);
- FieldFormalParameter fieldParameter = parameter;
+ var fieldParameter = parameter as FieldFormalParameter;
expect(fieldParameter.keyword, isNotNull);
expect(fieldParameter.type, isNull);
expect(fieldParameter.identifier, isNotNull);
@@ -1079,7 +1079,7 @@
errorCodes: [ParserErrorCode.EXTRANEOUS_MODIFIER]);
expect(parameter, isNotNull);
expect(parameter, isFieldFormalParameter);
- FieldFormalParameter fieldParameter = parameter;
+ var fieldParameter = parameter as FieldFormalParameter;
expect(fieldParameter.keyword, isNotNull);
expect(fieldParameter.type, isNotNull);
expect(fieldParameter.identifier, isNotNull);
@@ -1092,7 +1092,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isFieldFormalParameter);
- FieldFormalParameter fieldParameter = parameter;
+ var fieldParameter = parameter as FieldFormalParameter;
expect(fieldParameter.keyword, isNotNull);
expect(fieldParameter.type, isNull);
expect(fieldParameter.identifier, isNotNull);
@@ -1105,7 +1105,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isFieldFormalParameter);
- FieldFormalParameter fieldParameter = parameter;
+ var fieldParameter = parameter as FieldFormalParameter;
expect(fieldParameter.keyword, isNotNull);
expect(fieldParameter.type, isNotNull);
expect(fieldParameter.identifier, isNotNull);
@@ -1117,11 +1117,11 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isFieldFormalParameter);
- FieldFormalParameter fieldParameter = parameter;
+ var fieldParameter = parameter as FieldFormalParameter;
expect(fieldParameter.keyword, isNull);
expect(fieldParameter.type, isNull);
expect(fieldParameter.identifier, isNotNull);
- FormalParameterList parameterList = fieldParameter.parameters;
+ FormalParameterList parameterList = fieldParameter.parameters!;
expect(parameterList, isNotNull);
expect(parameterList.parameters, hasLength(1));
}
@@ -1131,11 +1131,11 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isFieldFormalParameter);
- FieldFormalParameter fieldParameter = parameter;
+ var fieldParameter = parameter as FieldFormalParameter;
expect(fieldParameter.keyword, isNull);
expect(fieldParameter.type, isNull);
expect(fieldParameter.identifier, isNotNull);
- FormalParameterList parameterList = fieldParameter.parameters;
+ FormalParameterList parameterList = fieldParameter.parameters!;
expect(parameterList, isNotNull);
expect(parameterList.parameters, hasLength(0));
}
@@ -1150,7 +1150,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isFieldFormalParameter);
- FieldFormalParameter fieldParameter = parameter;
+ var fieldParameter = parameter as FieldFormalParameter;
expect(fieldParameter.keyword, isNull);
expect(fieldParameter.type, isNull);
expect(fieldParameter.identifier, isNotNull);
@@ -1162,7 +1162,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isFieldFormalParameter);
- FieldFormalParameter fieldParameter = parameter;
+ var fieldParameter = parameter as FieldFormalParameter;
expect(fieldParameter.keyword, isNull);
expect(fieldParameter.type, isNotNull);
expect(fieldParameter.identifier, isNotNull);
@@ -1174,7 +1174,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isFieldFormalParameter);
- FieldFormalParameter fieldParameter = parameter;
+ var fieldParameter = parameter as FieldFormalParameter;
expect(fieldParameter.keyword, isNotNull);
expect(fieldParameter.type, isNull);
expect(fieldParameter.identifier, isNotNull);
@@ -1209,7 +1209,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isFunctionTypedFormalParameter);
- FunctionTypedFormalParameter functionParameter = parameter;
+ var functionParameter = parameter as FunctionTypedFormalParameter;
expect(functionParameter.returnType, isNull);
expect(functionParameter.identifier, isNotNull);
expect(functionParameter.typeParameters, isNull);
@@ -1223,7 +1223,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isFunctionTypedFormalParameter);
- FunctionTypedFormalParameter functionParameter = parameter;
+ var functionParameter = parameter as FunctionTypedFormalParameter;
expect(functionParameter.covariantKeyword, isNotNull);
expect(functionParameter.returnType, isNull);
expect(functionParameter.identifier, isNotNull);
@@ -1233,12 +1233,12 @@
}
void test_parseNormalFormalParameter_function_noType_nullable() {
- NormalFormalParameter parameter =
- parseNNBDFormalParameter('a()?', ParameterKind.REQUIRED);
+ var parameter = parseNNBDFormalParameter('a()?', ParameterKind.REQUIRED)
+ as NormalFormalParameter;
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isFunctionTypedFormalParameter);
- FunctionTypedFormalParameter functionParameter = parameter;
+ var functionParameter = parameter as FunctionTypedFormalParameter;
expect(functionParameter.returnType, isNull);
expect(functionParameter.identifier, isNotNull);
expect(functionParameter.typeParameters, isNull);
@@ -1252,7 +1252,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isFunctionTypedFormalParameter);
- FunctionTypedFormalParameter functionParameter = parameter;
+ var functionParameter = parameter as FunctionTypedFormalParameter;
expect(functionParameter.returnType, isNull);
expect(functionParameter.identifier, isNotNull);
expect(functionParameter.typeParameters, isNotNull);
@@ -1265,7 +1265,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isFunctionTypedFormalParameter);
- FunctionTypedFormalParameter functionParameter = parameter;
+ var functionParameter = parameter as FunctionTypedFormalParameter;
expect(functionParameter.returnType, isNotNull);
expect(functionParameter.identifier, isNotNull);
expect(functionParameter.typeParameters, isNull);
@@ -1278,7 +1278,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isFunctionTypedFormalParameter);
- FunctionTypedFormalParameter functionParameter = parameter;
+ var functionParameter = parameter as FunctionTypedFormalParameter;
expect(functionParameter.returnType, isNotNull);
expect(functionParameter.identifier, isNotNull);
expect(functionParameter.typeParameters, isNotNull);
@@ -1292,7 +1292,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isFunctionTypedFormalParameter);
- FunctionTypedFormalParameter functionParameter = parameter;
+ var functionParameter = parameter as FunctionTypedFormalParameter;
expect(functionParameter.covariantKeyword, isNotNull);
expect(functionParameter.returnType, isNotNull);
expect(functionParameter.identifier, isNotNull);
@@ -1306,7 +1306,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isFunctionTypedFormalParameter);
- FunctionTypedFormalParameter functionParameter = parameter;
+ var functionParameter = parameter as FunctionTypedFormalParameter;
expect(functionParameter.returnType, isNotNull);
expect(functionParameter.identifier, isNotNull);
expect(functionParameter.typeParameters, isNull);
@@ -1319,7 +1319,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isFunctionTypedFormalParameter);
- FunctionTypedFormalParameter functionParameter = parameter;
+ var functionParameter = parameter as FunctionTypedFormalParameter;
expect(functionParameter.returnType, isNotNull);
expect(functionParameter.identifier, isNotNull);
expect(functionParameter.typeParameters, isNotNull);
@@ -1327,6 +1327,7 @@
expect(functionParameter.question, isNull);
}
+ @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/44522')
void test_parseNormalFormalParameter_function_withDocComment() {
var parameter = parseFormalParameter('/// Doc\nf()', ParameterKind.REQUIRED)
as FunctionTypedFormalParameter;
@@ -1338,7 +1339,7 @@
errorCodes: [ParserErrorCode.EXTRANEOUS_MODIFIER]);
expect(parameter, isNotNull);
expect(parameter, isSimpleFormalParameter);
- SimpleFormalParameter simpleParameter = parameter;
+ var simpleParameter = parameter as SimpleFormalParameter;
expect(simpleParameter.keyword, isNotNull);
expect(simpleParameter.type, isNull);
expect(simpleParameter.identifier, isNotNull);
@@ -1349,7 +1350,7 @@
errorCodes: [ParserErrorCode.EXTRANEOUS_MODIFIER]);
expect(parameter, isNotNull);
expect(parameter, isSimpleFormalParameter);
- SimpleFormalParameter simpleParameter = parameter;
+ var simpleParameter = parameter as SimpleFormalParameter;
expect(simpleParameter.keyword, isNotNull);
expect(simpleParameter.type, isNotNull);
expect(simpleParameter.identifier, isNotNull);
@@ -1360,7 +1361,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isSimpleFormalParameter);
- SimpleFormalParameter simpleParameter = parameter;
+ var simpleParameter = parameter as SimpleFormalParameter;
expect(simpleParameter.keyword, isNotNull);
expect(simpleParameter.type, isNull);
expect(simpleParameter.identifier, isNotNull);
@@ -1371,7 +1372,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isSimpleFormalParameter);
- SimpleFormalParameter simpleParameter = parameter;
+ var simpleParameter = parameter as SimpleFormalParameter;
expect(simpleParameter.keyword, isNotNull);
expect(simpleParameter.type, isNotNull);
expect(simpleParameter.identifier, isNotNull);
@@ -1383,7 +1384,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isSimpleFormalParameter);
- SimpleFormalParameter simpleParameter = parameter;
+ var simpleParameter = parameter as SimpleFormalParameter;
expect(simpleParameter.keyword, isNull);
expect(simpleParameter.type, isNotNull);
expect(simpleParameter.identifier, isNull);
@@ -1394,7 +1395,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isSimpleFormalParameter);
- SimpleFormalParameter simpleParameter = parameter;
+ var simpleParameter = parameter as SimpleFormalParameter;
expect(simpleParameter.keyword, isNull);
expect(simpleParameter.type, isNull);
expect(simpleParameter.identifier, isNotNull);
@@ -1405,7 +1406,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isSimpleFormalParameter);
- SimpleFormalParameter simpleParameter = parameter;
+ var simpleParameter = parameter as SimpleFormalParameter;
expect(simpleParameter.covariantKeyword, isNull);
expect(simpleParameter.keyword, isNull);
expect(simpleParameter.type, isNull);
@@ -1417,7 +1418,7 @@
expect(parameter, isNotNull);
assertNoErrors();
expect(parameter, isSimpleFormalParameter);
- SimpleFormalParameter simpleParameter = parameter;
+ var simpleParameter = parameter as SimpleFormalParameter;
expect(simpleParameter.keyword, isNull);
expect(simpleParameter.type, isNotNull);
expect(simpleParameter.identifier, isNotNull);
diff --git a/pkg/analyzer/test/generated/invalid_code_test.dart b/pkg/analyzer/test/generated/invalid_code_test.dart
index 0d4c949..601a4c6 100644
--- a/pkg/analyzer/test/generated/invalid_code_test.dart
+++ b/pkg/analyzer/test/generated/invalid_code_test.dart
@@ -309,6 +309,7 @@
''');
}
+ @FailingTest(reason: 'We should set the type of v')
test_fuzz_38953() async {
// When we enter a directive, we should stop using the element walker
// of the unit, just like when we enter a method body. Even though using
diff --git a/pkg/analyzer/test/generated/nnbd_parser_test.dart b/pkg/analyzer/test/generated/nnbd_parser_test.dart
index 6fd7547..c1376ea 100644
--- a/pkg/analyzer/test/generated/nnbd_parser_test.dart
+++ b/pkg/analyzer/test/generated/nnbd_parser_test.dart
@@ -4,7 +4,7 @@
import 'package:analyzer/dart/analysis/features.dart';
import 'package:analyzer/dart/ast/ast.dart';
-import 'package:analyzer/dart/ast/token.dart' show Token, TokenType;
+import 'package:analyzer/dart/ast/token.dart' show TokenType;
import 'package:analyzer/error/error.dart';
import 'package:analyzer/src/dart/ast/ast.dart';
import 'package:analyzer/src/dart/scanner/scanner.dart';
@@ -25,9 +25,9 @@
class NNBDParserTest extends FastaParserTestCase {
@override
CompilationUnit parseCompilationUnit(String content,
- {List<ErrorCode> codes,
- List<ExpectedError> errors,
- FeatureSet featureSet}) =>
+ {List<ErrorCode>? codes,
+ List<ExpectedError>? errors,
+ FeatureSet? featureSet}) =>
super.parseCompilationUnit(content,
codes: codes,
errors: errors,
@@ -65,14 +65,14 @@
expect(expression.toSource(), "f1!(42)");
var functionExpression = expression.function as PostfixExpression;
- SimpleIdentifier identifier = functionExpression.operand;
+ var identifier = functionExpression.operand as SimpleIdentifier;
expect(identifier.name, 'f1');
expect(functionExpression.operator.lexeme, '!');
expect(expression.typeArguments, null);
expect(expression.argumentList.arguments.length, 1);
- IntegerLiteral argument = expression.argumentList.arguments.single;
+ var argument = expression.argumentList.arguments.single as IntegerLiteral;
expect(argument.value, 42);
}
@@ -90,62 +90,62 @@
expect(expression.toSource(), "f2!<int>(42)");
var functionExpression = expression.function as PostfixExpression;
- SimpleIdentifier identifier = functionExpression.operand;
+ var identifier = functionExpression.operand as SimpleIdentifier;
expect(identifier.name, 'f2');
expect(functionExpression.operator.lexeme, '!');
- expect(expression.typeArguments.arguments.length, 1);
- TypeName typeArgument = expression.typeArguments.arguments.single;
+ expect(expression.typeArguments!.arguments.length, 1);
+ var typeArgument = expression.typeArguments!.arguments.single as TypeName;
expect(typeArgument.name.name, "int");
expect(expression.argumentList.arguments.length, 1);
- IntegerLiteral argument = expression.argumentList.arguments.single;
+ var argument = expression.argumentList.arguments.single as IntegerLiteral;
expect(argument.value, 42);
}
void test_bangQuestionIndex() {
// http://dartbug.com/41177
CompilationUnit unit = parseCompilationUnit('f(dynamic a) { a!?[0]; }');
- FunctionDeclaration funct = unit.declarations[0];
- BlockFunctionBody body = funct.functionExpression.body;
+ var funct = unit.declarations[0] as FunctionDeclaration;
+ var body = funct.functionExpression.body as BlockFunctionBody;
- ExpressionStatement statement = body.block.statements[0];
- IndexExpression expression = statement.expression;
+ var statement = body.block.statements[0] as ExpressionStatement;
+ var expression = statement.expression as IndexExpression;
- IntegerLiteral index = expression.index;
+ var index = expression.index as IntegerLiteral;
expect(index.value, 0);
- Token question = expression.question;
+ var question = expression.question!;
expect(question, isNotNull);
expect(question.lexeme, "?");
- PostfixExpression target = expression.target;
- SimpleIdentifier identifier = target.operand;
+ var target = expression.target as PostfixExpression;
+ var identifier = target.operand as SimpleIdentifier;
expect(identifier.name, 'a');
expect(target.operator.lexeme, '!');
}
void test_binary_expression_statement() {
final unit = parseCompilationUnit('D? foo(X? x) { X ?? x2; }');
- FunctionDeclaration funct = unit.declarations[0];
- BlockFunctionBody body = funct.functionExpression.body;
- ExpressionStatement statement = body.block.statements[0];
- BinaryExpression expression = statement.expression;
- SimpleIdentifier lhs = expression.leftOperand;
+ var funct = unit.declarations[0] as FunctionDeclaration;
+ var body = funct.functionExpression.body as BlockFunctionBody;
+ var statement = body.block.statements[0] as ExpressionStatement;
+ var expression = statement.expression as BinaryExpression;
+ var lhs = expression.leftOperand as SimpleIdentifier;
expect(lhs.name, 'X');
expect(expression.operator.lexeme, '??');
- SimpleIdentifier rhs = expression.rightOperand;
+ var rhs = expression.rightOperand as SimpleIdentifier;
expect(rhs.name, 'x2');
}
void test_cascade_withNullCheck_indexExpression() {
var unit = parseCompilationUnit('main() { a?..[27]; }');
- FunctionDeclaration funct = unit.declarations[0];
- BlockFunctionBody body = funct.functionExpression.body;
- ExpressionStatement statement = body.block.statements[0];
- CascadeExpression cascade = statement.expression;
- IndexExpression indexExpression = cascade.cascadeSections[0];
- expect(indexExpression.period.lexeme, '?..');
+ var funct = unit.declarations[0] as FunctionDeclaration;
+ var body = funct.functionExpression.body as BlockFunctionBody;
+ var statement = body.block.statements[0] as ExpressionStatement;
+ var cascade = statement.expression as CascadeExpression;
+ var indexExpression = cascade.cascadeSections[0] as IndexExpression;
+ expect(indexExpression.period!.lexeme, '?..');
expect(indexExpression.toSource(), '?..[27]');
}
@@ -157,22 +157,22 @@
void test_cascade_withNullCheck_methodInvocation() {
var unit = parseCompilationUnit('main() { a?..foo(); }');
- FunctionDeclaration funct = unit.declarations[0];
- BlockFunctionBody body = funct.functionExpression.body;
- ExpressionStatement statement = body.block.statements[0];
- CascadeExpression cascade = statement.expression;
- MethodInvocation invocation = cascade.cascadeSections[0];
- expect(invocation.operator.lexeme, '?..');
+ var funct = unit.declarations[0] as FunctionDeclaration;
+ var body = funct.functionExpression.body as BlockFunctionBody;
+ var statement = body.block.statements[0] as ExpressionStatement;
+ var cascade = statement.expression as CascadeExpression;
+ var invocation = cascade.cascadeSections[0] as MethodInvocation;
+ expect(invocation.operator!.lexeme, '?..');
expect(invocation.toSource(), '?..foo()');
}
void test_cascade_withNullCheck_propertyAccess() {
var unit = parseCompilationUnit('main() { a?..x27; }');
- FunctionDeclaration funct = unit.declarations[0];
- BlockFunctionBody body = funct.functionExpression.body;
- ExpressionStatement statement = body.block.statements[0];
- CascadeExpression cascade = statement.expression;
- PropertyAccess propertyAccess = cascade.cascadeSections[0];
+ var funct = unit.declarations[0] as FunctionDeclaration;
+ var body = funct.functionExpression.body as BlockFunctionBody;
+ var statement = body.block.statements[0] as ExpressionStatement;
+ var cascade = statement.expression as CascadeExpression;
+ var propertyAccess = cascade.cascadeSections[0] as PropertyAccess;
expect(propertyAccess.operator.lexeme, '?..');
expect(propertyAccess.toSource(), '?..x27');
}
@@ -263,19 +263,19 @@
void test_indexed() {
CompilationUnit unit = parseCompilationUnit('main() { a[7]; }');
- FunctionDeclaration method = unit.declarations[0];
- BlockFunctionBody body = method.functionExpression.body;
- ExpressionStatement statement = body.block.statements[0];
- IndexExpression expression = statement.expression;
+ var method = unit.declarations[0] as FunctionDeclaration;
+ var body = method.functionExpression.body as BlockFunctionBody;
+ var statement = body.block.statements[0] as ExpressionStatement;
+ var expression = statement.expression as IndexExpression;
expect(expression.leftBracket.lexeme, '[');
}
void test_indexed_nullAware() {
CompilationUnit unit = parseCompilationUnit('main() { a?[7]; }');
- FunctionDeclaration method = unit.declarations[0];
- BlockFunctionBody body = method.functionExpression.body;
- ExpressionStatement statement = body.block.statements[0];
- IndexExpression expression = statement.expression;
+ var method = unit.declarations[0] as FunctionDeclaration;
+ var body = method.functionExpression.body as BlockFunctionBody;
+ var statement = body.block.statements[0] as ExpressionStatement;
+ var expression = statement.expression as IndexExpression;
expect(expression.question, isNotNull);
expect(expression.leftBracket.lexeme, '[');
expect(expression.rightBracket.lexeme, ']');
@@ -287,11 +287,11 @@
// @dart = 2.2
main() { a?[7]; }''',
errors: [expectedError(ParserErrorCode.EXPERIMENT_NOT_ENABLED, 25, 1)]);
- FunctionDeclaration method = unit.declarations[0];
- BlockFunctionBody body = method.functionExpression.body;
- ExpressionStatement statement = body.block.statements[0];
- IndexExpressionImpl expression = statement.expression;
- expect(expression.target.toSource(), 'a');
+ var method = unit.declarations[0] as FunctionDeclaration;
+ var body = method.functionExpression.body as BlockFunctionBody;
+ var statement = body.block.statements[0] as ExpressionStatement;
+ var expression = statement.expression as IndexExpressionImpl;
+ expect(expression.target!.toSource(), 'a');
expect(expression.question, isNotNull);
expect(expression.leftBracket.lexeme, '[');
expect(expression.rightBracket.lexeme, ']');
@@ -307,12 +307,12 @@
void test_is_nullable() {
CompilationUnit unit =
parseCompilationUnit('main() { x is String? ? (x + y) : z; }');
- FunctionDeclaration function = unit.declarations[0];
- BlockFunctionBody body = function.functionExpression.body;
- ExpressionStatement statement = body.block.statements[0];
- ConditionalExpression expression = statement.expression;
+ var function = unit.declarations[0] as FunctionDeclaration;
+ var body = function.functionExpression.body as BlockFunctionBody;
+ var statement = body.block.statements[0] as ExpressionStatement;
+ var expression = statement.expression as ConditionalExpression;
- IsExpression condition = expression.condition;
+ var condition = expression.condition as IsExpression;
expect((condition.type as NamedType).question, isNotNull);
Expression thenExpression = expression.thenExpression;
expect(thenExpression, isParenthesizedExpression);
@@ -323,13 +323,13 @@
void test_is_nullable_parenthesis() {
CompilationUnit unit =
parseCompilationUnit('main() { (x is String?) ? (x + y) : z; }');
- FunctionDeclaration function = unit.declarations[0];
- BlockFunctionBody body = function.functionExpression.body;
- ExpressionStatement statement = body.block.statements[0];
- ConditionalExpression expression = statement.expression;
+ var function = unit.declarations[0] as FunctionDeclaration;
+ var body = function.functionExpression.body as BlockFunctionBody;
+ var statement = body.block.statements[0] as ExpressionStatement;
+ var expression = statement.expression as ConditionalExpression;
- ParenthesizedExpression condition = expression.condition;
- IsExpression isExpression = condition.expression;
+ var condition = expression.condition as ParenthesizedExpression;
+ var isExpression = condition.expression as IsExpression;
expect((isExpression.type as NamedType).question, isNotNull);
Expression thenExpression = expression.thenExpression;
expect(thenExpression, isParenthesizedExpression);
@@ -387,35 +387,39 @@
Foo(Object? o) : x = o as String?, y = 0;
}
''');
- ClassDeclaration classDeclaration = unit.declarations.first;
- ConstructorDeclaration constructor = classDeclaration.getConstructor(null);
+ var classDeclaration = unit.declarations.first as ClassDeclaration;
+ var constructor =
+ classDeclaration.getConstructor(null) as ConstructorDeclaration;
// Object? o
- SimpleFormalParameter parameter = constructor.parameters.parameters.single;
- expect(parameter.identifier.name, 'o');
- TypeName type = parameter.type;
- expect(type.question.lexeme, '?');
+ var parameter =
+ constructor.parameters.parameters.single as SimpleFormalParameter;
+ expect(parameter.identifier!.name, 'o');
+ var type = parameter.type as TypeName;
+ expect(type.question!.lexeme, '?');
expect(type.name.name, 'Object');
expect(constructor.initializers.length, 2);
// o as String?
{
- ConstructorFieldInitializer initializer = constructor.initializers[0];
+ var initializer =
+ constructor.initializers[0] as ConstructorFieldInitializer;
expect(initializer.fieldName.name, 'x');
- AsExpression expression = initializer.expression;
- SimpleIdentifier identifier = expression.expression;
+ var expression = initializer.expression as AsExpression;
+ var identifier = expression.expression as SimpleIdentifier;
expect(identifier.name, 'o');
- TypeName expressionType = expression.type;
- expect(expressionType.question.lexeme, '?');
+ var expressionType = expression.type as TypeName;
+ expect(expressionType.question!.lexeme, '?');
expect(expressionType.name.name, 'String');
}
// y = 0
{
- ConstructorFieldInitializer initializer = constructor.initializers[1];
+ var initializer =
+ constructor.initializers[1] as ConstructorFieldInitializer;
expect(initializer.fieldName.name, 'y');
- IntegerLiteral expression = initializer.expression;
+ var expression = initializer.expression as IntegerLiteral;
expect(expression.value, 0);
}
}
@@ -429,41 +433,45 @@
Foo(Object? o) : y = o is String? ? o.length : null, x = null;
}
''');
- ClassDeclaration classDeclaration = unit.declarations.first;
- ConstructorDeclaration constructor = classDeclaration.getConstructor(null);
+ var classDeclaration = unit.declarations.first as ClassDeclaration;
+ var constructor =
+ classDeclaration.getConstructor(null) as ConstructorDeclaration;
// Object? o
- SimpleFormalParameter parameter = constructor.parameters.parameters.single;
- expect(parameter.identifier.name, 'o');
- TypeName type = parameter.type;
- expect(type.question.lexeme, '?');
+ var parameter =
+ constructor.parameters.parameters.single as SimpleFormalParameter;
+ expect(parameter.identifier!.name, 'o');
+ var type = parameter.type as TypeName;
+ expect(type.question!.lexeme, '?');
expect(type.name.name, 'Object');
expect(constructor.initializers.length, 2);
// y = o is String? ? o.length : null
{
- ConstructorFieldInitializer initializer = constructor.initializers[0];
+ var initializer =
+ constructor.initializers[0] as ConstructorFieldInitializer;
expect(initializer.fieldName.name, 'y');
- ConditionalExpression expression = initializer.expression;
- IsExpression condition = expression.condition;
- SimpleIdentifier identifier = condition.expression;
+ var expression = initializer.expression as ConditionalExpression;
+ var condition = expression.condition as IsExpression;
+ var identifier = condition.expression as SimpleIdentifier;
expect(identifier.name, 'o');
- TypeName expressionType = condition.type;
- expect(expressionType.question.lexeme, '?');
+ var expressionType = condition.type as TypeName;
+ expect(expressionType.question!.lexeme, '?');
expect(expressionType.name.name, 'String');
- PrefixedIdentifier thenExpression = expression.thenExpression;
+ var thenExpression = expression.thenExpression as PrefixedIdentifier;
expect(thenExpression.identifier.name, 'length');
expect(thenExpression.prefix.name, 'o');
- NullLiteral elseExpression = expression.elseExpression;
+ var elseExpression = expression.elseExpression as NullLiteral;
expect(elseExpression, isNotNull);
}
// x = null
{
- ConstructorFieldInitializer initializer = constructor.initializers[1];
+ var initializer =
+ constructor.initializers[1] as ConstructorFieldInitializer;
expect(initializer.fieldName.name, 'x');
- NullLiteral expression = initializer.expression;
+ var expression = initializer.expression as NullLiteral;
expect(expression, isNotNull);
}
}
@@ -478,52 +486,57 @@
Foo(Object? o) : y = o is String ? o.length : null, x = null;
}
''');
- ClassDeclaration classDeclaration = unit.declarations.first;
- ConstructorDeclaration constructor = classDeclaration.getConstructor(null);
+ var classDeclaration = unit.declarations.first as ClassDeclaration;
+ var constructor =
+ classDeclaration.getConstructor(null) as ConstructorDeclaration;
// Object? o
- SimpleFormalParameter parameter = constructor.parameters.parameters.single;
- expect(parameter.identifier.name, 'o');
- TypeName type = parameter.type;
- expect(type.question.lexeme, '?');
+ var parameter =
+ constructor.parameters.parameters.single as SimpleFormalParameter;
+ expect(parameter.identifier!.name, 'o');
+ var type = parameter.type as TypeName;
+ expect(type.question!.lexeme, '?');
expect(type.name.name, 'Object');
expect(constructor.initializers.length, 2);
// y = o is String ? o.length : null
{
- ConstructorFieldInitializer initializer = constructor.initializers[0];
+ var initializer =
+ constructor.initializers[0] as ConstructorFieldInitializer;
expect(initializer.fieldName.name, 'y');
- ConditionalExpression expression = initializer.expression;
- IsExpression condition = expression.condition;
- SimpleIdentifier identifier = condition.expression;
+ var expression = initializer.expression as ConditionalExpression;
+ var condition = expression.condition as IsExpression;
+ var identifier = condition.expression as SimpleIdentifier;
expect(identifier.name, 'o');
- TypeName expressionType = condition.type;
+ var expressionType = condition.type as TypeName;
expect(expressionType.question, isNull);
expect(expressionType.name.name, 'String');
- PrefixedIdentifier thenExpression = expression.thenExpression;
+ var thenExpression = expression.thenExpression as PrefixedIdentifier;
expect(thenExpression.identifier.name, 'length');
expect(thenExpression.prefix.name, 'o');
- NullLiteral elseExpression = expression.elseExpression;
+ var elseExpression = expression.elseExpression as NullLiteral;
expect(elseExpression, isNotNull);
}
// x = null
{
- ConstructorFieldInitializer initializer = constructor.initializers[1];
+ var initializer =
+ constructor.initializers[1] as ConstructorFieldInitializer;
expect(initializer.fieldName.name, 'x');
- NullLiteral expression = initializer.expression;
+ var expression = initializer.expression as NullLiteral;
expect(expression, isNotNull);
}
}
void test_nullCheck() {
var unit = parseCompilationUnit('f(int? y) { var x = y!; }');
- FunctionDeclaration function = unit.declarations[0];
- BlockFunctionBody body = function.functionExpression.body;
- VariableDeclarationStatement statement = body.block.statements[0];
- PostfixExpression expression = statement.variables.variables[0].initializer;
- SimpleIdentifier identifier = expression.operand;
+ var function = unit.declarations[0] as FunctionDeclaration;
+ var body = function.functionExpression.body as BlockFunctionBody;
+ var statement = body.block.statements[0] as VariableDeclarationStatement;
+ var expression =
+ statement.variables.variables[0].initializer as PostfixExpression;
+ var identifier = expression.operand as SimpleIdentifier;
expect(identifier.name, 'y');
expect(expression.operator.lexeme, '!');
}
@@ -535,10 +548,11 @@
expectedError(ParserErrorCode.EXPERIMENT_NOT_ENABLED, 21, 1),
],
featureSet: preNonNullable);
- FunctionDeclaration function = unit.declarations[0];
- BlockFunctionBody body = function.functionExpression.body;
- VariableDeclarationStatement statement = body.block.statements[0];
- SimpleIdentifier identifier = statement.variables.variables[0].initializer;
+ var function = unit.declarations[0] as FunctionDeclaration;
+ var body = function.functionExpression.body as BlockFunctionBody;
+ var statement = body.block.statements[0] as VariableDeclarationStatement;
+ var identifier =
+ statement.variables.variables[0].initializer as SimpleIdentifier;
expect(identifier.name, 'y');
}
diff --git a/pkg/analyzer/test/generated/non_error_resolver_test.dart b/pkg/analyzer/test/generated/non_error_resolver_test.dart
index 8bfa672..67216c3 100644
--- a/pkg/analyzer/test/generated/non_error_resolver_test.dart
+++ b/pkg/analyzer/test/generated/non_error_resolver_test.dart
@@ -683,8 +683,8 @@
class D {}
class E {}
''');
- CompilationUnit unit = result.unit;
- ClassElement classC = unit.declaredElement.getType('C');
+ CompilationUnit unit = result.unit!;
+ ClassElement classC = unit.declaredElement!.getType('C')!;
expect(classC.documentationComment, isNotNull);
}
@@ -1668,8 +1668,8 @@
class C extends A<B> with M {}
''');
- CompilationUnit unit = result.unit;
- ClassElement classC = unit.declaredElement.getType('C');
+ CompilationUnit unit = result.unit!;
+ ClassElement classC = unit.declaredElement!.getType('C')!;
expect(classC.mixins, hasLength(1));
assertType(classC.mixins[0], 'M<B>');
}
@@ -1690,8 +1690,8 @@
1,
),
]);
- CompilationUnit unit = result.unit;
- ClassElement classC = unit.declaredElement.getType('C');
+ CompilationUnit unit = result.unit!;
+ ClassElement classC = unit.declaredElement!.getType('C')!;
expect(classC.mixins, hasLength(1));
assertType(classC.mixins[0], 'M<int, String>');
}
@@ -1706,8 +1706,8 @@
class C extends A<List<B>> with M {}
''');
- CompilationUnit unit = result.unit;
- ClassElement classC = unit.declaredElement.getType('C');
+ CompilationUnit unit = result.unit!;
+ ClassElement classC = unit.declaredElement!.getType('C')!;
expect(classC.mixins, hasLength(1));
assertType(classC.mixins[0], 'M<B>');
}
@@ -2153,7 +2153,7 @@
error(HintCode.UNUSED_LOCAL_VARIABLE, 93, 1),
error(CompileTimeErrorCode.INVALID_ASSIGNMENT, 97, 1),
]);
- var z = result.unit.declaredElement.topLevelVariables
+ var z = result.unit!.declaredElement!.topLevelVariables
.where((e) => e.name == 'z')
.single;
assertType(z.type, 'List<String>');
@@ -2333,7 +2333,7 @@
class B<T> = Object with A<T>;
class C = Object with B;
''');
- var bReference = result.unit.declaredElement.getType('C').mixins[0];
+ var bReference = result.unit!.declaredElement!.getType('C')!.mixins[0];
assertTypeDynamic(bReference.typeArguments[0]);
}
@@ -2350,7 +2350,7 @@
class Base implements A1<int> {}
class C = Base with B;
''');
- var bReference = result.unit.declaredElement.getType('C').mixins[0];
+ var bReference = result.unit!.declaredElement!.getType('C')!.mixins[0];
assertType(bReference.typeArguments[0], 'int');
}
@@ -2390,10 +2390,10 @@
''', [
error(HintCode.UNUSED_LOCAL_VARIABLE, 135, 1),
]);
- var main = result.unit.declarations.last as FunctionDeclaration;
+ var main = result.unit!.declarations.last as FunctionDeclaration;
var mainBody = main.functionExpression.body as BlockFunctionBody;
var xDecl = mainBody.block.statements[0] as VariableDeclarationStatement;
- var xElem = xDecl.variables.variables[0].declaredElement;
+ var xElem = xDecl.variables.variables[0].declaredElement!;
assertType(xElem.type, 'int');
}
@@ -2858,25 +2858,25 @@
@B.named8()
main() {}
''');
- expect(result.unit.declarations, hasLength(1));
- final mainDecl = result.unit.declarations[0];
+ expect(result.unit!.declarations, hasLength(1));
+ final mainDecl = result.unit!.declarations[0];
expect(mainDecl.metadata, hasLength(8));
mainDecl.metadata.forEach((metadata) {
- final value = metadata.elementAnnotation.computeConstantValue();
+ final value = metadata.elementAnnotation!.computeConstantValue()!;
expect(value, isNotNull);
assertType(value.type, 'B');
- final unbounded = value.getField('unbounded');
- final bounded = value.getField('bounded');
+ final unbounded = value.getField('unbounded')!;
+ final bounded = value.getField('bounded')!;
if (!unbounded.isNull) {
expect(bounded.isNull, true);
assertType(unbounded.type, 'Unbounded<dynamic>');
- expect(unbounded.type.typeArguments, hasLength(1));
- expect(unbounded.type.typeArguments[0].isDynamic, isTrue);
+ expect(unbounded.type!.typeArguments, hasLength(1));
+ expect(unbounded.type!.typeArguments[0].isDynamic, isTrue);
} else {
expect(unbounded.isNull, true);
assertType(bounded.type, 'Bounded<String>');
- expect(bounded.type.typeArguments, hasLength(1));
- assertType(bounded.type.typeArguments[0], 'String');
+ expect(bounded.type!.typeArguments, hasLength(1));
+ assertType(bounded.type!.typeArguments[0], 'String');
}
});
}
diff --git a/pkg/analyzer/test/generated/parser_fasta_listener.dart b/pkg/analyzer/test/generated/parser_fasta_listener.dart
index 4a88ce75..dd2f9b4 100644
--- a/pkg/analyzer/test/generated/parser_fasta_listener.dart
+++ b/pkg/analyzer/test/generated/parser_fasta_listener.dart
@@ -30,7 +30,7 @@
class ForwardingTestListener extends ForwardingListener {
final _stack = <String>[];
- ForwardingTestListener([Listener listener]) : super(listener);
+ ForwardingTestListener([Listener? listener]) : super(listener);
void begin(String event) {
expect(event, isNotNull);
@@ -87,7 +87,7 @@
@override
void beginClassDeclaration(
- Token beginToken, Token abstractToken, Token name) {
+ Token beginToken, Token? abstractToken, Token name) {
super.beginClassDeclaration(beginToken, abstractToken, name);
begin('ClassDeclaration');
}
@@ -179,7 +179,7 @@
}
@override
- void beginExtensionDeclaration(Token extensionKeyword, Token name) {
+ void beginExtensionDeclaration(Token extensionKeyword, Token? name) {
super.beginExtensionDeclaration(extensionKeyword, name);
begin('ExtensionDeclaration');
}
@@ -192,7 +192,7 @@
@override
void beginFactoryMethod(
- Token lastConsumed, Token externalToken, Token constToken) {
+ Token lastConsumed, Token? externalToken, Token? constToken) {
super.beginFactoryMethod(lastConsumed, externalToken, constToken);
begin('FactoryMethod');
}
@@ -204,7 +204,7 @@
}
@override
- void beginForControlFlow(Token awaitToken, Token forToken) {
+ void beginForControlFlow(Token? awaitToken, Token forToken) {
super.beginForControlFlow(awaitToken, forToken);
begin('ForControlFlow');
}
@@ -222,8 +222,8 @@
}
@override
- void beginFormalParameter(Token token, MemberKind kind, Token requiredToken,
- Token covariantToken, Token varFinalOrConst) {
+ void beginFormalParameter(Token token, MemberKind kind, Token? requiredToken,
+ Token? covariantToken, Token? varFinalOrConst) {
super.beginFormalParameter(
token, kind, requiredToken, covariantToken, varFinalOrConst);
begin('FormalParameter');
@@ -370,8 +370,13 @@
}
@override
- void beginMethod(Token externalToken, Token staticToken, Token covariantToken,
- Token varFinalOrConst, Token getOrSet, Token name) {
+ void beginMethod(
+ Token? externalToken,
+ Token? staticToken,
+ Token? covariantToken,
+ Token? varFinalOrConst,
+ Token? getOrSet,
+ Token name) {
super.beginMethod(externalToken, staticToken, covariantToken,
varFinalOrConst, getOrSet, name);
begin('Method');
@@ -391,7 +396,7 @@
@override
void beginNamedMixinApplication(
- Token beginToken, Token abstractToken, Token name) {
+ Token beginToken, Token? abstractToken, Token name) {
super.beginNamedMixinApplication(beginToken, abstractToken, name);
begin('NamedMixinApplication');
}
@@ -475,7 +480,7 @@
}
@override
- void beginTopLevelMethod(Token lastConsumed, Token externalToken) {
+ void beginTopLevelMethod(Token lastConsumed, Token? externalToken) {
super.beginTopLevelMethod(lastConsumed, externalToken);
begin('TopLevelMethod');
}
@@ -518,7 +523,7 @@
@override
void beginVariablesDeclaration(
- Token token, Token lateToken, Token varFinalOrConst) {
+ Token token, Token? lateToken, Token? varFinalOrConst) {
super.beginVariablesDeclaration(token, lateToken, varFinalOrConst);
begin('VariablesDeclaration');
}
@@ -554,7 +559,7 @@
@override
void endAssert(Token assertKeyword, Assert kind, Token leftParenthesis,
- Token commaToken, Token semicolonToken) {
+ Token? commaToken, Token semicolonToken) {
end('Assert');
super.endAssert(
assertKeyword, kind, leftParenthesis, commaToken, semicolonToken);
@@ -598,8 +603,8 @@
}
@override
- void endClassConstructor(Token getOrSet, Token beginToken, Token beginParam,
- Token beginInitializers, Token endToken) {
+ void endClassConstructor(Token? getOrSet, Token beginToken, Token beginParam,
+ Token? beginInitializers, Token endToken) {
end('Method');
super.endClassConstructor(
getOrSet, beginToken, beginParam, beginInitializers, endToken);
@@ -621,12 +626,12 @@
@override
void endClassFields(
- Token abstractToken,
- Token externalToken,
- Token staticToken,
- Token covariantToken,
- Token lateToken,
- Token varFinalOrConst,
+ Token? abstractToken,
+ Token? externalToken,
+ Token? staticToken,
+ Token? covariantToken,
+ Token? lateToken,
+ Token? varFinalOrConst,
int count,
Token beginToken,
Token endToken) {
@@ -645,8 +650,8 @@
}
@override
- void endClassMethod(Token getOrSet, Token beginToken, Token beginParam,
- Token beginInitializers, Token endToken) {
+ void endClassMethod(Token? getOrSet, Token beginToken, Token beginParam,
+ Token? beginInitializers, Token endToken) {
end('Method');
super.endClassMethod(
getOrSet, beginToken, beginParam, beginInitializers, endToken);
@@ -673,7 +678,7 @@
}
@override
- void endConditionalUri(Token ifKeyword, Token leftParen, Token equalSign) {
+ void endConditionalUri(Token ifKeyword, Token leftParen, Token? equalSign) {
end('ConditionalUri');
super.endConditionalUri(ifKeyword, leftParen, equalSign);
}
@@ -698,7 +703,7 @@
@override
void endConstructorReference(
- Token start, Token periodBeforeName, Token endToken) {
+ Token start, Token? periodBeforeName, Token endToken) {
end('ConstructorReference');
super.endConstructorReference(start, periodBeforeName, endToken);
}
@@ -735,8 +740,8 @@
}
@override
- void endExtensionConstructor(Token getOrSet, Token beginToken,
- Token beginParam, Token beginInitializers, Token endToken) {
+ void endExtensionConstructor(Token? getOrSet, Token beginToken,
+ Token beginParam, Token? beginInitializers, Token endToken) {
end('Method');
super.endExtensionConstructor(
getOrSet, beginToken, beginParam, beginInitializers, endToken);
@@ -758,12 +763,12 @@
@override
void endExtensionFields(
- Token abstractToken,
- Token externalToken,
- Token staticToken,
- Token covariantToken,
- Token lateToken,
- Token varFinalOrConst,
+ Token? abstractToken,
+ Token? externalToken,
+ Token? staticToken,
+ Token? covariantToken,
+ Token? lateToken,
+ Token? varFinalOrConst,
int count,
Token beginToken,
Token endToken) {
@@ -782,8 +787,8 @@
}
@override
- void endExtensionMethod(Token getOrSet, Token beginToken, Token beginParam,
- Token beginInitializers, Token endToken) {
+ void endExtensionMethod(Token? getOrSet, Token beginToken, Token beginParam,
+ Token? beginInitializers, Token endToken) {
end('Method');
super.endExtensionMethod(
getOrSet, beginToken, beginParam, beginInitializers, endToken);
@@ -827,11 +832,11 @@
@override
void endFormalParameter(
- Token thisKeyword,
- Token periodAfterThis,
+ Token? thisKeyword,
+ Token? periodAfterThis,
Token nameToken,
- Token initializerStart,
- Token initializerEnd,
+ Token? initializerStart,
+ Token? initializerEnd,
FormalParameterKind kind,
MemberKind memberKind) {
end('FormalParameter');
@@ -871,20 +876,20 @@
}
@override
- void endFunctionType(Token functionToken, Token questionMark) {
+ void endFunctionType(Token functionToken, Token? questionMark) {
end('FunctionType');
super.endFunctionType(functionToken, questionMark);
}
@override
void endFunctionTypeAlias(
- Token typedefKeyword, Token equals, Token endToken) {
+ Token typedefKeyword, Token? equals, Token endToken) {
end('FunctionTypeAlias');
super.endFunctionTypeAlias(typedefKeyword, equals, endToken);
}
@override
- void endFunctionTypedFormalParameter(Token nameToken, Token question) {
+ void endFunctionTypedFormalParameter(Token nameToken, Token? question) {
end('FunctionTypedFormalParameter');
super.endFunctionTypedFormalParameter(nameToken, question);
}
@@ -908,13 +913,13 @@
}
@override
- void endIfStatement(Token ifToken, Token elseToken) {
+ void endIfStatement(Token ifToken, Token? elseToken) {
end('IfStatement');
super.endIfStatement(ifToken, elseToken);
}
@override
- void endImport(Token importKeyword, Token semicolon) {
+ void endImport(Token importKeyword, Token? semicolon) {
end('Import');
super.endImport(importKeyword, semicolon);
}
@@ -945,7 +950,7 @@
}
@override
- void endInvalidYieldStatement(Token beginToken, Token starToken,
+ void endInvalidYieldStatement(Token beginToken, Token? starToken,
Token endToken, MessageCode errorCode) {
end('InvalidYieldStatement');
super.endInvalidYieldStatement(beginToken, starToken, endToken, errorCode);
@@ -988,7 +993,7 @@
}
@override
- void endMetadata(Token beginToken, Token periodBeforeName, Token endToken) {
+ void endMetadata(Token beginToken, Token? periodBeforeName, Token endToken) {
end('Metadata');
super.endMetadata(beginToken, periodBeforeName, endToken);
}
@@ -1000,8 +1005,8 @@
}
@override
- void endMixinConstructor(Token getOrSet, Token beginToken, Token beginParam,
- Token beginInitializers, Token endToken) {
+ void endMixinConstructor(Token? getOrSet, Token beginToken, Token beginParam,
+ Token? beginInitializers, Token endToken) {
end('Method');
super.endMixinConstructor(
getOrSet, beginToken, beginParam, beginInitializers, endToken);
@@ -1023,12 +1028,12 @@
@override
void endMixinFields(
- Token abstractToken,
- Token externalToken,
- Token staticToken,
- Token covariantToken,
- Token lateToken,
- Token varFinalOrConst,
+ Token? abstractToken,
+ Token? externalToken,
+ Token? staticToken,
+ Token? covariantToken,
+ Token? lateToken,
+ Token? varFinalOrConst,
int count,
Token beginToken,
Token endToken) {
@@ -1047,8 +1052,8 @@
}
@override
- void endMixinMethod(Token getOrSet, Token beginToken, Token beginParam,
- Token beginInitializers, Token endToken) {
+ void endMixinMethod(Token? getOrSet, Token beginToken, Token beginParam,
+ Token? beginInitializers, Token endToken) {
end('Method');
super.endMixinMethod(
getOrSet, beginToken, beginParam, beginInitializers, endToken);
@@ -1062,7 +1067,7 @@
@override
void endNamedMixinApplication(Token begin, Token classKeyword, Token equals,
- Token implementsKeyword, Token endToken) {
+ Token? implementsKeyword, Token endToken) {
end('NamedMixinApplication');
end('ClassOrNamedMixinApplication');
super.endNamedMixinApplication(
@@ -1130,8 +1135,8 @@
void endSwitchCase(
int labelCount,
int expressionCount,
- Token defaultKeyword,
- Token colonAfterDefault,
+ Token? defaultKeyword,
+ Token? colonAfterDefault,
int statementCount,
Token firstToken,
Token endToken) {
@@ -1163,11 +1168,11 @@
@override
void endTopLevelFields(
- Token externalToken,
- Token staticToken,
- Token covariantToken,
- Token lateToken,
- Token varFinalOrConst,
+ Token? externalToken,
+ Token? staticToken,
+ Token? covariantToken,
+ Token? lateToken,
+ Token? varFinalOrConst,
int count,
Token beginToken,
Token endToken) {
@@ -1177,14 +1182,15 @@
}
@override
- void endTopLevelMethod(Token beginToken, Token getOrSet, Token endToken) {
+ void endTopLevelMethod(Token beginToken, Token? getOrSet, Token endToken) {
end('TopLevelMethod');
end('TopLevelMember');
super.endTopLevelMethod(beginToken, getOrSet, endToken);
}
@override
- void endTryStatement(int catchCount, Token tryKeyword, Token finallyKeyword) {
+ void endTryStatement(
+ int catchCount, Token tryKeyword, Token? finallyKeyword) {
end('TryStatement');
super.endTryStatement(catchCount, tryKeyword, finallyKeyword);
}
@@ -1203,7 +1209,7 @@
@override
void endTypeVariable(
- Token token, int index, Token extendsOrSuper, Token variance) {
+ Token token, int index, Token? extendsOrSuper, Token? variance) {
end('TypeVariable');
super.endTypeVariable(token, index, extendsOrSuper, variance);
}
@@ -1221,7 +1227,7 @@
}
@override
- void endVariablesDeclaration(int count, Token endToken) {
+ void endVariablesDeclaration(int count, Token? endToken) {
end('VariablesDeclaration');
super.endVariablesDeclaration(count, endToken);
}
@@ -1239,7 +1245,7 @@
}
@override
- void endYieldStatement(Token yieldToken, Token starToken, Token endToken) {
+ void endYieldStatement(Token yieldToken, Token? starToken, Token endToken) {
end('YieldStatement');
super.endYieldStatement(yieldToken, starToken, endToken);
}
@@ -1261,22 +1267,22 @@
}
@override
- void handleClassExtends(Token extendsKeyword, int typeCount) {
+ void handleClassExtends(Token? extendsKeyword, int typeCount) {
expectIn('ClassDeclaration');
- listener.handleClassExtends(extendsKeyword, typeCount);
+ listener?.handleClassExtends(extendsKeyword, typeCount);
}
@override
- void handleClassHeader(Token begin, Token classKeyword, Token nativeToken) {
+ void handleClassHeader(Token begin, Token classKeyword, Token? nativeToken) {
expectIn('ClassDeclaration');
- listener.handleClassHeader(begin, classKeyword, nativeToken);
+ listener?.handleClassHeader(begin, classKeyword, nativeToken);
}
@override
void handleClassOrMixinImplements(
- Token implementsKeyword, int interfacesCount) {
+ Token? implementsKeyword, int interfacesCount) {
expectInOneOf(['ClassDeclaration', 'MixinDeclaration']);
- listener.handleClassOrMixinImplements(implementsKeyword, interfacesCount);
+ listener?.handleClassOrMixinImplements(implementsKeyword, interfacesCount);
}
@override
@@ -1292,11 +1298,11 @@
}
@override
- void handleImportPrefix(Token deferredKeyword, Token asKeyword) {
+ void handleImportPrefix(Token? deferredKeyword, Token? asKeyword) {
// This event normally happens within "Import",
// but happens within "CompilationUnit" during recovery.
expectInOneOf(const ['Import', 'CompilationUnit']);
- listener.handleImportPrefix(deferredKeyword, asKeyword);
+ listener?.handleImportPrefix(deferredKeyword, asKeyword);
}
@override
@@ -1308,59 +1314,59 @@
@override
void handleInvalidTopLevelDeclaration(Token endToken) {
end('TopLevelMember');
- listener.handleInvalidTopLevelDeclaration(endToken);
+ listener?.handleInvalidTopLevelDeclaration(endToken);
}
@override
void handleNativeClause(Token nativeToken, bool hasName) {
expectInOneOf(['ClassDeclaration', 'Method']);
- listener.handleNativeClause(nativeToken, hasName);
+ listener?.handleNativeClause(nativeToken, hasName);
}
@override
void handleNativeFunctionBody(Token nativeToken, Token semicolon) {
expectInOneOf(['Method']);
- listener.handleNativeFunctionBody(nativeToken, semicolon);
+ listener?.handleNativeFunctionBody(nativeToken, semicolon);
}
@override
void handleNativeFunctionBodyIgnored(Token nativeToken, Token semicolon) {
expectInOneOf(['Method']);
- listener.handleNativeFunctionBodyIgnored(nativeToken, semicolon);
+ listener?.handleNativeFunctionBodyIgnored(nativeToken, semicolon);
}
@override
void handleNativeFunctionBodySkipped(Token nativeToken, Token semicolon) {
expectInOneOf(['Method']);
- listener.handleNativeFunctionBodySkipped(nativeToken, semicolon);
+ listener?.handleNativeFunctionBodySkipped(nativeToken, semicolon);
}
@override
void handleRecoverClassHeader() {
expectIn('ClassDeclaration');
- listener.handleRecoverClassHeader();
+ listener?.handleRecoverClassHeader();
}
@override
- void handleRecoverImport(Token semicolon) {
+ void handleRecoverImport(Token? semicolon) {
expectIn('CompilationUnit');
- listener.handleRecoverImport(semicolon);
+ listener?.handleRecoverImport(semicolon);
}
@override
void handleRecoverMixinHeader() {
expectIn('MixinDeclaration');
- listener.handleRecoverMixinHeader();
+ listener?.handleRecoverMixinHeader();
}
@override
void handleScript(Token token) {
expectIn('CompilationUnit');
- listener.handleScript(token);
+ listener?.handleScript(token);
}
@override
void handleTypeVariablesDefined(Token token, int count) {
- listener.handleTypeVariablesDefined(token, count);
+ listener?.handleTypeVariablesDefined(token, count);
}
}
diff --git a/pkg/analyzer/test/generated/parser_test_base.dart b/pkg/analyzer/test/generated/parser_test_base.dart
index f6387fe..323d52e 100644
--- a/pkg/analyzer/test/generated/parser_test_base.dart
+++ b/pkg/analyzer/test/generated/parser_test_base.dart
@@ -25,6 +25,7 @@
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/generated/utilities_dart.dart';
import 'package:analyzer/src/string_source.dart';
+import 'package:analyzer/src/summary2/ast_binary_tokens.dart';
import 'package:pub_semver/src/version.dart';
import 'package:test/test.dart';
@@ -99,7 +100,7 @@
Expression parseCascadeSection(String code);
- CommentReference parseCommentReference(
+ CommentReference? parseCommentReference(
String referenceSource, int sourceOffset);
CompilationUnit parseCompilationUnit(String source,
@@ -232,9 +233,9 @@
flags: [],
);
- ParserProxy parserProxy;
+ late ParserProxy parserProxy;
- Token _fastaTokens;
+ late Token _fastaTokens;
@override
bool allowNativeClause = false;
@@ -258,7 +259,7 @@
@override
ParserProxy get parser => parserProxy;
- void assertErrors({List<ErrorCode> codes, List<ExpectedError> errors}) {
+ void assertErrors({List<ErrorCode>? codes, List<ExpectedError>? errors}) {
if (codes != null) {
if (!identical(codes, NO_ERROR_COMPARISON)) {
assertErrorsWithCodes(codes);
@@ -283,7 +284,7 @@
@override
void createParser(String content,
- {int expectedEndOffset, FeatureSet featureSet}) {
+ {int? expectedEndOffset, FeatureSet? featureSet}) {
featureSet ??= FeatureSet.forTesting();
var result = scanString(content,
configuration: featureSet.isEnabled(Feature.non_nullable)
@@ -301,7 +302,7 @@
ExpectedError(_toFastaGeneratedAnalyzerErrorCode(code), offset, length);
@override
- void expectNotNullIfNoErrors(Object result) {
+ void expectNotNullIfNoErrors(Object? result) {
if (!listener.hasErrors) {
expect(result, isNotNull);
}
@@ -337,7 +338,8 @@
@override
AwaitExpression parseAwaitExpression(String code) {
var function = _parseExpression('() async => $code') as FunctionExpression;
- return (function.body as ExpressionFunctionBody).expression;
+ return (function.body as ExpressionFunctionBody).expression
+ as AwaitExpression;
}
@override
@@ -362,13 +364,13 @@
}
@override
- CommentReference parseCommentReference(
+ CommentReference? parseCommentReference(
String referenceSource, int sourceOffset) {
String padding = ' '.padLeft(sourceOffset - 4, 'a');
String source = '/**$padding[$referenceSource] */ class C { }';
CompilationUnit unit = parseCompilationUnit(source);
- ClassDeclaration clazz = unit.declarations[0];
- Comment comment = clazz.documentationComment;
+ var clazz = unit.declarations[0] as ClassDeclaration;
+ var comment = clazz.documentationComment!;
List<CommentReference> references = comment.references;
if (references.isEmpty) {
return null;
@@ -380,9 +382,9 @@
@override
CompilationUnit parseCompilationUnit(String content,
- {List<ErrorCode> codes,
- List<ExpectedError> errors,
- FeatureSet featureSet}) {
+ {List<ErrorCode>? codes,
+ List<ExpectedError>? errors,
+ FeatureSet? featureSet}) {
GatheringErrorListener listener = GatheringErrorListener(checkRanges: true);
CompilationUnit unit =
@@ -402,14 +404,14 @@
CompilationUnit parseCompilationUnit2(
String content, GatheringErrorListener listener,
- {LanguageVersionToken languageVersion, FeatureSet featureSet}) {
+ {LanguageVersionToken? languageVersion, FeatureSet? featureSet}) {
featureSet ??= FeatureSet.forTesting();
var source = StringSource(content, 'parser_test_StringSource.dart');
// Adjust the feature set based on language version comment.
void languageVersionChanged(
fasta.Scanner scanner, LanguageVersionToken languageVersion) {
- featureSet = featureSet.restrictToVersion(
+ featureSet = featureSet!.restrictToVersion(
Version(languageVersion.major, languageVersion.minor, 0));
scanner.configuration = Scanner.buildConfig(featureSet);
}
@@ -428,12 +430,12 @@
isNonNullableByDefault: false,
);
AstBuilder astBuilder =
- AstBuilder(errorReporter, source.uri, true, featureSet);
+ AstBuilder(errorReporter, source.uri, true, featureSet!);
fasta.Parser parser = fasta.Parser(astBuilder);
astBuilder.parser = parser;
astBuilder.allowNativeClause = allowNativeClause;
parser.parseUnit(_fastaTokens);
- CompilationUnitImpl unit = astBuilder.pop();
+ var unit = astBuilder.pop() as CompilationUnitImpl;
expect(unit, isNotNull);
return unit;
@@ -441,7 +443,7 @@
@override
ConditionalExpression parseConditionalExpression(String code) {
- return _parseExpression(code);
+ return _parseExpression(code) as ConditionalExpression;
}
@override
@@ -473,16 +475,16 @@
@override
BinaryExpression parseEqualityExpression(String code) {
- return _parseExpression(code);
+ return _parseExpression(code) as BinaryExpression;
}
@override
Expression parseExpression(String source,
- {List<ErrorCode> codes,
- List<ExpectedError> errors,
- int expectedEndOffset,
+ {List<ErrorCode>? codes,
+ List<ExpectedError>? errors,
+ int? expectedEndOffset,
bool inAsync = false,
- FeatureSet featureSet}) {
+ FeatureSet? featureSet}) {
createParser(source,
expectedEndOffset: expectedEndOffset, featureSet: featureSet);
if (inAsync) {
@@ -509,7 +511,7 @@
@override
FormalParameter parseFormalParameter(String code, ParameterKind kind,
{List<ErrorCode> errorCodes = const <ErrorCode>[],
- FeatureSet featureSet}) {
+ FeatureSet? featureSet}) {
String parametersCode;
if (kind == ParameterKind.REQUIRED) {
parametersCode = '($code)';
@@ -529,8 +531,8 @@
FormalParameterList parseFormalParameterList(String code,
{bool inFunctionType = false,
List<ErrorCode> errorCodes = const <ErrorCode>[],
- List<ExpectedError> errors,
- FeatureSet featureSet}) {
+ List<ExpectedError>? errors,
+ FeatureSet? featureSet}) {
createParser(code, featureSet: featureSet);
FormalParameterList result =
parserProxy.parseFormalParameterList(inFunctionType: inFunctionType);
@@ -540,28 +542,28 @@
@override
CompilationUnitMember parseFullCompilationUnitMember() {
- return parserProxy.parseTopLevelDeclaration(false);
+ return parserProxy.parseTopLevelDeclaration(false) as CompilationUnitMember;
}
@override
Directive parseFullDirective() {
- return parserProxy.parseTopLevelDeclaration(true);
+ return parserProxy.parseTopLevelDeclaration(true) as Directive;
}
@override
FunctionExpression parseFunctionExpression(String code) {
- return _parseExpression(code);
+ return _parseExpression(code) as FunctionExpression;
}
@override
InstanceCreationExpression parseInstanceCreationExpression(
String code, Token newToken) {
- return _parseExpression('$newToken $code');
+ return _parseExpression('$newToken $code') as InstanceCreationExpression;
}
@override
ListLiteral parseListLiteral(
- Token token, String typeArgumentsCode, String code) {
+ Token? token, String? typeArgumentsCode, String code) {
String sc = '';
if (token != null) {
sc += token.lexeme + ' ';
@@ -570,11 +572,11 @@
sc += typeArgumentsCode;
}
sc += code;
- return _parseExpression(sc);
+ return _parseExpression(sc) as ListLiteral;
}
@override
- TypedLiteral parseListOrMapLiteral(Token modifier, String code) {
+ TypedLiteral parseListOrMapLiteral(Token? modifier, String code) {
String literalCode = modifier != null ? '$modifier $code' : code;
return parsePrimaryExpression(literalCode) as TypedLiteral;
}
@@ -591,7 +593,7 @@
@override
SetOrMapLiteral parseMapLiteral(
- Token token, String typeArgumentsCode, String code) {
+ Token? token, String? typeArgumentsCode, String code) {
String sc = '';
if (token != null) {
sc += token.lexeme + ' ';
@@ -606,7 +608,7 @@
@override
MapLiteralEntry parseMapLiteralEntry(String code) {
var mapLiteral = parseMapLiteral(null, null, '{ $code }');
- return mapLiteral.elements.single;
+ return mapLiteral.elements.single as MapLiteralEntry;
}
@override
@@ -616,7 +618,7 @@
@override
InstanceCreationExpression parseNewExpression(String code) {
- return _parseExpression(code);
+ return _parseExpression(code) as InstanceCreationExpression;
}
@override
@@ -625,7 +627,7 @@
List<ErrorCode> errorCodes = const <ErrorCode>[]}) {
FormalParameterList list = parseFormalParameterList('($code)',
inFunctionType: inFunctionType, errorCodes: errorCodes);
- return list.parameters.single;
+ return list.parameters.single as NormalFormalParameter;
}
@override
@@ -635,12 +637,12 @@
@override
Identifier parsePrefixedIdentifier(String code) {
- return _parseExpression(code);
+ return _parseExpression(code) as Identifier;
}
@override
Expression parsePrimaryExpression(String code,
- {int expectedEndOffset, List<ExpectedError> errors}) {
+ {int? expectedEndOffset, List<ExpectedError>? errors}) {
createParser(code, expectedEndOffset: expectedEndOffset);
Expression result = parserProxy.parsePrimaryExpression();
assertErrors(codes: null, errors: errors);
@@ -654,22 +656,22 @@
@override
RethrowExpression parseRethrowExpression(String code) {
- return _parseExpression(code);
+ return _parseExpression(code) as RethrowExpression;
}
@override
BinaryExpression parseShiftExpression(String code) {
- return _parseExpression(code);
+ return _parseExpression(code) as BinaryExpression;
}
@override
SimpleIdentifier parseSimpleIdentifier(String code) {
- return _parseExpression(code);
+ return _parseExpression(code) as SimpleIdentifier;
}
@override
Statement parseStatement(String source,
- {int expectedEndOffset, FeatureSet featureSet, bool inAsync = false}) {
+ {int? expectedEndOffset, FeatureSet? featureSet, bool inAsync = false}) {
createParser(source,
expectedEndOffset: expectedEndOffset, featureSet: featureSet);
if (inAsync) {
@@ -687,7 +689,7 @@
@override
SymbolLiteral parseSymbolLiteral(String code) {
- return _parseExpression(code);
+ return _parseExpression(code) as SymbolLiteral;
}
@override
@@ -702,7 +704,7 @@
@override
PrefixExpression parseUnaryExpression(String code) {
- return _parseExpression(code);
+ return _parseExpression(code) as PrefixExpression;
}
@override
@@ -747,14 +749,14 @@
/// The error listener to which scanner and parser errors will be reported.
final GatheringErrorListener errorListener;
- ForwardingTestListener _eventListener;
+ late final ForwardingTestListener _eventListener;
- final int expectedEndOffset;
+ final int? expectedEndOffset;
/// Creates a [ParserProxy] which is prepared to begin parsing at the given
/// Fasta token.
factory ParserProxy(Token firstToken, FeatureSet featureSet,
- {bool allowNativeClause = false, int expectedEndOffset}) {
+ {bool allowNativeClause = false, int? expectedEndOffset}) {
TestSource source = TestSource();
var errorListener = GatheringErrorListener(checkRanges: true);
return ParserProxy._(firstToken, source, errorListener, featureSet,
@@ -779,7 +781,7 @@
return _run('MetadataStar', () {
currentToken = fastaParser
.parseMetadata(fastaParser.syntheticPreviousToken(currentToken))
- .next;
+ .next!;
return astBuilder.pop() as Annotation;
});
}
@@ -788,7 +790,7 @@
return _run('unspecified', () {
currentToken = fastaParser
.parseArguments(fastaParser.syntheticPreviousToken(currentToken))
- .next;
+ .next!;
var result = astBuilder.pop();
return result is MethodInvocation
? result.argumentList
@@ -797,6 +799,10 @@
}
ClassMember parseClassMember(String className) {
+ return parseClassMemberOrNull(className)!;
+ }
+
+ ClassMember? parseClassMemberOrNull(String className) {
return _run('ClassOrMixinBody', () {
astBuilder.classDeclaration = astFactory.classDeclaration(
null,
@@ -809,14 +815,14 @@
null,
null,
null,
- null /* leftBracket */,
+ Tokens.OPEN_CURLY_BRACKET /* leftBracket */,
<ClassMember>[],
- null /* rightBracket */,
+ Tokens.CLOSE_CURLY_BRACKET /* rightBracket */,
) as ClassDeclarationImpl;
// TODO(danrubel): disambiguate between class and mixin
currentToken = fastaParser.parseClassMember(currentToken, className);
//currentToken = fastaParser.parseMixinMember(currentToken);
- ClassDeclaration declaration = astBuilder.classDeclaration;
+ ClassDeclaration declaration = astBuilder.classDeclaration!;
astBuilder.classDeclaration = null;
return declaration.members.isNotEmpty ? declaration.members[0] : null;
});
@@ -826,7 +832,7 @@
return _run('Import', () {
currentToken = fastaParser
.parseCombinatorStar(fastaParser.syntheticPreviousToken(currentToken))
- .next;
+ .next!;
return astBuilder.pop() as List<Combinator>;
});
}
@@ -834,7 +840,7 @@
List<CommentReference> parseCommentReferences(
List<DocumentationCommentToken> tokens) {
for (int index = 0; index < tokens.length - 1; ++index) {
- Token next = tokens[index].next;
+ var next = tokens[index].next;
if (next == null) {
tokens[index].setNext(tokens[index + 1]);
} else {
@@ -884,17 +890,17 @@
@override
FunctionBody parseFunctionBody(
bool mayBeEmpty, ParserErrorCode emptyErrorCode, bool inExpression) {
- Token lastToken;
+ Token? lastToken;
FunctionBody body = _run('unspecified', () {
FunctionBody body =
super.parseFunctionBody(mayBeEmpty, emptyErrorCode, inExpression);
lastToken = currentToken;
- currentToken = currentToken.next;
+ currentToken = currentToken.next!;
return body;
});
if (!inExpression) {
- if (![';', '}'].contains(lastToken.lexeme)) {
- fail('Expected ";" or "}", but found: ${lastToken.lexeme}');
+ if (![';', '}'].contains(lastToken!.lexeme)) {
+ fail('Expected ";" or "}", but found: ${lastToken!.lexeme}');
}
}
return body;
@@ -942,7 +948,7 @@
}
@override
- TypeParameterList parseTypeParameterList() {
+ TypeParameterList? parseTypeParameterList() {
return _run('unspecified', () => super.parseTypeParameterList());
}
@@ -1001,13 +1007,13 @@
bool enableUriInPartOf = false;
@override
- GatheringErrorListener listener;
+ late final GatheringErrorListener listener;
/// The parser used by the test.
///
/// This field is typically initialized by invoking [createParser].
@override
- analyzer.Parser parser;
+ late final analyzer.Parser parser;
@override
void assertErrorsWithCodes(List<ErrorCode> expectedErrorCodes) {
@@ -1024,9 +1030,9 @@
@override
void createParser(
String content, {
- int expectedEndOffset,
- LanguageVersionToken languageVersion,
- FeatureSet featureSet,
+ int? expectedEndOffset,
+ LanguageVersionToken? languageVersion,
+ FeatureSet? featureSet,
}) {
featureSet ??= FeatureSet.latestLanguageVersion();
Source source = TestSource();
@@ -1089,7 +1095,8 @@
AwaitExpression parseAwaitExpression(String code) {
createParser('() async => $code');
var function = parser.parseExpression2() as FunctionExpression;
- return (function.body as ExpressionFunctionBody).expression;
+ return (function.body as ExpressionFunctionBody).expression
+ as AwaitExpression;
}
@override
@@ -1118,13 +1125,13 @@
}
@override
- CommentReference parseCommentReference(
+ CommentReference? parseCommentReference(
String referenceSource, int sourceOffset) {
String padding = ' '.padLeft(sourceOffset - 4, 'a');
String source = '/**$padding[$referenceSource] */ class C { }';
CompilationUnit unit = parseCompilationUnit(source);
- ClassDeclaration clazz = unit.declarations[0];
- Comment comment = clazz.documentationComment;
+ var clazz = unit.declarations[0] as ClassDeclaration;
+ var comment = clazz.documentationComment!;
List<CommentReference> references = comment.references;
if (references.isEmpty) {
return null;
@@ -1145,7 +1152,7 @@
/// the result would have been `null`
@override
CompilationUnit parseCompilationUnit(String content,
- {List<ErrorCode> codes, List<ExpectedError> errors}) {
+ {List<ErrorCode>? codes, List<ExpectedError>? errors}) {
Source source = TestSource();
GatheringErrorListener listener = GatheringErrorListener();
@@ -1173,7 +1180,7 @@
/// Parse the given [content] as a compilation unit.
CompilationUnit parseCompilationUnit2(String content,
- {AnalysisErrorListener listener}) {
+ {AnalysisErrorListener? listener}) {
Source source = NonExistingSource.unknown;
listener ??= AnalysisErrorListener.NULL_LISTENER;
@@ -1194,7 +1201,7 @@
@override
ConditionalExpression parseConditionalExpression(String code) {
createParser(code);
- return parser.parseConditionalExpression();
+ return parser.parseConditionalExpression() as ConditionalExpression;
}
@override
@@ -1226,7 +1233,7 @@
@override
BinaryExpression parseEqualityExpression(String code) {
createParser(code);
- return parser.parseEqualityExpression();
+ return parser.parseEqualityExpression() as BinaryExpression;
}
/// Parse the given [source] as an expression. If a list of error [codes] is
@@ -1235,9 +1242,9 @@
/// errors matches the list. Otherwise, assert that there are no errors.
@override
Expression parseExpression(String source,
- {List<ErrorCode> codes,
- List<ExpectedError> errors,
- int expectedEndOffset}) {
+ {List<ErrorCode>? codes,
+ List<ExpectedError>? errors,
+ int? expectedEndOffset}) {
createParser(source, expectedEndOffset: expectedEndOffset);
Expression expression = parser.parseExpression2();
expectNotNullIfNoErrors(expression);
@@ -1288,7 +1295,7 @@
FormalParameterList parseFormalParameterList(String code,
{bool inFunctionType = false,
List<ErrorCode> errorCodes = const <ErrorCode>[],
- List<ExpectedError> errors}) {
+ List<ExpectedError>? errors}) {
createParser(code);
FormalParameterList list =
parser.parseFormalParameterList(inFunctionType: inFunctionType);
@@ -1307,7 +1314,7 @@
@override
Directive parseFullDirective() {
- return parser.parseTopLevelDeclaration(true);
+ return parser.parseTopLevelDeclaration(true) as Directive;
}
@override
@@ -1320,12 +1327,12 @@
InstanceCreationExpression parseInstanceCreationExpression(
String code, Token newToken) {
createParser('$newToken $code');
- return parser.parseExpression2();
+ return parser.parseExpression2() as InstanceCreationExpression;
}
@override
ListLiteral parseListLiteral(
- Token token, String typeArgumentsCode, String code) {
+ Token? token, String? typeArgumentsCode, String code) {
String sc = '';
if (token != null) {
sc += token.lexeme + ' ';
@@ -1335,11 +1342,11 @@
}
sc += code;
createParser(sc);
- return parser.parseExpression2();
+ return parser.parseExpression2() as ListLiteral;
}
@override
- TypedLiteral parseListOrMapLiteral(Token modifier, String code) {
+ TypedLiteral parseListOrMapLiteral(Token? modifier, String code) {
String literalCode = modifier != null ? '$modifier $code' : code;
createParser(literalCode);
return parser.parseExpression2() as TypedLiteral;
@@ -1359,7 +1366,7 @@
@override
SetOrMapLiteral parseMapLiteral(
- Token token, String typeArgumentsCode, String code) {
+ Token? token, String? typeArgumentsCode, String code) {
String sc = '';
if (token != null) {
sc += token.lexeme + ' ';
@@ -1375,7 +1382,7 @@
@override
MapLiteralEntry parseMapLiteralEntry(String code) {
var mapLiteral = parseMapLiteral(null, null, '{ $code }');
- return mapLiteral.elements.single;
+ return mapLiteral.elements.single as MapLiteralEntry;
}
@override
@@ -1396,7 +1403,7 @@
List<ErrorCode> errorCodes = const <ErrorCode>[]}) {
FormalParameterList list = parseFormalParameterList('($code)',
inFunctionType: inFunctionType, errorCodes: errorCodes);
- return list.parameters.single;
+ return list.parameters.single as NormalFormalParameter;
}
@override
@@ -1413,7 +1420,7 @@
@override
Expression parsePrimaryExpression(String code,
- {int expectedEndOffset, List<ExpectedError> errors}) {
+ {int? expectedEndOffset, List<ExpectedError>? errors}) {
createParser(code);
var expression = parser.parsePrimaryExpression();
if (errors != null) {
@@ -1431,13 +1438,13 @@
@override
RethrowExpression parseRethrowExpression(String code) {
createParser(code);
- return parser.parseRethrowExpression();
+ return parser.parseRethrowExpression() as RethrowExpression;
}
@override
BinaryExpression parseShiftExpression(String code) {
createParser(code);
- return parser.parseShiftExpression();
+ return parser.parseShiftExpression() as BinaryExpression;
}
@override
@@ -1450,7 +1457,7 @@
/// [enableLazyAssignmentOperators] is `true`, then lazy assignment operators
/// should be enabled.
@override
- Statement parseStatement(String content, {int expectedEndOffset}) {
+ Statement parseStatement(String content, {int? expectedEndOffset}) {
Source source = TestSource();
listener = GatheringErrorListener();
@@ -1496,7 +1503,7 @@
@override
PrefixExpression parseUnaryExpression(String code) {
createParser(code);
- return parser.parseUnaryExpression();
+ return parser.parseUnaryExpression() as PrefixExpression;
}
@override
@@ -1514,7 +1521,8 @@
///
/// Intended to be mixed in to parser test case classes.
mixin ParserTestHelpers {
- void expectCommentText(Comment comment, String expectedText) {
+ void expectCommentText(Comment? comment, String expectedText) {
+ comment!;
expect(comment.beginToken, same(comment.endToken));
expect(comment.beginToken.lexeme, expectedText);
}
diff --git a/pkg/analyzer/test/generated/recovery_parser_test.dart b/pkg/analyzer/test/generated/recovery_parser_test.dart
index b578737..2c31385 100644
--- a/pkg/analyzer/test/generated/recovery_parser_test.dart
+++ b/pkg/analyzer/test/generated/recovery_parser_test.dart
@@ -23,17 +23,18 @@
@reflectiveTest
class RecoveryParserTest extends FastaParserTestCase {
void test_additiveExpression_missing_LHS() {
- BinaryExpression expression =
- parseExpression("+ y", codes: [ParserErrorCode.MISSING_IDENTIFIER]);
+ var expression =
+ parseExpression("+ y", codes: [ParserErrorCode.MISSING_IDENTIFIER])
+ as BinaryExpression;
expect(expression.leftOperand, isSimpleIdentifier);
expect(expression.leftOperand.isSynthetic, isTrue);
}
void test_additiveExpression_missing_LHS_RHS() {
- BinaryExpression expression = parseExpression("+", codes: [
+ var expression = parseExpression("+", codes: [
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER
- ]);
+ ]) as BinaryExpression;
expect(expression.leftOperand, isSimpleIdentifier);
expect(expression.leftOperand.isSynthetic, isTrue);
expect(expression.rightOperand, isSimpleIdentifier);
@@ -41,64 +42,69 @@
}
void test_additiveExpression_missing_RHS() {
- BinaryExpression expression =
- parseExpression("x +", codes: [ParserErrorCode.MISSING_IDENTIFIER]);
+ var expression =
+ parseExpression("x +", codes: [ParserErrorCode.MISSING_IDENTIFIER])
+ as BinaryExpression;
expect(expression.rightOperand, isSimpleIdentifier);
expect(expression.rightOperand.isSynthetic, isTrue);
}
void test_additiveExpression_missing_RHS_super() {
- BinaryExpression expression =
- parseExpression("super +", codes: [ParserErrorCode.MISSING_IDENTIFIER]);
+ var expression =
+ parseExpression("super +", codes: [ParserErrorCode.MISSING_IDENTIFIER])
+ as BinaryExpression;
expect(expression.rightOperand, isSimpleIdentifier);
expect(expression.rightOperand.isSynthetic, isTrue);
}
void test_additiveExpression_precedence_multiplicative_left() {
- BinaryExpression expression = parseExpression("* +", codes: [
+ var expression = parseExpression("* +", codes: [
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER
- ]);
+ ]) as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
void test_additiveExpression_precedence_multiplicative_right() {
- BinaryExpression expression = parseExpression("+ *", codes: [
+ var expression = parseExpression("+ *", codes: [
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER
- ]);
+ ]) as BinaryExpression;
expect(expression.rightOperand, isBinaryExpression);
}
void test_additiveExpression_super() {
- BinaryExpression expression = parseExpression("super + +", codes: [
+ var expression = parseExpression("super + +", codes: [
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER
- ]);
+ ]) as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
void test_assignableSelector() {
- IndexExpression expression =
- parseExpression("a.b[]", codes: [ParserErrorCode.MISSING_IDENTIFIER]);
- Expression index = expression.index;
+ var expression =
+ parseExpression("a.b[]", codes: [ParserErrorCode.MISSING_IDENTIFIER])
+ as IndexExpression;
+ var index = expression.index;
expect(index, isSimpleIdentifier);
expect(index.isSynthetic, isTrue);
}
void test_assignmentExpression_missing_compound1() {
- AssignmentExpression expression =
- parseExpression("= y = 0", codes: [ParserErrorCode.MISSING_IDENTIFIER]);
+ var expression =
+ parseExpression("= y = 0", codes: [ParserErrorCode.MISSING_IDENTIFIER])
+ as AssignmentExpression;
Expression syntheticExpression = expression.leftHandSide;
expect(syntheticExpression, isSimpleIdentifier);
expect(syntheticExpression.isSynthetic, isTrue);
}
void test_assignmentExpression_missing_compound2() {
- AssignmentExpression expression =
- parseExpression("x = = 0", codes: [ParserErrorCode.MISSING_IDENTIFIER]);
+ var expression =
+ parseExpression("x = = 0", codes: [ParserErrorCode.MISSING_IDENTIFIER])
+ as AssignmentExpression;
Expression syntheticExpression =
(expression.rightHandSide as AssignmentExpression).leftHandSide;
expect(syntheticExpression, isSimpleIdentifier);
@@ -106,8 +112,9 @@
}
void test_assignmentExpression_missing_compound3() {
- AssignmentExpression expression =
- parseExpression("x = y =", codes: [ParserErrorCode.MISSING_IDENTIFIER]);
+ var expression =
+ parseExpression("x = y =", codes: [ParserErrorCode.MISSING_IDENTIFIER])
+ as AssignmentExpression;
Expression syntheticExpression =
(expression.rightHandSide as AssignmentExpression).rightHandSide;
expect(syntheticExpression, isSimpleIdentifier);
@@ -115,31 +122,34 @@
}
void test_assignmentExpression_missing_LHS() {
- AssignmentExpression expression =
- parseExpression("= 0", codes: [ParserErrorCode.MISSING_IDENTIFIER]);
+ var expression =
+ parseExpression("= 0", codes: [ParserErrorCode.MISSING_IDENTIFIER])
+ as AssignmentExpression;
expect(expression.leftHandSide, isSimpleIdentifier);
expect(expression.leftHandSide.isSynthetic, isTrue);
}
void test_assignmentExpression_missing_RHS() {
- AssignmentExpression expression =
- parseExpression("x =", codes: [ParserErrorCode.MISSING_IDENTIFIER]);
+ var expression =
+ parseExpression("x =", codes: [ParserErrorCode.MISSING_IDENTIFIER])
+ as AssignmentExpression;
expect(expression.leftHandSide, isSimpleIdentifier);
expect(expression.rightHandSide.isSynthetic, isTrue);
}
void test_bitwiseAndExpression_missing_LHS() {
- BinaryExpression expression =
- parseExpression("& y", codes: [ParserErrorCode.MISSING_IDENTIFIER]);
+ var expression =
+ parseExpression("& y", codes: [ParserErrorCode.MISSING_IDENTIFIER])
+ as BinaryExpression;
expect(expression.leftOperand, isSimpleIdentifier);
expect(expression.leftOperand.isSynthetic, isTrue);
}
void test_bitwiseAndExpression_missing_LHS_RHS() {
- BinaryExpression expression = parseExpression("&", codes: [
+ var expression = parseExpression("&", codes: [
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER
- ]);
+ ]) as BinaryExpression;
expect(expression.leftOperand, isSimpleIdentifier);
expect(expression.leftOperand.isSynthetic, isTrue);
expect(expression.rightOperand, isSimpleIdentifier);
@@ -147,57 +157,60 @@
}
void test_bitwiseAndExpression_missing_RHS() {
- BinaryExpression expression =
- parseExpression("x &", codes: [ParserErrorCode.MISSING_IDENTIFIER]);
+ var expression =
+ parseExpression("x &", codes: [ParserErrorCode.MISSING_IDENTIFIER])
+ as BinaryExpression;
expect(expression.rightOperand, isSimpleIdentifier);
expect(expression.rightOperand.isSynthetic, isTrue);
}
void test_bitwiseAndExpression_missing_RHS_super() {
- BinaryExpression expression =
- parseExpression("super &", codes: [ParserErrorCode.MISSING_IDENTIFIER]);
+ var expression =
+ parseExpression("super &", codes: [ParserErrorCode.MISSING_IDENTIFIER])
+ as BinaryExpression;
expect(expression.rightOperand, isSimpleIdentifier);
expect(expression.rightOperand.isSynthetic, isTrue);
}
void test_bitwiseAndExpression_precedence_equality_left() {
- BinaryExpression expression = parseExpression("== &&", codes: [
+ var expression = parseExpression("== &&", codes: [
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER
- ]);
+ ]) as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
void test_bitwiseAndExpression_precedence_equality_right() {
- BinaryExpression expression = parseExpression("&& ==", codes: [
+ var expression = parseExpression("&& ==", codes: [
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER
- ]);
+ ]) as BinaryExpression;
expect(expression.rightOperand, isBinaryExpression);
}
void test_bitwiseAndExpression_super() {
- BinaryExpression expression = parseExpression("super & &", codes: [
+ var expression = parseExpression("super & &", codes: [
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER
- ]);
+ ]) as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
void test_bitwiseOrExpression_missing_LHS() {
- BinaryExpression expression =
- parseExpression("| y", codes: [ParserErrorCode.MISSING_IDENTIFIER]);
+ var expression =
+ parseExpression("| y", codes: [ParserErrorCode.MISSING_IDENTIFIER])
+ as BinaryExpression;
expect(expression.leftOperand, isSimpleIdentifier);
expect(expression.leftOperand.isSynthetic, isTrue);
}
void test_bitwiseOrExpression_missing_LHS_RHS() {
- BinaryExpression expression = parseExpression("|", codes: [
+ var expression = parseExpression("|", codes: [
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER
- ]);
+ ]) as BinaryExpression;
expect(expression.leftOperand, isSimpleIdentifier);
expect(expression.leftOperand.isSynthetic, isTrue);
expect(expression.rightOperand, isSimpleIdentifier);
@@ -205,57 +218,60 @@
}
void test_bitwiseOrExpression_missing_RHS() {
- BinaryExpression expression =
- parseExpression("x |", codes: [ParserErrorCode.MISSING_IDENTIFIER]);
+ var expression =
+ parseExpression("x |", codes: [ParserErrorCode.MISSING_IDENTIFIER])
+ as BinaryExpression;
expect(expression.rightOperand, isSimpleIdentifier);
expect(expression.rightOperand.isSynthetic, isTrue);
}
void test_bitwiseOrExpression_missing_RHS_super() {
- BinaryExpression expression =
- parseExpression("super |", codes: [ParserErrorCode.MISSING_IDENTIFIER]);
+ var expression =
+ parseExpression("super |", codes: [ParserErrorCode.MISSING_IDENTIFIER])
+ as BinaryExpression;
expect(expression.rightOperand, isSimpleIdentifier);
expect(expression.rightOperand.isSynthetic, isTrue);
}
void test_bitwiseOrExpression_precedence_xor_left() {
- BinaryExpression expression = parseExpression("^ |", codes: [
+ var expression = parseExpression("^ |", codes: [
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER
- ]);
+ ]) as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
void test_bitwiseOrExpression_precedence_xor_right() {
- BinaryExpression expression = parseExpression("| ^", codes: [
+ var expression = parseExpression("| ^", codes: [
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER
- ]);
+ ]) as BinaryExpression;
expect(expression.rightOperand, isBinaryExpression);
}
void test_bitwiseOrExpression_super() {
- BinaryExpression expression = parseExpression("super | |", codes: [
+ var expression = parseExpression("super | |", codes: [
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER
- ]);
+ ]) as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
void test_bitwiseXorExpression_missing_LHS() {
- BinaryExpression expression =
- parseExpression("^ y", codes: [ParserErrorCode.MISSING_IDENTIFIER]);
+ var expression =
+ parseExpression("^ y", codes: [ParserErrorCode.MISSING_IDENTIFIER])
+ as BinaryExpression;
expect(expression.leftOperand, isSimpleIdentifier);
expect(expression.leftOperand.isSynthetic, isTrue);
}
void test_bitwiseXorExpression_missing_LHS_RHS() {
- BinaryExpression expression = parseExpression("^", codes: [
+ var expression = parseExpression("^", codes: [
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER
- ]);
+ ]) as BinaryExpression;
expect(expression.leftOperand, isSimpleIdentifier);
expect(expression.leftOperand.isSynthetic, isTrue);
expect(expression.rightOperand, isSimpleIdentifier);
@@ -263,42 +279,44 @@
}
void test_bitwiseXorExpression_missing_RHS() {
- BinaryExpression expression =
- parseExpression("x ^", codes: [ParserErrorCode.MISSING_IDENTIFIER]);
+ var expression =
+ parseExpression("x ^", codes: [ParserErrorCode.MISSING_IDENTIFIER])
+ as BinaryExpression;
expect(expression.rightOperand, isSimpleIdentifier);
expect(expression.rightOperand.isSynthetic, isTrue);
}
void test_bitwiseXorExpression_missing_RHS_super() {
- BinaryExpression expression =
- parseExpression("super ^", codes: [ParserErrorCode.MISSING_IDENTIFIER]);
+ var expression =
+ parseExpression("super ^", codes: [ParserErrorCode.MISSING_IDENTIFIER])
+ as BinaryExpression;
expect(expression.rightOperand, isSimpleIdentifier);
expect(expression.rightOperand.isSynthetic, isTrue);
}
void test_bitwiseXorExpression_precedence_and_left() {
- BinaryExpression expression = parseExpression("& ^", codes: [
+ var expression = parseExpression("& ^", codes: [
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER
- ]);
+ ]) as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
void test_bitwiseXorExpression_precedence_and_right() {
- BinaryExpression expression = parseExpression("^ &", codes: [
+ var expression = parseExpression("^ &", codes: [
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER
- ]);
+ ]) as BinaryExpression;
expect(expression.rightOperand, isBinaryExpression);
}
void test_bitwiseXorExpression_super() {
- BinaryExpression expression = parseExpression("super ^ ^", codes: [
+ var expression = parseExpression("super ^ ^", codes: [
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER
- ]);
+ ]) as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
@@ -336,7 +354,7 @@
parseExpression('x ? y :', codes: [ParserErrorCode.MISSING_IDENTIFIER]);
expectNotNullIfNoErrors(expression);
expect(expression, isConditionalExpression);
- ConditionalExpression conditionalExpression = expression;
+ var conditionalExpression = expression as ConditionalExpression;
expect(conditionalExpression.elseExpression, isSimpleIdentifier);
expect(conditionalExpression.elseExpression.isSynthetic, isTrue);
}
@@ -346,7 +364,7 @@
parseExpression('x ? : z', codes: [ParserErrorCode.MISSING_IDENTIFIER]);
expectNotNullIfNoErrors(expression);
expect(expression, isConditionalExpression);
- ConditionalExpression conditionalExpression = expression;
+ var conditionalExpression = expression as ConditionalExpression;
expect(conditionalExpression.thenExpression, isSimpleIdentifier);
expect(conditionalExpression.thenExpression.isSynthetic, isTrue);
}
@@ -369,23 +387,24 @@
codes: [ParserErrorCode.DIRECTIVE_AFTER_DECLARATION]);
expect(unit.directives, hasLength(1));
expect(unit.declarations, hasLength(1));
- ClassDeclaration classDecl = unit.childEntities.first;
+ var classDecl = unit.childEntities.first as ClassDeclaration;
expect(classDecl, isNotNull);
expect(classDecl.name.name, 'foo');
}
void test_equalityExpression_missing_LHS() {
- BinaryExpression expression =
- parseExpression("== y", codes: [ParserErrorCode.MISSING_IDENTIFIER]);
+ var expression =
+ parseExpression("== y", codes: [ParserErrorCode.MISSING_IDENTIFIER])
+ as BinaryExpression;
expect(expression.leftOperand, isSimpleIdentifier);
expect(expression.leftOperand.isSynthetic, isTrue);
}
void test_equalityExpression_missing_LHS_RHS() {
- BinaryExpression expression = parseExpression("==", codes: [
+ var expression = parseExpression("==", codes: [
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER
- ]);
+ ]) as BinaryExpression;
expect(expression.leftOperand, isSimpleIdentifier);
expect(expression.leftOperand.isSynthetic, isTrue);
expect(expression.rightOperand, isSimpleIdentifier);
@@ -393,15 +412,17 @@
}
void test_equalityExpression_missing_RHS() {
- BinaryExpression expression =
- parseExpression("x ==", codes: [ParserErrorCode.MISSING_IDENTIFIER]);
+ var expression =
+ parseExpression("x ==", codes: [ParserErrorCode.MISSING_IDENTIFIER])
+ as BinaryExpression;
expect(expression.rightOperand, isSimpleIdentifier);
expect(expression.rightOperand.isSynthetic, isTrue);
}
void test_equalityExpression_missing_RHS_super() {
- BinaryExpression expression = parseExpression("super ==",
- codes: [ParserErrorCode.MISSING_IDENTIFIER]);
+ var expression =
+ parseExpression("super ==", codes: [ParserErrorCode.MISSING_IDENTIFIER])
+ as BinaryExpression;
expect(expression.rightOperand, isSimpleIdentifier);
expect(expression.rightOperand.isSynthetic, isTrue);
}
@@ -415,11 +436,11 @@
}
void test_equalityExpression_super() {
- BinaryExpression expression = parseExpression("super == ==", codes: [
+ var expression = parseExpression("super == ==", codes: [
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.EQUALITY_CANNOT_BE_EQUALITY_OPERAND
- ]);
+ ]) as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
@@ -497,7 +518,7 @@
void test_importDirectivePartial_as() {
CompilationUnit unit = parseCompilationUnit("import 'b.dart' d as b;",
codes: [ParserErrorCode.UNEXPECTED_TOKEN]);
- ImportDirective importDirective = unit.childEntities.first;
+ var importDirective = unit.childEntities.first as ImportDirective;
expect(importDirective.asKeyword, isNotNull);
expect(unit.directives, hasLength(1));
expect(unit.declarations, hasLength(0));
@@ -506,7 +527,7 @@
void test_importDirectivePartial_hide() {
CompilationUnit unit = parseCompilationUnit("import 'b.dart' d hide foo;",
codes: [ParserErrorCode.UNEXPECTED_TOKEN]);
- ImportDirective importDirective = unit.childEntities.first;
+ var importDirective = unit.childEntities.first as ImportDirective;
expect(importDirective.combinators, hasLength(1));
expect(unit.directives, hasLength(1));
expect(unit.declarations, hasLength(0));
@@ -515,7 +536,7 @@
void test_importDirectivePartial_show() {
CompilationUnit unit = parseCompilationUnit("import 'b.dart' d show foo;",
codes: [ParserErrorCode.UNEXPECTED_TOKEN]);
- ImportDirective importDirective = unit.childEntities.first;
+ var importDirective = unit.childEntities.first as ImportDirective;
expect(importDirective.combinators, hasLength(1));
expect(unit.directives, hasLength(1));
expect(unit.declarations, hasLength(0));
@@ -530,7 +551,7 @@
void test_incomplete_constructorInitializers_empty() {
createParser('C() : {}');
- ClassMember member = parser.parseClassMember('C');
+ var member = parser.parseClassMember('C');
expectNotNullIfNoErrors(member);
listener.assertErrors(
[expectedError(ParserErrorCode.MISSING_INITIALIZER, 4, 1)]);
@@ -538,7 +559,7 @@
void test_incomplete_constructorInitializers_missingEquals() {
createParser('C() : x(3) {}');
- ClassMember member = parser.parseClassMember('C');
+ var member = parser.parseClassMember('C');
expectNotNullIfNoErrors(member);
listener.assertErrors([
expectedError(ParserErrorCode.MISSING_ASSIGNMENT_IN_INITIALIZER, 6, 1)
@@ -557,7 +578,7 @@
void test_incomplete_constructorInitializers_this() {
createParser('C() : this {}');
- ClassMember member = parser.parseClassMember('C');
+ var member = parser.parseClassMember('C');
expectNotNullIfNoErrors(member);
listener.assertErrors([
expectedError(ParserErrorCode.EXPECTED_TOKEN, 11, 1),
@@ -567,7 +588,7 @@
void test_incomplete_constructorInitializers_thisField() {
createParser('C() : this.g {}');
- ClassMember member = parser.parseClassMember('C');
+ var member = parser.parseClassMember('C');
expectNotNullIfNoErrors(member);
listener.assertErrors([
expectedError(ParserErrorCode.MISSING_ASSIGNMENT_IN_INITIALIZER, 6, 4)
@@ -576,7 +597,7 @@
void test_incomplete_constructorInitializers_thisPeriod() {
createParser('C() : this. {}');
- ClassMember member = parser.parseClassMember('C');
+ var member = parser.parseClassMember('C');
expectNotNullIfNoErrors(member);
listener.assertErrors([
expectedError(ParserErrorCode.MISSING_IDENTIFIER, 12, 1),
@@ -586,7 +607,7 @@
void test_incomplete_constructorInitializers_variable() {
createParser('C() : x {}');
- ClassMember member = parser.parseClassMember('C');
+ var member = parser.parseClassMember('C');
expectNotNullIfNoErrors(member);
listener.assertErrors([
expectedError(ParserErrorCode.MISSING_ASSIGNMENT_IN_INITIALIZER, 6, 1)
@@ -596,15 +617,15 @@
void test_incomplete_functionExpression() {
var expression = parseExpression("() a => null",
errors: [expectedError(ParserErrorCode.UNEXPECTED_TOKEN, 3, 1)]);
- FunctionExpression functionExpression = expression;
- expect(functionExpression.parameters.parameters, hasLength(0));
+ var functionExpression = expression as FunctionExpression;
+ expect(functionExpression.parameters!.parameters, hasLength(0));
}
void test_incomplete_functionExpression2() {
var expression = parseExpression("() a {}",
errors: [expectedError(ParserErrorCode.UNEXPECTED_TOKEN, 3, 1)]);
- FunctionExpression functionExpression = expression;
- expect(functionExpression.parameters.parameters, hasLength(0));
+ var functionExpression = expression as FunctionExpression;
+ expect(functionExpression.parameters!.parameters, hasLength(0));
}
void test_incomplete_returnType() {
@@ -709,7 +730,7 @@
expect(classMember, isFieldDeclaration);
VariableDeclarationList fieldList =
(classMember as FieldDeclaration).fields;
- expect(fieldList.keyword.keyword, Keyword.CONST);
+ expect(fieldList.keyword!.keyword, Keyword.CONST);
NodeList<VariableDeclaration> fields = fieldList.variables;
expect(fields, hasLength(1));
VariableDeclaration field = fields[0];
@@ -734,7 +755,7 @@
expect(classMember, isFieldDeclaration);
VariableDeclarationList fieldList =
(classMember as FieldDeclaration).fields;
- expect(fieldList.keyword.keyword, Keyword.FINAL);
+ expect(fieldList.keyword!.keyword, Keyword.FINAL);
NodeList<VariableDeclaration> fields = fieldList.variables;
expect(fields, hasLength(1));
VariableDeclaration field = fields[0];
@@ -757,8 +778,8 @@
expect(members, hasLength(1));
ClassMember classMember = members[0];
expect(classMember, isFieldDeclaration);
- FieldDeclaration declaration = classMember;
- expect(declaration.staticKeyword.lexeme, 'static');
+ var declaration = classMember as FieldDeclaration;
+ expect(declaration.staticKeyword!.lexeme, 'static');
VariableDeclarationList fieldList = declaration.fields;
expect(fieldList.keyword, isNull);
NodeList<VariableDeclaration> fields = fieldList.variables;
@@ -780,8 +801,8 @@
expect(members, hasLength(1));
ClassMember classMember = members[0];
expect(classMember, isFieldDeclaration);
- FieldDeclaration declaration = classMember;
- expect(declaration.staticKeyword.lexeme, 'static');
+ var declaration = classMember as FieldDeclaration;
+ expect(declaration.staticKeyword!.lexeme, 'static');
VariableDeclarationList fieldList = declaration.fields;
expect(fieldList.keyword, isNull);
NodeList<VariableDeclaration> fields = fieldList.variables;
@@ -808,7 +829,7 @@
expect(classMember, isFieldDeclaration);
VariableDeclarationList fieldList =
(classMember as FieldDeclaration).fields;
- TypeName type = fieldList.type;
+ var type = fieldList.type;
NodeList<VariableDeclaration> fields = fieldList.variables;
expect(fields, hasLength(1));
VariableDeclaration field = fields[0];
@@ -834,7 +855,7 @@
expect(classMember, isFieldDeclaration);
VariableDeclarationList fieldList =
(classMember as FieldDeclaration).fields;
- expect(fieldList.keyword.keyword, Keyword.VAR);
+ expect(fieldList.keyword!.keyword, Keyword.VAR);
NodeList<VariableDeclaration> fields = fieldList.variables;
expect(fields, hasLength(1));
VariableDeclaration field = fields[0];
@@ -844,7 +865,7 @@
void test_incompleteForEach() {
// TODO(danrubel): remove this once control flow and spread collection
// entry parsing is enabled by default
- ForStatement statement = parseStatement('for (String item i) {}');
+ var statement = parseStatement('for (String item i) {}') as ForStatement;
listener.assertErrors([
expectedError(ParserErrorCode.EXPECTED_TOKEN, 12, 4),
expectedError(ParserErrorCode.EXPECTED_TOKEN, 17, 1)
@@ -859,14 +880,15 @@
}
void test_incompleteForEach2() {
- ForStatement statement =
- parseStatement('for (String item i) {}', featureSet: controlFlow);
+ var statement =
+ parseStatement('for (String item i) {}', featureSet: controlFlow)
+ as ForStatement;
listener.assertErrors([
expectedError(ParserErrorCode.EXPECTED_TOKEN, 12, 4),
expectedError(ParserErrorCode.EXPECTED_TOKEN, 17, 1)
]);
expect(statement.toSource(), 'for (String item; i;) {}');
- ForPartsWithDeclarations forLoopParts = statement.forLoopParts;
+ var forLoopParts = statement.forLoopParts as ForPartsWithDeclarations;
expect(forLoopParts.leftSeparator, isNotNull);
expect(forLoopParts.leftSeparator.type, TokenType.SEMICOLON);
expect(forLoopParts.rightSeparator, isNotNull);
@@ -946,7 +968,7 @@
VariableDeclaration field = fields[0];
expect(field.name.name, 'f');
// validate the type
- TypeArgumentList typeArguments = (fieldList.type as TypeName).typeArguments;
+ var typeArguments = (fieldList.type as TypeName).typeArguments!;
expect(typeArguments.arguments, hasLength(1));
// synthetic '>'
Token token = typeArguments.endToken;
@@ -963,7 +985,7 @@
expect(declarations, hasLength(1));
ClassDeclaration classDecl = declarations[0] as ClassDeclaration;
// validate the type parameters
- TypeParameterList typeParameters = classDecl.typeParameters;
+ var typeParameters = classDecl.typeParameters!;
expect(typeParameters.typeParameters, hasLength(1));
// synthetic '>'
Token token = typeParameters.endToken;
@@ -980,7 +1002,7 @@
expect(declarations, hasLength(1));
ClassDeclaration classDecl = declarations[0] as ClassDeclaration;
// validate the type parameters
- TypeParameterList typeParameters = classDecl.typeParameters;
+ var typeParameters = classDecl.typeParameters!;
expect(typeParameters.typeParameters, hasLength(1));
// synthetic '>'
Token token = typeParameters.endToken;
@@ -997,7 +1019,7 @@
expect(declarations, hasLength(1));
ClassDeclaration classDecl = declarations[0] as ClassDeclaration;
// validate the type parameters
- TypeParameterList typeParameters = classDecl.typeParameters;
+ var typeParameters = classDecl.typeParameters!;
expect(typeParameters.typeParameters, hasLength(1));
// synthetic '>'
Token token = typeParameters.endToken;
@@ -1032,7 +1054,7 @@
// validate members
ClassDeclaration classDecl = declarations[0] as ClassDeclaration;
expect(classDecl.members, hasLength(1));
- FieldDeclaration fields = classDecl.members.first;
+ var fields = classDecl.members.first as FieldDeclaration;
expect(fields.fields.variables, hasLength(1));
VariableDeclaration field = fields.fields.variables.first;
expect(field.name.name, 'g');
@@ -1064,9 +1086,9 @@
TypeAnnotation type = expression.type;
expect(type, isNotNull);
expect(type is TypeName && type.name.isSynthetic, isTrue);
- ExpressionStatement thenStatement = ifStatement.thenStatement;
- expect(thenStatement.semicolon.isSynthetic, isTrue);
- SimpleIdentifier simpleId = thenStatement.expression;
+ var thenStatement = ifStatement.thenStatement as ExpressionStatement;
+ expect(thenStatement.semicolon!.isSynthetic, isTrue);
+ var simpleId = thenStatement.expression as SimpleIdentifier;
expect(simpleId.isSynthetic, isTrue);
}
@@ -1076,9 +1098,9 @@
expectedError(ParserErrorCode.GETTER_CONSTRUCTOR, 10, 3),
expectedError(ParserErrorCode.MISSING_METHOD_PARAMETERS, 14, 1),
]);
- ClassDeclaration declaration = unit.declarations[0];
- ConstructorDeclaration method = declaration.members[0];
- expect(method.name.name, 'named');
+ var declaration = unit.declarations[0] as ClassDeclaration;
+ var method = declaration.members[0] as ConstructorDeclaration;
+ expect(method.name!.name, 'named');
expect(method.parameters, isNotNull);
}
@@ -1087,9 +1109,9 @@
errors: [
expectedError(ParserErrorCode.MISSING_METHOD_PARAMETERS, 10, 1)
]);
- ClassDeclaration declaration = unit.declarations[0];
- ConstructorDeclaration constructor = declaration.members[0];
- expect(constructor.name.name, 'named');
+ var declaration = unit.declarations[0] as ClassDeclaration;
+ var constructor = declaration.members[0] as ConstructorDeclaration;
+ expect(constructor.name!.name, 'named');
expect(constructor.parameters, isNotNull);
expect(constructor.parameters.parameters, hasLength(0));
}
@@ -1098,8 +1120,8 @@
final unit = parseCompilationUnit('class C { C => null; }', errors: [
expectedError(ParserErrorCode.MISSING_METHOD_PARAMETERS, 10, 1)
]);
- ClassDeclaration declaration = unit.declarations[0];
- ConstructorDeclaration constructor = declaration.members[0];
+ var declaration = unit.declarations[0] as ClassDeclaration;
+ var constructor = declaration.members[0] as ConstructorDeclaration;
expect(constructor.name, isNull);
expect(constructor.parameters, isNotNull);
expect(constructor.parameters.parameters, hasLength(0));
@@ -1109,9 +1131,9 @@
final unit = parseCompilationUnit('class C { C.named => null; }', errors: [
expectedError(ParserErrorCode.MISSING_METHOD_PARAMETERS, 10, 1)
]);
- ClassDeclaration declaration = unit.declarations[0];
- ConstructorDeclaration constructor = declaration.members[0];
- expect(constructor.name.name, 'named');
+ var declaration = unit.declarations[0] as ClassDeclaration;
+ var constructor = declaration.members[0] as ConstructorDeclaration;
+ expect(constructor.name!.name, 'named');
expect(constructor.parameters, isNotNull);
expect(constructor.parameters.parameters, hasLength(0));
}
@@ -1122,9 +1144,9 @@
expectedError(ParserErrorCode.SETTER_CONSTRUCTOR, 10, 3),
expectedError(ParserErrorCode.MISSING_METHOD_PARAMETERS, 14, 1),
]);
- ClassDeclaration declaration = unit.declarations[0];
- ConstructorDeclaration method = declaration.members[0];
- expect(method.name.name, 'named');
+ var declaration = unit.declarations[0] as ClassDeclaration;
+ var method = declaration.members[0] as ConstructorDeclaration;
+ expect(method.name!.name, 'named');
expect(method.parameters, isNotNull);
expect(method.parameters.parameters, hasLength(0));
}
@@ -1136,17 +1158,18 @@
}
void test_logicalAndExpression_missing_LHS() {
- BinaryExpression expression =
- parseExpression("&& y", codes: [ParserErrorCode.MISSING_IDENTIFIER]);
+ var expression =
+ parseExpression("&& y", codes: [ParserErrorCode.MISSING_IDENTIFIER])
+ as BinaryExpression;
expect(expression.leftOperand, isSimpleIdentifier);
expect(expression.leftOperand.isSynthetic, isTrue);
}
void test_logicalAndExpression_missing_LHS_RHS() {
- BinaryExpression expression = parseExpression("&&", codes: [
+ var expression = parseExpression("&&", codes: [
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER
- ]);
+ ]) as BinaryExpression;
expect(expression.leftOperand, isSimpleIdentifier);
expect(expression.leftOperand.isSynthetic, isTrue);
expect(expression.rightOperand, isSimpleIdentifier);
@@ -1154,42 +1177,44 @@
}
void test_logicalAndExpression_missing_RHS() {
- BinaryExpression expression =
- parseExpression("x &&", codes: [ParserErrorCode.MISSING_IDENTIFIER]);
+ var expression =
+ parseExpression("x &&", codes: [ParserErrorCode.MISSING_IDENTIFIER])
+ as BinaryExpression;
expect(expression.rightOperand, isSimpleIdentifier);
expect(expression.rightOperand.isSynthetic, isTrue);
}
void test_logicalAndExpression_precedence_bitwiseOr_left() {
- BinaryExpression expression = parseExpression("| &&", codes: [
+ var expression = parseExpression("| &&", codes: [
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER
- ]);
+ ]) as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
void test_logicalAndExpression_precedence_bitwiseOr_right() {
- BinaryExpression expression = parseExpression("&& |", codes: [
+ var expression = parseExpression("&& |", codes: [
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER
- ]);
+ ]) as BinaryExpression;
expect(expression.rightOperand, isBinaryExpression);
}
void test_logicalOrExpression_missing_LHS() {
- BinaryExpression expression =
- parseExpression("|| y", codes: [ParserErrorCode.MISSING_IDENTIFIER]);
+ var expression =
+ parseExpression("|| y", codes: [ParserErrorCode.MISSING_IDENTIFIER])
+ as BinaryExpression;
expect(expression.leftOperand, isSimpleIdentifier);
expect(expression.leftOperand.isSynthetic, isTrue);
}
void test_logicalOrExpression_missing_LHS_RHS() {
- BinaryExpression expression = parseExpression("||", codes: [
+ var expression = parseExpression("||", codes: [
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER
- ]);
+ ]) as BinaryExpression;
expect(expression.leftOperand, isSimpleIdentifier);
expect(expression.leftOperand.isSynthetic, isTrue);
expect(expression.rightOperand, isSimpleIdentifier);
@@ -1197,27 +1222,28 @@
}
void test_logicalOrExpression_missing_RHS() {
- BinaryExpression expression =
- parseExpression("x ||", codes: [ParserErrorCode.MISSING_IDENTIFIER]);
+ var expression =
+ parseExpression("x ||", codes: [ParserErrorCode.MISSING_IDENTIFIER])
+ as BinaryExpression;
expect(expression.rightOperand, isSimpleIdentifier);
expect(expression.rightOperand.isSynthetic, isTrue);
}
void test_logicalOrExpression_precedence_logicalAnd_left() {
- BinaryExpression expression = parseExpression("&& ||", codes: [
+ var expression = parseExpression("&& ||", codes: [
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER
- ]);
+ ]) as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
void test_logicalOrExpression_precedence_logicalAnd_right() {
- BinaryExpression expression = parseExpression("|| &&", codes: [
+ var expression = parseExpression("|| &&", codes: [
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER
- ]);
+ ]) as BinaryExpression;
expect(expression.rightOperand, isBinaryExpression);
}
@@ -1227,8 +1253,9 @@
}
void test_missing_commaInArgumentList() {
- MethodInvocation expression = parseExpression("f(x: 1 y: 2)",
- errors: [expectedError(ParserErrorCode.EXPECTED_TOKEN, 7, 1)]);
+ var expression = parseExpression("f(x: 1 y: 2)",
+ errors: [expectedError(ParserErrorCode.EXPECTED_TOKEN, 7, 1)])
+ as MethodInvocation;
NodeList<Expression> arguments = expression.argumentList.arguments;
expect(arguments, hasLength(2));
}
@@ -1263,7 +1290,7 @@
void test_missingIdentifier_afterAnnotation() {
createParser('@override }', expectedEndOffset: 10);
- ClassMember member = parser.parseClassMember('C');
+ var member = parser.parseClassMemberOrNull('C');
expectNotNullIfNoErrors(member);
listener.assertErrors(
[expectedError(ParserErrorCode.EXPECTED_CLASS_MEMBER, 10, 1)]);
@@ -1276,7 +1303,7 @@
void verify(CompilationUnitMember member, String expectedTypeName,
String expectedName, String expectedSemicolon) {
expect(member, isTopLevelVariableDeclaration);
- TopLevelVariableDeclaration declaration = member;
+ var declaration = member as TopLevelVariableDeclaration;
VariableDeclarationList variableList = declaration.variables;
expect(variableList, isNotNull);
NodeList<VariableDeclaration> variables = variableList.variables;
@@ -1307,17 +1334,18 @@
}
void test_multiplicativeExpression_missing_LHS() {
- BinaryExpression expression =
- parseExpression("* y", codes: [ParserErrorCode.MISSING_IDENTIFIER]);
+ var expression =
+ parseExpression("* y", codes: [ParserErrorCode.MISSING_IDENTIFIER])
+ as BinaryExpression;
expect(expression.leftOperand, isSimpleIdentifier);
expect(expression.leftOperand.isSynthetic, isTrue);
}
void test_multiplicativeExpression_missing_LHS_RHS() {
- BinaryExpression expression = parseExpression("*", codes: [
+ var expression = parseExpression("*", codes: [
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER
- ]);
+ ]) as BinaryExpression;
expect(expression.leftOperand, isSimpleIdentifier);
expect(expression.leftOperand.isSynthetic, isTrue);
expect(expression.rightOperand, isSimpleIdentifier);
@@ -1325,37 +1353,41 @@
}
void test_multiplicativeExpression_missing_RHS() {
- BinaryExpression expression =
- parseExpression("x *", codes: [ParserErrorCode.MISSING_IDENTIFIER]);
+ var expression =
+ parseExpression("x *", codes: [ParserErrorCode.MISSING_IDENTIFIER])
+ as BinaryExpression;
expect(expression.rightOperand, isSimpleIdentifier);
expect(expression.rightOperand.isSynthetic, isTrue);
}
void test_multiplicativeExpression_missing_RHS_super() {
- BinaryExpression expression =
- parseExpression("super *", codes: [ParserErrorCode.MISSING_IDENTIFIER]);
+ var expression =
+ parseExpression("super *", codes: [ParserErrorCode.MISSING_IDENTIFIER])
+ as BinaryExpression;
expect(expression.rightOperand, isSimpleIdentifier);
expect(expression.rightOperand.isSynthetic, isTrue);
}
void test_multiplicativeExpression_precedence_unary_left() {
- BinaryExpression expression =
- parseExpression("-x *", codes: [ParserErrorCode.MISSING_IDENTIFIER]);
+ var expression =
+ parseExpression("-x *", codes: [ParserErrorCode.MISSING_IDENTIFIER])
+ as BinaryExpression;
expect(expression.leftOperand, isPrefixExpression);
}
void test_multiplicativeExpression_precedence_unary_right() {
- BinaryExpression expression =
- parseExpression("* -y", codes: [ParserErrorCode.MISSING_IDENTIFIER]);
+ var expression =
+ parseExpression("* -y", codes: [ParserErrorCode.MISSING_IDENTIFIER])
+ as BinaryExpression;
expect(expression.rightOperand, isPrefixExpression);
}
void test_multiplicativeExpression_super() {
- BinaryExpression expression = parseExpression("super == ==", codes: [
+ var expression = parseExpression("super == ==", codes: [
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.EQUALITY_CANNOT_BE_EQUALITY_OPERAND
- ]);
+ ]) as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
@@ -1366,10 +1398,10 @@
expectedError(ParserErrorCode.NAMED_PARAMETER_OUTSIDE_GROUP, 23, 1)
]);
expect(unit.declarations, hasLength(1));
- ClassDeclaration classA = unit.declarations[0];
+ var classA = unit.declarations[0] as ClassDeclaration;
expect(classA.members, hasLength(1));
- MethodDeclaration method = classA.members[0];
- NodeList<FormalParameter> parameters = method.parameters.parameters;
+ var method = classA.members[0] as MethodDeclaration;
+ List<FormalParameter> parameters = method.parameters!.parameters;
expect(parameters, hasLength(3));
expect(parameters[0].isNamed, isTrue);
expect(parameters[1].isNamed, isTrue);
@@ -1388,17 +1420,19 @@
}
void test_prefixExpression_missing_operand_minus() {
- PrefixExpression expression =
- parseExpression("-", codes: [ParserErrorCode.MISSING_IDENTIFIER]);
+ var expression =
+ parseExpression("-", codes: [ParserErrorCode.MISSING_IDENTIFIER])
+ as PrefixExpression;
expect(expression.operand, isSimpleIdentifier);
expect(expression.operand.isSynthetic, isTrue);
expect(expression.operator.type, TokenType.MINUS);
}
void test_primaryExpression_argumentDefinitionTest() {
- SimpleIdentifier expression = parsePrimaryExpression('?a',
- expectedEndOffset: 0,
- errors: [expectedError(ParserErrorCode.MISSING_IDENTIFIER, 0, 1)]);
+ var expression = parsePrimaryExpression('?a',
+ expectedEndOffset: 0,
+ errors: [expectedError(ParserErrorCode.MISSING_IDENTIFIER, 0, 1)])
+ as SimpleIdentifier;
expectNotNullIfNoErrors(expression);
expect(expression.isSynthetic, isTrue);
}
@@ -1408,15 +1442,16 @@
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER
]);
- PrefixedIdentifier expression = result;
+ var expression = result as PrefixedIdentifier;
expect(expression.prefix.isSynthetic, isTrue);
expect(expression.period.lexeme, '.');
expect(expression.identifier.isSynthetic, isTrue);
}
void test_relationalExpression_missing_LHS() {
- IsExpression expression =
- parseExpression("is y", codes: [ParserErrorCode.MISSING_IDENTIFIER]);
+ var expression =
+ parseExpression("is y", codes: [ParserErrorCode.MISSING_IDENTIFIER])
+ as IsExpression;
expect(expression.expression, isSimpleIdentifier);
expect(expression.expression.isSynthetic, isTrue);
}
@@ -1429,8 +1464,9 @@
}
void test_relationalExpression_missing_RHS() {
- IsExpression expression =
- parseExpression("x is", codes: [ParserErrorCode.EXPECTED_TYPE_NAME]);
+ var expression =
+ parseExpression("x is", codes: [ParserErrorCode.EXPECTED_TYPE_NAME])
+ as IsExpression;
expect(expression.type, isTypeName);
expect(expression.type.isSynthetic, isTrue);
}
@@ -1444,17 +1480,18 @@
}
void test_shiftExpression_missing_LHS() {
- BinaryExpression expression =
- parseExpression("<< y", codes: [ParserErrorCode.MISSING_IDENTIFIER]);
+ var expression =
+ parseExpression("<< y", codes: [ParserErrorCode.MISSING_IDENTIFIER])
+ as BinaryExpression;
expect(expression.leftOperand, isSimpleIdentifier);
expect(expression.leftOperand.isSynthetic, isTrue);
}
void test_shiftExpression_missing_LHS_RHS() {
- BinaryExpression expression = parseExpression("<<", codes: [
+ var expression = parseExpression("<<", codes: [
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER
- ]);
+ ]) as BinaryExpression;
expect(expression.leftOperand, isSimpleIdentifier);
expect(expression.leftOperand.isSynthetic, isTrue);
expect(expression.rightOperand, isSimpleIdentifier);
@@ -1462,42 +1499,44 @@
}
void test_shiftExpression_missing_RHS() {
- BinaryExpression expression =
- parseExpression("x <<", codes: [ParserErrorCode.MISSING_IDENTIFIER]);
+ var expression =
+ parseExpression("x <<", codes: [ParserErrorCode.MISSING_IDENTIFIER])
+ as BinaryExpression;
expect(expression.rightOperand, isSimpleIdentifier);
expect(expression.rightOperand.isSynthetic, isTrue);
}
void test_shiftExpression_missing_RHS_super() {
- BinaryExpression expression = parseExpression("super <<",
- codes: [ParserErrorCode.MISSING_IDENTIFIER]);
+ var expression =
+ parseExpression("super <<", codes: [ParserErrorCode.MISSING_IDENTIFIER])
+ as BinaryExpression;
expect(expression.rightOperand, isSimpleIdentifier);
expect(expression.rightOperand.isSynthetic, isTrue);
}
void test_shiftExpression_precedence_unary_left() {
- BinaryExpression expression = parseExpression("+ <<", codes: [
+ var expression = parseExpression("+ <<", codes: [
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER
- ]);
+ ]) as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
void test_shiftExpression_precedence_unary_right() {
- BinaryExpression expression = parseExpression("<< +", codes: [
+ var expression = parseExpression("<< +", codes: [
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER
- ]);
+ ]) as BinaryExpression;
expect(expression.rightOperand, isBinaryExpression);
}
void test_shiftExpression_super() {
- BinaryExpression expression = parseExpression("super << <<", codes: [
+ var expression = parseExpression("super << <<", codes: [
ParserErrorCode.MISSING_IDENTIFIER,
ParserErrorCode.MISSING_IDENTIFIER
- ]);
+ ]) as BinaryExpression;
expect(expression.leftOperand, isBinaryExpression);
}
diff --git a/pkg/analyzer/test/generated/resolver_test.dart b/pkg/analyzer/test/generated/resolver_test.dart
index 3453f53..6660814 100644
--- a/pkg/analyzer/test/generated/resolver_test.dart
+++ b/pkg/analyzer/test/generated/resolver_test.dart
@@ -7,7 +7,6 @@
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/visitor.dart';
import 'package:analyzer/dart/element/element.dart';
-import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/src/dart/resolver/scope.dart';
import 'package:analyzer/src/error/codes.dart';
import 'package:analyzer/src/generated/parser.dart' show ParserErrorCode;
@@ -100,7 +99,7 @@
Map<String, Element> _toMap(List<Element> elements) {
Map<String, Element> map = HashMap<String, Element>();
for (Element element in elements) {
- map[element.name] = element;
+ map[element.name!] = element;
}
return map;
}
@@ -180,7 +179,7 @@
@override
void visitExpression(Expression node) {
node.visitChildren(this);
- DartType staticType = node.staticType;
+ var staticType = node.staticType;
if (staticType == null) {
_unresolvedExpressions.add(node);
} else {
@@ -201,7 +200,7 @@
void visitPrefixedIdentifier(PrefixedIdentifier node) {
// In cases where we have a prefixed identifier where the prefix is dynamic,
// we don't want to assert that the node will have a type.
- if (node.staticType == null && node.prefix.staticType.isDynamic) {
+ if (node.staticType == null && node.prefix.staticType!.isDynamic) {
return;
}
super.visitPrefixedIdentifier(node);
@@ -211,7 +210,7 @@
void visitSimpleIdentifier(SimpleIdentifier node) {
// In cases where identifiers are being used for something other than an
// expressions, then they can be ignored.
- AstNode parent = node.parent;
+ var parent = node.parent;
if (parent is MethodInvocation && identical(node, parent.methodName)) {
return;
} else if (parent is RedirectingConstructorInvocation &&
@@ -255,7 +254,7 @@
}
}
- String _getFileName(AstNode node) {
+ String _getFileName(AstNode? node) {
// TODO (jwren) there are two copies of this method, one here and one in
// ResolutionVerifier, they should be resolved into a single method
if (node != null) {
@@ -263,7 +262,7 @@
if (root is CompilationUnit) {
CompilationUnit rootCU = root;
if (rootCU.declaredElement != null) {
- return rootCU.declaredElement.source.fullName;
+ return rootCU.declaredElement!.source.fullName;
} else {
return "<unknown file- CompilationUnit.getElement() returned null>";
}
diff --git a/pkg/analyzer/test/generated/resolver_test_case.dart b/pkg/analyzer/test/generated/resolver_test_case.dart
index f93c5d8..ceaa0ac 100644
--- a/pkg/analyzer/test/generated/resolver_test_case.dart
+++ b/pkg/analyzer/test/generated/resolver_test_case.dart
@@ -6,7 +6,6 @@
import 'package:analyzer/dart/ast/visitor.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/type.dart';
-import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/generated/java_engine.dart';
import 'package:test/test.dart';
@@ -17,7 +16,7 @@
class ResolutionVerifier extends RecursiveAstVisitor<void> {
/// A set containing nodes that are known to not be resolvable and should
/// therefore not cause the test to fail.
- final Set<AstNode> _knownExceptions;
+ final Set<AstNode>? _knownExceptions;
/// A list containing all of the AST nodes that were not resolved.
final List<AstNode> _unresolvedNodes = <AstNode>[];
@@ -56,9 +55,9 @@
@override
void visitAnnotation(Annotation node) {
node.visitChildren(this);
- ElementAnnotation elementAnnotation = node.elementAnnotation;
+ var elementAnnotation = node.elementAnnotation;
if (elementAnnotation == null) {
- if (_knownExceptions == null || !_knownExceptions.contains(node)) {
+ if (_knownExceptions == null || !_knownExceptions!.contains(node)) {
_unresolvedNodes.add(node);
}
} else if (elementAnnotation is! ElementAnnotation) {
@@ -72,7 +71,7 @@
if (!node.operator.isUserDefinableOperator) {
return;
}
- DartType operandType = node.leftOperand.staticType;
+ var operandType = node.leftOperand.staticType;
if (operandType == null || operandType.isDynamic) {
return;
}
@@ -115,7 +114,7 @@
// Not sure how to test the combinators given that it isn't an error if the
// names are not defined.
_checkResolved(node, node.element, (node) => node is ImportElement);
- SimpleIdentifier prefix = node.prefix;
+ var prefix = node.prefix;
if (prefix == null) {
return;
}
@@ -126,11 +125,11 @@
@override
void visitIndexExpression(IndexExpression node) {
node.visitChildren(this);
- DartType targetType = node.realTarget.staticType;
+ var targetType = node.realTarget.staticType;
if (targetType == null || targetType.isDynamic) {
return;
}
- AstNode parent = node.parent;
+ var parent = node.parent;
if (parent is AssignmentExpression && parent.leftHandSide == node) {
return;
}
@@ -164,7 +163,7 @@
if (!node.operator.isUserDefinableOperator) {
return;
}
- DartType operandType = node.operand.staticType;
+ var operandType = node.operand.staticType;
if (operandType == null || operandType.isDynamic) {
return;
}
@@ -175,7 +174,7 @@
void visitPrefixedIdentifier(PrefixedIdentifier node) {
SimpleIdentifier prefix = node.prefix;
prefix.accept(this);
- DartType prefixType = prefix.staticType;
+ var prefixType = prefix.staticType;
if (prefixType == null || prefixType.isDynamic) {
return;
}
@@ -188,7 +187,7 @@
if (!node.operator.isUserDefinableOperator) {
return;
}
- DartType operandType = node.operand.staticType;
+ var operandType = node.operand.staticType;
if (operandType == null || operandType.isDynamic) {
return;
}
@@ -199,11 +198,11 @@
void visitPropertyAccess(PropertyAccess node) {
Expression target = node.realTarget;
target.accept(this);
- DartType targetType = target.staticType;
+ var targetType = target.staticType;
if (targetType == null || targetType.isDynamic) {
return;
}
- AstNode parent = node.parent;
+ var parent = node.parent;
if (parent is AssignmentExpression && parent.leftHandSide == node) {
return;
}
@@ -215,20 +214,23 @@
if (node.name == "void") {
return;
}
- if (node.staticType != null &&
- node.staticType.isDynamic &&
+
+ var staticType = node.staticType;
+ if (staticType != null &&
+ staticType.isDynamic &&
node.staticElement == null) {
return;
}
- AstNode parent = node.parent;
+
+ var parent = node.parent;
if (parent is AssignmentExpression && parent.leftHandSide == node) {
return;
}
if (parent is MethodInvocation) {
MethodInvocation invocation = parent;
if (identical(invocation.methodName, node)) {
- Expression target = invocation.realTarget;
- DartType targetType = target == null ? null : target.staticType;
+ var target = invocation.realTarget;
+ var targetType = target == null ? null : target.staticType;
if (targetType == null || targetType.isDynamic) {
return;
}
@@ -238,9 +240,9 @@
}
void _checkResolved(
- AstNode node, Element element, Predicate<Element> predicate) {
+ AstNode node, Element? element, Predicate<Element>? predicate) {
if (element == null) {
- if (_knownExceptions == null || !_knownExceptions.contains(node)) {
+ if (_knownExceptions == null || !_knownExceptions!.contains(node)) {
_unresolvedNodes.add(node);
}
} else if (predicate != null) {
@@ -250,7 +252,7 @@
}
}
- String _getFileName(AstNode node) {
+ String _getFileName(AstNode? node) {
// TODO (jwren) there are two copies of this method, one here and one in
// StaticTypeVerifier, they should be resolved into a single method
if (node != null) {
@@ -258,7 +260,7 @@
if (root is CompilationUnit) {
CompilationUnit rootCU = root;
if (rootCU.declaredElement != null) {
- return rootCU.declaredElement.source.fullName;
+ return rootCU.declaredElement!.source.fullName;
} else {
return "<unknown file- CompilationUnit.getElement() returned null>";
}
@@ -287,11 +289,11 @@
/// Looks up the identifier with [name] and validates that its type type
/// stringifies to [type] and that its generics match the given stringified
/// output.
- FunctionTypeImpl expectFunctionType(String name, String type,
+ FunctionType expectFunctionType(String name, String type,
{String typeParams = '[]',
String typeArgs = '[]',
String typeFormals = '[]',
- String identifierType}) {
+ String? identifierType}) {
identifierType ??= type;
String typeParametersStr(List<TypeParameterElement> elements) {
@@ -313,7 +315,7 @@
/// Looks up the identifier with [name] and validates that its element type
/// stringifies to [type] and that its generics match the given stringified
/// output.
- FunctionTypeImpl expectFunctionType2(String name, String type) {
+ FunctionType expectFunctionType2(String name, String type) {
var identifier = findNode.simple(name);
var functionType = _getFunctionTypedElementType(identifier);
assertType(functionType, type);
@@ -338,9 +340,8 @@
/// to match the type.
void expectInitializerType(String name, type) {
SimpleIdentifier identifier = findNode.simple(name);
- VariableDeclaration declaration =
- identifier.thisOrAncestorOfType<VariableDeclaration>();
- Expression initializer = declaration.initializer;
+ var declaration = identifier.thisOrAncestorOfType<VariableDeclaration>()!;
+ var initializer = declaration.initializer!;
_expectType(initializer.staticType, type);
}
@@ -349,7 +350,7 @@
/// If [expected] is a string, validates that the type stringifies to that
/// text. Otherwise, [expected] is used directly a [Matcher] to match the
/// type.
- _expectType(DartType type, expected) {
+ _expectType(DartType? type, expected) {
if (expected is String) {
assertType(type, expected);
} else {
@@ -357,12 +358,12 @@
}
}
- FunctionTypeImpl _getFunctionTypedElementType(SimpleIdentifier identifier) {
+ FunctionType _getFunctionTypedElementType(SimpleIdentifier identifier) {
var element = identifier.staticElement;
if (element is ExecutableElement) {
return element.type;
} else if (element is VariableElement) {
- return element.type;
+ return element.type as FunctionType;
} else {
fail('Unexpected element: (${element.runtimeType}) $element');
}
diff --git a/pkg/analyzer/test/generated/scanner_test.dart b/pkg/analyzer/test/generated/scanner_test.dart
index c0c874f..939b23e 100644
--- a/pkg/analyzer/test/generated/scanner_test.dart
+++ b/pkg/analyzer/test/generated/scanner_test.dart
@@ -133,11 +133,12 @@
void test_linestarts() {
String source = "var\r\ni\n=\n1;\n";
GatheringErrorListener listener = GatheringErrorListener();
- Scanner scanner = Scanner(null, CharSequenceReader(source), listener)
- ..configureFeatures(
- featureSetForOverriding: featureSet,
- featureSet: featureSet,
- );
+ Scanner scanner =
+ Scanner(TestSource(), CharSequenceReader(source), listener)
+ ..configureFeatures(
+ featureSetForOverriding: featureSet,
+ featureSet: featureSet,
+ );
var token = scanner.tokenize();
expect(token.lexeme, 'var');
var lineStarts = scanner.lineStarts;
@@ -150,16 +151,17 @@
// See https://github.com/dart-lang/sdk/issues/30320
String source = '<!-- @Component(';
GatheringErrorListener listener = GatheringErrorListener();
- Scanner scanner = Scanner(null, CharSequenceReader(source), listener)
- ..configureFeatures(
- featureSetForOverriding: featureSet,
- featureSet: featureSet,
- );
+ Scanner scanner =
+ Scanner(TestSource(), CharSequenceReader(source), listener)
+ ..configureFeatures(
+ featureSetForOverriding: featureSet,
+ featureSet: featureSet,
+ );
Token token = scanner.tokenize(reportScannerErrors: false);
expect(token, TypeMatcher<UnmatchedToken>());
- token = token.next;
+ token = token.next!;
expect(token, TypeMatcher<UnmatchedToken>());
- token = token.next;
+ token = token.next!;
expect(token, isNot(TypeMatcher<ErrorToken>()));
}
@@ -168,7 +170,7 @@
GatheringErrorListener listener = GatheringErrorListener();
_scanWithListener(source, listener);
listener.assertNoErrors();
- LineInfo info = listener.getLineInfo(TestSource());
+ LineInfo info = listener.getLineInfo(TestSource())!;
expect(info, isNotNull);
int count = expectedLocations.length;
for (int i = 0; i < count; i++) {
@@ -186,11 +188,12 @@
String source,
GatheringErrorListener listener,
) {
- Scanner scanner = Scanner(null, CharSequenceReader(source), listener)
- ..configureFeatures(
- featureSetForOverriding: featureSet,
- featureSet: featureSet,
- );
+ Scanner scanner =
+ Scanner(TestSource(), CharSequenceReader(source), listener)
+ ..configureFeatures(
+ featureSetForOverriding: featureSet,
+ featureSet: featureSet,
+ );
Token result = scanner.tokenize();
listener.setLineInfo(TestSource(), scanner.lineStarts);
return result;
@@ -277,13 +280,13 @@
}
}
- void _validateStream(StringBuffer buffer, Token token) {
+ void _validateStream(StringBuffer buffer, Token? token) {
if (token == null) {
return;
}
- Token previousToken;
+ late Token previousToken;
int previousEnd = -1;
- Token currentToken = token;
+ Token? currentToken = token;
while (currentToken != null && currentToken.type != TokenType.EOF) {
_validateStream(buffer, currentToken.precedingComments);
TokenType type = currentToken.type;
diff --git a/pkg/analyzer/test/generated/simple_parser_test.dart b/pkg/analyzer/test/generated/simple_parser_test.dart
index c3f40da..e8b9023 100644
--- a/pkg/analyzer/test/generated/simple_parser_test.dart
+++ b/pkg/analyzer/test/generated/simple_parser_test.dart
@@ -42,9 +42,9 @@
CompilationUnit unit = parser.parseCompilationUnit2();
expect(unit, isNotNull);
expect(unit.declarations, hasLength(1));
- ClassDeclaration classDecl = unit.declarations[0];
+ var classDecl = unit.declarations[0] as ClassDeclaration;
expect(classDecl, isNotNull);
- return classDecl.extendsClause;
+ return classDecl.extendsClause!;
}
List<SimpleIdentifier> parseIdentifierList(String identifiers) {
@@ -59,9 +59,9 @@
CompilationUnit unit = parser.parseCompilationUnit2();
expect(unit, isNotNull);
expect(unit.declarations, hasLength(1));
- ClassDeclaration classDecl = unit.declarations[0];
+ var classDecl = unit.declarations[0] as ClassDeclaration;
expect(classDecl, isNotNull);
- return classDecl.implementsClause;
+ return classDecl.implementsClause!;
}
LibraryIdentifier parseLibraryIdentifier(String name) {
@@ -69,7 +69,7 @@
CompilationUnit unit = parser.parseCompilationUnit2();
expect(unit, isNotNull);
expect(unit.directives, hasLength(1));
- LibraryDirective directive = unit.directives[0];
+ var directive = unit.directives[0] as LibraryDirective;
return directive.name;
}
@@ -80,7 +80,7 @@
void parseStatementList(String content, int expectedCount) {
Statement statement = parseStatement('{$content}');
expect(statement, isBlock);
- Block block = statement;
+ var block = statement as Block;
expect(block.statements, hasLength(expectedCount));
}
@@ -89,7 +89,7 @@
CompilationUnit unit = parser.parseCompilationUnit2();
expect(unit, isNotNull);
expect(unit.declarations, hasLength(1));
- TopLevelVariableDeclaration decl = unit.declarations[0];
+ var decl = unit.declarations[0] as TopLevelVariableDeclaration;
expect(decl, isNotNull);
return decl.variables.variables[0];
}
@@ -99,19 +99,19 @@
CompilationUnit unit = parser.parseCompilationUnit2();
expect(unit, isNotNull);
expect(unit.declarations, hasLength(1));
- ClassDeclaration classDecl = unit.declarations[0];
+ var classDecl = unit.declarations[0] as ClassDeclaration;
expect(classDecl, isNotNull);
- return classDecl.withClause;
+ return classDecl.withClause!;
}
void test_classDeclaration_complexTypeParam() {
CompilationUnit unit = parseCompilationUnit('''
class C<@Foo.bar(const [], const [1], const{"":r""}, 0xFF + 2, .3, 4.5) T> {}
''');
- ClassDeclaration clazz = unit.declarations[0];
+ var clazz = unit.declarations[0] as ClassDeclaration;
expect(clazz.name.name, 'C');
- expect(clazz.typeParameters.typeParameters, hasLength(1));
- TypeParameter typeParameter = clazz.typeParameters.typeParameters[0];
+ expect(clazz.typeParameters!.typeParameters, hasLength(1));
+ TypeParameter typeParameter = clazz.typeParameters!.typeParameters[0];
expect(typeParameter.name.name, 'T');
expect(typeParameter.metadata, hasLength(1));
Annotation metadata = typeParameter.metadata[0];
@@ -125,9 +125,9 @@
]);
var classDeclaration = unit.declarations[0] as ClassDeclaration;
var method = classDeclaration.members[0] as MethodDeclaration;
- expect(method.parameters.parameters, hasLength(1));
+ expect(method.parameters!.parameters, hasLength(1));
var parameter =
- method.parameters.parameters[0] as FunctionTypedFormalParameter;
+ method.parameters!.parameters[0] as FunctionTypedFormalParameter;
expect(parameter.identifier, isNotNull);
}
@@ -206,15 +206,15 @@
test_parseArgument() {
Expression result = parseArgument('3');
expect(result, const TypeMatcher<IntegerLiteral>());
- IntegerLiteral literal = result;
+ var literal = result as IntegerLiteral;
expect(literal.value, 3);
}
test_parseArgument_named() {
Expression result = parseArgument('foo: "a"');
expect(result, const TypeMatcher<NamedExpression>());
- NamedExpression expression = result;
- StringLiteral literal = expression.expression;
+ var expression = result as NamedExpression;
+ var literal = expression.expression as StringLiteral;
expect(literal.stringValue, 'a');
}
@@ -343,7 +343,7 @@
CompilationUnit unit = parser.parseCompilationUnit2();
expectNotNullIfNoErrors(unit);
assertNoErrors();
- ClassDeclaration declaration = unit.declarations[0];
+ var declaration = unit.declarations[0] as ClassDeclaration;
expect(declaration.documentationComment, isNotNull);
expect(declaration.metadata, isEmpty);
}
@@ -353,8 +353,8 @@
CompilationUnit unit = parser.parseCompilationUnit2();
expectNotNullIfNoErrors(unit);
assertNoErrors();
- ClassDeclaration declaration = unit.declarations[0];
- Comment comment = declaration.documentationComment;
+ var declaration = unit.declarations[0] as ClassDeclaration;
+ Comment comment = declaration.documentationComment!;
expect(comment.isDocumentation, isTrue);
expect(comment.tokens, hasLength(1));
expect(comment.tokens[0].lexeme, '/** 2 */');
@@ -366,7 +366,7 @@
CompilationUnit unit = parser.parseCompilationUnit2();
expectNotNullIfNoErrors(unit);
assertNoErrors();
- ClassDeclaration declaration = unit.declarations[0];
+ var declaration = unit.declarations[0] as ClassDeclaration;
expect(declaration.documentationComment, isNotNull);
expect(declaration.metadata, hasLength(2));
}
@@ -376,7 +376,7 @@
CompilationUnit unit = parser.parseCompilationUnit2();
expectNotNullIfNoErrors(unit);
assertNoErrors();
- ClassDeclaration declaration = unit.declarations[0];
+ var declaration = unit.declarations[0] as ClassDeclaration;
expect(declaration.documentationComment, isNotNull);
expect(declaration.metadata, hasLength(2));
}
@@ -386,7 +386,7 @@
CompilationUnit unit = parser.parseCompilationUnit2();
expectNotNullIfNoErrors(unit);
assertNoErrors();
- ClassDeclaration declaration = unit.declarations[0];
+ var declaration = unit.declarations[0] as ClassDeclaration;
expect(declaration.documentationComment, isNull);
expect(declaration.metadata, hasLength(1));
}
@@ -396,7 +396,7 @@
CompilationUnit unit = parser.parseCompilationUnit2();
expectNotNullIfNoErrors(unit);
assertNoErrors();
- ClassDeclaration declaration = unit.declarations[0];
+ var declaration = unit.declarations[0] as ClassDeclaration;
expect(declaration.documentationComment, isNotNull);
expect(declaration.metadata, hasLength(2));
}
@@ -406,9 +406,9 @@
CompilationUnit unit = parser.parseCompilationUnit2();
expectNotNullIfNoErrors(unit);
assertNoErrors();
- ClassDeclaration declaration = unit.declarations[0];
+ var declaration = unit.declarations[0] as ClassDeclaration;
expect(declaration.documentationComment, isNotNull);
- expect(declaration.documentationComment.tokens[0].lexeme, contains('2'));
+ expect(declaration.documentationComment!.tokens[0].lexeme, contains('2'));
expect(declaration.metadata, hasLength(2));
}
@@ -425,9 +425,9 @@
CompilationUnit unit = parser.parseCompilationUnit2();
expectNotNullIfNoErrors(unit);
assertNoErrors();
- ClassDeclaration declaration = unit.declarations[0];
+ var declaration = unit.declarations[0] as ClassDeclaration;
expect(declaration.metadata, hasLength(0));
- List<Token> tokens = declaration.documentationComment.tokens;
+ List<Token> tokens = declaration.documentationComment!.tokens;
expect(tokens, hasLength(1));
expect(tokens[0].lexeme, contains('bbb'));
}
@@ -444,9 +444,9 @@
CompilationUnit unit = parser.parseCompilationUnit2();
expectNotNullIfNoErrors(unit);
assertNoErrors();
- ClassDeclaration declaration = unit.declarations[0];
+ var declaration = unit.declarations[0] as ClassDeclaration;
expect(declaration.metadata, hasLength(0));
- List<Token> tokens = declaration.documentationComment.tokens;
+ List<Token> tokens = declaration.documentationComment!.tokens;
expect(tokens, hasLength(2));
expect(tokens[0].lexeme, contains('bbb'));
expect(tokens[1].lexeme, contains('ccc'));
@@ -464,9 +464,9 @@
CompilationUnit unit = parser.parseCompilationUnit2();
expectNotNullIfNoErrors(unit);
assertNoErrors();
- ClassDeclaration declaration = unit.declarations[0];
+ var declaration = unit.declarations[0] as ClassDeclaration;
expect(declaration.metadata, hasLength(0));
- List<Token> tokens = declaration.documentationComment.tokens;
+ List<Token> tokens = declaration.documentationComment!.tokens;
expect(tokens, hasLength(1));
expect(tokens[0].lexeme, contains('ccc'));
}
@@ -484,9 +484,9 @@
CompilationUnit unit = parser.parseCompilationUnit2();
expectNotNullIfNoErrors(unit);
assertNoErrors();
- ClassDeclaration declaration = unit.declarations[0];
+ var declaration = unit.declarations[0] as ClassDeclaration;
expect(declaration.metadata, hasLength(0));
- List<Token> tokens = declaration.documentationComment.tokens;
+ List<Token> tokens = declaration.documentationComment!.tokens;
expect(tokens, hasLength(1));
expect(tokens[0].lexeme, contains('ddd'));
}
@@ -502,9 +502,9 @@
CompilationUnit unit = parser.parseCompilationUnit2();
expectNotNullIfNoErrors(unit);
assertNoErrors();
- ClassDeclaration declaration = unit.declarations[0];
+ var declaration = unit.declarations[0] as ClassDeclaration;
expect(declaration.metadata, hasLength(0));
- List<Token> tokens = declaration.documentationComment.tokens;
+ List<Token> tokens = declaration.documentationComment!.tokens;
expect(tokens, hasLength(1));
expect(tokens[0].lexeme, contains('aaa'));
}
@@ -514,7 +514,7 @@
CompilationUnit unit = parser.parseCompilationUnit2();
expectNotNullIfNoErrors(unit);
assertNoErrors();
- ClassDeclaration declaration = unit.declarations[0];
+ var declaration = unit.declarations[0] as ClassDeclaration;
expect(declaration.documentationComment, isNull);
expect(declaration.metadata, hasLength(2));
}
@@ -524,7 +524,7 @@
CompilationUnit unit = parser.parseCompilationUnit2();
expectNotNullIfNoErrors(unit);
assertNoErrors();
- ClassDeclaration declaration = unit.declarations[0];
+ var declaration = unit.declarations[0] as ClassDeclaration;
expect(declaration.documentationComment, isNull);
expect(declaration.metadata, isEmpty);
}
@@ -538,18 +538,18 @@
CompilationUnit unit = parser.parseCompilationUnit2();
expectNotNullIfNoErrors(unit);
assertNoErrors();
- ClassDeclaration declaration = unit.declarations[0];
+ var declaration = unit.declarations[0] as ClassDeclaration;
expect(declaration.documentationComment, isNotNull);
expect(declaration.metadata, isEmpty);
}
void test_parseCommentReference_new_prefixed() {
createParser('');
- CommentReference reference = parseCommentReference('new a.b', 7);
+ var reference = parseCommentReference('new a.b', 7)!;
expectNotNullIfNoErrors(reference);
assertNoErrors();
expect(reference.identifier, isPrefixedIdentifier);
- PrefixedIdentifier prefixedIdentifier = reference.identifier;
+ var prefixedIdentifier = reference.identifier as PrefixedIdentifier;
SimpleIdentifier prefix = prefixedIdentifier.prefix;
expect(prefix.token, isNotNull);
expect(prefix.name, "a");
@@ -563,11 +563,11 @@
void test_parseCommentReference_new_simple() {
createParser('');
- CommentReference reference = parseCommentReference('new a', 5);
+ var reference = parseCommentReference('new a', 5)!;
expectNotNullIfNoErrors(reference);
assertNoErrors();
expect(reference.identifier, isSimpleIdentifier);
- SimpleIdentifier identifier = reference.identifier;
+ var identifier = reference.identifier as SimpleIdentifier;
expect(identifier.token, isNotNull);
expect(identifier.name, "a");
expect(identifier.offset, 9);
@@ -575,11 +575,11 @@
void test_parseCommentReference_operator_withKeyword_notPrefixed() {
createParser('');
- CommentReference reference = parseCommentReference('operator ==', 5);
+ var reference = parseCommentReference('operator ==', 5)!;
expectNotNullIfNoErrors(reference);
assertNoErrors();
expect(reference.identifier, isSimpleIdentifier);
- SimpleIdentifier identifier = reference.identifier;
+ var identifier = reference.identifier as SimpleIdentifier;
expect(identifier.token, isNotNull);
expect(identifier.name, "==");
expect(identifier.offset, 14);
@@ -587,11 +587,11 @@
void test_parseCommentReference_operator_withKeyword_prefixed() {
createParser('');
- CommentReference reference = parseCommentReference('Object.operator==', 7);
+ var reference = parseCommentReference('Object.operator==', 7)!;
expectNotNullIfNoErrors(reference);
assertNoErrors();
expect(reference.identifier, isPrefixedIdentifier);
- PrefixedIdentifier prefixedIdentifier = reference.identifier;
+ var prefixedIdentifier = reference.identifier as PrefixedIdentifier;
SimpleIdentifier prefix = prefixedIdentifier.prefix;
expect(prefix.token, isNotNull);
expect(prefix.name, "Object");
@@ -605,11 +605,11 @@
void test_parseCommentReference_operator_withoutKeyword_notPrefixed() {
createParser('');
- CommentReference reference = parseCommentReference('==', 5);
+ var reference = parseCommentReference('==', 5)!;
expectNotNullIfNoErrors(reference);
assertNoErrors();
expect(reference.identifier, isSimpleIdentifier);
- SimpleIdentifier identifier = reference.identifier;
+ var identifier = reference.identifier as SimpleIdentifier;
expect(identifier.token, isNotNull);
expect(identifier.name, "==");
expect(identifier.offset, 5);
@@ -617,11 +617,11 @@
void test_parseCommentReference_operator_withoutKeyword_prefixed() {
createParser('');
- CommentReference reference = parseCommentReference('Object.==', 7);
+ var reference = parseCommentReference('Object.==', 7)!;
expectNotNullIfNoErrors(reference);
assertNoErrors();
expect(reference.identifier, isPrefixedIdentifier);
- PrefixedIdentifier prefixedIdentifier = reference.identifier;
+ var prefixedIdentifier = reference.identifier as PrefixedIdentifier;
SimpleIdentifier prefix = prefixedIdentifier.prefix;
expect(prefix.token, isNotNull);
expect(prefix.name, "Object");
@@ -635,11 +635,11 @@
void test_parseCommentReference_prefixed() {
createParser('');
- CommentReference reference = parseCommentReference('a.b', 7);
+ var reference = parseCommentReference('a.b', 7)!;
expectNotNullIfNoErrors(reference);
assertNoErrors();
expect(reference.identifier, isPrefixedIdentifier);
- PrefixedIdentifier prefixedIdentifier = reference.identifier;
+ var prefixedIdentifier = reference.identifier as PrefixedIdentifier;
SimpleIdentifier prefix = prefixedIdentifier.prefix;
expect(prefix.token, isNotNull);
expect(prefix.name, "a");
@@ -653,11 +653,11 @@
void test_parseCommentReference_simple() {
createParser('');
- CommentReference reference = parseCommentReference('a', 5);
+ var reference = parseCommentReference('a', 5)!;
expectNotNullIfNoErrors(reference);
assertNoErrors();
expect(reference.identifier, isSimpleIdentifier);
- SimpleIdentifier identifier = reference.identifier;
+ var identifier = reference.identifier as SimpleIdentifier;
expect(identifier.token, isNotNull);
expect(identifier.name, "a");
expect(identifier.offset, 5);
@@ -665,18 +665,18 @@
void test_parseCommentReference_synthetic() {
createParser('');
- CommentReference reference = parseCommentReference('', 5);
+ var reference = parseCommentReference('', 5)!;
expectNotNullIfNoErrors(reference);
assertNoErrors();
expect(reference.identifier, isSimpleIdentifier);
- SimpleIdentifier identifier = reference.identifier;
+ var identifier = reference.identifier as SimpleIdentifier;
expect(identifier, isNotNull);
expect(identifier.isSynthetic, isTrue);
expect(identifier.token, isNotNull);
expect(identifier.name, "");
expect(identifier.offset, 5);
// Should end with EOF token.
- Token nextToken = identifier.token.next;
+ Token nextToken = identifier.token.next!;
expect(nextToken, isNotNull);
expect(nextToken.type, TokenType.EOF);
}
@@ -686,10 +686,10 @@
// This fails because we are returning null from the method and asserting
// that the return value is not null.
createParser('');
- CommentReference reference = parseCommentReference('this', 5);
+ var reference = parseCommentReference('this', 5)!;
expectNotNullIfNoErrors(reference);
assertNoErrors();
- SimpleIdentifier identifier = reference.identifier;
+ var identifier = reference.identifier as SimpleIdentifier;
expect(identifier.token, isNotNull);
expect(identifier.name, "a");
expect(identifier.offset, 5);
@@ -698,8 +698,8 @@
void test_parseCommentReferences_33738() {
CompilationUnit unit =
parseCompilationUnit('/** [String] */ abstract class Foo {}');
- ClassDeclaration clazz = unit.declarations[0];
- Comment comment = clazz.documentationComment;
+ var clazz = unit.declarations[0] as ClassDeclaration;
+ Comment comment = clazz.documentationComment!;
expect(clazz.isAbstract, isTrue);
List<CommentReference> references = comment.references;
expect(references, hasLength(1));
@@ -716,8 +716,8 @@
@Annotation
abstract class Foo {}
''');
- ClassDeclaration clazz = unit.declarations[0];
- Comment comment = clazz.documentationComment;
+ var clazz = unit.declarations[0] as ClassDeclaration;
+ Comment comment = clazz.documentationComment!;
expect(clazz.isAbstract, isTrue);
List<CommentReference> references = comment.references;
expect(references, hasLength(3));
@@ -746,8 +746,8 @@
/// and [Object].
abstract class Foo {}
''');
- ClassDeclaration clazz = unit.declarations[0];
- Comment comment = clazz.documentationComment;
+ var clazz = unit.declarations[0] as ClassDeclaration;
+ Comment comment = clazz.documentationComment!;
expect(clazz.isAbstract, isTrue);
List<CommentReference> references = comment.references;
expect(references, hasLength(4));
@@ -809,7 +809,7 @@
expect(reference.identifier.isSynthetic, isTrue);
expect(reference.identifier.name, "");
// Should end with EOF token.
- Token nextToken = referenceToken.next;
+ Token nextToken = referenceToken.next!;
expect(nextToken, isNotNull);
expect(nextToken.type, TokenType.EOF);
}
@@ -831,7 +831,7 @@
expect(reference.identifier.isSynthetic, isFalse);
expect(reference.identifier.name, "namePrefix");
// Should end with EOF token.
- Token nextToken = referenceToken.next;
+ Token nextToken = referenceToken.next!;
expect(nextToken, isNotNull);
expect(nextToken.type, TokenType.EOF);
}
@@ -1180,7 +1180,7 @@
void test_parseDocumentationComment_block() {
createParser('/** */ class C {}');
CompilationUnit unit = parser.parseCompilationUnit2();
- Comment comment = unit.declarations[0].documentationComment;
+ Comment comment = unit.declarations[0].documentationComment!;
expectNotNullIfNoErrors(comment);
assertNoErrors();
expect(comment.isBlock, isFalse);
@@ -1191,7 +1191,7 @@
void test_parseDocumentationComment_block_withReference() {
createParser('/** [a] */ class C {}');
CompilationUnit unit = parser.parseCompilationUnit2();
- Comment comment = unit.declarations[0].documentationComment;
+ Comment comment = unit.declarations[0].documentationComment!;
expectNotNullIfNoErrors(comment);
assertNoErrors();
expect(comment.isBlock, isFalse);
@@ -1207,7 +1207,7 @@
void test_parseDocumentationComment_endOfLine() {
createParser('/// \n/// \n class C {}');
CompilationUnit unit = parser.parseCompilationUnit2();
- Comment comment = unit.declarations[0].documentationComment;
+ Comment comment = unit.declarations[0].documentationComment!;
expectNotNullIfNoErrors(comment);
assertNoErrors();
expect(comment.isBlock, isFalse);
@@ -1226,11 +1226,12 @@
void test_parseFunctionBody_block() {
createParser('{}');
- FunctionBody functionBody = parser.parseFunctionBody(false, null, false);
+ FunctionBody functionBody = parser.parseFunctionBody(
+ false, ParserErrorCode.MISSING_FUNCTION_BODY, false);
expectNotNullIfNoErrors(functionBody);
assertNoErrors();
expect(functionBody, isBlockFunctionBody);
- BlockFunctionBody body = functionBody;
+ var body = functionBody as BlockFunctionBody;
expect(body.keyword, isNull);
expect(body.star, isNull);
expect(body.block, isNotNull);
@@ -1241,13 +1242,14 @@
void test_parseFunctionBody_block_async() {
createParser('async {}');
- FunctionBody functionBody = parser.parseFunctionBody(false, null, false);
+ FunctionBody functionBody = parser.parseFunctionBody(
+ false, ParserErrorCode.MISSING_FUNCTION_BODY, false);
expectNotNullIfNoErrors(functionBody);
assertNoErrors();
expect(functionBody, isBlockFunctionBody);
- BlockFunctionBody body = functionBody;
+ var body = functionBody as BlockFunctionBody;
expect(body.keyword, isNotNull);
- expect(body.keyword.lexeme, Keyword.ASYNC.lexeme);
+ expect(body.keyword!.lexeme, Keyword.ASYNC.lexeme);
expect(body.star, isNull);
expect(body.block, isNotNull);
expect(body.isAsynchronous, isTrue);
@@ -1257,13 +1259,14 @@
void test_parseFunctionBody_block_asyncGenerator() {
createParser('async* {}');
- FunctionBody functionBody = parser.parseFunctionBody(false, null, false);
+ FunctionBody functionBody = parser.parseFunctionBody(
+ false, ParserErrorCode.MISSING_FUNCTION_BODY, false);
expectNotNullIfNoErrors(functionBody);
assertNoErrors();
expect(functionBody, isBlockFunctionBody);
- BlockFunctionBody body = functionBody;
+ var body = functionBody as BlockFunctionBody;
expect(body.keyword, isNotNull);
- expect(body.keyword.lexeme, Keyword.ASYNC.lexeme);
+ expect(body.keyword!.lexeme, Keyword.ASYNC.lexeme);
expect(body.star, isNotNull);
expect(body.block, isNotNull);
expect(body.isAsynchronous, isTrue);
@@ -1273,13 +1276,14 @@
void test_parseFunctionBody_block_syncGenerator() {
createParser('sync* {}');
- FunctionBody functionBody = parser.parseFunctionBody(false, null, false);
+ FunctionBody functionBody = parser.parseFunctionBody(
+ false, ParserErrorCode.MISSING_FUNCTION_BODY, false);
expectNotNullIfNoErrors(functionBody);
assertNoErrors();
expect(functionBody, isBlockFunctionBody);
- BlockFunctionBody body = functionBody;
+ var body = functionBody as BlockFunctionBody;
expect(body.keyword, isNotNull);
- expect(body.keyword.lexeme, Keyword.SYNC.lexeme);
+ expect(body.keyword!.lexeme, Keyword.SYNC.lexeme);
expect(body.star, isNotNull);
expect(body.block, isNotNull);
expect(body.isAsynchronous, isFalse);
@@ -1289,21 +1293,23 @@
void test_parseFunctionBody_empty() {
createParser(';');
- FunctionBody functionBody = parser.parseFunctionBody(true, null, false);
+ FunctionBody functionBody = parser.parseFunctionBody(
+ true, ParserErrorCode.MISSING_FUNCTION_BODY, false);
expectNotNullIfNoErrors(functionBody);
assertNoErrors();
expect(functionBody, isEmptyFunctionBody);
- EmptyFunctionBody body = functionBody;
+ var body = functionBody as EmptyFunctionBody;
expect(body.semicolon, isNotNull);
}
void test_parseFunctionBody_expression() {
createParser('=> y;');
- FunctionBody functionBody = parser.parseFunctionBody(false, null, false);
+ FunctionBody functionBody = parser.parseFunctionBody(
+ false, ParserErrorCode.MISSING_FUNCTION_BODY, false);
expectNotNullIfNoErrors(functionBody);
assertNoErrors();
expect(functionBody, isExpressionFunctionBody);
- ExpressionFunctionBody body = functionBody;
+ var body = functionBody as ExpressionFunctionBody;
expect(body.keyword, isNull);
expect(body.functionDefinition, isNotNull);
expect(body.expression, isNotNull);
@@ -1315,13 +1321,14 @@
void test_parseFunctionBody_expression_async() {
createParser('async => y;');
- FunctionBody functionBody = parser.parseFunctionBody(false, null, false);
+ FunctionBody functionBody = parser.parseFunctionBody(
+ false, ParserErrorCode.MISSING_FUNCTION_BODY, false);
expectNotNullIfNoErrors(functionBody);
assertNoErrors();
expect(functionBody, isExpressionFunctionBody);
- ExpressionFunctionBody body = functionBody;
+ var body = functionBody as ExpressionFunctionBody;
expect(body.keyword, isNotNull);
- expect(body.keyword.lexeme, Keyword.ASYNC.lexeme);
+ expect(body.keyword!.lexeme, Keyword.ASYNC.lexeme);
expect(body.functionDefinition, isNotNull);
expect(body.expression, isNotNull);
expect(body.semicolon, isNotNull);
@@ -1366,10 +1373,10 @@
var c = new Future<int>.sync(() => 3).then<int>((e) => e);
''');
expect(unit, isNotNull);
- TopLevelVariableDeclaration v = unit.declarations[0];
- MethodInvocation init = v.variables.variables[0].initializer;
+ var v = unit.declarations[0] as TopLevelVariableDeclaration;
+ var init = v.variables.variables[0].initializer as MethodInvocation;
expect(init.methodName.name, 'then');
- NodeList<TypeAnnotation> typeArg = init.typeArguments.arguments;
+ NodeList<TypeAnnotation> typeArg = init.typeArguments!.arguments;
expect(typeArg, hasLength(1));
expect(typeArg[0].beginToken.lexeme, 'int');
}
@@ -1380,10 +1387,10 @@
var c = Future<int>.sync(() => 3).then<int>((e) => e);
''');
expect(unit, isNotNull);
- TopLevelVariableDeclaration v = unit.declarations[0];
- MethodInvocation init = v.variables.variables[0].initializer;
+ var v = unit.declarations[0] as TopLevelVariableDeclaration;
+ var init = v.variables.variables[0].initializer as MethodInvocation;
expect(init.methodName.name, 'then');
- NodeList<TypeAnnotation> typeArg = init.typeArguments.arguments;
+ NodeList<TypeAnnotation> typeArg = init.typeArguments!.arguments;
expect(typeArg, hasLength(1));
expect(typeArg[0].beginToken.lexeme, 'int');
}
@@ -1393,10 +1400,10 @@
createParser('f() => C<E>.n();');
CompilationUnit unit = parser.parseCompilationUnit2();
expect(unit, isNotNull);
- FunctionDeclaration f = unit.declarations[0];
- ExpressionFunctionBody body = f.functionExpression.body;
+ var f = unit.declarations[0] as FunctionDeclaration;
+ var body = f.functionExpression.body as ExpressionFunctionBody;
expect(body.expression, isInstanceCreationExpression);
- InstanceCreationExpressionImpl creation = body.expression;
+ var creation = body.expression as InstanceCreationExpressionImpl;
expect(creation.keyword, isNull);
ConstructorName constructorName = creation.constructorName;
expect(constructorName.type.toSource(), 'C<E>');
@@ -1411,17 +1418,17 @@
createParser('f() => C<E>.n<B>();');
CompilationUnit unit = parser.parseCompilationUnit2();
expect(unit, isNotNull);
- FunctionDeclaration f = unit.declarations[0];
- ExpressionFunctionBody body = f.functionExpression.body;
+ var f = unit.declarations[0] as FunctionDeclaration;
+ var body = f.functionExpression.body as ExpressionFunctionBody;
expect(body.expression, isInstanceCreationExpression);
- InstanceCreationExpressionImpl creation = body.expression;
+ var creation = body.expression as InstanceCreationExpressionImpl;
expect(creation.keyword, isNull);
ConstructorName constructorName = creation.constructorName;
expect(constructorName.type.toSource(), 'C<E>');
expect(constructorName.period, isNotNull);
expect(constructorName.name, isNotNull);
expect(creation.argumentList, isNotNull);
- expect(creation.typeArguments.arguments, hasLength(1));
+ expect(creation.typeArguments!.arguments, hasLength(1));
}
void test_parseInstanceCreation_noKeyword_prefix() {
@@ -1429,10 +1436,10 @@
createParser('f() => p.C<E>.n();');
CompilationUnit unit = parser.parseCompilationUnit2();
expect(unit, isNotNull);
- FunctionDeclaration f = unit.declarations[0];
- ExpressionFunctionBody body = f.functionExpression.body;
+ var f = unit.declarations[0] as FunctionDeclaration;
+ var body = f.functionExpression.body as ExpressionFunctionBody;
expect(body.expression, isInstanceCreationExpression);
- InstanceCreationExpression creation = body.expression;
+ var creation = body.expression as InstanceCreationExpression;
expect(creation.keyword, isNull);
ConstructorName constructorName = creation.constructorName;
expect(constructorName.type.toSource(), 'p.C<E>');
@@ -1449,13 +1456,13 @@
''');
CompilationUnit unit = parser.parseCompilationUnit2();
expect(unit, isNotNull);
- FunctionDeclaration f = unit.declarations[1];
- BlockFunctionBody body = f.functionExpression.body;
- VariableDeclarationStatement statement = body.block.statements[0];
+ var f = unit.declarations[1] as FunctionDeclaration;
+ var body = f.functionExpression.body as BlockFunctionBody;
+ var statement = body.block.statements[0] as VariableDeclarationStatement;
VariableDeclaration variable = statement.variables.variables[0];
- MethodInvocation creation = variable.initializer;
+ var creation = variable.initializer as MethodInvocation;
expect(creation.methodName.name, 'C');
- expect(creation.typeArguments.toSource(), '<int, int Function(String)>');
+ expect(creation.typeArguments!.toSource(), '<int, int Function(String)>');
}
void test_parseLibraryIdentifier_builtin() {
@@ -1504,7 +1511,7 @@
}
void test_parseReturnStatement_noValue() {
- ReturnStatement statement = parseStatement('return;');
+ var statement = parseStatement('return;') as ReturnStatement;
expectNotNullIfNoErrors(statement);
assertNoErrors();
expect(statement.returnKeyword, isNotNull);
@@ -1513,7 +1520,7 @@
}
void test_parseReturnStatement_value() {
- ReturnStatement statement = parseStatement('return x;');
+ var statement = parseStatement('return x;') as ReturnStatement;
expectNotNullIfNoErrors(statement);
assertNoErrors();
expect(statement.returnKeyword, isNotNull);
@@ -1545,7 +1552,7 @@
void test_parseTypeAnnotation_function_noReturnType_noParameters() {
createParser('Function()');
- GenericFunctionType functionType = parser.parseTypeAnnotation(false);
+ var functionType = parser.parseTypeAnnotation(false) as GenericFunctionType;
expectNotNullIfNoErrors(functionType);
assertNoErrors();
expect(functionType.returnType, isNull);
@@ -1558,7 +1565,7 @@
void test_parseTypeAnnotation_function_noReturnType_parameters() {
createParser('Function(int, int)');
- GenericFunctionType functionType = parser.parseTypeAnnotation(false);
+ var functionType = parser.parseTypeAnnotation(false) as GenericFunctionType;
expectNotNullIfNoErrors(functionType);
assertNoErrors();
expect(functionType.returnType, isNull);
@@ -1570,13 +1577,13 @@
expect(parameters, hasLength(2));
expect(parameters[0], isSimpleFormalParameter);
- SimpleFormalParameter parameter = parameters[0];
+ var parameter = parameters[0] as SimpleFormalParameter;
expect(parameter.identifier, isNull);
expect(parameter.type, isTypeName);
expect((parameter.type as TypeName).name.name, 'int');
expect(parameters[1], isSimpleFormalParameter);
- parameter = parameters[1];
+ parameter = parameters[1] as SimpleFormalParameter;
expect(parameter.identifier, isNull);
expect(parameter.type, isTypeName);
expect((parameter.type as TypeName).name.name, 'int');
@@ -1584,12 +1591,12 @@
void test_parseTypeAnnotation_function_noReturnType_typeParameters() {
createParser('Function<S, T>()');
- GenericFunctionType functionType = parser.parseTypeAnnotation(false);
+ var functionType = parser.parseTypeAnnotation(false) as GenericFunctionType;
expectNotNullIfNoErrors(functionType);
assertNoErrors();
expect(functionType.returnType, isNull);
expect(functionType.functionKeyword, isNotNull);
- TypeParameterList typeParameters = functionType.typeParameters;
+ var typeParameters = functionType.typeParameters!;
expect(typeParameters, isNotNull);
expect(typeParameters.typeParameters, hasLength(2));
FormalParameterList parameterList = functionType.parameters;
@@ -1600,12 +1607,12 @@
void
test_parseTypeAnnotation_function_noReturnType_typeParameters_parameters() {
createParser('Function<T>(String, {T t})');
- GenericFunctionType functionType = parser.parseTypeAnnotation(false);
+ var functionType = parser.parseTypeAnnotation(false) as GenericFunctionType;
expectNotNullIfNoErrors(functionType);
assertNoErrors();
expect(functionType.returnType, isNull);
expect(functionType.functionKeyword, isNotNull);
- TypeParameterList typeParameters = functionType.typeParameters;
+ var typeParameters = functionType.typeParameters!;
expect(typeParameters, isNotNull);
expect(typeParameters.typeParameters, hasLength(1));
FormalParameterList parameterList = functionType.parameters;
@@ -1615,7 +1622,7 @@
void test_parseTypeAnnotation_function_returnType_classFunction() {
createParser('Function');
- TypeName functionType = parser.parseTypeAnnotation(false);
+ var functionType = parser.parseTypeAnnotation(false) as TypeName;
expectNotNullIfNoErrors(functionType);
assertNoErrors();
}
@@ -1630,7 +1637,7 @@
void test_parseTypeAnnotation_function_returnType_noParameters() {
createParser('List<int> Function()');
- GenericFunctionType functionType = parser.parseTypeAnnotation(false);
+ var functionType = parser.parseTypeAnnotation(false) as GenericFunctionType;
expectNotNullIfNoErrors(functionType);
assertNoErrors();
expect(functionType.returnType, isNotNull);
@@ -1643,7 +1650,7 @@
void test_parseTypeAnnotation_function_returnType_parameters() {
createParser('List<int> Function(String s, int i)');
- GenericFunctionType functionType = parser.parseTypeAnnotation(false);
+ var functionType = parser.parseTypeAnnotation(false) as GenericFunctionType;
expectNotNullIfNoErrors(functionType);
assertNoErrors();
expect(functionType.returnType, isNotNull);
@@ -1655,16 +1662,16 @@
expect(parameters, hasLength(2));
expect(parameters[0], isSimpleFormalParameter);
- SimpleFormalParameter parameter = parameters[0];
+ var parameter = parameters[0] as SimpleFormalParameter;
expect(parameter.identifier, isNotNull);
- expect(parameter.identifier.name, 's');
+ expect(parameter.identifier!.name, 's');
expect(parameter.type, isTypeName);
expect((parameter.type as TypeName).name.name, 'String');
expect(parameters[1], isSimpleFormalParameter);
- parameter = parameters[1];
+ parameter = parameters[1] as SimpleFormalParameter;
expect(parameter.identifier, isNotNull);
- expect(parameter.identifier.name, 'i');
+ expect(parameter.identifier!.name, 'i');
expect(parameter.type, isTypeName);
expect((parameter.type as TypeName).name.name, 'int');
}
@@ -1679,12 +1686,12 @@
void test_parseTypeAnnotation_function_returnType_typeParameters() {
createParser('List<T> Function<T>()');
- GenericFunctionType functionType = parser.parseTypeAnnotation(false);
+ var functionType = parser.parseTypeAnnotation(false) as GenericFunctionType;
expectNotNullIfNoErrors(functionType);
assertNoErrors();
expect(functionType.returnType, isNotNull);
expect(functionType.functionKeyword, isNotNull);
- TypeParameterList typeParameters = functionType.typeParameters;
+ var typeParameters = functionType.typeParameters!;
expect(typeParameters, isNotNull);
expect(typeParameters.typeParameters, hasLength(1));
FormalParameterList parameterList = functionType.parameters;
@@ -1695,12 +1702,12 @@
void
test_parseTypeAnnotation_function_returnType_typeParameters_parameters() {
createParser('List<T> Function<T>(String s, [T])');
- GenericFunctionType functionType = parser.parseTypeAnnotation(false);
+ var functionType = parser.parseTypeAnnotation(false) as GenericFunctionType;
expectNotNullIfNoErrors(functionType);
assertNoErrors();
expect(functionType.returnType, isNotNull);
expect(functionType.functionKeyword, isNotNull);
- TypeParameterList typeParameters = functionType.typeParameters;
+ var typeParameters = functionType.typeParameters!;
expect(typeParameters, isNotNull);
expect(typeParameters.typeParameters, hasLength(1));
FormalParameterList parameterList = functionType.parameters;
@@ -1718,7 +1725,7 @@
void test_parseTypeAnnotation_named() {
createParser('A<B>');
- TypeName typeName = parser.parseTypeAnnotation(false);
+ var typeName = parser.parseTypeAnnotation(false) as TypeName;
expectNotNullIfNoErrors(typeName);
assertNoErrors();
}
@@ -1750,9 +1757,9 @@
assertNoErrors();
expect(argumentList.leftBracket, isNotNull);
expect(argumentList.arguments, hasLength(1));
- TypeName argument = argumentList.arguments[0];
+ var argument = argumentList.arguments[0] as TypeName;
expect(argument, isNotNull);
- TypeArgumentList innerList = argument.typeArguments;
+ var innerList = argument.typeArguments!;
expect(innerList, isNotNull);
expect(innerList.arguments, hasLength(1));
expect(argumentList.rightBracket, isNotNull);
@@ -1767,10 +1774,10 @@
expect(argumentList.rightBracket, isNotNull);
expect(argumentList.arguments, hasLength(1));
- TypeName argument = argumentList.arguments[0];
+ var argument = argumentList.arguments[0] as TypeName;
expect(argument, isNotNull);
- TypeArgumentList innerList = argument.typeArguments;
+ var innerList = argument.typeArguments!;
expect(innerList, isNotNull);
expect(innerList.leftBracket, isNotNull);
expect(innerList.arguments, hasLength(1));
@@ -1787,19 +1794,19 @@
expect(argumentList.rightBracket, isNotNull);
expect(argumentList.arguments, hasLength(1));
- TypeName argument = argumentList.arguments[0];
+ var argument = argumentList.arguments[0] as TypeName;
expect(argument, isNotNull);
- TypeArgumentList innerList = argument.typeArguments;
+ var innerList = argument.typeArguments!;
expect(innerList, isNotNull);
expect(innerList.leftBracket, isNotNull);
expect(innerList.arguments, hasLength(1));
expect(innerList.rightBracket, isNotNull);
- TypeName innerArgument = innerList.arguments[0];
+ var innerArgument = innerList.arguments[0] as TypeName;
expect(innerArgument, isNotNull);
- TypeArgumentList innerInnerList = innerArgument.typeArguments;
+ var innerInnerList = innerArgument.typeArguments!;
expect(innerInnerList, isNotNull);
expect(innerInnerList.leftBracket, isNotNull);
expect(innerInnerList.arguments, hasLength(1));
@@ -1887,7 +1894,7 @@
void test_parseTypeParameterList_multiple() {
createParser('<A, B extends C, D>');
- TypeParameterList parameterList = parser.parseTypeParameterList();
+ TypeParameterList parameterList = parser.parseTypeParameterList()!;
expectNotNullIfNoErrors(parameterList);
assertNoErrors();
expect(parameterList.leftBracket, isNotNull);
@@ -1897,7 +1904,7 @@
void test_parseTypeParameterList_parameterizedWithTrailingEquals() {
createParser('<A extends B<E>>=', expectedEndOffset: 16);
- TypeParameterList parameterList = parser.parseTypeParameterList();
+ TypeParameterList parameterList = parser.parseTypeParameterList()!;
expectNotNullIfNoErrors(parameterList);
assertNoErrors();
expect(parameterList.leftBracket, isNotNull);
@@ -1907,7 +1914,7 @@
void test_parseTypeParameterList_parameterizedWithTrailingEquals2() {
createParser('<A extends B<E /* foo */ >>=', expectedEndOffset: 27);
- TypeParameterList parameterList = parser.parseTypeParameterList();
+ TypeParameterList parameterList = parser.parseTypeParameterList()!;
expectNotNullIfNoErrors(parameterList);
assertNoErrors();
expect(parameterList.leftBracket, isNotNull);
@@ -1915,19 +1922,19 @@
expect(parameterList.typeParameters, hasLength(1));
TypeParameter typeParameter = parameterList.typeParameters[0];
expect(typeParameter.name.name, 'A');
- TypeName bound = typeParameter.bound;
+ var bound = typeParameter.bound as TypeName;
expect(bound.name.name, 'B');
- TypeArgumentList typeArguments = bound.typeArguments;
+ var typeArguments = bound.typeArguments!;
expect(typeArguments.arguments, hasLength(1));
expect(typeArguments.rightBracket, isNotNull);
- expect(typeArguments.rightBracket.precedingComments.lexeme, '/* foo */');
- TypeName argument = typeArguments.arguments[0];
+ expect(typeArguments.rightBracket.precedingComments!.lexeme, '/* foo */');
+ var argument = typeArguments.arguments[0] as TypeName;
expect(argument.name.name, 'E');
}
void test_parseTypeParameterList_single() {
createParser('<<A>', expectedEndOffset: 0);
- TypeParameterList parameterList = parser.parseTypeParameterList();
+ var parameterList = parser.parseTypeParameterList();
// TODO(danrubel): Consider splitting `<<` and marking the first `<`
// as an unexpected token.
expect(parameterList, isNull);
@@ -1936,7 +1943,7 @@
void test_parseTypeParameterList_withTrailingEquals() {
createParser('<A>=', expectedEndOffset: 3);
- TypeParameterList parameterList = parser.parseTypeParameterList();
+ TypeParameterList parameterList = parser.parseTypeParameterList()!;
expectNotNullIfNoErrors(parameterList);
assertNoErrors();
expect(parameterList.leftBracket, isNotNull);
@@ -1959,7 +1966,7 @@
var declarationList = statement.variables;
assertErrors(
errors: [expectedError(ParserErrorCode.MODIFIER_OUT_OF_ORDER, 6, 4)]);
- expect(declarationList.keyword.lexeme, 'final');
+ expect(declarationList.keyword!.lexeme, 'final');
expect(declarationList.type, isNull);
expect(declarationList.variables, hasLength(1));
}
@@ -1981,7 +1988,7 @@
as VariableDeclarationStatement;
var declarationList = statement.variables;
assertNoErrors();
- expect(declarationList.keyword.lexeme, 'final');
+ expect(declarationList.keyword!.lexeme, 'final');
expect(declarationList.type, isNull);
expect(declarationList.variables, hasLength(1));
}
@@ -2068,7 +2075,7 @@
]);
var typeAlias = unit.declarations[0] as GenericTypeAlias;
expect(typeAlias.name.toSource(), 'K');
- var functionType = typeAlias.functionType;
+ var functionType = typeAlias.functionType!;
expect(functionType.parameters.parameters, hasLength(1));
var parameter = functionType.parameters.parameters[0];
expect(parameter.identifier, isNotNull);
@@ -2082,7 +2089,7 @@
]);
var typeAlias = unit.declarations[0] as GenericTypeAlias;
expect(typeAlias.name.toSource(), 'T');
- var functionType = typeAlias.functionType;
+ var functionType = typeAlias.functionType!;
expect(functionType.parameters.parameters, hasLength(1));
var parameter = functionType.parameters.parameters[0];
expect(parameter.identifier, isNotNull);
diff --git a/pkg/analyzer/test/generated/simple_resolver_test.dart b/pkg/analyzer/test/generated/simple_resolver_test.dart
index d1a5b58..6269fe3 100644
--- a/pkg/analyzer/test/generated/simple_resolver_test.dart
+++ b/pkg/analyzer/test/generated/simple_resolver_test.dart
@@ -431,7 +431,7 @@
''');
var library = result.libraryElement;
- var main = library.entryPoint;
+ var main = library.entryPoint!;
expect(main, isNotNull);
expect(main.library, isNot(same(library)));
@@ -443,7 +443,7 @@
''');
var library = result.libraryElement;
- var main = library.entryPoint;
+ var main = library.entryPoint!;
expect(main, isNotNull);
expect(main.library, same(library));
@@ -1112,7 +1112,7 @@
/// Verify that all of the identifiers in the [result] have been resolved.
void verifyTestResolved() {
var verifier = ResolutionVerifier();
- result.unit.accept(verifier);
+ result.unit!.accept(verifier);
verifier.assertResolved();
}
diff --git a/pkg/analyzer/test/generated/source_factory_test.dart b/pkg/analyzer/test/generated/source_factory_test.dart
index 3282f36..b6d31f4 100644
--- a/pkg/analyzer/test/generated/source_factory_test.dart
+++ b/pkg/analyzer/test/generated/source_factory_test.dart
@@ -27,7 +27,7 @@
AbsoluteUriResolver(this.resourceProvider);
@override
- Source resolveAbsolute(Uri uri, [Uri actualUri]) {
+ Source resolveAbsolute(Uri uri, [Uri? actualUri]) {
return FileSource(
resourceProvider.getFile(resourceProvider.pathContext.fromUri(uri)),
actualUri);
@@ -55,7 +55,7 @@
String targetPath = convertPath(targetRawPath);
String targetUri = toUri(targetRawPath).toString();
Source sourceSource = FileSource(getFile(sourcePath));
- Source result = factory.resolveUri(sourceSource, targetUri);
+ var result = factory.resolveUri(sourceSource, targetUri)!;
expect(result.fullName, targetPath);
}
@@ -63,7 +63,7 @@
SourceFactory factory =
SourceFactory([AbsoluteUriResolver(resourceProvider)]);
Source containingSource = FileSource(getFile('/does/not/have.dart'));
- Source result = factory.resolveUri(containingSource, 'exist.dart');
+ var result = factory.resolveUri(containingSource, 'exist.dart')!;
expect(result.fullName, convertPath('/does/not/exist.dart'));
}
@@ -90,7 +90,7 @@
Source librarySource =
firstFile.createSource(Uri.parse('package:package/dir/first.dart'));
- Source result = factory.resolveUri(librarySource, 'second.dart');
+ var result = factory.resolveUri(librarySource, 'second.dart')!;
expect(result, isNotNull);
expect(result.fullName, secondPath);
expect(result.uri.toString(), 'package:package/dir/second.dart');
@@ -105,7 +105,7 @@
SourceFactory factory =
SourceFactory([UriResolver_restoreUri(source1, expected1)]);
expect(factory.restoreUri(source1), same(expected1));
- expect(factory.restoreUri(source2), same(null));
+ expect(factory.restoreUri(source2), isNull);
}
}
@@ -115,7 +115,7 @@
UriResolver_absolute();
@override
- Source resolveAbsolute(Uri uri, [Uri actualUri]) {
+ Source? resolveAbsolute(Uri uri, [Uri? actualUri]) {
invoked = true;
return null;
}
@@ -127,10 +127,10 @@
UriResolver_restoreUri(this.source1, this.expected1);
@override
- Source resolveAbsolute(Uri uri, [Uri actualUri]) => null;
+ Source? resolveAbsolute(Uri uri, [Uri? actualUri]) => null;
@override
- Uri restoreAbsolute(Source source) {
+ Uri? restoreAbsolute(Source source) {
if (identical(source, source1)) {
return expected1;
}
@@ -144,7 +144,7 @@
UriResolver_SourceFactoryTest_test_fromEncoding_valid(this.encoding);
@override
- Source resolveAbsolute(Uri uri, [Uri actualUri]) {
+ Source? resolveAbsolute(Uri uri, [Uri? actualUri]) {
if (uri.toString() == encoding) {
return TestSource();
}
diff --git a/pkg/analyzer/test/generated/statement_parser_test.dart b/pkg/analyzer/test/generated/statement_parser_test.dart
index 189d673..e1a4243 100644
--- a/pkg/analyzer/test/generated/statement_parser_test.dart
+++ b/pkg/analyzer/test/generated/statement_parser_test.dart
@@ -23,21 +23,21 @@
@reflectiveTest
class StatementParserTest extends FastaParserTestCase {
void test_35177() {
- ExpressionStatement statement = parseStatement('(f)()<int>();');
+ var statement = parseStatement('(f)()<int>();') as ExpressionStatement;
- FunctionExpressionInvocation funct1 = statement.expression;
- NodeList<TypeAnnotation> typeArgs = funct1.typeArguments.arguments;
+ var funct1 = statement.expression as FunctionExpressionInvocation;
+ List<TypeAnnotation> typeArgs = funct1.typeArguments!.arguments;
expect(typeArgs, hasLength(1));
- TypeName typeName = typeArgs[0];
+ var typeName = typeArgs[0] as TypeName;
expect(typeName.name.name, 'int');
expect(funct1.argumentList.arguments, hasLength(0));
- FunctionExpressionInvocation funct2 = funct1.function;
+ var funct2 = funct1.function as FunctionExpressionInvocation;
expect(funct2.typeArguments, isNull);
expect(funct2.argumentList.arguments, hasLength(0));
- ParenthesizedExpression expression = funct2.function;
- SimpleIdentifier identifier = expression.expression;
+ var expression = funct2.function as ParenthesizedExpression;
+ var identifier = expression.expression as SimpleIdentifier;
expect(identifier.name, 'f');
}
@@ -51,7 +51,7 @@
analyzer.Token token = unit.beginToken;
while (!token.isEof) {
expect(token.type, isNot(TokenType.GT_GT));
- analyzer.Token next = token.next;
+ analyzer.Token next = token.next!;
expect(next.previous, token);
token = next;
}
@@ -165,10 +165,11 @@
}
void test_parseBreakStatement_label() {
- LabeledStatement labeledStatement =
- parseStatement('foo: while (true) { break foo; }');
- WhileStatement whileStatement = labeledStatement.statement;
- BreakStatement statement = (whileStatement.body as Block).statements[0];
+ var labeledStatement =
+ parseStatement('foo: while (true) { break foo; }') as LabeledStatement;
+ var whileStatement = labeledStatement.statement as WhileStatement;
+ var statement =
+ (whileStatement.body as Block).statements[0] as BreakStatement;
assertNoErrors();
expect(statement.breakKeyword, isNotNull);
expect(statement.label, isNotNull);
@@ -176,8 +177,10 @@
}
void test_parseBreakStatement_noLabel() {
- WhileStatement whileStatement = parseStatement('while (true) { break; }');
- BreakStatement statement = (whileStatement.body as Block).statements[0];
+ var whileStatement =
+ parseStatement('while (true) { break; }') as WhileStatement;
+ var statement =
+ (whileStatement.body as Block).statements[0] as BreakStatement;
assertNoErrors();
expect(statement.breakKeyword, isNotNull);
expect(statement.label, isNull);
@@ -185,10 +188,11 @@
}
void test_parseContinueStatement_label() {
- LabeledStatement labeledStatement =
- parseStatement('foo: while (true) { continue foo; }');
- WhileStatement whileStatement = labeledStatement.statement;
- ContinueStatement statement = (whileStatement.body as Block).statements[0];
+ var labeledStatement = parseStatement('foo: while (true) { continue foo; }')
+ as LabeledStatement;
+ var whileStatement = labeledStatement.statement as WhileStatement;
+ var statement =
+ (whileStatement.body as Block).statements[0] as ContinueStatement;
assertNoErrors();
expect(statement.continueKeyword, isNotNull);
expect(statement.label, isNotNull);
@@ -196,9 +200,10 @@
}
void test_parseContinueStatement_noLabel() {
- WhileStatement whileStatement =
- parseStatement('while (true) { continue; }');
- ContinueStatement statement = (whileStatement.body as Block).statements[0];
+ var whileStatement =
+ parseStatement('while (true) { continue; }') as WhileStatement;
+ var statement =
+ (whileStatement.body as Block).statements[0] as ContinueStatement;
assertNoErrors();
expect(statement.continueKeyword, isNotNull);
expect(statement.label, isNull);
@@ -249,16 +254,16 @@
}
void test_parseForStatement_each_await2() {
- ForStatement forStatement = parseStatement(
+ var forStatement = parseStatement(
'await for (element in list) {}',
inAsync: true,
featureSet: controlFlow,
- );
+ ) as ForStatement;
assertNoErrors();
expect(forStatement.awaitKeyword, isNotNull);
expect(forStatement.forKeyword, isNotNull);
expect(forStatement.leftParenthesis, isNotNull);
- ForEachPartsWithIdentifier forLoopParts = forStatement.forLoopParts;
+ var forLoopParts = forStatement.forLoopParts as ForEachPartsWithIdentifier;
expect(forLoopParts.identifier, isNotNull);
expect(forLoopParts.inKeyword, isNotNull);
expect(forLoopParts.iterable, isNotNull);
@@ -267,15 +272,15 @@
}
void test_parseForStatement_each_finalExternal() {
- ForStatement forStatement = parseStatement(
+ var forStatement = parseStatement(
'for (final external in list) {}',
featureSet: controlFlow,
- );
+ ) as ForStatement;
assertNoErrors();
expect(forStatement.awaitKeyword, isNull);
expect(forStatement.forKeyword, isNotNull);
expect(forStatement.leftParenthesis, isNotNull);
- ForEachPartsWithDeclaration forLoopParts = forStatement.forLoopParts;
+ var forLoopParts = forStatement.forLoopParts as ForEachPartsWithDeclaration;
expect(forLoopParts.loopVariable.identifier.name, 'external');
expect(forLoopParts.inKeyword, isNotNull);
expect(forLoopParts.iterable, isNotNull);
@@ -284,15 +289,15 @@
}
void test_parseForStatement_each_finalRequired() {
- ForStatement forStatement = parseStatement(
+ var forStatement = parseStatement(
'for (final required in list) {}',
featureSet: controlFlow,
- );
+ ) as ForStatement;
assertNoErrors();
expect(forStatement.awaitKeyword, isNull);
expect(forStatement.forKeyword, isNotNull);
expect(forStatement.leftParenthesis, isNotNull);
- ForEachPartsWithDeclaration forLoopParts = forStatement.forLoopParts;
+ var forLoopParts = forStatement.forLoopParts as ForEachPartsWithDeclaration;
expect(forLoopParts.loopVariable.identifier.name, 'required');
expect(forLoopParts.inKeyword, isNotNull);
expect(forLoopParts.iterable, isNotNull);
@@ -319,15 +324,15 @@
}
void test_parseForStatement_each_genericFunctionType2() {
- ForStatement forStatement = parseStatement(
+ var forStatement = parseStatement(
'for (void Function<T>(T) element in list) {}',
featureSet: controlFlow,
- );
+ ) as ForStatement;
assertNoErrors();
expect(forStatement.awaitKeyword, isNull);
expect(forStatement.forKeyword, isNotNull);
expect(forStatement.leftParenthesis, isNotNull);
- ForEachPartsWithDeclaration forLoopParts = forStatement.forLoopParts;
+ var forLoopParts = forStatement.forLoopParts as ForEachPartsWithDeclaration;
expect(forLoopParts.loopVariable, isNotNull);
expect(forLoopParts.inKeyword, isNotNull);
expect(forLoopParts.iterable, isNotNull);
@@ -353,15 +358,15 @@
}
void test_parseForStatement_each_identifier2() {
- ForStatement forStatement = parseStatement(
+ var forStatement = parseStatement(
'for (element in list) {}',
featureSet: controlFlow,
- );
+ ) as ForStatement;
assertNoErrors();
expect(forStatement.awaitKeyword, isNull);
expect(forStatement.forKeyword, isNotNull);
expect(forStatement.leftParenthesis, isNotNull);
- ForEachPartsWithIdentifier forLoopParts = forStatement.forLoopParts;
+ var forLoopParts = forStatement.forLoopParts as ForEachPartsWithIdentifier;
expect(forLoopParts.identifier, isNotNull);
expect(forLoopParts.inKeyword, isNotNull);
expect(forLoopParts.iterable, isNotNull);
@@ -388,15 +393,15 @@
}
void test_parseForStatement_each_noType_metadata2() {
- ForStatement forStatement = parseStatement(
+ var forStatement = parseStatement(
'for (@A var element in list) {}',
featureSet: controlFlow,
- );
+ ) as ForStatement;
assertNoErrors();
expect(forStatement.awaitKeyword, isNull);
expect(forStatement.forKeyword, isNotNull);
expect(forStatement.leftParenthesis, isNotNull);
- ForEachPartsWithDeclaration forLoopParts = forStatement.forLoopParts;
+ var forLoopParts = forStatement.forLoopParts as ForEachPartsWithDeclaration;
expect(forLoopParts.loopVariable, isNotNull);
expect(forLoopParts.loopVariable.metadata, hasLength(1));
expect(forLoopParts.inKeyword, isNotNull);
@@ -423,15 +428,15 @@
}
void test_parseForStatement_each_type2() {
- ForStatement forStatement = parseStatement(
+ var forStatement = parseStatement(
'for (A element in list) {}',
featureSet: controlFlow,
- );
+ ) as ForStatement;
assertNoErrors();
expect(forStatement.awaitKeyword, isNull);
expect(forStatement.forKeyword, isNotNull);
expect(forStatement.leftParenthesis, isNotNull);
- ForEachPartsWithDeclaration forLoopParts = forStatement.forLoopParts;
+ var forLoopParts = forStatement.forLoopParts as ForEachPartsWithDeclaration;
expect(forLoopParts.loopVariable, isNotNull);
expect(forLoopParts.inKeyword, isNotNull);
expect(forLoopParts.iterable, isNotNull);
@@ -457,15 +462,15 @@
}
void test_parseForStatement_each_var2() {
- ForStatement forStatement = parseStatement(
+ var forStatement = parseStatement(
'for (var element in list) {}',
featureSet: controlFlow,
- );
+ ) as ForStatement;
assertNoErrors();
expect(forStatement.awaitKeyword, isNull);
expect(forStatement.forKeyword, isNotNull);
expect(forStatement.leftParenthesis, isNotNull);
- ForEachPartsWithDeclaration forLoopParts = forStatement.forLoopParts;
+ var forLoopParts = forStatement.forLoopParts as ForEachPartsWithDeclaration;
expect(forLoopParts.loopVariable, isNotNull);
expect(forLoopParts.inKeyword, isNotNull);
expect(forLoopParts.iterable, isNotNull);
@@ -491,14 +496,14 @@
}
void test_parseForStatement_loop_c2() {
- ForStatement forStatement = parseStatement(
+ var forStatement = parseStatement(
'for (; i < count;) {}',
featureSet: controlFlow,
- );
+ ) as ForStatement;
assertNoErrors();
expect(forStatement.forKeyword, isNotNull);
expect(forStatement.leftParenthesis, isNotNull);
- ForPartsWithExpression forLoopParts = forStatement.forLoopParts;
+ var forLoopParts = forStatement.forLoopParts as ForPartsWithExpression;
expect(forLoopParts.initialization, isNull);
expect(forLoopParts.leftSeparator, isNotNull);
expect(forLoopParts.condition, isNotNull);
@@ -527,14 +532,14 @@
}
void test_parseForStatement_loop_cu2() {
- ForStatement forStatement = parseStatement(
+ var forStatement = parseStatement(
'for (; i < count; i++) {}',
featureSet: controlFlow,
- );
+ ) as ForStatement;
assertNoErrors();
expect(forStatement.forKeyword, isNotNull);
expect(forStatement.leftParenthesis, isNotNull);
- ForPartsWithExpression forLoopParts = forStatement.forLoopParts;
+ var forLoopParts = forStatement.forLoopParts as ForPartsWithExpression;
expect(forLoopParts.initialization, isNull);
expect(forLoopParts.leftSeparator, isNotNull);
expect(forLoopParts.condition, isNotNull);
@@ -563,14 +568,14 @@
}
void test_parseForStatement_loop_ecu2() {
- ForStatement forStatement = parseStatement(
+ var forStatement = parseStatement(
'for (i--; i < count; i++) {}',
featureSet: spread,
- );
+ ) as ForStatement;
assertNoErrors();
expect(forStatement.forKeyword, isNotNull);
expect(forStatement.leftParenthesis, isNotNull);
- ForPartsWithExpression forLoopParts = forStatement.forLoopParts;
+ var forLoopParts = forStatement.forLoopParts as ForPartsWithExpression;
expect(forLoopParts.initialization, isNotNull);
expect(forLoopParts.leftSeparator, isNotNull);
expect(forLoopParts.condition, isNotNull);
@@ -601,14 +606,14 @@
}
void test_parseForStatement_loop_i2() {
- ForStatement forStatement = parseStatement(
+ var forStatement = parseStatement(
'for (var i = 0;;) {}',
featureSet: spread,
- );
+ ) as ForStatement;
assertNoErrors();
expect(forStatement.forKeyword, isNotNull);
expect(forStatement.leftParenthesis, isNotNull);
- ForPartsWithDeclarations forLoopParts = forStatement.forLoopParts;
+ var forLoopParts = forStatement.forLoopParts as ForPartsWithDeclarations;
VariableDeclarationList variables = forLoopParts.variables;
expect(variables, isNotNull);
expect(variables.metadata, hasLength(0));
@@ -643,14 +648,14 @@
}
void test_parseForStatement_loop_i_withMetadata2() {
- ForStatement forStatement = parseStatement(
+ var forStatement = parseStatement(
'for (@A var i = 0;;) {}',
featureSet: spread,
- );
+ ) as ForStatement;
assertNoErrors();
expect(forStatement.forKeyword, isNotNull);
expect(forStatement.leftParenthesis, isNotNull);
- ForPartsWithDeclarations forLoopParts = forStatement.forLoopParts;
+ var forLoopParts = forStatement.forLoopParts as ForPartsWithDeclarations;
VariableDeclarationList variables = forLoopParts.variables;
expect(variables, isNotNull);
expect(variables.metadata, hasLength(1));
@@ -684,14 +689,14 @@
}
void test_parseForStatement_loop_ic2() {
- ForStatement forStatement = parseStatement(
+ var forStatement = parseStatement(
'for (var i = 0; i < count;) {}',
featureSet: spread,
- );
+ ) as ForStatement;
assertNoErrors();
expect(forStatement.forKeyword, isNotNull);
expect(forStatement.leftParenthesis, isNotNull);
- ForPartsWithDeclarations forLoopParts = forStatement.forLoopParts;
+ var forLoopParts = forStatement.forLoopParts as ForPartsWithDeclarations;
VariableDeclarationList variables = forLoopParts.variables;
expect(variables, isNotNull);
expect(variables.variables, hasLength(1));
@@ -724,14 +729,14 @@
}
void test_parseForStatement_loop_icu2() {
- ForStatement forStatement = parseStatement(
+ var forStatement = parseStatement(
'for (var i = 0; i < count; i++) {}',
featureSet: spread,
- );
+ ) as ForStatement;
assertNoErrors();
expect(forStatement.forKeyword, isNotNull);
expect(forStatement.leftParenthesis, isNotNull);
- ForPartsWithDeclarations forLoopParts = forStatement.forLoopParts;
+ var forLoopParts = forStatement.forLoopParts as ForPartsWithDeclarations;
VariableDeclarationList variables = forLoopParts.variables;
expect(variables, isNotNull);
expect(variables.variables, hasLength(1));
@@ -765,14 +770,14 @@
}
void test_parseForStatement_loop_iicuu2() {
- ForStatement forStatement = parseStatement(
+ var forStatement = parseStatement(
'for (int i = 0, j = count; i < j; i++, j--) {}',
featureSet: spread,
- );
+ ) as ForStatement;
assertNoErrors();
expect(forStatement.forKeyword, isNotNull);
expect(forStatement.leftParenthesis, isNotNull);
- ForPartsWithDeclarations forLoopParts = forStatement.forLoopParts;
+ var forLoopParts = forStatement.forLoopParts as ForPartsWithDeclarations;
VariableDeclarationList variables = forLoopParts.variables;
expect(variables, isNotNull);
expect(variables.variables, hasLength(2));
@@ -805,14 +810,14 @@
}
void test_parseForStatement_loop_iu2() {
- ForStatement forStatement = parseStatement(
+ var forStatement = parseStatement(
'for (var i = 0;; i++) {}',
featureSet: spread,
- );
+ ) as ForStatement;
assertNoErrors();
expect(forStatement.forKeyword, isNotNull);
expect(forStatement.leftParenthesis, isNotNull);
- ForPartsWithDeclarations forLoopParts = forStatement.forLoopParts;
+ var forLoopParts = forStatement.forLoopParts as ForPartsWithDeclarations;
VariableDeclarationList variables = forLoopParts.variables;
expect(variables, isNotNull);
expect(variables.variables, hasLength(1));
@@ -842,14 +847,14 @@
}
void test_parseForStatement_loop_u2() {
- ForStatement forStatement = parseStatement(
+ var forStatement = parseStatement(
'for (;; i++) {}',
featureSet: spread,
- );
+ ) as ForStatement;
assertNoErrors();
expect(forStatement.forKeyword, isNotNull);
expect(forStatement.leftParenthesis, isNotNull);
- ForPartsWithExpression forLoopParts = forStatement.forLoopParts;
+ var forLoopParts = forStatement.forLoopParts as ForPartsWithExpression;
expect(forLoopParts.initialization, isNull);
expect(forLoopParts.leftSeparator, isNotNull);
expect(forLoopParts.condition, isNull);
@@ -1011,7 +1016,7 @@
var statement = parseStatement('f() {}') as FunctionDeclarationStatement;
assertNoErrors();
var function = statement.functionDeclaration.functionExpression;
- expect(function.parameters.parameters, isEmpty);
+ expect(function.parameters!.parameters, isEmpty);
expect(function.body, isNotNull);
}
@@ -1020,7 +1025,7 @@
parseStatement('f(void g()) {}') as FunctionDeclarationStatement;
assertNoErrors();
var function = statement.functionDeclaration.functionExpression;
- expect(function.parameters.parameters, hasLength(1));
+ expect(function.parameters!.parameters, hasLength(1));
expect(function.body, isNotNull);
}
@@ -1174,54 +1179,54 @@
}
void test_parseNonLabeledStatement_variableDeclaration_typeParam() {
- VariableDeclarationStatement statement = parseStatement('C<T> v;');
+ var statement = parseStatement('C<T> v;') as VariableDeclarationStatement;
assertNoErrors();
VariableDeclarationList variableList = statement.variables;
List<VariableDeclaration> variables = variableList.variables;
expect(variables, hasLength(1));
expect(variables[0].name.name, 'v');
- TypeName typeName = variableList.type;
+ var typeName = variableList.type as TypeName;
expect(typeName.name.name, 'C');
- expect(typeName.typeArguments.arguments, hasLength(1));
- TypeName typeArgument = typeName.typeArguments.arguments[0];
+ expect(typeName.typeArguments!.arguments, hasLength(1));
+ var typeArgument = typeName.typeArguments!.arguments[0] as TypeName;
expect(typeArgument.name.name, 'T');
}
void test_parseNonLabeledStatement_variableDeclaration_typeParam2() {
- VariableDeclarationStatement statement =
- parseStatement('C<T /* ignored comment */ > v;');
+ var statement = parseStatement('C<T /* ignored comment */ > v;')
+ as VariableDeclarationStatement;
assertNoErrors();
VariableDeclarationList variableList = statement.variables;
List<VariableDeclaration> variables = variableList.variables;
expect(variables, hasLength(1));
expect(variables[0].name.name, 'v');
- TypeName typeName = variableList.type;
+ var typeName = variableList.type as TypeName;
expect(typeName.name.name, 'C');
- expect(typeName.typeArguments.arguments, hasLength(1));
- TypeName typeArgument = typeName.typeArguments.arguments[0];
+ expect(typeName.typeArguments!.arguments, hasLength(1));
+ var typeArgument = typeName.typeArguments!.arguments[0] as TypeName;
expect(typeArgument.name.name, 'T');
}
void test_parseNonLabeledStatement_variableDeclaration_typeParam3() {
- VariableDeclarationStatement statement =
- parseStatement('C<T Function(String s)> v;');
+ var statement = parseStatement('C<T Function(String s)> v;')
+ as VariableDeclarationStatement;
assertNoErrors();
VariableDeclarationList variableList = statement.variables;
List<VariableDeclaration> variables = variableList.variables;
expect(variables, hasLength(1));
expect(variables[0].name.name, 'v');
- TypeName typeName = variableList.type;
+ var typeName = variableList.type as TypeName;
expect(typeName.name.name, 'C');
- expect(typeName.typeArguments.arguments, hasLength(1));
- expect(typeName.typeArguments.arguments[0], isGenericFunctionType);
+ expect(typeName.typeArguments!.arguments, hasLength(1));
+ expect(typeName.typeArguments!.arguments[0], isGenericFunctionType);
}
void test_parseStatement_emptyTypeArgumentList() {
var declaration = parseStatement('C<> c;') as VariableDeclarationStatement;
assertErrorsWithCodes([ParserErrorCode.EXPECTED_TYPE_NAME]);
VariableDeclarationList variables = declaration.variables;
- TypeName type = variables.type;
- TypeArgumentList argumentList = type.typeArguments;
+ var type = variables.type as TypeName;
+ var argumentList = type.typeArguments!;
expect(argumentList.leftBracket, isNotNull);
expect(argumentList.arguments, hasLength(1));
expect(argumentList.arguments[0].isSynthetic, isTrue);
@@ -1330,8 +1335,9 @@
}
void test_parseSwitchStatement_labeledCase2() {
- SwitchStatement statement =
- parseStatement('switch (a) {l1: case 0: l2: case 1: return;}');
+ var statement =
+ parseStatement('switch (a) {l1: case 0: l2: case 1: return;}')
+ as SwitchStatement;
assertNoErrors();
expect(statement.switchKeyword, isNotNull);
expect(statement.leftParenthesis, isNotNull);
@@ -1373,8 +1379,9 @@
}
void test_parseSwitchStatement_labeledDefault2() {
- SwitchStatement statement =
- parseStatement('switch (a) {l1: case 0: l2: default: return;}');
+ var statement =
+ parseStatement('switch (a) {l1: case 0: l2: default: return;}')
+ as SwitchStatement;
assertNoErrors();
expect(statement.switchKeyword, isNotNull);
expect(statement.leftParenthesis, isNotNull);
@@ -1432,9 +1439,9 @@
CompilationUnit unit = parseCompilationUnit(
'main() { try {} catch (int e) { } }',
errors: [expectedError(ParserErrorCode.CATCH_SYNTAX, 27, 1)]);
- FunctionDeclaration method = unit.declarations[0];
- BlockFunctionBody body = method.functionExpression.body;
- TryStatement statement = body.block.statements[0];
+ var method = unit.declarations[0] as FunctionDeclaration;
+ var body = method.functionExpression.body as BlockFunctionBody;
+ var statement = body.block.statements[0] as TryStatement;
expect(statement.tryKeyword, isNotNull);
expect(statement.body, isNotNull);
NodeList<CatchClause> catchClauses = statement.catchClauses;
@@ -1443,9 +1450,9 @@
expect(clause.onKeyword, isNull);
expect(clause.exceptionType, isNull);
expect(clause.catchKeyword, isNotNull);
- expect(clause.exceptionParameter.name, 'int');
+ expect(clause.exceptionParameter!.name, 'int');
expect(clause.comma, isNotNull);
- expect(clause.stackTraceParameter.name, 'e');
+ expect(clause.stackTraceParameter!.name, 'e');
expect(clause.body, isNotNull);
expect(statement.finallyKeyword, isNull);
expect(statement.finallyBlock, isNull);
@@ -1610,7 +1617,8 @@
}
void test_parseVariableDeclaration_equals_builtIn() {
- VariableDeclarationStatement statement = parseStatement('int set = 0;');
+ var statement =
+ parseStatement('int set = 0;') as VariableDeclarationStatement;
assertNoErrors();
expect(statement.semicolon, isNotNull);
VariableDeclarationList variableList = statement.variables;
@@ -1621,7 +1629,7 @@
void test_parseVariableDeclarationListAfterMetadata_const_noType() {
var declarationList = parseVariableDeclarationList('const a = 0');
assertNoErrors();
- expect(declarationList.keyword.lexeme, 'const');
+ expect(declarationList.keyword!.lexeme, 'const');
expect(declarationList.type, isNull);
expect(declarationList.variables, hasLength(1));
}
@@ -1629,7 +1637,7 @@
void test_parseVariableDeclarationListAfterMetadata_const_type() {
var declarationList = parseVariableDeclarationList('const A a');
assertNoErrors();
- expect(declarationList.keyword.lexeme, 'const');
+ expect(declarationList.keyword!.lexeme, 'const');
expect(declarationList.type, isNotNull);
expect(declarationList.variables, hasLength(1));
}
@@ -1645,7 +1653,7 @@
void test_parseVariableDeclarationListAfterMetadata_final_type() {
var declarationList = parseVariableDeclarationList('final A a');
assertNoErrors();
- expect(declarationList.keyword.lexeme, 'final');
+ expect(declarationList.keyword!.lexeme, 'final');
expect(declarationList.type, isNotNull);
expect(declarationList.variables, hasLength(1));
}
@@ -1669,7 +1677,7 @@
void test_parseVariableDeclarationListAfterMetadata_var_multiple() {
var declarationList = parseVariableDeclarationList('var a, b, c');
assertNoErrors();
- expect(declarationList.keyword.lexeme, 'var');
+ expect(declarationList.keyword!.lexeme, 'var');
expect(declarationList.type, isNull);
expect(declarationList.variables, hasLength(3));
}
@@ -1677,7 +1685,7 @@
void test_parseVariableDeclarationListAfterMetadata_var_single() {
var declarationList = parseVariableDeclarationList('var a');
assertNoErrors();
- expect(declarationList.keyword.lexeme, 'var');
+ expect(declarationList.keyword!.lexeme, 'var');
expect(declarationList.type, isNull);
expect(declarationList.variables, hasLength(1));
}
@@ -1743,7 +1751,7 @@
analyzer.Token token = unit.beginToken;
while (!token.isEof) {
expect(token.type, isNot(TokenType.GT_GT));
- analyzer.Token next = token.next;
+ analyzer.Token next = token.next!;
expect(next.previous, token);
token = next;
}
@@ -1760,7 +1768,7 @@
analyzer.Token token = unit.beginToken;
while (!token.isEof) {
expect(token.type, isNot(TokenType.GT_GT));
- analyzer.Token next = token.next;
+ analyzer.Token next = token.next!;
expect(next.previous, token);
token = next;
}
diff --git a/pkg/analyzer/test/generated/static_type_analyzer_test.dart b/pkg/analyzer/test/generated/static_type_analyzer_test.dart
index 819c49a..68d56a2 100644
--- a/pkg/analyzer/test/generated/static_type_analyzer_test.dart
+++ b/pkg/analyzer/test/generated/static_type_analyzer_test.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/analysis/features.dart';
+import 'package:analyzer/dart/analysis/session.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/type.dart';
@@ -43,19 +44,19 @@
@reflectiveTest
class StaticTypeAnalyzerTest with ResourceProviderMixin, ElementsTypesMixin {
/// The error listener to which errors will be reported.
- GatheringErrorListener _listener;
+ late final GatheringErrorListener _listener;
/// The resolver visitor used to create the analyzer.
- ResolverVisitor _visitor;
+ late final ResolverVisitor _visitor;
/// The library containing the code being resolved.
- LibraryElementImpl _definingLibrary;
+ late final LibraryElementImpl _definingLibrary;
/// The analyzer being used to analyze the test cases.
- StaticTypeAnalyzer _analyzer;
+ late final StaticTypeAnalyzer _analyzer;
/// The type provider used to access the types.
- TypeProvider _typeProvider;
+ late final TypeProvider _typeProvider;
@override
TypeProvider get typeProvider => _definingLibrary.typeProvider;
@@ -83,6 +84,7 @@
_createAnalyzer();
}
+ @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/44522')
void test_flatten_derived() {
// class Derived<T> extends Future<T> { ... }
ClassElementImpl derivedClass =
@@ -111,6 +113,7 @@
derivedIntType);
}
+ @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/44522')
void test_flatten_inhibit_recursion() {
// class A extends B
// class B extends A
@@ -125,6 +128,7 @@
expect(_flatten(interfaceTypeStar(classB)), interfaceTypeStar(classB));
}
+ @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/44522')
void test_flatten_related_derived_types() {
InterfaceType intType = _typeProvider.intType;
InterfaceType numType = _typeProvider.numType;
@@ -152,6 +156,7 @@
expect(_flatten(interfaceTypeStar(classB)), intType);
}
+ @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/44522')
void test_flatten_related_types() {
InterfaceType intType = _typeProvider.intType;
InterfaceType numType = _typeProvider.numType;
@@ -191,6 +196,7 @@
expect(_flatten(futureFutureIntType), futureIntType);
}
+ @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/44522')
void test_flatten_unrelated_types() {
InterfaceType intType = _typeProvider.intType;
InterfaceType stringType = _typeProvider.stringType;
@@ -351,6 +357,7 @@
void test_visitIntegerLiteral() {
// 42
Expression node = _resolvedInteger(42);
+ AstTestFactory.argumentList([node]);
expect(_analyze(node), same(_typeProvider.intType));
_listener.assertNoErrors();
}
@@ -445,13 +452,6 @@
_listener.assertNoErrors();
}
- void test_visitThrowExpression_withoutValue() {
- // throw
- Expression node = AstTestFactory.throwExpression();
- expect(_analyze(node), same(_typeProvider.bottomType));
- _listener.assertNoErrors();
- }
-
void test_visitThrowExpression_withValue() {
// throw 0
Expression node = AstTestFactory.throwExpression2(_resolvedInteger(0));
@@ -462,10 +462,12 @@
/// Return the type associated with the given [node] after the static type
/// analyzer has computed a type for it. If [thisType] is provided, it is the
/// type of 'this'.
- DartType _analyze(Expression node, [InterfaceType thisType]) {
- _visitor.setThisInterfaceType(thisType);
+ DartType _analyze(Expression node, [InterfaceType? thisType]) {
+ if (thisType != null) {
+ _visitor.setThisInterfaceType(thisType);
+ }
node.accept(_analyzer);
- return node.staticType;
+ return node.staticType!;
}
void _assertType(
@@ -503,8 +505,8 @@
definingCompilationUnit.source = source;
var featureSet = FeatureSet.forTesting();
- _definingLibrary =
- LibraryElementImpl(context, null, null, -1, 0, featureSet);
+ _definingLibrary = LibraryElementImpl(
+ context, _AnalysisSessionMock(), 'name', -1, 0, featureSet);
_definingLibrary.definingCompilationUnit = definingCompilationUnit;
_definingLibrary.typeProvider = context.typeProviderLegacy;
@@ -566,3 +568,8 @@
return identifier;
}
}
+
+class _AnalysisSessionMock implements AnalysisSession {
+ @override
+ noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
+}
diff --git a/pkg/analyzer/test/generated/strong_mode_test.dart b/pkg/analyzer/test/generated/strong_mode_test.dart
index eb9c936..2364704 100644
--- a/pkg/analyzer/test/generated/strong_mode_test.dart
+++ b/pkg/analyzer/test/generated/strong_mode_test.dart
@@ -27,52 +27,55 @@
/// Strong mode static analyzer local type inference tests
@reflectiveTest
class StrongModeLocalInferenceTest extends PubPackageResolutionTest {
- TypeAssertions _assertions;
+ TypeAssertions? _assertions;
- Asserter<DartType> _isDynamic;
- Asserter<InterfaceType> _isFutureOfDynamic;
- Asserter<InterfaceType> _isFutureOfInt;
- Asserter<InterfaceType> _isFutureOfNull;
- Asserter<InterfaceType> _isFutureOrOfInt;
- Asserter<DartType> _isInt;
- Asserter<DartType> _isNull;
- Asserter<DartType> _isNum;
- Asserter<DartType> _isObject;
- Asserter<DartType> _isString;
+ late final Asserter<DartType> _isDynamic;
+ late final Asserter<InterfaceType> _isFutureOfDynamic;
+ late final Asserter<InterfaceType> _isFutureOfInt;
+ late final Asserter<InterfaceType> _isFutureOfNull;
+ late final Asserter<InterfaceType> _isFutureOrOfInt;
+ late final Asserter<DartType> _isInt;
+ late final Asserter<DartType> _isNull;
+ late final Asserter<DartType> _isNum;
+ late final Asserter<DartType> _isObject;
+ late final Asserter<DartType> _isString;
- AsserterBuilder2<Asserter<DartType>, Asserter<DartType>, DartType>
+ late final AsserterBuilder2<Asserter<DartType>, Asserter<DartType>, DartType>
_isFunction2Of;
- AsserterBuilder<List<Asserter<DartType>>, InterfaceType> _isFutureOf;
- AsserterBuilder<List<Asserter<DartType>>, InterfaceType> _isFutureOrOf;
- AsserterBuilderBuilder<Asserter<DartType>, List<Asserter<DartType>>, DartType>
- _isInstantiationOf;
- AsserterBuilder<Asserter<DartType>, InterfaceType> _isListOf;
- AsserterBuilder2<Asserter<DartType>, Asserter<DartType>, InterfaceType>
- _isMapOf;
- AsserterBuilder<DartType, DartType> _isType;
+ late final AsserterBuilder<List<Asserter<DartType>>, InterfaceType>
+ _isFutureOf;
+ late final AsserterBuilder<List<Asserter<DartType>>, InterfaceType>
+ _isFutureOrOf;
+ late final AsserterBuilderBuilder<Asserter<DartType>,
+ List<Asserter<DartType>>, DartType> _isInstantiationOf;
+ late final AsserterBuilder<Asserter<DartType>, InterfaceType> _isListOf;
+ late final AsserterBuilder2<Asserter<DartType>, Asserter<DartType>,
+ InterfaceType> _isMapOf;
+ late final AsserterBuilder<DartType, DartType> _isType;
- AsserterBuilder<Element, DartType> _hasElement;
+ late final AsserterBuilder<Element, DartType> _hasElement;
- CompilationUnit get unit => result.unit;
+ CompilationUnit get unit => result.unit!;
@override
Future<void> resolveTestFile() async {
var result = await super.resolveTestFile();
- if (_assertions == null) {
- _assertions = TypeAssertions(typeProvider);
- _isType = _assertions.isType;
- _hasElement = _assertions.hasElement;
- _isInstantiationOf = _assertions.isInstantiationOf;
- _isInt = _assertions.isInt;
- _isNull = _assertions.isNull;
- _isNum = _assertions.isNum;
- _isObject = _assertions.isObject;
- _isString = _assertions.isString;
- _isDynamic = _assertions.isDynamic;
- _isListOf = _assertions.isListOf;
- _isMapOf = _assertions.isMapOf;
- _isFunction2Of = _assertions.isFunction2Of;
+ var assertions = _assertions;
+ if (assertions == null) {
+ assertions = _assertions = TypeAssertions(typeProvider);
+ _isType = assertions.isType;
+ _hasElement = assertions.hasElement;
+ _isInstantiationOf = assertions.isInstantiationOf;
+ _isInt = assertions.isInt;
+ _isNull = assertions.isNull;
+ _isNum = assertions.isNum;
+ _isObject = assertions.isObject;
+ _isString = assertions.isString;
+ _isDynamic = assertions.isDynamic;
+ _isListOf = assertions.isListOf;
+ _isMapOf = assertions.isMapOf;
+ _isFunction2Of = assertions.isFunction2Of;
_isFutureOf = _isInstantiationOf(_hasElement(typeProvider.futureElement));
_isFutureOrOf =
_isInstantiationOf(_hasElement(typeProvider.futureOrElement));
@@ -116,11 +119,11 @@
} else {
var stmt =
(body as BlockFunctionBody).block.statements[0] as ReturnStatement;
- returnExp = stmt.expression;
+ returnExp = stmt.expression!;
}
- DartType type = returnExp.staticType;
+ DartType type = returnExp.staticType!;
if (returnExp is AwaitExpression) {
- type = returnExp.expression.staticType;
+ type = returnExp.expression.staticType!;
}
typeTest(type as InterfaceType);
}
@@ -164,18 +167,18 @@
void check(String name, Asserter<InterfaceType> typeTest) {
FunctionDeclaration test = AstFinder.getTopLevelFunction(unit, name);
- FunctionBody body = test.functionExpression.body;
+ var body = test.functionExpression.body as FunctionBody;
Expression returnExp;
if (body is ExpressionFunctionBody) {
returnExp = body.expression;
} else {
var stmt =
(body as BlockFunctionBody).block.statements[0] as ReturnStatement;
- returnExp = stmt.expression;
+ returnExp = stmt.expression!;
}
- DartType type = returnExp.staticType;
+ DartType type = returnExp.staticType!;
if (returnExp is AwaitExpression) {
- type = returnExp.expression.staticType;
+ type = returnExp.expression.staticType!;
}
typeTest(type as InterfaceType);
}
@@ -217,13 +220,13 @@
return exp;
}
- Element elementA = AstFinder.getClass(unit, "A").declaredElement;
+ Element elementA = AstFinder.getClass(unit, "A").declaredElement!;
CascadeExpression cascade = fetch(0);
- _isInstantiationOf(_hasElement(elementA))([_isInt])(cascade.staticType);
+ _isInstantiationOf(_hasElement(elementA))([_isInt])(cascade.staticType!);
var invoke = cascade.cascadeSections[0] as MethodInvocation;
var function = invoke.argumentList.arguments[1] as FunctionExpression;
- ExecutableElement f0 = function.declaredElement;
+ ExecutableElement f0 = function.declaredElement!;
_isListOf(_isInt)(f0.type.returnType as InterfaceType);
expect(f0.type.normalParameterTypes[0], typeProvider.intType);
}
@@ -244,8 +247,8 @@
AstFinder.getStatementsInTopLevelFunction(unit, "test");
var stmt = statements[0] as VariableDeclarationStatement;
VariableDeclaration decl = stmt.variables.variables[0];
- Expression call = decl.initializer;
- _isInt(call.staticType);
+ Expression call = decl.initializer!;
+ _isInt(call.staticType!);
}
test_constrainedByBounds2() async {
@@ -264,8 +267,8 @@
AstFinder.getStatementsInTopLevelFunction(unit, "test");
var stmt = statements[0] as VariableDeclarationStatement;
VariableDeclaration decl = stmt.variables.variables[0];
- Expression call = decl.initializer;
- _isInt(call.staticType);
+ Expression call = decl.initializer!;
+ _isInt(call.staticType!);
}
test_constrainedByBounds3() async {
@@ -281,8 +284,8 @@
AstFinder.getStatementsInTopLevelFunction(unit, "test");
var stmt = statements[0] as VariableDeclarationStatement;
VariableDeclaration decl = stmt.variables.variables[0];
- Expression call = decl.initializer;
- _isInt(call.staticType);
+ Expression call = decl.initializer!;
+ _isInt(call.staticType!);
}
test_constrainedByBounds4() async {
@@ -303,8 +306,8 @@
AstFinder.getStatementsInTopLevelFunction(unit, "test");
var stmt = statements[0] as VariableDeclarationStatement;
VariableDeclaration decl = stmt.variables.variables[0];
- Expression call = decl.initializer;
- _isInt(call.staticType);
+ Expression call = decl.initializer!;
+ _isInt(call.staticType!);
}
test_constrainedByBounds5() async {
@@ -327,8 +330,8 @@
AstFinder.getStatementsInTopLevelFunction(unit, "test");
var stmt = statements[0] as VariableDeclarationStatement;
VariableDeclaration decl = stmt.variables.variables[0];
- Expression call = decl.initializer;
- _isDynamic(call.staticType);
+ Expression call = decl.initializer!;
+ _isDynamic(call.staticType!);
}
test_constructorInitializer_propagation() async {
@@ -363,13 +366,13 @@
var body = constructor.body as BlockFunctionBody;
var stmt = body.block.statements[0] as ReturnStatement;
var exp = stmt.expression as InstanceCreationExpression;
- ClassElement elementB = AstFinder.getClass(unit, "B").declaredElement;
- ClassElement elementA = AstFinder.getClass(unit, "A").declaredElement;
- expect(exp.constructorName.type.type.element, elementB);
+ ClassElement elementB = AstFinder.getClass(unit, "B").declaredElement!;
+ ClassElement elementA = AstFinder.getClass(unit, "A").declaredElement!;
+ expect(exp.constructorName.type.type!.element, elementB);
_isInstantiationOf(_hasElement(elementB))([
_isType(elementA.typeParameters[0]
.instantiate(nullabilitySuffix: NullabilitySuffix.star))
- ])(exp.staticType);
+ ])(exp.staticType!);
}
test_fieldDeclaration_propagation() async {
@@ -382,7 +385,7 @@
VariableDeclaration field = AstFinder.getFieldInClass(unit, "A", "f0");
- _isListOf(_isString)(field.initializer.staticType as InterfaceType);
+ _isListOf(_isString)(field.initializer!.staticType as InterfaceType);
}
test_functionDeclaration_body_propagation() async {
@@ -415,14 +418,14 @@
(statements[0] as FunctionDeclarationStatement).functionDeclaration;
var body0 = inner.functionExpression.body as BlockFunctionBody;
var return0 = body0.block.statements[0] as ReturnStatement;
- Expression anon0 = return0.expression;
+ Expression anon0 = return0.expression!;
var type0 = anon0.staticType as FunctionType;
expect(type0.returnType, typeProvider.intType);
expect(type0.normalParameterTypes[0], typeProvider.stringType);
var anon1 =
(statements[1] as ReturnStatement).expression as FunctionExpression;
- FunctionType type1 = anon1.declaredElement.type;
+ FunctionType type1 = anon1.declaredElement!.type;
expect(type1.returnType, typeProvider.intType);
expect(type1.normalParameterTypes[0], typeProvider.intType);
}
@@ -456,7 +459,7 @@
var stmt = statements[i] as VariableDeclarationStatement;
VariableDeclaration decl = stmt.variables.variables[0];
var exp = decl.initializer as FunctionExpression;
- return exp.declaredElement.type;
+ return exp.declaredElement!.type;
}
_isFunction2Of(_isInt, _isNull)(literal(0));
@@ -494,7 +497,7 @@
var stmt = statements[i] as VariableDeclarationStatement;
VariableDeclaration decl = stmt.variables.variables[0];
var exp = decl.initializer as FunctionExpression;
- return exp.declaredElement.type;
+ return exp.declaredElement!.type;
}
_isFunction2Of(_isInt, _isNull)(literal(0));
@@ -531,12 +534,12 @@
var stmt = statements[i] as VariableDeclarationStatement;
VariableDeclaration decl = stmt.variables.variables[0];
var exp = decl.initializer as FunctionExpression;
- FunctionBody body = exp.body;
+ FunctionBody body = exp.body!;
if (body is ExpressionFunctionBody) {
return body.expression;
} else {
Statement stmt = (body as BlockFunctionBody).block.statements[0];
- return (stmt as ReturnStatement).expression;
+ return (stmt as ReturnStatement).expression!;
}
}
@@ -573,7 +576,7 @@
var stmt = statements[i] as ExpressionStatement;
var invk = stmt.expression as FunctionExpressionInvocation;
var exp = invk.argumentList.arguments[0] as FunctionExpression;
- return exp.declaredElement.type;
+ return exp.declaredElement!.type;
}
_isFunction2Of(_isInt, _isNull)(literal(0));
@@ -608,7 +611,7 @@
var stmt = statements[i] as ExpressionStatement;
var invk = stmt.expression as FunctionExpressionInvocation;
var exp = invk.argumentList.arguments[0] as FunctionExpression;
- return exp.declaredElement.type;
+ return exp.declaredElement!.type;
}
_isFunction2Of(_isInt, _isNull)(literal(0));
@@ -642,7 +645,7 @@
var stmt = statements[i] as ExpressionStatement;
var invk = stmt.expression as MethodInvocation;
var exp = invk.argumentList.arguments[0] as FunctionExpression;
- return exp.declaredElement.type;
+ return exp.declaredElement!.type;
}
_isFunction2Of(_isInt, _isNull)(literal(0));
@@ -675,7 +678,7 @@
var stmt = statements[i] as ExpressionStatement;
var invk = stmt.expression as MethodInvocation;
var exp = invk.argumentList.arguments[0] as FunctionExpression;
- return exp.declaredElement.type;
+ return exp.declaredElement!.type;
}
_isFunction2Of(_isInt, _isNull)(literal(0));
@@ -711,7 +714,7 @@
var stmt = statements[i] as ExpressionStatement;
var invk = stmt.expression as MethodInvocation;
var exp = invk.argumentList.arguments[0] as FunctionExpression;
- return exp.declaredElement.type;
+ return exp.declaredElement!.type;
}
_isFunction2Of(_isInt, _isNull)(literal(0));
@@ -746,7 +749,7 @@
var stmt = statements[i] as ExpressionStatement;
var invk = stmt.expression as MethodInvocation;
var exp = invk.argumentList.arguments[0] as FunctionExpression;
- return exp.declaredElement.type;
+ return exp.declaredElement!.type;
}
_isFunction2Of(_isInt, _isNull)(literal(0));
@@ -784,12 +787,12 @@
var stmt = statements[i] as VariableDeclarationStatement;
VariableDeclaration decl = stmt.variables.variables[0];
var exp = decl.initializer as FunctionExpression;
- FunctionBody body = exp.body;
+ FunctionBody body = exp.body!;
if (body is ExpressionFunctionBody) {
return body.expression;
} else {
Statement stmt = (body as BlockFunctionBody).block.statements[0];
- return (stmt as ReturnStatement).expression;
+ return (stmt as ReturnStatement).expression!;
}
}
@@ -947,7 +950,7 @@
FutureOr<List<int>> test() => mk(3);
''');
_isListOf(_isInt)(invoke.staticType as InterfaceType);
- _isInt(invoke.argumentList.arguments[0].staticType);
+ _isInt(invoke.argumentList.arguments[0].staticType!);
}
test_futureOr_methods1() async {
@@ -955,7 +958,7 @@
MethodInvocation invoke = await _testFutureOr(r'''
dynamic test(FutureOr<int> x) => x.toString();
''');
- _isString(invoke.staticType);
+ _isString(invoke.staticType!);
}
test_futureOr_methods2() async {
@@ -965,7 +968,7 @@
''', expectedErrors: [
error(CompileTimeErrorCode.UNDEFINED_METHOD, 61, 3),
]);
- _isDynamic(invoke.staticType);
+ _isDynamic(invoke.staticType!);
}
test_futureOr_methods3() async {
@@ -975,7 +978,7 @@
''', expectedErrors: [
error(CompileTimeErrorCode.UNDEFINED_METHOD, 61, 4),
]);
- _isDynamic(invoke.staticType);
+ _isDynamic(invoke.staticType!);
}
test_futureOr_methods4() async {
@@ -985,7 +988,7 @@
''', expectedErrors: [
error(CompileTimeErrorCode.UNDEFINED_METHOD, 65, 3),
]);
- _isDynamic(invoke.staticType);
+ _isDynamic(invoke.staticType!);
}
test_futureOr_no_return() async {
@@ -995,7 +998,7 @@
test() => f.then((int x) {});
''');
_isFunction2Of(_isInt, _isNull)(
- invoke.argumentList.arguments[0].staticType);
+ invoke.argumentList.arguments[0].staticType!);
_isFutureOfNull(invoke.staticType as InterfaceType);
}
@@ -1006,7 +1009,7 @@
test() => f.then((int x) {return;});
''');
_isFunction2Of(_isInt, _isNull)(
- invoke.argumentList.arguments[0].staticType);
+ invoke.argumentList.arguments[0].staticType!);
_isFutureOfNull(invoke.staticType as InterfaceType);
}
@@ -1017,7 +1020,7 @@
test() => f.then((int x) {return null;});
''');
_isFunction2Of(_isInt, _isNull)(
- invoke.argumentList.arguments[0].staticType);
+ invoke.argumentList.arguments[0].staticType!);
_isFutureOfNull(invoke.staticType as InterfaceType);
}
@@ -1050,7 +1053,7 @@
test() => f.then<Null>((int x) {});
''');
_isFunction2Of(_isInt, _isNull)(
- invoke.argumentList.arguments[0].staticType);
+ invoke.argumentList.arguments[0].staticType!);
_isFutureOfNull(invoke.staticType as InterfaceType);
}
@@ -1061,7 +1064,7 @@
test() => f.then<Null>((int x) {return;});
''');
_isFunction2Of(_isInt, _isNull)(
- invoke.argumentList.arguments[0].staticType);
+ invoke.argumentList.arguments[0].staticType!);
_isFutureOfNull(invoke.staticType as InterfaceType);
}
@@ -1072,7 +1075,7 @@
test() => f.then<Null>((int x) { return null;});
''');
_isFunction2Of(_isInt, _isNull)(
- invoke.argumentList.arguments[0].staticType);
+ invoke.argumentList.arguments[0].staticType!);
_isFutureOfNull(invoke.staticType as InterfaceType);
}
@@ -1111,14 +1114,14 @@
error(HintCode.UNUSED_LOCAL_VARIABLE, 347, 2),
]);
- Element elementA = AstFinder.getClass(unit, "A").declaredElement;
+ Element elementA = AstFinder.getClass(unit, "A").declaredElement!;
List<Statement> statements =
AstFinder.getStatementsInTopLevelFunction(unit, "test");
void check(int i) {
var stmt = statements[i] as VariableDeclarationStatement;
VariableDeclaration decl = stmt.variables.variables[0];
- Expression init = decl.initializer;
- _isInstantiationOf(_hasElement(elementA))([_isInt])(init.staticType);
+ Expression init = decl.initializer!;
+ _isInstantiationOf(_hasElement(elementA))([_isInt])(init.staticType!);
}
for (var i = 0; i < 5; i++) {
@@ -1142,7 +1145,7 @@
]);
DartType cType = findElement.localVar('c').type;
- Element elementC = AstFinder.getClass(unit, "C").declaredElement;
+ Element elementC = AstFinder.getClass(unit, "C").declaredElement!;
_isInstantiationOf(_hasElement(elementC))([_isDynamic])(cType);
}
@@ -1419,7 +1422,7 @@
as VariableDeclarationStatement)
.variables
.variables[0];
- _isDynamic(h.declaredElement.type);
+ _isDynamic(h.declaredElement!.type);
var fCall = h.initializer as MethodInvocation;
assertInvokeType(fCall, 'dynamic Function(dynamic Function(dynamic))');
var g = fCall.argumentList.arguments[0];
@@ -1473,8 +1476,9 @@
VariableDeclaration mapB = AstFinder.getFieldInClass(unit, "B", "map");
MethodDeclaration mapC = AstFinder.getMethodInClass(unit, "C", "map");
- assertMapOfIntToListOfInt(mapB.declaredElement.type as InterfaceType);
- assertMapOfIntToListOfInt(mapC.declaredElement.returnType as InterfaceType);
+ assertMapOfIntToListOfInt(mapB.declaredElement!.type as InterfaceType);
+ assertMapOfIntToListOfInt(
+ mapC.declaredElement!.returnType as InterfaceType);
var mapLiteralB = mapB.initializer as SetOrMapLiteral;
var mapLiteralC =
@@ -1649,21 +1653,22 @@
error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 3154, 7),
]);
- Expression rhs(VariableDeclarationStatement stmt) {
+ Expression rhs(AstNode stmt) {
+ stmt as VariableDeclarationStatement;
VariableDeclaration decl = stmt.variables.variables[0];
- Expression exp = decl.initializer;
+ Expression exp = decl.initializer!;
return exp;
}
void hasType(Asserter<DartType> assertion, Expression exp) =>
- assertion(exp.staticType);
+ assertion(exp.staticType!);
- Element elementA = AstFinder.getClass(unit, "A").declaredElement;
- Element elementB = AstFinder.getClass(unit, "B").declaredElement;
- Element elementC = AstFinder.getClass(unit, "C").declaredElement;
- Element elementD = AstFinder.getClass(unit, "D").declaredElement;
- Element elementE = AstFinder.getClass(unit, "E").declaredElement;
- Element elementF = AstFinder.getClass(unit, "F").declaredElement;
+ Element elementA = AstFinder.getClass(unit, "A").declaredElement!;
+ Element elementB = AstFinder.getClass(unit, "B").declaredElement!;
+ Element elementC = AstFinder.getClass(unit, "C").declaredElement!;
+ Element elementD = AstFinder.getClass(unit, "D").declaredElement!;
+ Element elementE = AstFinder.getClass(unit, "E").declaredElement!;
+ Element elementF = AstFinder.getClass(unit, "F").declaredElement!;
AsserterBuilder<List<Asserter<DartType>>, DartType> assertAOf =
_isInstantiationOf(_hasElement(elementA));
@@ -1811,7 +1816,7 @@
Asserter<InterfaceType> assertListOfInt = _isListOf(_isInt);
Asserter<InterfaceType> assertListOfListOfInt =
- _isListOf((DartType type) => assertListOfInt(type));
+ _isListOf((DartType type) => assertListOfInt(type as InterfaceType));
assertListOfListOfInt(literal(0).staticType as InterfaceType);
assertListOfListOfInt(literal(1).staticType as InterfaceType);
@@ -1850,7 +1855,7 @@
var stmt = statements[i] as VariableDeclarationStatement;
VariableDeclaration decl = stmt.variables.variables[0];
var exp = decl.initializer as ListLiteral;
- return exp.staticType;
+ return exp.staticType!;
}
Asserter<InterfaceType> assertListOfInt = _isListOf(_isInt);
@@ -1885,7 +1890,7 @@
var stmt = statements[i] as VariableDeclarationStatement;
VariableDeclaration decl = stmt.variables.variables[0];
var exp = decl.initializer as ListLiteral;
- return exp.staticType;
+ return exp.staticType!;
}
Asserter<InterfaceType> assertListOfInt = _isListOf(_isInt);
@@ -1922,7 +1927,7 @@
var stmt = statements[i] as VariableDeclarationStatement;
VariableDeclaration decl = stmt.variables.variables[0];
var exp = decl.initializer as ListLiteral;
- return exp.staticType;
+ return exp.staticType!;
}
_isListOf(_isNum)(literal(0) as InterfaceType);
@@ -1951,11 +1956,11 @@
List<Statement> statements =
AstFinder.getStatementsInTopLevelFunction(unit, "main");
- DartType literal(int i) {
- VariableDeclarationStatement stmt = statements[i];
+ InterfaceType literal(int i) {
+ var stmt = statements[i] as VariableDeclarationStatement;
VariableDeclaration decl = stmt.variables.variables[0];
- ListLiteral exp = decl.initializer;
- return exp.staticType;
+ var exp = decl.initializer as ListLiteral;
+ return exp.staticType as InterfaceType;
}
Asserter<InterfaceType> assertListOfInt = _isListOf(_isInt);
@@ -1991,30 +1996,34 @@
List<Statement> statements =
AstFinder.getStatementsInTopLevelFunction(unit, "main");
SetOrMapLiteral literal(int i) {
- VariableDeclarationStatement stmt = statements[i];
+ var stmt = statements[i] as VariableDeclarationStatement;
VariableDeclaration decl = stmt.variables.variables[0];
- SetOrMapLiteral exp = decl.initializer;
+ var exp = decl.initializer as SetOrMapLiteral;
return exp;
}
Asserter<InterfaceType> assertListOfString = _isListOf(_isString);
- Asserter<InterfaceType> assertMapOfIntToListOfString =
- _isMapOf(_isInt, (DartType type) => assertListOfString(type));
+ Asserter<InterfaceType> assertMapOfIntToListOfString = _isMapOf(
+ _isInt, (DartType type) => assertListOfString(type as InterfaceType));
- assertMapOfIntToListOfString(literal(0).staticType);
- assertMapOfIntToListOfString(literal(1).staticType);
- assertMapOfIntToListOfString(literal(2).staticType);
- assertMapOfIntToListOfString(literal(3).staticType);
- assertMapOfIntToListOfString(literal(4).staticType);
+ assertMapOfIntToListOfString(literal(0).staticType as InterfaceType);
+ assertMapOfIntToListOfString(literal(1).staticType as InterfaceType);
+ assertMapOfIntToListOfString(literal(2).staticType as InterfaceType);
+ assertMapOfIntToListOfString(literal(3).staticType as InterfaceType);
+ assertMapOfIntToListOfString(literal(4).staticType as InterfaceType);
- assertListOfString(
- (literal(1).elements[0] as MapLiteralEntry).value.staticType);
- assertListOfString(
- (literal(2).elements[0] as MapLiteralEntry).value.staticType);
- assertListOfString(
- (literal(3).elements[0] as MapLiteralEntry).value.staticType);
- assertListOfString(
- (literal(4).elements[0] as MapLiteralEntry).value.staticType);
+ assertListOfString((literal(1).elements[0] as MapLiteralEntry)
+ .value
+ .staticType as InterfaceType);
+ assertListOfString((literal(2).elements[0] as MapLiteralEntry)
+ .value
+ .staticType as InterfaceType);
+ assertListOfString((literal(3).elements[0] as MapLiteralEntry)
+ .value
+ .staticType as InterfaceType);
+ assertListOfString((literal(4).elements[0] as MapLiteralEntry)
+ .value
+ .staticType as InterfaceType);
}
test_mapLiteral_simple() async {
@@ -2041,11 +2050,11 @@
List<Statement> statements =
AstFinder.getStatementsInTopLevelFunction(unit, "main");
- DartType literal(int i) {
- VariableDeclarationStatement stmt = statements[i];
+ InterfaceType literal(int i) {
+ var stmt = statements[i] as VariableDeclarationStatement;
VariableDeclaration decl = stmt.variables.variables[0];
- SetOrMapLiteral exp = decl.initializer;
- return exp.staticType;
+ var exp = decl.initializer as SetOrMapLiteral;
+ return exp.staticType as InterfaceType;
}
Asserter<InterfaceType> assertMapOfIntToString =
@@ -2080,11 +2089,11 @@
List<Statement> statements =
AstFinder.getStatementsInTopLevelFunction(unit, "main");
- DartType literal(int i) {
- VariableDeclarationStatement stmt = statements[i];
+ InterfaceType literal(int i) {
+ var stmt = statements[i] as VariableDeclarationStatement;
VariableDeclaration decl = stmt.variables.variables[0];
- SetOrMapLiteral exp = decl.initializer;
- return exp.staticType;
+ var exp = decl.initializer as SetOrMapLiteral;
+ return exp.staticType as InterfaceType;
}
Asserter<InterfaceType> assertMapOfIntToDynamic =
@@ -2115,13 +2124,13 @@
return body.expression;
} else {
Statement stmt = (body as BlockFunctionBody).block.statements[0];
- return (stmt as ReturnStatement).expression;
+ return (stmt as ReturnStatement).expression!;
}
}
Asserter<InterfaceType> assertListOfString = _isListOf(_isString);
- assertListOfString(methodReturnValue("m0").staticType);
- assertListOfString(methodReturnValue("m1").staticType);
+ assertListOfString(methodReturnValue("m0").staticType as InterfaceType);
+ assertListOfString(methodReturnValue("m1").staticType as InterfaceType);
}
test_partialTypes1() async {
@@ -2136,11 +2145,11 @@
await assertNoErrorsInCode(code);
FunctionDeclaration test = AstFinder.getTopLevelFunction(unit, "test");
- ExpressionFunctionBody body = test.functionExpression.body;
- _isString(body.expression.staticType);
- MethodInvocation invoke = body.expression;
- FunctionExpression function = invoke.argumentList.arguments[0];
- ExecutableElement f0 = function.declaredElement;
+ var body = test.functionExpression.body as ExpressionFunctionBody;
+ _isString(body.expression.staticType!);
+ var invoke = body.expression as MethodInvocation;
+ var function = invoke.argumentList.arguments[0] as FunctionExpression;
+ ExecutableElement f0 = function.declaredElement!;
FunctionType type = f0.type;
_isFunction2Of(_isString, _isInt)(type);
}
@@ -2162,10 +2171,10 @@
]);
FunctionDeclaration test = AstFinder.getTopLevelFunction(unit, "test");
- ExpressionFunctionBody body = test.functionExpression.body;
- DartType type = body.expression.staticType;
+ var body = test.functionExpression.body as ExpressionFunctionBody;
+ DartType type = body.expression.staticType!;
- Element elementB = AstFinder.getClass(unit, "B").declaredElement;
+ Element elementB = AstFinder.getClass(unit, "B").declaredElement!;
_isInstantiationOf(_hasElement(elementB))([_isNull])(type);
}
@@ -2184,10 +2193,10 @@
await assertNoErrorsInCode(code);
FunctionDeclaration test = AstFinder.getTopLevelFunction(unit, "test");
- ExpressionFunctionBody body = test.functionExpression.body;
- DartType type = body.expression.staticType;
+ var body = test.functionExpression.body as ExpressionFunctionBody;
+ DartType type = body.expression.staticType!;
- Element elementB = AstFinder.getClass(unit, "B").declaredElement;
+ Element elementB = AstFinder.getClass(unit, "B").declaredElement!;
_isInstantiationOf(_hasElement(elementB))([_isNum])(type);
}
@@ -2209,10 +2218,10 @@
]);
FunctionDeclaration test = AstFinder.getTopLevelFunction(unit, "test");
- ExpressionFunctionBody body = test.functionExpression.body;
- DartType type = body.expression.staticType;
+ var body = test.functionExpression.body as ExpressionFunctionBody;
+ DartType type = body.expression.staticType!;
- Element elementB = AstFinder.getClass(unit, "B").declaredElement;
+ Element elementB = AstFinder.getClass(unit, "B").declaredElement!;
_isInstantiationOf(_hasElement(elementB))([_isNull])(type);
}
@@ -2232,10 +2241,10 @@
await assertNoErrorsInCode(code);
FunctionDeclaration test = AstFinder.getTopLevelFunction(unit, "test");
- ExpressionFunctionBody body = test.functionExpression.body;
- DartType type = body.expression.staticType;
+ var body = test.functionExpression.body as ExpressionFunctionBody;
+ DartType type = body.expression.staticType!;
- Element elementB = AstFinder.getClass(unit, "B").declaredElement;
+ Element elementB = AstFinder.getClass(unit, "B").declaredElement!;
_isInstantiationOf(_hasElement(elementB))([_isInt])(type);
}
@@ -2257,11 +2266,11 @@
await assertNoErrorsInCode(code);
FunctionDeclaration test = AstFinder.getTopLevelFunction(unit, "test");
- ExpressionFunctionBody body = test.functionExpression.body;
- FunctionType functionType = body.expression.staticType;
+ var body = test.functionExpression.body as ExpressionFunctionBody;
+ var functionType = body.expression.staticType as FunctionType;
DartType type = functionType.normalParameterTypes[0];
- Element elementA = AstFinder.getClass(unit, "A").declaredElement;
+ Element elementA = AstFinder.getClass(unit, "A").declaredElement!;
_isInstantiationOf(_hasElement(elementA))([_isObject, _isObject])(type);
}
@@ -2282,11 +2291,11 @@
await assertNoErrorsInCode(code);
FunctionDeclaration test = AstFinder.getTopLevelFunction(unit, "test");
- ExpressionFunctionBody body = test.functionExpression.body;
- FunctionType functionType = body.expression.staticType;
+ var body = test.functionExpression.body as ExpressionFunctionBody;
+ var functionType = body.expression.staticType as FunctionType;
DartType type = functionType.normalParameterTypes[0];
- Element elementA = AstFinder.getClass(unit, "A").declaredElement;
+ Element elementA = AstFinder.getClass(unit, "A").declaredElement!;
_isInstantiationOf(_hasElement(elementA))([_isNum, _isNum])(type);
}
@@ -2308,11 +2317,11 @@
await assertNoErrorsInCode(code);
FunctionDeclaration test = AstFinder.getTopLevelFunction(unit, "test");
- ExpressionFunctionBody body = test.functionExpression.body;
- FunctionType functionType = body.expression.staticType;
+ var body = test.functionExpression.body as ExpressionFunctionBody;
+ var functionType = body.expression.staticType as FunctionType;
DartType type = functionType.normalParameterTypes[0];
- Element elementA = AstFinder.getClass(unit, "A").declaredElement;
+ Element elementA = AstFinder.getClass(unit, "A").declaredElement!;
_isInstantiationOf(_hasElement(elementA))([_isNum, _isNum])(type);
}
@@ -2334,11 +2343,11 @@
await assertNoErrorsInCode(code);
FunctionDeclaration test = AstFinder.getTopLevelFunction(unit, "test");
- ExpressionFunctionBody body = test.functionExpression.body;
- FunctionType functionType = body.expression.staticType;
+ var body = test.functionExpression.body as ExpressionFunctionBody;
+ var functionType = body.expression.staticType as FunctionType;
DartType type = functionType.normalParameterTypes[0];
- Element elementA = AstFinder.getClass(unit, "A").declaredElement;
+ Element elementA = AstFinder.getClass(unit, "A").declaredElement!;
_isInstantiationOf(_hasElement(elementA))([_isNum, _isNum])(type);
}
@@ -2355,20 +2364,20 @@
''';
await assertNoErrorsInCode(code);
- ClassDeclaration b = unit.declarations[1];
- ConstructorDeclaration bConstructor = b.members[0];
- ConstructorName redirected = bConstructor.redirectedConstructor;
+ var b = unit.declarations[1] as ClassDeclaration;
+ var bConstructor = b.members[0] as ConstructorDeclaration;
+ var redirected = bConstructor.redirectedConstructor as ConstructorName;
- TypeName typeName = redirected.type;
+ var typeName = redirected.type;
assertType(typeName.type, 'A<T2, U2>');
assertType(typeName.type, 'A<T2, U2>');
- var constructorMember = redirected.staticElement;
+ var constructorMember = redirected.staticElement!;
expect(
constructorMember.getDisplayString(withNullability: false),
'A<T2, U2> A.named()',
);
- expect(redirected.name.staticElement, constructorMember);
+ expect(redirected.name!.staticElement, constructorMember);
}
test_redirectedConstructor_self() async {
@@ -2391,17 +2400,17 @@
}
''');
- ClassDeclaration b = result.unit.declarations[1];
- ConstructorDeclaration bConstructor = b.members[0];
- ConstructorName redirected = bConstructor.redirectedConstructor;
+ var b = result.unit!.declarations[1] as ClassDeclaration;
+ var bConstructor = b.members[0] as ConstructorDeclaration;
+ var redirected = bConstructor.redirectedConstructor as ConstructorName;
- TypeName typeName = redirected.type;
+ var typeName = redirected.type;
assertType(typeName.type, 'A<T2, U2>');
assertType(typeName.type, 'A<T2, U2>');
expect(redirected.name, isNull);
expect(
- redirected.staticElement.getDisplayString(withNullability: false),
+ redirected.staticElement!.getDisplayString(withNullability: false),
'A<T2, U2> A()',
);
}
@@ -2417,9 +2426,10 @@
ConstructorDeclaration constructor =
AstFinder.getConstructorInClass(unit, "A", null);
- RedirectingConstructorInvocation invocation = constructor.initializers[0];
+ var invocation =
+ constructor.initializers[0] as RedirectingConstructorInvocation;
Expression exp = invocation.argumentList.arguments[0];
- _isListOf(_isString)(exp.staticType);
+ _isListOf(_isString)(exp.staticType as InterfaceType);
}
test_returnType_variance1() async {
@@ -2433,10 +2443,10 @@
await assertNoErrorsInCode(code);
FunctionDeclaration test = AstFinder.getTopLevelFunction(unit, "test");
- ExpressionFunctionBody body = test.functionExpression.body;
- MethodInvocation invoke = body.expression;
+ var body = test.functionExpression.body as ExpressionFunctionBody;
+ var invoke = body.expression as MethodInvocation;
_isFunction2Of(_isNum, _isFunction2Of(_isNum, _isString))(
- invoke.staticInvokeType);
+ invoke.staticInvokeType!);
}
test_returnType_variance2() async {
@@ -2450,10 +2460,10 @@
await assertNoErrorsInCode(code);
FunctionDeclaration test = AstFinder.getTopLevelFunction(unit, "test");
- ExpressionFunctionBody body = test.functionExpression.body;
- MethodInvocation invoke = body.expression;
+ var body = test.functionExpression.body as ExpressionFunctionBody;
+ var invoke = body.expression as MethodInvocation;
_isFunction2Of(_isNum, _isFunction2Of(_isString, _isNum))(
- invoke.staticInvokeType);
+ invoke.staticInvokeType!);
}
test_returnType_variance3() async {
@@ -2468,8 +2478,8 @@
await assertNoErrorsInCode(code);
FunctionDeclaration test = AstFinder.getTopLevelFunction(unit, "test");
- ExpressionFunctionBody body = test.functionExpression.body;
- FunctionType functionType = body.expression.staticType;
+ var body = test.functionExpression.body as ExpressionFunctionBody;
+ var functionType = body.expression.staticType as FunctionType;
DartType type = functionType.normalParameterTypes[0];
_isInt(type);
}
@@ -2486,8 +2496,8 @@
await assertNoErrorsInCode(code);
FunctionDeclaration test = AstFinder.getTopLevelFunction(unit, "test");
- ExpressionFunctionBody body = test.functionExpression.body;
- FunctionType functionType = body.expression.staticType;
+ var body = test.functionExpression.body as ExpressionFunctionBody;
+ var functionType = body.expression.staticType as FunctionType;
DartType type = functionType.returnType;
_isInt(type);
}
@@ -2504,11 +2514,11 @@
await assertNoErrorsInCode(code);
FunctionDeclaration test = AstFinder.getTopLevelFunction(unit, "test");
- ExpressionFunctionBody body = test.functionExpression.body;
- MethodInvocation call = body.expression;
- _isNum(call.staticType);
+ var body = test.functionExpression.body as ExpressionFunctionBody;
+ var call = body.expression as MethodInvocation;
+ _isNum(call.staticType!);
_isFunction2Of(_isFunction2Of(_isNum, _isString), _isNum)(
- call.staticInvokeType);
+ call.staticInvokeType!);
}
test_returnType_variance6() async {
@@ -2523,11 +2533,11 @@
await assertNoErrorsInCode(code);
FunctionDeclaration test = AstFinder.getTopLevelFunction(unit, "test");
- ExpressionFunctionBody body = test.functionExpression.body;
- MethodInvocation call = body.expression;
- _isNum(call.staticType);
+ var body = test.functionExpression.body as ExpressionFunctionBody;
+ var call = body.expression as MethodInvocation;
+ _isNum(call.staticType!);
_isFunction2Of(_isFunction2Of(_isString, _isNum), _isNum)(
- call.staticInvokeType);
+ call.staticInvokeType!);
}
test_superConstructorInvocation_propagation() async {
@@ -2543,9 +2553,9 @@
ConstructorDeclaration constructor =
AstFinder.getConstructorInClass(unit, "A", null);
- SuperConstructorInvocation invocation = constructor.initializers[0];
+ var invocation = constructor.initializers[0] as SuperConstructorInvocation;
Expression exp = invocation.argumentList.arguments[0];
- _isListOf(_isString)(exp.staticType);
+ _isListOf(_isString)(exp.staticType as InterfaceType);
}
/// Verifies the result has [CompileTimeErrorCode.COULD_NOT_INFER] with
@@ -2577,8 +2587,8 @@
await assertErrorsInCode(fullCode, expectedErrors);
FunctionDeclaration test = AstFinder.getTopLevelFunction(unit, "test");
- ExpressionFunctionBody body = test.functionExpression.body;
- return body.expression;
+ var body = test.functionExpression.body as ExpressionFunctionBody;
+ return body.expression as MethodInvocation;
}
}
@@ -2658,7 +2668,7 @@
await assertNoErrorsInCode(r'T f<T>(T x) => null;');
expectFunctionType('f', 'T Function<T>(T)', typeFormals: '[T]');
SimpleIdentifier f = findNode.simple('f');
- FunctionElementImpl e = f.staticElement;
+ var e = f.staticElement as FunctionElementImpl;
FunctionType ft = e.type.instantiate([typeProvider.stringType]);
assertType(ft, 'String Function(String)');
}
@@ -2686,7 +2696,7 @@
''');
expectFunctionType('f', 'T Function<T>(T)', typeFormals: '[T]');
SimpleIdentifier f = findNode.simple('f');
- MethodElementImpl e = f.staticElement;
+ var e = f.staticElement as MethodElementImpl;
FunctionType ft = e.type.instantiate([typeProvider.stringType]);
assertType(ft, 'String Function(String)');
}
@@ -2773,7 +2783,7 @@
assertType(findElement.method('f').type, 'List<T> Function<T>(E)');
var cOfString = findElement.localVar('cOfString');
- var ft = (cOfString.type as InterfaceType).getMethod('f').type;
+ var ft = (cOfString.type as InterfaceType).getMethod('f')!.type;
assertType(ft, 'List<T> Function<T>(String)');
assertType(
ft.instantiate([typeProvider.intType]), 'List<int> Function(String)');
@@ -2791,8 +2801,8 @@
''', [
error(HintCode.UNUSED_LOCAL_VARIABLE, 82, 1),
]);
- MethodInvocation f = findNode.simple('f<int>').parent;
- FunctionType ft = f.staticInvokeType;
+ var f = findNode.simple('f<int>').parent as MethodInvocation;
+ var ft = f.staticInvokeType as FunctionType;
assertType(ft, 'List<int> Function(String)');
var x = findElement.localVar('x');
@@ -3022,7 +3032,7 @@
findElement.method('f').type, 'List<T> Function<T>(T Function(E))');
var cOfString = findElement.localVar('cOfString');
- var ft = (cOfString.type as InterfaceType).getMethod('f').type;
+ var ft = (cOfString.type as InterfaceType).getMethod('f')!.type;
assertType(ft, 'List<T> Function<T>(T Function(String))');
assertType(ft.instantiate([typeProvider.intType]),
'List<int> Function(int Function(String))');
@@ -3163,7 +3173,7 @@
''');
MethodInvocation f = findNode.methodInvocation('f<int>(3);');
assertInvokeType(f, 'S Function(int)');
- FunctionType ft = f.staticInvokeType;
+ var ft = f.staticInvokeType as FunctionType;
expect('${ft.typeArguments}', '[S, int]');
expectIdentifierType('f;', 'S Function<Sâ‚€ extends S>(Sâ‚€)');
@@ -3195,7 +3205,7 @@
expectFunctionType('f<T>(T x) => null; // from D', 'T Function<T>(T)',
typeFormals: '[T]');
SimpleIdentifier f = findNode.simple('f<T>(T x) => null; // from D');
- MethodElementImpl e = f.staticElement;
+ var e = f.staticElement as MethodElementImpl;
FunctionType ft = e.type.instantiate([typeProvider.stringType]);
assertType(ft, 'String Function(String)');
}
diff --git a/pkg/analyzer/test/generated/test_analysis_context.dart b/pkg/analyzer/test/generated/test_analysis_context.dart
index 2f24e5c..473c34a 100644
--- a/pkg/analyzer/test/generated/test_analysis_context.dart
+++ b/pkg/analyzer/test/generated/test_analysis_context.dart
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/analysis/features.dart';
-import 'package:analyzer/dart/element/type_provider.dart';
import 'package:analyzer/src/dart/analysis/session.dart';
import 'package:analyzer/src/dart/element/class_hierarchy.dart';
import 'package:analyzer/src/dart/element/element.dart';
@@ -19,15 +18,15 @@
final SourceFactory sourceFactory = _MockSourceFactory();
final _MockAnalysisSession _analysisSession = _MockAnalysisSession();
- AnalysisOptionsImpl _analysisOptions;
+ late AnalysisOptionsImpl _analysisOptions;
- TypeProvider _typeProviderLegacy;
- TypeProvider _typeProviderNonNullableByDefault;
+ late TypeProviderImpl _typeProviderLegacy;
+ late TypeProviderImpl _typeProviderNonNullableByDefault;
- TypeSystemImpl _typeSystemLegacy;
- TypeSystemImpl _typeSystemNonNullableByDefault;
+ late TypeSystemImpl _typeSystemLegacy;
+ late TypeSystemImpl _typeSystemNonNullableByDefault;
- TestAnalysisContext({FeatureSet featureSet}) {
+ TestAnalysisContext({FeatureSet? featureSet}) {
_analysisOptions = AnalysisOptionsImpl()
..contextFeatures = featureSet ?? FeatureSet.forTesting();
@@ -68,11 +67,11 @@
AnalysisSessionImpl get analysisSession => _analysisSession;
- TypeProvider get typeProviderLegacy {
+ TypeProviderImpl get typeProviderLegacy {
return _typeProviderLegacy;
}
- TypeProvider get typeProviderNonNullableByDefault {
+ TypeProviderImpl get typeProviderNonNullableByDefault {
return _typeProviderNonNullableByDefault;
}
diff --git a/pkg/analyzer/test/generated/test_support.dart b/pkg/analyzer/test/generated/test_support.dart
index 43a53ee..97ca394 100644
--- a/pkg/analyzer/test/generated/test_support.dart
+++ b/pkg/analyzer/test/generated/test_support.dart
@@ -22,7 +22,7 @@
final int length;
/// The message text for the error.
- final String text;
+ final String? text;
ExpectedContextMessage(this.filePath, this.offset, this.length, {this.text});
@@ -51,11 +51,11 @@
final int length;
/// The message text of the error or `null` if the message should not be checked.
- final String message;
+ final String? message;
/// A pattern that should be contained in the error message or `null` if the message
/// contents should not be checked.
- final Pattern messageContains;
+ final Pattern? messageContains;
/// The list of context messages that are expected to be associated with the
/// error.
@@ -79,7 +79,7 @@
return false;
}
if (messageContains != null &&
- error.message?.contains(messageContains) != true) {
+ error.message.contains(messageContains!) != true) {
return false;
}
List<DiagnosticMessage> contextMessages = error.contextMessages.toList();
@@ -246,7 +246,7 @@
//
Map<ErrorCode, int> expectedCounts = <ErrorCode, int>{};
for (ErrorCode code in expectedErrorCodes) {
- int count = expectedCounts[code];
+ var count = expectedCounts[code];
if (count == null) {
count = 1;
} else {
@@ -269,7 +269,7 @@
//
expectedCounts.forEach((ErrorCode code, int expectedCount) {
int actualCount;
- List<AnalysisError> list = errorsByCode.remove(code);
+ var list = errorsByCode.remove(code);
if (list == null) {
actualCount = 0;
} else {
@@ -357,7 +357,7 @@
/// Return the line information associated with the given [source], or `null`
/// if no line information has been associated with the source.
- LineInfo getLineInfo(Source source) => _lineInfoMap[source];
+ LineInfo? getLineInfo(Source source) => _lineInfoMap[source];
/// Return `true` if an error with the given [errorCode] has been gathered.
bool hasError(ErrorCode errorCode) {
@@ -394,8 +394,8 @@
@override
void logException(dynamic exception,
- [StackTrace stackTrace,
- List<InstrumentationServiceAttachment> attachments]) {
+ [StackTrace? stackTrace,
+ List<InstrumentationServiceAttachment>? attachments]) {
log.add("error: $exception $stackTrace");
}
@@ -418,7 +418,7 @@
/// The number of times that the contents of this source have been requested.
int readCount = 0;
- TestSource([this._name = '/test.dart', this._contents]);
+ TestSource([this._name = '/test.dart', this._contents = '']);
@override
TimestampedData<String> get contents {
@@ -492,7 +492,7 @@
@override
final Uri uri;
- TestSourceWithUri(String path, this.uri, [String content])
+ TestSourceWithUri(String path, this.uri, [String content = ''])
: super(path, content);
@override
@@ -500,9 +500,7 @@
@override
UriKind get uriKind {
- if (uri == null) {
- return UriKind.FILE_URI;
- } else if (uri.scheme == 'dart') {
+ if (uri.scheme == 'dart') {
return UriKind.DART_URI;
} else if (uri.scheme == 'package') {
return UriKind.PACKAGE_URI;
diff --git a/pkg/analyzer/test/generated/top_level_parser_test.dart b/pkg/analyzer/test/generated/top_level_parser_test.dart
index 140b38a..f61ec88 100644
--- a/pkg/analyzer/test/generated/top_level_parser_test.dart
+++ b/pkg/analyzer/test/generated/top_level_parser_test.dart
@@ -85,23 +85,23 @@
]);
expect(member, isTopLevelVariableDeclaration);
- TopLevelVariableDeclaration declaration = member;
+ var declaration = member as TopLevelVariableDeclaration;
expect(declaration.semicolon, isNotNull);
expect(declaration.variables, isNotNull);
// Ensure type parsed as "Future<List<[empty name]>>".
expect(declaration.variables.type, isNotNull);
- expect(declaration.variables.type.question, isNull);
+ expect(declaration.variables.type!.question, isNull);
expect(declaration.variables.type, TypeMatcher<TypeName>());
- TypeName type = declaration.variables.type;
+ var type = declaration.variables.type as TypeName;
expect(type.name.name, "Future");
- expect(type.typeArguments.arguments.length, 1);
- expect(type.typeArguments.arguments.single, TypeMatcher<TypeName>());
- TypeName subType = type.typeArguments.arguments.single;
+ expect(type.typeArguments!.arguments.length, 1);
+ expect(type.typeArguments!.arguments.single, TypeMatcher<TypeName>());
+ var subType = type.typeArguments!.arguments.single as TypeName;
expect(subType.name.name, "List");
- expect(subType.typeArguments.arguments.length, 1);
- expect(subType.typeArguments.arguments.single, TypeMatcher<TypeName>());
- TypeName subSubType = subType.typeArguments.arguments.single;
+ expect(subType.typeArguments!.arguments.length, 1);
+ expect(subType.typeArguments!.arguments.single, TypeMatcher<TypeName>());
+ var subSubType = subType.typeArguments!.arguments.single as TypeName;
expect(subSubType.name.name, "");
expect(subSubType.typeArguments, isNull);
}
@@ -112,7 +112,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isClassDeclaration);
- ClassDeclaration declaration = member;
+ var declaration = member as ClassDeclaration;
expect(declaration.documentationComment, isNull);
expect(declaration.abstractKeyword, isNotNull);
expect(declaration.extendsClause, isNull);
@@ -131,7 +131,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isClassDeclaration);
- ClassDeclaration declaration = member;
+ var declaration = member as ClassDeclaration;
expect(declaration.documentationComment, isNull);
expect(declaration.abstractKeyword, isNull);
expect(declaration.extendsClause, isNull);
@@ -151,7 +151,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isClassDeclaration);
- ClassDeclaration declaration = member;
+ var declaration = member as ClassDeclaration;
expect(declaration.documentationComment, isNull);
expect(declaration.abstractKeyword, isNull);
expect(declaration.extendsClause, isNotNull);
@@ -170,7 +170,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isClassDeclaration);
- ClassDeclaration declaration = member;
+ var declaration = member as ClassDeclaration;
expect(declaration.documentationComment, isNull);
expect(declaration.abstractKeyword, isNull);
expect(declaration.extendsClause, isNotNull);
@@ -189,7 +189,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isClassDeclaration);
- ClassDeclaration declaration = member;
+ var declaration = member as ClassDeclaration;
expect(declaration.documentationComment, isNull);
expect(declaration.abstractKeyword, isNull);
expect(declaration.classKeyword, isNotNull);
@@ -209,7 +209,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isClassDeclaration);
- ClassDeclaration declaration = member;
+ var declaration = member as ClassDeclaration;
expect(declaration.documentationComment, isNull);
expect(declaration.abstractKeyword, isNull);
expect(declaration.classKeyword, isNotNull);
@@ -229,7 +229,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isClassDeclaration);
- ClassDeclaration declaration = member;
+ var declaration = member as ClassDeclaration;
expect(declaration.documentationComment, isNull);
expect(declaration.abstractKeyword, isNull);
expect(declaration.extendsClause, isNull);
@@ -265,7 +265,7 @@
expect(annotation.period, isNull);
expect(annotation.constructorName, isNull);
expect(annotation.arguments, isNotNull);
- expect(annotation.arguments.arguments, hasLength(1));
+ expect(annotation.arguments!.arguments, hasLength(1));
}
{
@@ -276,7 +276,7 @@
expect(annotation.period, isNull);
expect(annotation.constructorName, isNull);
expect(annotation.arguments, isNotNull);
- expect(annotation.arguments.arguments, hasLength(1));
+ expect(annotation.arguments!.arguments, hasLength(1));
}
{
@@ -286,9 +286,9 @@
expect(annotation.name.name, 'd.E');
expect(annotation.period, isNotNull);
expect(annotation.constructorName, isNotNull);
- expect(annotation.constructorName.name, 'bar');
+ expect(annotation.constructorName!.name, 'bar');
expect(annotation.arguments, isNotNull);
- expect(annotation.arguments.arguments, hasLength(2));
+ expect(annotation.arguments!.arguments, hasLength(2));
}
}
@@ -304,13 +304,13 @@
assertNoErrors();
}
expect(member, isClassDeclaration);
- ClassDeclaration declaration = member;
- NativeClause nativeClause = declaration.nativeClause;
+ var declaration = member as ClassDeclaration;
+ var nativeClause = declaration.nativeClause!;
expect(nativeClause, isNotNull);
expect(nativeClause.nativeKeyword, isNotNull);
- expect(nativeClause.name.stringValue, "nativeValue");
+ expect(nativeClause.name!.stringValue, "nativeValue");
expect(nativeClause.beginToken, same(nativeClause.nativeKeyword));
- expect(nativeClause.endToken, same(nativeClause.name.endToken));
+ expect(nativeClause.endToken, same(nativeClause.name!.endToken));
}
void test_parseClassDeclaration_native_allowed() {
@@ -343,10 +343,10 @@
]);
}
expect(member, TypeMatcher<ClassDeclaration>());
- ClassDeclaration declaration = member;
+ var declaration = member as ClassDeclaration;
expect(declaration.nativeClause, isNotNull);
- expect(declaration.nativeClause.nativeKeyword, isNotNull);
- expect(declaration.nativeClause.name, isNull);
+ expect(declaration.nativeClause!.nativeKeyword, isNotNull);
+ expect(declaration.nativeClause!.name, isNull);
expect(declaration.endToken.type, TokenType.CLOSE_CURLY_BRACKET);
}
@@ -371,7 +371,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isClassDeclaration);
- ClassDeclaration declaration = member;
+ var declaration = member as ClassDeclaration;
expect(declaration.documentationComment, isNull);
expect(declaration.abstractKeyword, isNull);
expect(declaration.extendsClause, isNull);
@@ -390,15 +390,15 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isClassTypeAlias);
- ClassTypeAlias typeAlias = member;
+ var typeAlias = member as ClassTypeAlias;
expect(typeAlias.typedefKeyword, isNotNull);
expect(typeAlias.name, isNotNull);
_assertIsDeclarationName(typeAlias.name);
expect(typeAlias.typeParameters, isNull);
expect(typeAlias.withClause, isNotNull);
expect(typeAlias.implementsClause, isNotNull);
- expect(typeAlias.implementsClause.implementsKeyword, isNotNull);
- expect(typeAlias.implementsClause.interfaces.length, 1);
+ expect(typeAlias.implementsClause!.implementsKeyword, isNotNull);
+ expect(typeAlias.implementsClause!.interfaces.length, 1);
expect(typeAlias.semicolon, isNotNull);
}
@@ -408,7 +408,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isClassTypeAlias);
- ClassTypeAlias typeAlias = member;
+ var typeAlias = member as ClassTypeAlias;
expect(typeAlias.typedefKeyword, isNotNull);
expect(typeAlias.name, isNotNull);
expect(typeAlias.typeParameters, isNull);
@@ -425,7 +425,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isClassDeclaration);
- ClassDeclaration declaration = member;
+ var declaration = member as ClassDeclaration;
expect(declaration.documentationComment, isNull);
expect(declaration.abstractKeyword, isNull);
expect(declaration.extendsClause, isNull);
@@ -437,8 +437,9 @@
expect(declaration.members, hasLength(0));
expect(declaration.rightBracket, isNotNull);
expect(declaration.typeParameters, isNotNull);
- expect(declaration.typeParameters.typeParameters, hasLength(1));
- _assertIsDeclarationName(declaration.typeParameters.typeParameters[0].name);
+ expect(declaration.typeParameters!.typeParameters, hasLength(1));
+ _assertIsDeclarationName(
+ declaration.typeParameters!.typeParameters[0].name);
}
void test_parseClassDeclaration_typeParameters_extends_void() {
@@ -644,7 +645,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isTopLevelVariableDeclaration);
- TopLevelVariableDeclaration declaration = member;
+ var declaration = member as TopLevelVariableDeclaration;
expect(declaration.semicolon, isNotNull);
expect(declaration.variables, isNotNull);
}
@@ -655,7 +656,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isClassDeclaration);
- ClassDeclaration declaration = member;
+ var declaration = member as ClassDeclaration;
expect(declaration.name.name, "A");
expect(declaration.members, hasLength(0));
}
@@ -666,7 +667,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isClassTypeAlias);
- ClassTypeAlias declaration = member;
+ var declaration = member as ClassTypeAlias;
expect(declaration.name.name, "A");
expect(declaration.abstractKeyword, isNotNull);
}
@@ -677,10 +678,10 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isTopLevelVariableDeclaration);
- TopLevelVariableDeclaration declaration = member;
+ var declaration = member as TopLevelVariableDeclaration;
expect(declaration.semicolon, isNotNull);
expect(declaration.variables, isNotNull);
- expect(declaration.variables.keyword.lexeme, 'const');
+ expect(declaration.variables.keyword!.lexeme, 'const');
_assertIsDeclarationName(declaration.variables.variables[0].name);
}
@@ -689,7 +690,7 @@
var f = parseFullCompilationUnitMember() as FunctionDeclaration;
var body = f.functionExpression.body as ExpressionFunctionBody;
expect(body.functionDefinition.lexeme, '=>');
- expect(body.semicolon.lexeme, ';');
+ expect(body.semicolon!.lexeme, ';');
_assertIsDeclarationName(f.name);
}
@@ -699,10 +700,10 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isTopLevelVariableDeclaration);
- TopLevelVariableDeclaration declaration = member;
+ var declaration = member as TopLevelVariableDeclaration;
expect(declaration.semicolon, isNotNull);
expect(declaration.variables, isNotNull);
- expect(declaration.variables.keyword.lexeme, 'final');
+ expect(declaration.variables.keyword!.lexeme, 'final');
}
void test_parseCompilationUnitMember_function_external_noType() {
@@ -711,7 +712,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isFunctionDeclaration);
- FunctionDeclaration declaration = member;
+ var declaration = member as FunctionDeclaration;
expect(declaration.externalKeyword, isNotNull);
expect(declaration.functionExpression, isNotNull);
expect(declaration.propertyKeyword, isNull);
@@ -723,7 +724,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isFunctionDeclaration);
- FunctionDeclaration declaration = member;
+ var declaration = member as FunctionDeclaration;
expect(declaration.externalKeyword, isNotNull);
expect(declaration.functionExpression, isNotNull);
expect(declaration.propertyKeyword, isNull);
@@ -735,7 +736,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isFunctionDeclaration);
- FunctionDeclaration declaration = member;
+ var declaration = member as FunctionDeclaration;
expect(declaration.returnType, isNull);
expect(declaration.functionExpression.typeParameters, isNotNull);
}
@@ -747,7 +748,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isFunctionDeclaration);
- FunctionDeclaration declaration = member;
+ var declaration = member as FunctionDeclaration;
expect(declaration.returnType, isNull);
expect(declaration.functionExpression.typeParameters, isNotNull);
}
@@ -758,7 +759,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isFunctionDeclaration);
- FunctionDeclaration declaration = member;
+ var declaration = member as FunctionDeclaration;
expect(declaration.returnType, isNotNull);
expect(declaration.functionExpression.typeParameters, isNotNull);
}
@@ -769,7 +770,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isFunctionDeclaration);
- FunctionDeclaration declaration = member;
+ var declaration = member as FunctionDeclaration;
expect(declaration.functionExpression, isNotNull);
expect(declaration.propertyKeyword, isNull);
}
@@ -800,7 +801,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isFunctionDeclaration);
- FunctionDeclaration declaration = member;
+ var declaration = member as FunctionDeclaration;
expect(declaration.functionExpression, isNotNull);
expect(declaration.propertyKeyword, isNull);
}
@@ -811,7 +812,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isFunctionDeclaration);
- FunctionDeclaration declaration = member;
+ var declaration = member as FunctionDeclaration;
expect(declaration.functionExpression, isNotNull);
expect(declaration.propertyKeyword, isNull);
}
@@ -822,7 +823,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isFunctionDeclaration);
- FunctionDeclaration declaration = member;
+ var declaration = member as FunctionDeclaration;
expect(declaration.returnType, isNotNull);
}
@@ -832,7 +833,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isFunctionDeclaration);
- FunctionDeclaration declaration = member;
+ var declaration = member as FunctionDeclaration;
expect(declaration.externalKeyword, isNotNull);
expect(declaration.functionExpression, isNotNull);
expect(declaration.propertyKeyword, isNotNull);
@@ -845,7 +846,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isFunctionDeclaration);
- FunctionDeclaration declaration = member;
+ var declaration = member as FunctionDeclaration;
expect(declaration.externalKeyword, isNotNull);
expect(declaration.functionExpression, isNotNull);
expect(declaration.propertyKeyword, isNotNull);
@@ -857,7 +858,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isFunctionDeclaration);
- FunctionDeclaration declaration = member;
+ var declaration = member as FunctionDeclaration;
expect(declaration.functionExpression, isNotNull);
expect(declaration.propertyKeyword, isNotNull);
}
@@ -868,7 +869,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isFunctionDeclaration);
- FunctionDeclaration declaration = member;
+ var declaration = member as FunctionDeclaration;
expect(declaration.functionExpression, isNotNull);
expect(declaration.propertyKeyword, isNotNull);
}
@@ -879,7 +880,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isFunctionDeclaration);
- FunctionDeclaration declaration = member;
+ var declaration = member as FunctionDeclaration;
expect(declaration.externalKeyword, isNotNull);
expect(declaration.functionExpression, isNotNull);
expect(declaration.propertyKeyword, isNotNull);
@@ -891,7 +892,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isFunctionDeclaration);
- FunctionDeclaration declaration = member;
+ var declaration = member as FunctionDeclaration;
expect(declaration.externalKeyword, isNotNull);
expect(declaration.functionExpression, isNotNull);
expect(declaration.propertyKeyword, isNotNull);
@@ -903,7 +904,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isFunctionDeclaration);
- FunctionDeclaration declaration = member;
+ var declaration = member as FunctionDeclaration;
expect(declaration.functionExpression, isNotNull);
expect(declaration.propertyKeyword, isNotNull);
_assertIsDeclarationName(declaration.name);
@@ -915,7 +916,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isFunctionDeclaration);
- FunctionDeclaration declaration = member;
+ var declaration = member as FunctionDeclaration;
expect(declaration.functionExpression, isNotNull);
expect(declaration.propertyKeyword, isNotNull);
expect(declaration.returnType, isNotNull);
@@ -927,7 +928,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isClassTypeAlias);
- ClassTypeAlias typeAlias = member;
+ var typeAlias = member as ClassTypeAlias;
expect(typeAlias.typedefKeyword, isNotNull);
expect(typeAlias.name.name, "C");
_assertIsDeclarationName(typeAlias.name);
@@ -946,10 +947,10 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isClassTypeAlias);
- ClassTypeAlias typeAlias = member;
+ var typeAlias = member as ClassTypeAlias;
expect(typeAlias.typedefKeyword, isNotNull);
expect(typeAlias.name.name, "C");
- expect(typeAlias.typeParameters.typeParameters, hasLength(1));
+ expect(typeAlias.typeParameters!.typeParameters, hasLength(1));
expect(typeAlias.equals, isNotNull);
expect(typeAlias.abstractKeyword, isNull);
expect(typeAlias.superclass.name.name, "S");
@@ -964,7 +965,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isClassTypeAlias);
- ClassTypeAlias typeAlias = member;
+ var typeAlias = member as ClassTypeAlias;
expect(typeAlias.typedefKeyword, isNotNull);
expect(typeAlias.name.name, "C");
expect(typeAlias.typeParameters, isNull);
@@ -982,7 +983,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isClassTypeAlias);
- ClassTypeAlias typeAlias = member;
+ var typeAlias = member as ClassTypeAlias;
expect(typeAlias.typedefKeyword, isNotNull);
expect(typeAlias.name.name, "C");
expect(typeAlias.typeParameters, isNull);
@@ -1000,7 +1001,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, TypeMatcher<FunctionTypeAlias>());
- FunctionTypeAlias typeAlias = member;
+ var typeAlias = member as FunctionTypeAlias;
expect(typeAlias.name.name, "F");
expect(typeAlias.parameters.parameters, hasLength(0));
_assertIsDeclarationName(typeAlias.name);
@@ -1018,7 +1019,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isTopLevelVariableDeclaration);
- TopLevelVariableDeclaration declaration = member;
+ var declaration = member as TopLevelVariableDeclaration;
expect(declaration.semicolon, isNotNull);
expect(declaration.variables, isNotNull);
expect(declaration.variables.type, isNotNull);
@@ -1032,10 +1033,10 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isTopLevelVariableDeclaration);
- TopLevelVariableDeclaration declaration = member;
+ var declaration = member as TopLevelVariableDeclaration;
expect(declaration.semicolon, isNotNull);
expect(declaration.variables, isNotNull);
- expect(declaration.variables.keyword.lexeme, 'var');
+ expect(declaration.variables.keyword!.lexeme, 'var');
}
void test_parseCompilationUnitMember_variable_gftType_gftReturnType() {
@@ -1074,7 +1075,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isTopLevelVariableDeclaration);
- TopLevelVariableDeclaration declaration = member;
+ var declaration = member as TopLevelVariableDeclaration;
expect(declaration.semicolon, isNotNull);
expect(declaration.variables, isNotNull);
}
@@ -1085,7 +1086,7 @@
expect(member, isNotNull);
assertNoErrors();
expect(member, isTopLevelVariableDeclaration);
- TopLevelVariableDeclaration declaration = member;
+ var declaration = member as TopLevelVariableDeclaration;
expect(declaration.semicolon, isNotNull);
expect(declaration.variables, isNotNull);
}
@@ -1096,7 +1097,7 @@
expect(directive, isNotNull);
assertNoErrors();
expect(directive, TypeMatcher<ExportDirective>());
- ExportDirective exportDirective = directive;
+ var exportDirective = directive as ExportDirective;
expect(exportDirective.keyword, isNotNull);
expect(exportDirective.uri, isNotNull);
expect(exportDirective.combinators, hasLength(0));
@@ -1115,7 +1116,7 @@
expect(directive, isNotNull);
assertNoErrors();
expect(directive, TypeMatcher<ImportDirective>());
- ImportDirective importDirective = directive;
+ var importDirective = directive as ImportDirective;
expect(importDirective.keyword, isNotNull);
expect(importDirective.uri, isNotNull);
expect(importDirective.asKeyword, isNull);
@@ -1130,7 +1131,7 @@
expect(directive, isNotNull);
assertNoErrors();
expect(directive, TypeMatcher<LibraryDirective>());
- LibraryDirective libraryDirective = directive;
+ var libraryDirective = directive as LibraryDirective;
expect(libraryDirective.libraryKeyword, isNotNull);
expect(libraryDirective.name, isNotNull);
expect(libraryDirective.semicolon, isNotNull);
@@ -1166,7 +1167,7 @@
expect(directive, isNotNull);
assertNoErrors();
expect(directive, TypeMatcher<LibraryDirective>());
- LibraryDirective libraryDirective = directive;
+ var libraryDirective = directive as LibraryDirective;
expect(libraryDirective.libraryKeyword, isNotNull);
expect(libraryDirective.name, isNotNull);
expect(libraryDirective.semicolon, isNotNull);
@@ -1181,7 +1182,7 @@
expect(directive, isNotNull);
assertNoErrors();
expect(directive, TypeMatcher<LibraryDirective>());
- LibraryDirective libraryDirective = directive;
+ var libraryDirective = directive as LibraryDirective;
expect(libraryDirective.libraryKeyword, isNotNull);
expect(libraryDirective.name, isNotNull);
expect(libraryDirective.semicolon, isNotNull);
@@ -1201,7 +1202,7 @@
expect(directive, isNotNull);
assertNoErrors();
expect(directive, TypeMatcher<PartDirective>());
- PartDirective partDirective = directive;
+ var partDirective = directive as PartDirective;
expect(partDirective.partKeyword, isNotNull);
expect(partDirective.uri, isNotNull);
expect(partDirective.semicolon, isNotNull);
@@ -1210,25 +1211,25 @@
void test_parseDirective_part_of_1_component() {
createParser("part of a;");
var partOf = parseFullDirective() as PartOfDirective;
- expect(partOf.libraryName.components, hasLength(1));
- expect(partOf.libraryName.components[0].name, 'a');
+ expect(partOf.libraryName!.components, hasLength(1));
+ expect(partOf.libraryName!.components[0].name, 'a');
}
void test_parseDirective_part_of_2_components() {
createParser("part of a.b;");
var partOf = parseFullDirective() as PartOfDirective;
- expect(partOf.libraryName.components, hasLength(2));
- expect(partOf.libraryName.components[0].name, 'a');
- expect(partOf.libraryName.components[1].name, 'b');
+ expect(partOf.libraryName!.components, hasLength(2));
+ expect(partOf.libraryName!.components[0].name, 'a');
+ expect(partOf.libraryName!.components[1].name, 'b');
}
void test_parseDirective_part_of_3_components() {
createParser("part of a.b.c;");
var partOf = parseFullDirective() as PartOfDirective;
- expect(partOf.libraryName.components, hasLength(3));
- expect(partOf.libraryName.components[0].name, 'a');
- expect(partOf.libraryName.components[1].name, 'b');
- expect(partOf.libraryName.components[2].name, 'c');
+ expect(partOf.libraryName!.components, hasLength(3));
+ expect(partOf.libraryName!.components[0].name, 'a');
+ expect(partOf.libraryName!.components[1].name, 'b');
+ expect(partOf.libraryName!.components[2].name, 'c');
}
void test_parseDirective_part_of_withDocumentationComment() {
@@ -1249,7 +1250,7 @@
expect(directive, isNotNull);
assertNoErrors();
expect(directive, TypeMatcher<PartOfDirective>());
- PartOfDirective partOfDirective = directive;
+ var partOfDirective = directive as PartOfDirective;
expect(partOfDirective.partKeyword, isNotNull);
expect(partOfDirective.ofKeyword, isNotNull);
expect(partOfDirective.libraryName, isNotNull);
@@ -1310,7 +1311,7 @@
void test_parseEnumDeclaration_one() {
createParser("enum E {ONE}");
- EnumDeclaration declaration = parseFullCompilationUnitMember();
+ var declaration = parseFullCompilationUnitMember() as EnumDeclaration;
expect(declaration, isNotNull);
assertNoErrors();
expect(declaration.documentationComment, isNull);
@@ -1323,7 +1324,7 @@
void test_parseEnumDeclaration_trailingComma() {
createParser("enum E {ONE,}");
- EnumDeclaration declaration = parseFullCompilationUnitMember();
+ var declaration = parseFullCompilationUnitMember() as EnumDeclaration;
expect(declaration, isNotNull);
assertNoErrors();
expect(declaration.documentationComment, isNull);
@@ -1336,7 +1337,7 @@
void test_parseEnumDeclaration_two() {
createParser("enum E {ONE, TWO}");
- EnumDeclaration declaration = parseFullCompilationUnitMember();
+ var declaration = parseFullCompilationUnitMember() as EnumDeclaration;
expect(declaration, isNotNull);
assertNoErrors();
expect(declaration.documentationComment, isNull);
@@ -1380,7 +1381,7 @@
void test_parseExportDirective_configuration_multiple() {
createParser("export 'lib/lib.dart' if (a) 'b.dart' if (c) 'd.dart';");
- ExportDirective directive = parseFullDirective();
+ var directive = parseFullDirective() as ExportDirective;
expect(directive, isNotNull);
assertNoErrors();
expect(directive.keyword, isNotNull);
@@ -1394,7 +1395,7 @@
void test_parseExportDirective_configuration_single() {
createParser("export 'lib/lib.dart' if (a.b == 'c.dart') '';");
- ExportDirective directive = parseFullDirective();
+ var directive = parseFullDirective() as ExportDirective;
expect(directive, isNotNull);
assertNoErrors();
expect(directive.keyword, isNotNull);
@@ -1407,7 +1408,7 @@
void test_parseExportDirective_hide() {
createParser("export 'lib/lib.dart' hide A, B;");
- ExportDirective directive = parseFullDirective();
+ var directive = parseFullDirective() as ExportDirective;
expect(directive, isNotNull);
assertNoErrors();
expect(directive.keyword, isNotNull);
@@ -1418,7 +1419,7 @@
void test_parseExportDirective_hide_show() {
createParser("export 'lib/lib.dart' hide A show B;");
- ExportDirective directive = parseFullDirective();
+ var directive = parseFullDirective() as ExportDirective;
expect(directive, isNotNull);
assertNoErrors();
expect(directive.keyword, isNotNull);
@@ -1429,7 +1430,7 @@
void test_parseExportDirective_noCombinator() {
createParser("export 'lib/lib.dart';");
- ExportDirective directive = parseFullDirective();
+ var directive = parseFullDirective() as ExportDirective;
expect(directive, isNotNull);
assertNoErrors();
expect(directive.keyword, isNotNull);
@@ -1440,7 +1441,7 @@
void test_parseExportDirective_show() {
createParser("export 'lib/lib.dart' show A, B;");
- ExportDirective directive = parseFullDirective();
+ var directive = parseFullDirective() as ExportDirective;
expect(directive, isNotNull);
assertNoErrors();
expect(directive.keyword, isNotNull);
@@ -1451,7 +1452,7 @@
void test_parseExportDirective_show_hide() {
createParser("export 'lib/lib.dart' show B hide A;");
- ExportDirective directive = parseFullDirective();
+ var directive = parseFullDirective() as ExportDirective;
expect(directive, isNotNull);
assertNoErrors();
expect(directive.keyword, isNotNull);
@@ -1462,7 +1463,7 @@
void test_parseFunctionDeclaration_function() {
createParser('/// Doc\nT f() {}');
- FunctionDeclaration declaration = parseFullCompilationUnitMember();
+ var declaration = parseFullCompilationUnitMember() as FunctionDeclaration;
expect(declaration, isNotNull);
assertNoErrors();
expectCommentText(declaration.documentationComment, '/// Doc');
@@ -1478,7 +1479,7 @@
void test_parseFunctionDeclaration_functionWithTypeParameters() {
createParser('/// Doc\nT f<E>() {}');
- FunctionDeclaration declaration = parseFullCompilationUnitMember();
+ var declaration = parseFullCompilationUnitMember() as FunctionDeclaration;
expect(declaration, isNotNull);
assertNoErrors();
expectCommentText(declaration.documentationComment, '/// Doc');
@@ -1494,7 +1495,7 @@
void test_parseFunctionDeclaration_getter() {
createParser('/// Doc\nT get p => 0;');
- FunctionDeclaration declaration = parseFullCompilationUnitMember();
+ var declaration = parseFullCompilationUnitMember() as FunctionDeclaration;
expect(declaration, isNotNull);
assertNoErrors();
expectCommentText(declaration.documentationComment, '/// Doc');
@@ -1511,7 +1512,7 @@
void test_parseFunctionDeclaration_metadata() {
createParser(
'T f(@A a, @B(2) Foo b, {@C.foo(3) c : 0, @d.E.bar(4, 5) x:0}) {}');
- FunctionDeclaration declaration = parseFullCompilationUnitMember();
+ var declaration = parseFullCompilationUnitMember() as FunctionDeclaration;
expect(declaration, isNotNull);
assertNoErrors();
expect(declaration.documentationComment, isNull);
@@ -1521,7 +1522,7 @@
expect(expression, isNotNull);
expect(expression.body, isNotNull);
expect(expression.typeParameters, isNull);
- NodeList<FormalParameter> parameters = expression.parameters.parameters;
+ NodeList<FormalParameter> parameters = expression.parameters!.parameters;
expect(parameters, hasLength(4));
expect(declaration.propertyKeyword, isNull);
@@ -1543,7 +1544,7 @@
expect(annotation.period, isNull);
expect(annotation.constructorName, isNull);
expect(annotation.arguments, isNotNull);
- expect(annotation.arguments.arguments, hasLength(1));
+ expect(annotation.arguments!.arguments, hasLength(1));
}
{
@@ -1554,7 +1555,7 @@
expect(annotation.period, isNull);
expect(annotation.constructorName, isNull);
expect(annotation.arguments, isNotNull);
- expect(annotation.arguments.arguments, hasLength(1));
+ expect(annotation.arguments!.arguments, hasLength(1));
}
{
@@ -1564,15 +1565,15 @@
expect(annotation.name.name, 'd.E');
expect(annotation.period, isNotNull);
expect(annotation.constructorName, isNotNull);
- expect(annotation.constructorName.name, 'bar');
+ expect(annotation.constructorName!.name, 'bar');
expect(annotation.arguments, isNotNull);
- expect(annotation.arguments.arguments, hasLength(2));
+ expect(annotation.arguments!.arguments, hasLength(2));
}
}
void test_parseFunctionDeclaration_setter() {
createParser('/// Doc\nT set p(v) {}');
- FunctionDeclaration declaration = parseFullCompilationUnitMember();
+ var declaration = parseFullCompilationUnitMember() as FunctionDeclaration;
expect(declaration, isNotNull);
assertNoErrors();
expectCommentText(declaration.documentationComment, '/// Doc');
@@ -1588,7 +1589,7 @@
void test_parseGenericTypeAlias_noTypeParameters() {
createParser('typedef F = int Function(int);');
- GenericTypeAlias alias = parseFullCompilationUnitMember();
+ var alias = parseFullCompilationUnitMember() as GenericTypeAlias;
expect(alias, isNotNull);
assertNoErrors();
expect(alias.name, isNotNull);
@@ -1601,12 +1602,12 @@
void test_parseGenericTypeAlias_typeParameters() {
createParser('typedef F<T> = T Function(T);');
- GenericTypeAlias alias = parseFullCompilationUnitMember();
+ var alias = parseFullCompilationUnitMember() as GenericTypeAlias;
expect(alias, isNotNull);
assertNoErrors();
expect(alias.name, isNotNull);
expect(alias.name.name, 'F');
- expect(alias.typeParameters.typeParameters, hasLength(1));
+ expect(alias.typeParameters!.typeParameters, hasLength(1));
expect(alias.equals, isNotNull);
expect(alias.functionType, isNotNull);
expect(alias.semicolon, isNotNull);
@@ -1616,12 +1617,12 @@
// The scanner creates a single token for `>=`
// then the parser must split it into two separate tokens.
createParser('typedef F<T>= T Function(T);');
- GenericTypeAlias alias = parseFullCompilationUnitMember();
+ var alias = parseFullCompilationUnitMember() as GenericTypeAlias;
expect(alias, isNotNull);
assertNoErrors();
expect(alias.name, isNotNull);
expect(alias.name.name, 'F');
- expect(alias.typeParameters.typeParameters, hasLength(1));
+ expect(alias.typeParameters!.typeParameters, hasLength(1));
expect(alias.equals, isNotNull);
expect(alias.functionType, isNotNull);
expect(alias.semicolon, isNotNull);
@@ -1629,12 +1630,12 @@
void test_parseGenericTypeAlias_typeParameters3() {
createParser('typedef F<A,B,C> = Function(A a, B b, C c);');
- GenericTypeAlias alias = parseFullCompilationUnitMember();
+ var alias = parseFullCompilationUnitMember() as GenericTypeAlias;
expect(alias, isNotNull);
assertNoErrors();
expect(alias.name, isNotNull);
expect(alias.name.name, 'F');
- expect(alias.typeParameters.typeParameters, hasLength(3));
+ expect(alias.typeParameters!.typeParameters, hasLength(3));
expect(alias.equals, isNotNull);
expect(alias.functionType, isNotNull);
expect(alias.semicolon, isNotNull);
@@ -1644,12 +1645,12 @@
// The scanner creates a single token for `>=`
// then the parser must split it into two separate tokens.
createParser('typedef F<A,B,C>=Function(A a, B b, C c);');
- GenericTypeAlias alias = parseFullCompilationUnitMember();
+ var alias = parseFullCompilationUnitMember() as GenericTypeAlias;
expect(alias, isNotNull);
assertNoErrors();
expect(alias.name, isNotNull);
expect(alias.name.name, 'F');
- expect(alias.typeParameters.typeParameters, hasLength(3));
+ expect(alias.typeParameters!.typeParameters, hasLength(3));
expect(alias.equals, isNotNull);
expect(alias.functionType, isNotNull);
expect(alias.semicolon, isNotNull);
@@ -1657,15 +1658,15 @@
void test_parseGenericTypeAlias_typeParameters_extends() {
createParser('typedef F<A,B,C extends D<E>> = Function(A a, B b, C c);');
- GenericTypeAlias alias = parseFullCompilationUnitMember();
+ var alias = parseFullCompilationUnitMember() as GenericTypeAlias;
expect(alias, isNotNull);
assertNoErrors();
expect(alias.name, isNotNull);
expect(alias.name.name, 'F');
- expect(alias.typeParameters.typeParameters, hasLength(3));
- TypeParameter typeParam = alias.typeParameters.typeParameters[2];
- NamedType type = typeParam.bound;
- expect(type.typeArguments.arguments, hasLength(1));
+ expect(alias.typeParameters!.typeParameters, hasLength(3));
+ TypeParameter typeParam = alias.typeParameters!.typeParameters[2];
+ var type = typeParam.bound as NamedType;
+ expect(type.typeArguments!.arguments, hasLength(1));
expect(alias.equals, isNotNull);
expect(alias.functionType, isNotNull);
expect(alias.semicolon, isNotNull);
@@ -1674,15 +1675,15 @@
void test_parseGenericTypeAlias_typeParameters_extends3() {
createParser(
'typedef F<A,B,C extends D<E,G,H>> = Function(A a, B b, C c);');
- GenericTypeAlias alias = parseFullCompilationUnitMember();
+ var alias = parseFullCompilationUnitMember() as GenericTypeAlias;
expect(alias, isNotNull);
assertNoErrors();
expect(alias.name, isNotNull);
expect(alias.name.name, 'F');
- expect(alias.typeParameters.typeParameters, hasLength(3));
- TypeParameter typeParam = alias.typeParameters.typeParameters[2];
- NamedType type = typeParam.bound;
- expect(type.typeArguments.arguments, hasLength(3));
+ expect(alias.typeParameters!.typeParameters, hasLength(3));
+ TypeParameter typeParam = alias.typeParameters!.typeParameters[2];
+ var type = typeParam.bound as NamedType;
+ expect(type.typeArguments!.arguments, hasLength(3));
expect(alias.equals, isNotNull);
expect(alias.functionType, isNotNull);
expect(alias.semicolon, isNotNull);
@@ -1692,15 +1693,15 @@
// The scanner creates a single token for `>>=`
// then the parser must split it into three separate tokens.
createParser('typedef F<A,B,C extends D<E,G,H>>=Function(A a, B b, C c);');
- GenericTypeAlias alias = parseFullCompilationUnitMember();
+ var alias = parseFullCompilationUnitMember() as GenericTypeAlias;
expect(alias, isNotNull);
assertNoErrors();
expect(alias.name, isNotNull);
expect(alias.name.name, 'F');
- expect(alias.typeParameters.typeParameters, hasLength(3));
- TypeParameter typeParam = alias.typeParameters.typeParameters[2];
- NamedType type = typeParam.bound;
- expect(type.typeArguments.arguments, hasLength(3));
+ expect(alias.typeParameters!.typeParameters, hasLength(3));
+ TypeParameter typeParam = alias.typeParameters!.typeParameters[2];
+ var type = typeParam.bound as NamedType;
+ expect(type.typeArguments!.arguments, hasLength(3));
expect(alias.equals, isNotNull);
expect(alias.functionType, isNotNull);
expect(alias.semicolon, isNotNull);
@@ -1710,15 +1711,15 @@
// The scanner creates a single token for `>>=`
// then the parser must split it into three separate tokens.
createParser('typedef F<A,B,C extends D<E>>=Function(A a, B b, C c);');
- GenericTypeAlias alias = parseFullCompilationUnitMember();
+ var alias = parseFullCompilationUnitMember() as GenericTypeAlias;
expect(alias, isNotNull);
assertNoErrors();
expect(alias.name, isNotNull);
expect(alias.name.name, 'F');
- expect(alias.typeParameters.typeParameters, hasLength(3));
- TypeParameter typeParam = alias.typeParameters.typeParameters[2];
- NamedType type = typeParam.bound;
- expect(type.typeArguments.arguments, hasLength(1));
+ expect(alias.typeParameters!.typeParameters, hasLength(3));
+ TypeParameter typeParam = alias.typeParameters!.typeParameters[2];
+ var type = typeParam.bound as NamedType;
+ expect(type.typeArguments!.arguments, hasLength(1));
expect(alias.equals, isNotNull);
expect(alias.functionType, isNotNull);
expect(alias.semicolon, isNotNull);
@@ -1726,7 +1727,7 @@
void test_parseImportDirective_configuration_multiple() {
createParser("import 'lib/lib.dart' if (a) 'b.dart' if (c) 'd.dart';");
- ImportDirective directive = parseFullDirective();
+ var directive = parseFullDirective() as ImportDirective;
expect(directive, isNotNull);
assertNoErrors();
expect(directive.keyword, isNotNull);
@@ -1743,7 +1744,7 @@
void test_parseImportDirective_configuration_single() {
createParser("import 'lib/lib.dart' if (a.b == 'c.dart') '';");
- ImportDirective directive = parseFullDirective();
+ var directive = parseFullDirective() as ImportDirective;
expect(directive, isNotNull);
assertNoErrors();
expect(directive.keyword, isNotNull);
@@ -1759,7 +1760,7 @@
void test_parseImportDirective_deferred() {
createParser("import 'lib/lib.dart' deferred as a;");
- ImportDirective directive = parseFullDirective();
+ var directive = parseFullDirective() as ImportDirective;
expect(directive, isNotNull);
assertNoErrors();
expect(directive.keyword, isNotNull);
@@ -1773,7 +1774,7 @@
void test_parseImportDirective_hide() {
createParser("import 'lib/lib.dart' hide A, B;");
- ImportDirective directive = parseFullDirective();
+ var directive = parseFullDirective() as ImportDirective;
expect(directive, isNotNull);
assertNoErrors();
expect(directive.keyword, isNotNull);
@@ -1787,7 +1788,7 @@
void test_parseImportDirective_noCombinator() {
createParser("import 'lib/lib.dart';");
- ImportDirective directive = parseFullDirective();
+ var directive = parseFullDirective() as ImportDirective;
expect(directive, isNotNull);
assertNoErrors();
expect(directive.keyword, isNotNull);
@@ -1801,7 +1802,7 @@
void test_parseImportDirective_prefix() {
createParser("import 'lib/lib.dart' as a;");
- ImportDirective directive = parseFullDirective();
+ var directive = parseFullDirective() as ImportDirective;
expect(directive, isNotNull);
assertNoErrors();
expect(directive.keyword, isNotNull);
@@ -1815,7 +1816,7 @@
void test_parseImportDirective_prefix_hide_show() {
createParser("import 'lib/lib.dart' as a hide A show B;");
- ImportDirective directive = parseFullDirective();
+ var directive = parseFullDirective() as ImportDirective;
expect(directive, isNotNull);
assertNoErrors();
expect(directive.keyword, isNotNull);
@@ -1829,7 +1830,7 @@
void test_parseImportDirective_prefix_show_hide() {
createParser("import 'lib/lib.dart' as a show B hide A;");
- ImportDirective directive = parseFullDirective();
+ var directive = parseFullDirective() as ImportDirective;
expect(directive, isNotNull);
assertNoErrors();
expect(directive.keyword, isNotNull);
@@ -1843,7 +1844,7 @@
void test_parseImportDirective_show() {
createParser("import 'lib/lib.dart' show A, B;");
- ImportDirective directive = parseFullDirective();
+ var directive = parseFullDirective() as ImportDirective;
expect(directive, isNotNull);
assertNoErrors();
expect(directive.keyword, isNotNull);
@@ -1857,7 +1858,7 @@
void test_parseLibraryDirective() {
createParser('library l;');
- LibraryDirective directive = parseFullDirective();
+ var directive = parseFullDirective() as LibraryDirective;
expect(directive, isNotNull);
assertNoErrors();
expect(directive.libraryKeyword, isNotNull);
@@ -1867,7 +1868,7 @@
void test_parseMixinDeclaration_empty() {
createParser('mixin A {}');
- MixinDeclaration declaration = parseFullCompilationUnitMember();
+ var declaration = parseFullCompilationUnitMember() as MixinDeclaration;
expect(declaration, isNotNull);
assertNoErrors();
expect(declaration.metadata, isEmpty);
@@ -1884,13 +1885,13 @@
void test_parseMixinDeclaration_implements() {
createParser('mixin A implements B {}');
- MixinDeclaration declaration = parseFullCompilationUnitMember();
+ var declaration = parseFullCompilationUnitMember() as MixinDeclaration;
expect(declaration, isNotNull);
assertNoErrors();
expect(declaration.metadata, isEmpty);
expect(declaration.documentationComment, isNull);
expect(declaration.onClause, isNull);
- ImplementsClause implementsClause = declaration.implementsClause;
+ var implementsClause = declaration.implementsClause!;
expect(implementsClause.implementsKeyword, isNotNull);
NodeList<TypeName> interfaces = implementsClause.interfaces;
expect(interfaces, hasLength(1));
@@ -1906,18 +1907,18 @@
void test_parseMixinDeclaration_implements2() {
createParser('mixin A implements B<T>, C {}');
- MixinDeclaration declaration = parseFullCompilationUnitMember();
+ var declaration = parseFullCompilationUnitMember() as MixinDeclaration;
expect(declaration, isNotNull);
assertNoErrors();
expect(declaration.metadata, isEmpty);
expect(declaration.documentationComment, isNull);
expect(declaration.onClause, isNull);
- ImplementsClause implementsClause = declaration.implementsClause;
+ var implementsClause = declaration.implementsClause!;
expect(implementsClause.implementsKeyword, isNotNull);
NodeList<TypeName> interfaces = implementsClause.interfaces;
expect(interfaces, hasLength(2));
expect(interfaces[0].name.name, 'B');
- expect(interfaces[0].typeArguments.arguments, hasLength(1));
+ expect(interfaces[0].typeArguments!.arguments, hasLength(1));
expect(interfaces[1].name.name, 'C');
expect(interfaces[1].typeArguments, isNull);
expect(declaration.mixinKeyword, isNotNull);
@@ -1930,7 +1931,7 @@
void test_parseMixinDeclaration_metadata() {
createParser('@Z mixin A {}');
- MixinDeclaration declaration = parseFullCompilationUnitMember();
+ var declaration = parseFullCompilationUnitMember() as MixinDeclaration;
expect(declaration, isNotNull);
assertNoErrors();
NodeList<Annotation> metadata = declaration.metadata;
@@ -1949,12 +1950,12 @@
void test_parseMixinDeclaration_on() {
createParser('mixin A on B {}');
- MixinDeclaration declaration = parseFullCompilationUnitMember();
+ var declaration = parseFullCompilationUnitMember() as MixinDeclaration;
expect(declaration, isNotNull);
assertNoErrors();
expect(declaration.metadata, isEmpty);
expect(declaration.documentationComment, isNull);
- OnClause onClause = declaration.onClause;
+ var onClause = declaration.onClause!;
expect(onClause.onKeyword, isNotNull);
NodeList<TypeName> constraints = onClause.superclassConstraints;
expect(constraints, hasLength(1));
@@ -1971,19 +1972,19 @@
void test_parseMixinDeclaration_on2() {
createParser('mixin A on B, C<T> {}');
- MixinDeclaration declaration = parseFullCompilationUnitMember();
+ var declaration = parseFullCompilationUnitMember() as MixinDeclaration;
expect(declaration, isNotNull);
assertNoErrors();
expect(declaration.metadata, isEmpty);
expect(declaration.documentationComment, isNull);
- OnClause onClause = declaration.onClause;
+ var onClause = declaration.onClause!;
expect(onClause.onKeyword, isNotNull);
NodeList<TypeName> constraints = onClause.superclassConstraints;
expect(constraints, hasLength(2));
expect(constraints[0].name.name, 'B');
expect(constraints[0].typeArguments, isNull);
expect(constraints[1].name.name, 'C');
- expect(constraints[1].typeArguments.arguments, hasLength(1));
+ expect(constraints[1].typeArguments!.arguments, hasLength(1));
expect(declaration.implementsClause, isNull);
expect(declaration.mixinKeyword, isNotNull);
expect(declaration.leftBracket, isNotNull);
@@ -1995,18 +1996,18 @@
void test_parseMixinDeclaration_onAndImplements() {
createParser('mixin A on B implements C {}');
- MixinDeclaration declaration = parseFullCompilationUnitMember();
+ var declaration = parseFullCompilationUnitMember() as MixinDeclaration;
expect(declaration, isNotNull);
assertNoErrors();
expect(declaration.metadata, isEmpty);
expect(declaration.documentationComment, isNull);
- OnClause onClause = declaration.onClause;
+ var onClause = declaration.onClause!;
expect(onClause.onKeyword, isNotNull);
NodeList<TypeName> constraints = onClause.superclassConstraints;
expect(constraints, hasLength(1));
expect(constraints[0].name.name, 'B');
expect(constraints[0].typeArguments, isNull);
- ImplementsClause implementsClause = declaration.implementsClause;
+ var implementsClause = declaration.implementsClause!;
expect(implementsClause.implementsKeyword, isNotNull);
NodeList<TypeName> interfaces = implementsClause.interfaces;
expect(interfaces, hasLength(1));
@@ -2028,7 +2029,7 @@
set s(int v) {f = v;}
int add(int v) => f = f + v;
}''');
- MixinDeclaration declaration = parseFullCompilationUnitMember();
+ var declaration = parseFullCompilationUnitMember() as MixinDeclaration;
expect(declaration, isNotNull);
assertNoErrors();
expect(declaration.metadata, isEmpty);
@@ -2045,13 +2046,13 @@
void test_parseMixinDeclaration_withDocumentationComment() {
createParser('/// Doc\nmixin M {}');
- MixinDeclaration declaration = parseFullCompilationUnitMember();
+ var declaration = parseFullCompilationUnitMember() as MixinDeclaration;
expectCommentText(declaration.documentationComment, '/// Doc');
}
void test_parsePartDirective() {
createParser("part 'lib/lib.dart';");
- PartDirective directive = parseFullDirective();
+ var directive = parseFullDirective() as PartDirective;
expect(directive, isNotNull);
assertNoErrors();
expect(directive.partKeyword, isNotNull);
@@ -2062,7 +2063,7 @@
void test_parsePartOfDirective_name() {
enableUriInPartOf = true;
createParser("part of l;");
- PartOfDirective directive = parseFullDirective();
+ var directive = parseFullDirective() as PartOfDirective;
expect(directive.partKeyword, isNotNull);
expect(directive.ofKeyword, isNotNull);
expect(directive.libraryName, isNotNull);
@@ -2073,7 +2074,7 @@
void test_parsePartOfDirective_uri() {
enableUriInPartOf = true;
createParser("part of 'lib.dart';");
- PartOfDirective directive = parseFullDirective();
+ var directive = parseFullDirective() as PartOfDirective;
expect(directive.partKeyword, isNotNull);
expect(directive.ofKeyword, isNotNull);
expect(directive.libraryName, isNull);
@@ -2113,7 +2114,7 @@
errors: [expectedError(ParserErrorCode.MODIFIER_OUT_OF_ORDER, 6, 4)]);
var declaration = unit.declarations[0] as TopLevelVariableDeclaration;
var declarationList = declaration.variables;
- expect(declarationList.keyword.lexeme, 'final');
+ expect(declarationList.keyword!.lexeme, 'final');
expect(declarationList.type, isNull);
expect(declarationList.variables, hasLength(1));
}
@@ -2135,7 +2136,7 @@
var unit = parseCompilationUnit('late final a;', featureSet: nonNullable);
var declaration = unit.declarations[0] as TopLevelVariableDeclaration;
var declarationList = declaration.variables;
- expect(declarationList.keyword.lexeme, 'final');
+ expect(declarationList.keyword!.lexeme, 'final');
expect(declarationList.type, isNull);
expect(declarationList.variables, hasLength(1));
}
@@ -2171,7 +2172,7 @@
void test_parseTypeAlias_function_noParameters() {
createParser('typedef bool F();');
- FunctionTypeAlias typeAlias = parseFullCompilationUnitMember();
+ var typeAlias = parseFullCompilationUnitMember() as FunctionTypeAlias;
expect(typeAlias, isNotNull);
assertNoErrors();
expect(typeAlias.typedefKeyword, isNotNull);
@@ -2184,7 +2185,7 @@
void test_parseTypeAlias_function_noReturnType() {
createParser('typedef F();');
- FunctionTypeAlias typeAlias = parseFullCompilationUnitMember();
+ var typeAlias = parseFullCompilationUnitMember() as FunctionTypeAlias;
expect(typeAlias, isNotNull);
assertNoErrors();
expect(typeAlias.typedefKeyword, isNotNull);
@@ -2197,7 +2198,7 @@
void test_parseTypeAlias_function_parameterizedReturnType() {
createParser('typedef A<B> F();');
- FunctionTypeAlias typeAlias = parseFullCompilationUnitMember();
+ var typeAlias = parseFullCompilationUnitMember() as FunctionTypeAlias;
expect(typeAlias, isNotNull);
assertNoErrors();
expect(typeAlias.typedefKeyword, isNotNull);
@@ -2210,7 +2211,7 @@
void test_parseTypeAlias_function_parameters() {
createParser('typedef bool F(Object value);');
- FunctionTypeAlias typeAlias = parseFullCompilationUnitMember();
+ var typeAlias = parseFullCompilationUnitMember() as FunctionTypeAlias;
expect(typeAlias, isNotNull);
assertNoErrors();
expect(typeAlias.typedefKeyword, isNotNull);
@@ -2223,7 +2224,7 @@
void test_parseTypeAlias_function_typeParameters() {
createParser('typedef bool F<E>();');
- FunctionTypeAlias typeAlias = parseFullCompilationUnitMember();
+ var typeAlias = parseFullCompilationUnitMember() as FunctionTypeAlias;
expect(typeAlias, isNotNull);
assertNoErrors();
expect(typeAlias.typedefKeyword, isNotNull);
@@ -2236,7 +2237,7 @@
void test_parseTypeAlias_function_voidReturnType() {
createParser('typedef void F();');
- FunctionTypeAlias typeAlias = parseFullCompilationUnitMember();
+ var typeAlias = parseFullCompilationUnitMember() as FunctionTypeAlias;
expect(typeAlias, isNotNull);
assertNoErrors();
expect(typeAlias.typedefKeyword, isNotNull);
@@ -2249,14 +2250,14 @@
void test_parseTypeAlias_genericFunction_noParameters() {
createParser('typedef F = bool Function();');
- GenericTypeAlias typeAlias = parseFullCompilationUnitMember();
+ var typeAlias = parseFullCompilationUnitMember() as GenericTypeAlias;
expect(typeAlias, isNotNull);
assertNoErrors();
expect(typeAlias.typedefKeyword, isNotNull);
expect(typeAlias.name, isNotNull);
expect(typeAlias.typeParameters, isNull);
expect(typeAlias.semicolon, isNotNull);
- GenericFunctionType functionType = typeAlias.functionType;
+ var functionType = typeAlias.functionType as GenericFunctionType;
expect(functionType, isNotNull);
expect(functionType.parameters, isNotNull);
expect(functionType.returnType, isNotNull);
@@ -2265,14 +2266,14 @@
void test_parseTypeAlias_genericFunction_noReturnType() {
createParser('typedef F = Function();');
- GenericTypeAlias typeAlias = parseFullCompilationUnitMember();
+ var typeAlias = parseFullCompilationUnitMember() as GenericTypeAlias;
expect(typeAlias, isNotNull);
assertNoErrors();
expect(typeAlias.typedefKeyword, isNotNull);
expect(typeAlias.name, isNotNull);
expect(typeAlias.typeParameters, isNull);
expect(typeAlias.semicolon, isNotNull);
- GenericFunctionType functionType = typeAlias.functionType;
+ var functionType = typeAlias.functionType as GenericFunctionType;
expect(functionType, isNotNull);
expect(functionType.parameters, isNotNull);
expect(functionType.returnType, isNull);
@@ -2281,14 +2282,14 @@
void test_parseTypeAlias_genericFunction_parameterizedReturnType() {
createParser('typedef F = A<B> Function();');
- GenericTypeAlias typeAlias = parseFullCompilationUnitMember();
+ var typeAlias = parseFullCompilationUnitMember() as GenericTypeAlias;
expect(typeAlias, isNotNull);
assertNoErrors();
expect(typeAlias.typedefKeyword, isNotNull);
expect(typeAlias.name, isNotNull);
expect(typeAlias.typeParameters, isNull);
expect(typeAlias.semicolon, isNotNull);
- GenericFunctionType functionType = typeAlias.functionType;
+ var functionType = typeAlias.functionType as GenericFunctionType;
expect(functionType, isNotNull);
expect(functionType.parameters, isNotNull);
expect(functionType.returnType, isNotNull);
@@ -2297,14 +2298,14 @@
void test_parseTypeAlias_genericFunction_parameters() {
createParser('typedef F = bool Function(Object value);');
- GenericTypeAlias typeAlias = parseFullCompilationUnitMember();
+ var typeAlias = parseFullCompilationUnitMember() as GenericTypeAlias;
expect(typeAlias, isNotNull);
assertNoErrors();
expect(typeAlias.typedefKeyword, isNotNull);
expect(typeAlias.name, isNotNull);
expect(typeAlias.typeParameters, isNull);
expect(typeAlias.semicolon, isNotNull);
- GenericFunctionType functionType = typeAlias.functionType;
+ var functionType = typeAlias.functionType as GenericFunctionType;
expect(functionType, isNotNull);
expect(functionType.parameters, isNotNull);
expect(functionType.returnType, isNotNull);
@@ -2313,14 +2314,14 @@
void test_parseTypeAlias_genericFunction_typeParameters() {
createParser('typedef F = bool Function<E>();');
- GenericTypeAlias typeAlias = parseFullCompilationUnitMember();
+ var typeAlias = parseFullCompilationUnitMember() as GenericTypeAlias;
expect(typeAlias, isNotNull);
assertNoErrors();
expect(typeAlias.typedefKeyword, isNotNull);
expect(typeAlias.name, isNotNull);
expect(typeAlias.typeParameters, isNull);
expect(typeAlias.semicolon, isNotNull);
- GenericFunctionType functionType = typeAlias.functionType;
+ var functionType = typeAlias.functionType as GenericFunctionType;
expect(functionType, isNotNull);
expect(functionType.parameters, isNotNull);
expect(functionType.returnType, isNotNull);
@@ -2329,14 +2330,14 @@
void test_parseTypeAlias_genericFunction_typeParameters_noParameters() {
createParser('typedef F<T> = bool Function();');
- GenericTypeAlias typeAlias = parseFullCompilationUnitMember();
+ var typeAlias = parseFullCompilationUnitMember() as GenericTypeAlias;
expect(typeAlias, isNotNull);
assertNoErrors();
expect(typeAlias.typedefKeyword, isNotNull);
expect(typeAlias.name, isNotNull);
expect(typeAlias.typeParameters, isNotNull);
expect(typeAlias.semicolon, isNotNull);
- GenericFunctionType functionType = typeAlias.functionType;
+ var functionType = typeAlias.functionType as GenericFunctionType;
expect(functionType, isNotNull);
expect(functionType.parameters, isNotNull);
expect(functionType.returnType, isNotNull);
@@ -2345,14 +2346,14 @@
void test_parseTypeAlias_genericFunction_typeParameters_noReturnType() {
createParser('typedef F<T> = Function();');
- GenericTypeAlias typeAlias = parseFullCompilationUnitMember();
+ var typeAlias = parseFullCompilationUnitMember() as GenericTypeAlias;
expect(typeAlias, isNotNull);
assertNoErrors();
expect(typeAlias.typedefKeyword, isNotNull);
expect(typeAlias.name, isNotNull);
expect(typeAlias.typeParameters, isNotNull);
expect(typeAlias.semicolon, isNotNull);
- GenericFunctionType functionType = typeAlias.functionType;
+ var functionType = typeAlias.functionType as GenericFunctionType;
expect(functionType, isNotNull);
expect(functionType.parameters, isNotNull);
expect(functionType.returnType, isNull);
@@ -2362,14 +2363,14 @@
void
test_parseTypeAlias_genericFunction_typeParameters_parameterizedReturnType() {
createParser('typedef F<T> = A<B> Function();');
- GenericTypeAlias typeAlias = parseFullCompilationUnitMember();
+ var typeAlias = parseFullCompilationUnitMember() as GenericTypeAlias;
expect(typeAlias, isNotNull);
assertNoErrors();
expect(typeAlias.typedefKeyword, isNotNull);
expect(typeAlias.name, isNotNull);
expect(typeAlias.typeParameters, isNotNull);
expect(typeAlias.semicolon, isNotNull);
- GenericFunctionType functionType = typeAlias.functionType;
+ var functionType = typeAlias.functionType as GenericFunctionType;
expect(functionType, isNotNull);
expect(functionType.parameters, isNotNull);
expect(functionType.returnType, isNotNull);
@@ -2378,14 +2379,14 @@
void test_parseTypeAlias_genericFunction_typeParameters_parameters() {
createParser('typedef F<T> = bool Function(Object value);');
- GenericTypeAlias typeAlias = parseFullCompilationUnitMember();
+ var typeAlias = parseFullCompilationUnitMember() as GenericTypeAlias;
expect(typeAlias, isNotNull);
assertNoErrors();
expect(typeAlias.typedefKeyword, isNotNull);
expect(typeAlias.name, isNotNull);
expect(typeAlias.typeParameters, isNotNull);
expect(typeAlias.semicolon, isNotNull);
- GenericFunctionType functionType = typeAlias.functionType;
+ var functionType = typeAlias.functionType as GenericFunctionType;
expect(functionType, isNotNull);
expect(functionType.parameters, isNotNull);
expect(functionType.returnType, isNotNull);
@@ -2394,14 +2395,14 @@
void test_parseTypeAlias_genericFunction_typeParameters_typeParameters() {
createParser('typedef F<T> = bool Function<E>();');
- GenericTypeAlias typeAlias = parseFullCompilationUnitMember();
+ var typeAlias = parseFullCompilationUnitMember() as GenericTypeAlias;
expect(typeAlias, isNotNull);
assertNoErrors();
expect(typeAlias.typedefKeyword, isNotNull);
expect(typeAlias.name, isNotNull);
expect(typeAlias.typeParameters, isNotNull);
expect(typeAlias.semicolon, isNotNull);
- GenericFunctionType functionType = typeAlias.functionType;
+ var functionType = typeAlias.functionType as GenericFunctionType;
expect(functionType, isNotNull);
expect(functionType.parameters, isNotNull);
expect(functionType.returnType, isNotNull);
@@ -2410,14 +2411,14 @@
void test_parseTypeAlias_genericFunction_typeParameters_voidReturnType() {
createParser('typedef F<T> = void Function();');
- GenericTypeAlias typeAlias = parseFullCompilationUnitMember();
+ var typeAlias = parseFullCompilationUnitMember() as GenericTypeAlias;
expect(typeAlias, isNotNull);
assertNoErrors();
expect(typeAlias.typedefKeyword, isNotNull);
expect(typeAlias.name, isNotNull);
expect(typeAlias.typeParameters, isNotNull);
expect(typeAlias.semicolon, isNotNull);
- GenericFunctionType functionType = typeAlias.functionType;
+ var functionType = typeAlias.functionType as GenericFunctionType;
expect(functionType, isNotNull);
expect(functionType.parameters, isNotNull);
expect(functionType.returnType, isNotNull);
@@ -2426,14 +2427,14 @@
void test_parseTypeAlias_genericFunction_voidReturnType() {
createParser('typedef F = void Function();');
- GenericTypeAlias typeAlias = parseFullCompilationUnitMember();
+ var typeAlias = parseFullCompilationUnitMember() as GenericTypeAlias;
expect(typeAlias, isNotNull);
assertNoErrors();
expect(typeAlias.typedefKeyword, isNotNull);
expect(typeAlias.name, isNotNull);
expect(typeAlias.typeParameters, isNull);
expect(typeAlias.semicolon, isNotNull);
- GenericFunctionType functionType = typeAlias.functionType;
+ var functionType = typeAlias.functionType as GenericFunctionType;
expect(functionType, isNotNull);
expect(functionType.parameters, isNotNull);
expect(functionType.returnType, isNotNull);
@@ -2453,7 +2454,7 @@
B> {}
''');
var classDeclaration = parseFullCompilationUnitMember() as ClassDeclaration;
- var typeVariable = classDeclaration.typeParameters.typeParameters[0];
+ var typeVariable = classDeclaration.typeParameters!.typeParameters[0];
expectCommentText(typeVariable.documentationComment, '/// Doc');
}
diff --git a/pkg/analyzer/test/generated/type_system_test.dart b/pkg/analyzer/test/generated/type_system_test.dart
index 0d06335..146d36f 100644
--- a/pkg/analyzer/test/generated/type_system_test.dart
+++ b/pkg/analyzer/test/generated/type_system_test.dart
@@ -8,6 +8,7 @@
import 'package:analyzer/dart/element/type_provider.dart';
import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/dart/element/type.dart';
+import 'package:analyzer/src/dart/element/type_provider.dart';
import 'package:analyzer/src/dart/element/type_system.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -23,15 +24,15 @@
}
abstract class AbstractTypeSystemNullSafetyTest with ElementsTypesMixin {
- TestAnalysisContext analysisContext;
+ late TestAnalysisContext analysisContext;
@override
- LibraryElementImpl testLibrary;
+ late LibraryElementImpl testLibrary;
@override
- TypeProvider typeProvider;
+ late TypeProviderImpl typeProvider;
- TypeSystemImpl typeSystem;
+ late TypeSystemImpl typeSystem;
FeatureSet get testFeatureSet {
return FeatureSet.forTesting(
@@ -56,15 +57,15 @@
}
abstract class AbstractTypeSystemTest with ElementsTypesMixin {
- TestAnalysisContext analysisContext;
+ late TestAnalysisContext analysisContext;
@override
- LibraryElementImpl testLibrary;
+ late LibraryElementImpl testLibrary;
@override
- TypeProvider typeProvider;
+ late TypeProvider typeProvider;
- TypeSystemImpl typeSystem;
+ late TypeSystemImpl typeSystem;
FeatureSet get testFeatureSet {
return FeatureSet.forTesting();
@@ -390,7 +391,7 @@
}
void _checkGroups(DartType t1,
- {List<DartType> interassignable, List<DartType> unrelated}) {
+ {List<DartType>? interassignable, List<DartType>? unrelated}) {
if (interassignable != null) {
for (DartType t2 in interassignable) {
_checkEquivalent(t1, t2);
@@ -467,6 +468,10 @@
}
test_typeParameter() {
+ TypeParameterTypeImpl tryPromote(DartType to, TypeParameterTypeImpl from) {
+ return typeSystem.tryPromoteToType(to, from) as TypeParameterTypeImpl;
+ }
+
void check(
TypeParameterTypeImpl type,
TypeParameterElement expectedElement,
@@ -479,10 +484,10 @@
var T = typeParameter('T');
var T0 = typeParameterTypeNone(T);
- var T1 = typeSystem.tryPromoteToType(numNone, T0);
+ var T1 = tryPromote(numNone, T0);
check(T1, T, numNone);
- var T2 = typeSystem.tryPromoteToType(intNone, T1);
+ var T2 = tryPromote(intNone, T1);
check(T2, T, intNone);
}
}
diff --git a/pkg/analyzer/test/generated/utilities_test.dart b/pkg/analyzer/test/generated/utilities_test.dart
index 9bf5576b..9f59914 100644
--- a/pkg/analyzer/test/generated/utilities_test.dart
+++ b/pkg/analyzer/test/generated/utilities_test.dart
@@ -16,6 +16,7 @@
import 'package:analyzer/src/generated/parser.dart';
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/generated/testing/ast_test_factory.dart';
+import 'package:analyzer/src/generated/testing/token_factory.dart';
import 'package:analyzer/src/generated/utilities_collection.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -40,7 +41,7 @@
AstCloneComparator(this.expectTokensCopied);
@override
- bool isEqualNodes(AstNode first, AstNode second) {
+ bool isEqualNodes(AstNode? first, AstNode? second) {
if (first != null && identical(first, second)) {
fail('Failed to copy node: $first (${first.offset})');
}
@@ -48,14 +49,15 @@
}
@override
- bool isEqualTokens(Token first, Token second) {
+ bool isEqualTokens(Token? first, Token? second) {
if (expectTokensCopied && first != null && identical(first, second)) {
fail('Failed to copy token: ${first.lexeme} (${first.offset})');
}
- if (first?.precedingComments != null) {
- CommentToken comment = first.precedingComments;
- if (comment.parent != first) {
- fail('Failed to link the comment "$comment" with the token "$first".');
+ var firstComment = first?.precedingComments;
+ if (firstComment != null) {
+ if (firstComment.parent != first) {
+ fail(
+ 'Failed to link the comment "$firstComment" with the token "$first".');
}
}
return super.isEqualTokens(first, second);
@@ -1126,7 +1128,7 @@
/// given node
void _assertClone(AstNode node) {
{
- AstNode clone = node.accept(AstCloner());
+ AstNode clone = node.accept(AstCloner())!;
AstCloneComparator comparator = AstCloneComparator(false);
if (!comparator.isEqualNodes(node, clone)) {
fail("Failed to clone ${node.runtimeType.toString()}");
@@ -1134,7 +1136,7 @@
_assertEqualTokens(clone, node);
}
{
- AstNode clone = node.accept(AstCloner(true));
+ AstNode clone = node.accept(AstCloner(true))!;
AstCloneComparator comparator = AstCloneComparator(true);
if (!comparator.isEqualNodes(node, clone)) {
fail("Failed to clone ${node.runtimeType.toString()}");
@@ -1166,7 +1168,7 @@
Expression _parseExpression(String code) {
CompilationUnit unit = _parseUnit('var v = $code;');
var decl = unit.declarations.single as TopLevelVariableDeclaration;
- return decl.variables.variables.single.initializer;
+ return decl.variables.variables.single.initializer!;
}
Statement _parseStatement(String code) {
@@ -1180,7 +1182,7 @@
GatheringErrorListener listener = GatheringErrorListener();
CharSequenceReader reader = CharSequenceReader(code);
var featureSet = FeatureSet.forTesting(sdkVersion: '2.2.2');
- Scanner scanner = Scanner(null, reader, listener)
+ Scanner scanner = Scanner(TestSource(), reader, listener)
..configureFeatures(
featureSetForOverriding: featureSet,
featureSet: featureSet,
@@ -1216,16 +1218,16 @@
_assertHasPrevious(original);
_assertHasPrevious(clone);
}
- Token stopOriginalToken = originalNode.endToken.next;
- Token skipCloneComment;
- Token skipOriginalComment;
+ Token stopOriginalToken = originalNode.endToken.next!;
+ Token? skipCloneComment;
+ Token? skipOriginalComment;
while (original != stopOriginalToken) {
expect(clone, isNotNull);
_assertEqualToken(clone, original);
// comments
{
- Token cloneComment = clone.precedingComments;
- Token originalComment = original.precedingComments;
+ var cloneComment = clone.precedingComments;
+ var originalComment = original.precedingComments;
if (cloneComment != skipCloneComment &&
originalComment != skipOriginalComment) {
while (true) {
@@ -1234,9 +1236,9 @@
break;
}
expect(cloneComment, isNotNull);
- _assertEqualToken(cloneComment, originalComment);
- cloneComment = cloneComment.next;
- originalComment = originalComment.next;
+ _assertEqualToken(cloneComment!, originalComment);
+ cloneComment = cloneComment.next as CommentToken?;
+ originalComment = originalComment.next as CommentToken?;
}
}
}
@@ -1245,24 +1247,26 @@
expect(clone, TypeMatcher<CommentToken>());
skipOriginalComment = original;
skipCloneComment = clone;
- original = (original as CommentToken).parent;
- clone = (clone as CommentToken).parent;
+ original = original.parent!;
+ clone = (clone as CommentToken).parent!;
} else {
- clone = clone.next;
- original = original.next;
+ clone = clone.next!;
+ original = original.next!;
}
}
}
/// Assert that the [token] has `previous` set, and if it `EOF`, then it
/// points itself.
- static void _assertHasPrevious(Token token) {
- expect(token, isNotNull);
+ static void _assertHasPrevious(Token? token) {
+ if (token == null) {
+ fail('Expected not null');
+ }
if (token.type == TokenType.EOF) {
return;
}
while (token != null) {
- Token previous = token.previous;
+ var previous = token.previous;
expect(previous, isNotNull);
if (token.type == TokenType.EOF) {
expect(previous, same(token));
@@ -1343,7 +1347,9 @@
dynamic exception, StackTrace stackTrace) {
handlerInvoked = true;
});
- astFactory.nullLiteral(null).accept(visitor);
+ astFactory
+ .nullLiteral(TokenFactory.tokenFromKeyword(Keyword.NULL))
+ .accept(visitor);
expect(handlerInvoked, isTrue);
}
}
@@ -1351,7 +1357,7 @@
class Getter_NodeReplacerTest_test_annotation
implements NodeReplacerTest_Getter<Annotation, ArgumentList> {
@override
- ArgumentList get(Annotation node) => node.arguments;
+ ArgumentList? get(Annotation node) => node.arguments;
}
class Getter_NodeReplacerTest_test_annotation_2
@@ -1363,13 +1369,13 @@
class Getter_NodeReplacerTest_test_annotation_3
implements NodeReplacerTest_Getter<Annotation, SimpleIdentifier> {
@override
- SimpleIdentifier get(Annotation node) => node.constructorName;
+ SimpleIdentifier? get(Annotation node) => node.constructorName;
}
class Getter_NodeReplacerTest_test_asExpression
implements NodeReplacerTest_Getter<AsExpression, TypeAnnotation> {
@override
- TypeAnnotation get(AsExpression node) => node.type;
+ TypeAnnotation? get(AsExpression node) => node.type;
}
class Getter_NodeReplacerTest_test_asExpression_2
@@ -1387,7 +1393,7 @@
class Getter_NodeReplacerTest_test_assertStatement_2
implements NodeReplacerTest_Getter<AssertStatement, Expression> {
@override
- Expression get(AssertStatement node) => node.message;
+ Expression? get(AssertStatement node) => node.message;
}
class Getter_NodeReplacerTest_test_assignmentExpression
@@ -1429,7 +1435,7 @@
class Getter_NodeReplacerTest_test_breakStatement
implements NodeReplacerTest_Getter<BreakStatement, SimpleIdentifier> {
@override
- SimpleIdentifier get(BreakStatement node) => node.label;
+ SimpleIdentifier? get(BreakStatement node) => node.label;
}
class Getter_NodeReplacerTest_test_cascadeExpression
@@ -1441,49 +1447,49 @@
class Getter_NodeReplacerTest_test_catchClause
implements NodeReplacerTest_Getter<CatchClause, SimpleIdentifier> {
@override
- SimpleIdentifier get(CatchClause node) => node.stackTraceParameter;
+ SimpleIdentifier? get(CatchClause node) => node.stackTraceParameter;
}
class Getter_NodeReplacerTest_test_catchClause_2
implements NodeReplacerTest_Getter<CatchClause, SimpleIdentifier> {
@override
- SimpleIdentifier get(CatchClause node) => node.exceptionParameter;
+ SimpleIdentifier? get(CatchClause node) => node.exceptionParameter;
}
class Getter_NodeReplacerTest_test_catchClause_3
implements NodeReplacerTest_Getter<CatchClause, TypeAnnotation> {
@override
- TypeAnnotation get(CatchClause node) => node.exceptionType;
+ TypeAnnotation? get(CatchClause node) => node.exceptionType;
}
class Getter_NodeReplacerTest_test_classDeclaration
implements NodeReplacerTest_Getter<ClassDeclaration, ImplementsClause> {
@override
- ImplementsClause get(ClassDeclaration node) => node.implementsClause;
+ ImplementsClause? get(ClassDeclaration node) => node.implementsClause;
}
class Getter_NodeReplacerTest_test_classDeclaration_2
implements NodeReplacerTest_Getter<ClassDeclaration, WithClause> {
@override
- WithClause get(ClassDeclaration node) => node.withClause;
+ WithClause? get(ClassDeclaration node) => node.withClause;
}
class Getter_NodeReplacerTest_test_classDeclaration_3
implements NodeReplacerTest_Getter<ClassDeclaration, NativeClause> {
@override
- NativeClause get(ClassDeclaration node) => node.nativeClause;
+ NativeClause? get(ClassDeclaration node) => node.nativeClause;
}
class Getter_NodeReplacerTest_test_classDeclaration_4
implements NodeReplacerTest_Getter<ClassDeclaration, ExtendsClause> {
@override
- ExtendsClause get(ClassDeclaration node) => node.extendsClause;
+ ExtendsClause? get(ClassDeclaration node) => node.extendsClause;
}
class Getter_NodeReplacerTest_test_classDeclaration_5
implements NodeReplacerTest_Getter<ClassDeclaration, TypeParameterList> {
@override
- TypeParameterList get(ClassDeclaration node) => node.typeParameters;
+ TypeParameterList? get(ClassDeclaration node) => node.typeParameters;
}
class Getter_NodeReplacerTest_test_classDeclaration_6
@@ -1501,7 +1507,7 @@
class Getter_NodeReplacerTest_test_classTypeAlias_2
implements NodeReplacerTest_Getter<ClassTypeAlias, ImplementsClause> {
@override
- ImplementsClause get(ClassTypeAlias node) => node.implementsClause;
+ ImplementsClause? get(ClassTypeAlias node) => node.implementsClause;
}
class Getter_NodeReplacerTest_test_classTypeAlias_3
@@ -1519,7 +1525,7 @@
class Getter_NodeReplacerTest_test_classTypeAlias_5
implements NodeReplacerTest_Getter<ClassTypeAlias, TypeParameterList> {
@override
- TypeParameterList get(ClassTypeAlias node) => node.typeParameters;
+ TypeParameterList? get(ClassTypeAlias node) => node.typeParameters;
}
class Getter_NodeReplacerTest_test_commentReference
@@ -1531,7 +1537,7 @@
class Getter_NodeReplacerTest_test_compilationUnit
implements NodeReplacerTest_Getter<CompilationUnit, ScriptTag> {
@override
- ScriptTag get(CompilationUnit node) => node.scriptTag;
+ ScriptTag? get(CompilationUnit node) => node.scriptTag;
}
class Getter_NodeReplacerTest_test_conditionalExpression
@@ -1556,7 +1562,7 @@
implements
NodeReplacerTest_Getter<ConstructorDeclaration, ConstructorName> {
@override
- ConstructorName get(ConstructorDeclaration node) =>
+ ConstructorName? get(ConstructorDeclaration node) =>
node.redirectedConstructor;
}
@@ -1564,7 +1570,7 @@
implements
NodeReplacerTest_Getter<ConstructorDeclaration, SimpleIdentifier> {
@override
- SimpleIdentifier get(ConstructorDeclaration node) => node.name;
+ SimpleIdentifier? get(ConstructorDeclaration node) => node.name;
}
class Getter_NodeReplacerTest_test_constructorDeclaration_3
@@ -1583,7 +1589,7 @@
class Getter_NodeReplacerTest_test_constructorDeclaration_5
implements NodeReplacerTest_Getter<ConstructorDeclaration, FunctionBody> {
@override
- FunctionBody get(ConstructorDeclaration node) => node.body;
+ FunctionBody? get(ConstructorDeclaration node) => node.body;
}
class Getter_NodeReplacerTest_test_constructorFieldInitializer
@@ -1609,19 +1615,19 @@
class Getter_NodeReplacerTest_test_constructorName_2
implements NodeReplacerTest_Getter<ConstructorName, SimpleIdentifier> {
@override
- SimpleIdentifier get(ConstructorName node) => node.name;
+ SimpleIdentifier? get(ConstructorName node) => node.name;
}
class Getter_NodeReplacerTest_test_continueStatement
implements NodeReplacerTest_Getter<ContinueStatement, SimpleIdentifier> {
@override
- SimpleIdentifier get(ContinueStatement node) => node.label;
+ SimpleIdentifier? get(ContinueStatement node) => node.label;
}
class Getter_NodeReplacerTest_test_declaredIdentifier
implements NodeReplacerTest_Getter<DeclaredIdentifier, TypeAnnotation> {
@override
- TypeAnnotation get(DeclaredIdentifier node) => node.type;
+ TypeAnnotation? get(DeclaredIdentifier node) => node.type;
}
class Getter_NodeReplacerTest_test_declaredIdentifier_2
@@ -1640,7 +1646,7 @@
class Getter_NodeReplacerTest_test_defaultFormalParameter_2
implements NodeReplacerTest_Getter<DefaultFormalParameter, Expression> {
@override
- Expression get(DefaultFormalParameter node) => node.defaultValue;
+ Expression? get(DefaultFormalParameter node) => node.defaultValue;
}
class Getter_NodeReplacerTest_test_doStatement
@@ -1697,13 +1703,13 @@
implements
NodeReplacerTest_Getter<FieldFormalParameter, FormalParameterList> {
@override
- FormalParameterList get(FieldFormalParameter node) => node.parameters;
+ FormalParameterList? get(FieldFormalParameter node) => node.parameters;
}
class Getter_NodeReplacerTest_test_fieldFormalParameter_2
implements NodeReplacerTest_Getter<FieldFormalParameter, TypeAnnotation> {
@override
- TypeAnnotation get(FieldFormalParameter node) => node.type;
+ TypeAnnotation? get(FieldFormalParameter node) => node.type;
}
class Getter_NodeReplacerTest_test_forEachStatement_withIdentifier
@@ -1755,14 +1761,14 @@
class Getter_NodeReplacerTest_test_forStatement_withInitialization_2
implements NodeReplacerTest_Getter<ForStatement, Expression> {
@override
- Expression get(ForStatement node) =>
+ Expression? get(ForStatement node) =>
(node.forLoopParts as ForParts).condition;
}
class Getter_NodeReplacerTest_test_forStatement_withInitialization_3
implements NodeReplacerTest_Getter<ForStatement, Expression> {
@override
- Expression get(ForStatement node) =>
+ Expression? get(ForStatement node) =>
(node.forLoopParts as ForPartsWithExpression).initialization;
}
@@ -1782,14 +1788,14 @@
class Getter_NodeReplacerTest_test_forStatement_withVariables_3
implements NodeReplacerTest_Getter<ForStatement, Expression> {
@override
- Expression get(ForStatement node) =>
+ Expression? get(ForStatement node) =>
(node.forLoopParts as ForParts).condition;
}
class Getter_NodeReplacerTest_test_functionDeclaration
implements NodeReplacerTest_Getter<FunctionDeclaration, TypeAnnotation> {
@override
- TypeAnnotation get(FunctionDeclaration node) => node.returnType;
+ TypeAnnotation? get(FunctionDeclaration node) => node.returnType;
}
class Getter_NodeReplacerTest_test_functionDeclaration_2
@@ -1818,13 +1824,13 @@
implements
NodeReplacerTest_Getter<FunctionExpression, FormalParameterList> {
@override
- FormalParameterList get(FunctionExpression node) => node.parameters;
+ FormalParameterList? get(FunctionExpression node) => node.parameters;
}
class Getter_NodeReplacerTest_test_functionExpression_2
implements NodeReplacerTest_Getter<FunctionExpression, FunctionBody> {
@override
- FunctionBody get(FunctionExpression node) => node.body;
+ FunctionBody? get(FunctionExpression node) => node.body;
}
class Getter_NodeReplacerTest_test_functionExpressionInvocation
@@ -1844,7 +1850,7 @@
class Getter_NodeReplacerTest_test_functionTypeAlias
implements NodeReplacerTest_Getter<FunctionTypeAlias, TypeParameterList> {
@override
- TypeParameterList get(FunctionTypeAlias node) => node.typeParameters;
+ TypeParameterList? get(FunctionTypeAlias node) => node.typeParameters;
}
class Getter_NodeReplacerTest_test_functionTypeAlias_2
@@ -1856,7 +1862,7 @@
class Getter_NodeReplacerTest_test_functionTypeAlias_3
implements NodeReplacerTest_Getter<FunctionTypeAlias, TypeAnnotation> {
@override
- TypeAnnotation get(FunctionTypeAlias node) => node.returnType;
+ TypeAnnotation? get(FunctionTypeAlias node) => node.returnType;
}
class Getter_NodeReplacerTest_test_functionTypeAlias_4
@@ -1869,7 +1875,7 @@
implements
NodeReplacerTest_Getter<FunctionTypedFormalParameter, TypeAnnotation> {
@override
- TypeAnnotation get(FunctionTypedFormalParameter node) => node.returnType;
+ TypeAnnotation? get(FunctionTypedFormalParameter node) => node.returnType;
}
class Getter_NodeReplacerTest_test_functionTypedFormalParameter_2
@@ -1889,7 +1895,7 @@
class Getter_NodeReplacerTest_test_ifStatement_2
implements NodeReplacerTest_Getter<IfStatement, Statement> {
@override
- Statement get(IfStatement node) => node.elseStatement;
+ Statement? get(IfStatement node) => node.elseStatement;
}
class Getter_NodeReplacerTest_test_ifStatement_3
@@ -1901,13 +1907,13 @@
class Getter_NodeReplacerTest_test_importDirective
implements NodeReplacerTest_Getter<ImportDirective, SimpleIdentifier> {
@override
- SimpleIdentifier get(ImportDirective node) => node.prefix;
+ SimpleIdentifier? get(ImportDirective node) => node.prefix;
}
class Getter_NodeReplacerTest_test_indexExpression
implements NodeReplacerTest_Getter<IndexExpression, Expression> {
@override
- Expression get(IndexExpression node) => node.target;
+ Expression? get(IndexExpression node) => node.target;
}
class Getter_NodeReplacerTest_test_indexExpression_2
@@ -1945,7 +1951,7 @@
class Getter_NodeReplacerTest_test_isExpression_2
implements NodeReplacerTest_Getter<IsExpression, TypeAnnotation> {
@override
- TypeAnnotation get(IsExpression node) => node.type;
+ TypeAnnotation? get(IsExpression node) => node.type;
}
class Getter_NodeReplacerTest_test_label
@@ -1981,7 +1987,7 @@
class Getter_NodeReplacerTest_test_methodDeclaration
implements NodeReplacerTest_Getter<MethodDeclaration, TypeAnnotation> {
@override
- TypeAnnotation get(MethodDeclaration node) => node.returnType;
+ TypeAnnotation? get(MethodDeclaration node) => node.returnType;
}
class Getter_NodeReplacerTest_test_methodDeclaration_2
@@ -1999,7 +2005,7 @@
class Getter_NodeReplacerTest_test_methodDeclaration_4
implements NodeReplacerTest_Getter<MethodDeclaration, FormalParameterList> {
@override
- FormalParameterList get(MethodDeclaration node) => node.parameters;
+ FormalParameterList? get(MethodDeclaration node) => node.parameters;
}
class Getter_NodeReplacerTest_test_methodInvocation
@@ -2011,7 +2017,7 @@
class Getter_NodeReplacerTest_test_methodInvocation_2
implements NodeReplacerTest_Getter<MethodInvocation, Expression> {
@override
- Expression get(MethodInvocation node) => node.target;
+ Expression? get(MethodInvocation node) => node.target;
}
class Getter_NodeReplacerTest_test_methodInvocation_3
@@ -2035,13 +2041,13 @@
class Getter_NodeReplacerTest_test_nativeClause
implements NodeReplacerTest_Getter<NativeClause, StringLiteral> {
@override
- StringLiteral get(NativeClause node) => node.name;
+ StringLiteral? get(NativeClause node) => node.name;
}
class Getter_NodeReplacerTest_test_nativeFunctionBody
implements NodeReplacerTest_Getter<NativeFunctionBody, StringLiteral> {
@override
- StringLiteral get(NativeFunctionBody node) => node.stringLiteral;
+ StringLiteral? get(NativeFunctionBody node) => node.stringLiteral;
}
class Getter_NodeReplacerTest_test_parenthesizedExpression
@@ -2053,7 +2059,7 @@
class Getter_NodeReplacerTest_test_partOfDirective
implements NodeReplacerTest_Getter<PartOfDirective, LibraryIdentifier> {
@override
- LibraryIdentifier get(PartOfDirective node) => node.libraryName;
+ LibraryIdentifier? get(PartOfDirective node) => node.libraryName;
}
class Getter_NodeReplacerTest_test_postfixExpression
@@ -2083,7 +2089,7 @@
class Getter_NodeReplacerTest_test_propertyAccess
implements NodeReplacerTest_Getter<PropertyAccess, Expression> {
@override
- Expression get(PropertyAccess node) => node.target;
+ Expression? get(PropertyAccess node) => node.target;
}
class Getter_NodeReplacerTest_test_propertyAccess_2
@@ -2097,7 +2103,7 @@
NodeReplacerTest_Getter<RedirectingConstructorInvocation,
SimpleIdentifier> {
@override
- SimpleIdentifier get(RedirectingConstructorInvocation node) =>
+ SimpleIdentifier? get(RedirectingConstructorInvocation node) =>
node.constructorName;
}
@@ -2112,20 +2118,21 @@
class Getter_NodeReplacerTest_test_returnStatement
implements NodeReplacerTest_Getter<ReturnStatement, Expression> {
@override
- Expression get(ReturnStatement node) => node.expression;
+ Expression? get(ReturnStatement node) => node.expression;
}
class Getter_NodeReplacerTest_test_simpleFormalParameter
implements NodeReplacerTest_Getter<SimpleFormalParameter, TypeAnnotation> {
@override
- TypeAnnotation get(SimpleFormalParameter node) => node.type;
+ TypeAnnotation? get(SimpleFormalParameter node) => node.type;
}
class Getter_NodeReplacerTest_test_superConstructorInvocation
implements
NodeReplacerTest_Getter<SuperConstructorInvocation, SimpleIdentifier> {
@override
- SimpleIdentifier get(SuperConstructorInvocation node) => node.constructorName;
+ SimpleIdentifier? get(SuperConstructorInvocation node) =>
+ node.constructorName;
}
class Getter_NodeReplacerTest_test_superConstructorInvocation_2
@@ -2165,7 +2172,7 @@
class Getter_NodeReplacerTest_test_tryStatement
implements NodeReplacerTest_Getter<TryStatement, Block> {
@override
- Block get(TryStatement node) => node.finallyBlock;
+ Block? get(TryStatement node) => node.finallyBlock;
}
class Getter_NodeReplacerTest_test_tryStatement_2
@@ -2177,7 +2184,7 @@
class Getter_NodeReplacerTest_test_typeName
implements NodeReplacerTest_Getter<TypeName, TypeArgumentList> {
@override
- TypeArgumentList get(TypeName node) => node.typeArguments;
+ TypeArgumentList? get(TypeName node) => node.typeArguments;
}
class Getter_NodeReplacerTest_test_typeName_2
@@ -2189,7 +2196,7 @@
class Getter_NodeReplacerTest_test_typeParameter
implements NodeReplacerTest_Getter<TypeParameter, TypeAnnotation> {
@override
- TypeAnnotation get(TypeParameter node) => node.bound;
+ TypeAnnotation? get(TypeParameter node) => node.bound;
}
class Getter_NodeReplacerTest_test_typeParameter_2
@@ -2207,14 +2214,14 @@
class Getter_NodeReplacerTest_test_variableDeclaration_2
implements NodeReplacerTest_Getter<VariableDeclaration, Expression> {
@override
- Expression get(VariableDeclaration node) => node.initializer;
+ Expression? get(VariableDeclaration node) => node.initializer;
}
class Getter_NodeReplacerTest_test_variableDeclarationList
implements
NodeReplacerTest_Getter<VariableDeclarationList, TypeAnnotation> {
@override
- TypeAnnotation get(VariableDeclarationList node) => node.type;
+ TypeAnnotation? get(VariableDeclarationList node) => node.type;
}
class Getter_NodeReplacerTest_test_variableDeclarationStatement
@@ -2247,26 +2254,26 @@
class Getter_NodeReplacerTest_testAnnotatedNode
implements NodeReplacerTest_Getter<AnnotatedNode, Comment> {
@override
- Comment get(AnnotatedNode node) => node.documentationComment;
+ Comment? get(AnnotatedNode node) => node.documentationComment;
}
class Getter_NodeReplacerTest_testNormalFormalParameter
implements
NodeReplacerTest_Getter<NormalFormalParameter, SimpleIdentifier> {
@override
- SimpleIdentifier get(NormalFormalParameter node) => node.identifier;
+ SimpleIdentifier? get(NormalFormalParameter node) => node.identifier;
}
class Getter_NodeReplacerTest_testNormalFormalParameter_2
implements NodeReplacerTest_Getter<NormalFormalParameter, Comment> {
@override
- Comment get(NormalFormalParameter node) => node.documentationComment;
+ Comment? get(NormalFormalParameter node) => node.documentationComment;
}
class Getter_NodeReplacerTest_testTypedLiteral
implements NodeReplacerTest_Getter<TypedLiteral, TypeArgumentList> {
@override
- TypeArgumentList get(TypedLiteral node) => node.typeArguments;
+ TypeArgumentList? get(TypedLiteral node) => node.typeArguments;
}
class Getter_NodeReplacerTest_testUriBasedDirective
@@ -2287,29 +2294,23 @@
}, throwsArgumentError);
}
- void test_creation_null() {
- expect(() {
- LineInfo(null);
- }, throwsArgumentError);
- }
-
void test_getLocation_firstLine() {
LineInfo info = LineInfo(<int>[0, 12, 34]);
- CharacterLocation location = info.getLocation(4);
+ var location = info.getLocation(4);
expect(location.lineNumber, 1);
expect(location.columnNumber, 5);
}
void test_getLocation_lastLine() {
LineInfo info = LineInfo(<int>[0, 12, 34]);
- CharacterLocation location = info.getLocation(36);
+ var location = info.getLocation(36);
expect(location.lineNumber, 3);
expect(location.columnNumber, 3);
}
void test_getLocation_middleLine() {
LineInfo info = LineInfo(<int>[0, 12, 34]);
- CharacterLocation location = info.getLocation(12);
+ var location = info.getLocation(12);
expect(location.lineNumber, 2);
expect(location.columnNumber, 1);
}
@@ -3406,7 +3407,7 @@
void test_typeArgumentList() {
TypeArgumentList node =
- AstTestFactory.typeArgumentList([AstTestFactory.typeName4("A")]);
+ AstTestFactory.typeArgumentList2([AstTestFactory.typeName4("A")]);
_assertReplace(node, ListGetter_NodeReplacerTest_test_typeArgumentList(0));
}
@@ -3425,7 +3426,7 @@
}
void test_typeParameterList() {
- TypeParameterList node = AstTestFactory.typeParameterList(["A", "B"]);
+ TypeParameterList node = AstTestFactory.typeParameterList2(["A", "B"]);
_assertReplace(node, ListGetter_NodeReplacerTest_test_typeParameterList(0));
}
@@ -3484,9 +3485,9 @@
}
void _assertReplace(AstNode parent, NodeReplacerTest_Getter getter) {
- AstNode child = getter.get(parent);
+ var child = getter.get(parent);
if (child != null) {
- AstNode clone = child.accept(AstCloner());
+ AstNode clone = child.accept(AstCloner())!;
NodeReplacer.replace(child, clone);
expect(getter.get(parent), clone);
expect(clone.parent, child.parent);
@@ -3525,8 +3526,8 @@
}
}
-abstract class NodeReplacerTest_Getter<P, C> {
- C get(P parent);
+abstract class NodeReplacerTest_Getter<P, C extends AstNode> {
+ C? get(P parent);
}
abstract class NodeReplacerTest_ListGetter<P extends AstNode, C extends AstNode>
@@ -3536,7 +3537,7 @@
NodeReplacerTest_ListGetter(this._index);
@override
- C get(P parent) {
+ C? get(P parent) {
NodeList<C> list = getList(parent);
if (list.isEmpty) {
return null;
@@ -3618,7 +3619,6 @@
void test_equals() {
SourceRange r = SourceRange(10, 1);
- expect(r == null, isFalse);
// ignore: unrelated_type_equality_checks
expect(r == this, isFalse);
expect(r == SourceRange(20, 2), isFalse);
@@ -3808,7 +3808,7 @@
void test_printListOfQuotedNames_empty() {
expect(() {
- StringUtilities.printListOfQuotedNames(List<String>.filled(0, null));
+ StringUtilities.printListOfQuotedNames([]);
}, throwsArgumentError);
}
@@ -3937,7 +3937,6 @@
}
void test_substringBeforeChar() {
- expect(StringUtilities.substringBeforeChar(null, 0x61), null);
expect(StringUtilities.substringBeforeChar("", 0x61), "");
expect(StringUtilities.substringBeforeChar("abc", 0x61), "");
expect(StringUtilities.substringBeforeChar("abcba", 0x62), "a");
diff --git a/pkg/analyzer/test/generated/variance_parser_test.dart b/pkg/analyzer/test/generated/variance_parser_test.dart
index 256eb10..bdb86c3 100644
--- a/pkg/analyzer/test/generated/variance_parser_test.dart
+++ b/pkg/analyzer/test/generated/variance_parser_test.dart
@@ -23,9 +23,9 @@
class VarianceParserTest extends FastaParserTestCase {
@override
CompilationUnit parseCompilationUnit(String content,
- {List<ErrorCode> codes,
- List<ExpectedError> errors,
- FeatureSet featureSet}) {
+ {List<ErrorCode>? codes,
+ List<ExpectedError>? errors,
+ FeatureSet? featureSet}) {
return super.parseCompilationUnit(content,
codes: codes,
errors: errors,
@@ -60,27 +60,28 @@
var classDecl = unit.declarations[0] as ClassDeclaration;
expect(classDecl.name.name, 'A');
- expect(classDecl.typeParameters.typeParameters, hasLength(4));
- expect(classDecl.typeParameters.typeParameters[0].name.name, 'T');
- expect(classDecl.typeParameters.typeParameters[1].name.name, 'U');
- expect(classDecl.typeParameters.typeParameters[2].name.name, 'V');
- expect(classDecl.typeParameters.typeParameters[3].name.name, 'W');
+ var typeParameters = classDecl.typeParameters!;
+ expect(typeParameters.typeParameters, hasLength(4));
+ expect(typeParameters.typeParameters[0].name.name, 'T');
+ expect(typeParameters.typeParameters[1].name.name, 'U');
+ expect(typeParameters.typeParameters[2].name.name, 'V');
+ expect(typeParameters.typeParameters[3].name.name, 'W');
- var typeParameterImplList = classDecl.typeParameters.typeParameters;
+ var typeParameterImplList = typeParameters.typeParameters;
expect((typeParameterImplList[0] as TypeParameterImpl).varianceKeyword,
isNotNull);
expect(
- (typeParameterImplList[0] as TypeParameterImpl).varianceKeyword.lexeme,
+ (typeParameterImplList[0] as TypeParameterImpl).varianceKeyword!.lexeme,
"in");
expect((typeParameterImplList[1] as TypeParameterImpl).varianceKeyword,
isNotNull);
expect(
- (typeParameterImplList[1] as TypeParameterImpl).varianceKeyword.lexeme,
+ (typeParameterImplList[1] as TypeParameterImpl).varianceKeyword!.lexeme,
"inout");
expect((typeParameterImplList[2] as TypeParameterImpl).varianceKeyword,
isNotNull);
expect(
- (typeParameterImplList[2] as TypeParameterImpl).varianceKeyword.lexeme,
+ (typeParameterImplList[2] as TypeParameterImpl).varianceKeyword!.lexeme,
"out");
expect((typeParameterImplList[3] as TypeParameterImpl).varianceKeyword,
isNull);
@@ -94,8 +95,10 @@
expect(unit.declarations, hasLength(1));
var classDecl = unit.declarations[0] as ClassDeclaration;
expect(classDecl.name.name, 'A');
- expect(classDecl.typeParameters.typeParameters, hasLength(1));
- expect(classDecl.typeParameters.typeParameters[0].name.name, 'T');
+
+ var typeParameters = classDecl.typeParameters!;
+ expect(typeParameters.typeParameters, hasLength(1));
+ expect(typeParameters.typeParameters[0].name.name, 'T');
}
void test_class_enabled_single() {
@@ -103,13 +106,15 @@
expect(unit.declarations, hasLength(1));
var classDecl = unit.declarations[0] as ClassDeclaration;
expect(classDecl.name.name, 'A');
- expect(classDecl.typeParameters.typeParameters, hasLength(1));
- expect(classDecl.typeParameters.typeParameters[0].name.name, 'T');
+
+ var typeParameters = classDecl.typeParameters!;
+ expect(typeParameters.typeParameters, hasLength(1));
+ expect(typeParameters.typeParameters[0].name.name, 'T');
var typeParameterImpl =
- classDecl.typeParameters.typeParameters[0] as TypeParameterImpl;
+ typeParameters.typeParameters[0] as TypeParameterImpl;
expect(typeParameterImpl.varianceKeyword, isNotNull);
- expect(typeParameterImpl.varianceKeyword.lexeme, "in");
+ expect(typeParameterImpl.varianceKeyword!.lexeme, "in");
}
void test_function_disabled() {
@@ -165,8 +170,10 @@
expect(unit.declarations, hasLength(1));
var mixinDecl = unit.declarations[0] as MixinDeclaration;
expect(mixinDecl.name.name, 'A');
- expect(mixinDecl.typeParameters.typeParameters, hasLength(1));
- expect(mixinDecl.typeParameters.typeParameters[0].name.name, 'T');
+
+ var typeParameters = mixinDecl.typeParameters!;
+ expect(typeParameters.typeParameters, hasLength(1));
+ expect(typeParameters.typeParameters[0].name.name, 'T');
}
void test_typedef_disabled() {
diff --git a/pkg/analyzer/test/id_tests/assigned_variables_test.dart b/pkg/analyzer/test/id_tests/assigned_variables_test.dart
index 00c8a11..1781d16 100644
--- a/pkg/analyzer/test/id_tests/assigned_variables_test.dart
+++ b/pkg/analyzer/test/id_tests/assigned_variables_test.dart
@@ -40,10 +40,10 @@
@override
void computeUnitData(TestingData testingData, CompilationUnit unit,
Map<Id, ActualData<_Data>> actualMap) {
- var flowResult =
- testingData.uriToFlowAnalysisData[unit.declaredElement.source.uri];
+ var unitElement = unit.declaredElement!;
+ var flowResult = testingData.uriToFlowAnalysisData[unitElement.source.uri]!;
_AssignedVariablesDataExtractor(
- unit.declaredElement.source.uri, actualMap, flowResult)
+ unitElement.source.uri, actualMap, flowResult)
.run(unit);
}
}
@@ -51,9 +51,9 @@
class _AssignedVariablesDataExtractor extends AstDataExtractor<_Data> {
final FlowAnalysisDataForTesting _flowResult;
- Declaration _currentDeclaration;
+ Declaration? _currentDeclaration;
- AssignedVariablesForTesting<AstNode, PromotableElement>
+ AssignedVariablesForTesting<AstNode, PromotableElement>?
_currentAssignedVariables;
_AssignedVariablesDataExtractor(
@@ -61,26 +61,27 @@
: super(uri, actualMap);
@override
- _Data computeNodeValue(Id id, AstNode node) {
+ _Data? computeNodeValue(Id id, AstNode node) {
if (node is FunctionDeclarationStatement) {
- node = (node as FunctionDeclarationStatement).functionDeclaration;
+ node = node.functionDeclaration;
}
- if (_currentAssignedVariables == null) return null;
+ var currentAssignedVariables = _currentAssignedVariables;
+ if (currentAssignedVariables == null) return null;
if (node == _currentDeclaration) {
return _Data(
- _convertVars(_currentAssignedVariables.declaredAtTopLevel),
- _convertVars(_currentAssignedVariables.readAnywhere),
- _convertVars(_currentAssignedVariables.readCapturedAnywhere),
- _convertVars(_currentAssignedVariables.writtenAnywhere),
- _convertVars(_currentAssignedVariables.capturedAnywhere));
+ _convertVars(currentAssignedVariables.declaredAtTopLevel),
+ _convertVars(currentAssignedVariables.readAnywhere),
+ _convertVars(currentAssignedVariables.readCapturedAnywhere),
+ _convertVars(currentAssignedVariables.writtenAnywhere),
+ _convertVars(currentAssignedVariables.capturedAnywhere));
}
- if (!_currentAssignedVariables.isTracked(node)) return null;
+ if (!currentAssignedVariables.isTracked(node)) return null;
return _Data(
- _convertVars(_currentAssignedVariables.declaredInNode(node)),
- _convertVars(_currentAssignedVariables.readInNode(node)),
- _convertVars(_currentAssignedVariables.readCapturedInNode(node)),
- _convertVars(_currentAssignedVariables.writtenInNode(node)),
- _convertVars(_currentAssignedVariables.capturedInNode(node)));
+ _convertVars(currentAssignedVariables.declaredInNode(node)),
+ _convertVars(currentAssignedVariables.readInNode(node)),
+ _convertVars(currentAssignedVariables.readCapturedInNode(node)),
+ _convertVars(currentAssignedVariables.writtenInNode(node)),
+ _convertVars(currentAssignedVariables.capturedInNode(node)));
}
@override
@@ -102,12 +103,12 @@
}
Set<String> _convertVars(Iterable<PromotableElement> x) =>
- x.map((e) => e.name).toSet();
+ x.map((e) => e.name!).toSet();
void _handlePossibleTopLevelDeclaration(
AstNode node, void Function() callback) {
if (_currentDeclaration == null) {
- _currentDeclaration = node;
+ _currentDeclaration = node as Declaration;
_currentAssignedVariables = _flowResult.assignedVariables[node];
callback();
_currentDeclaration = null;
@@ -122,7 +123,7 @@
const _AssignedVariablesDataInterpreter();
@override
- String getText(_Data actualData, [String indentation]) {
+ String getText(_Data actualData, [String? indentation]) {
var parts = <String>[];
if (actualData.declared.isNotEmpty) {
parts.add('declared=${_setToString(actualData.declared)}');
@@ -144,7 +145,7 @@
}
@override
- String isAsExpected(_Data actualData, String expectedData) {
+ String? isAsExpected(_Data actualData, String? expectedData) {
var actualDataText = getText(actualData);
if (actualDataText == expectedData) {
return null;
diff --git a/pkg/analyzer/test/id_tests/constant_test.dart b/pkg/analyzer/test/id_tests/constant_test.dart
index ff39009..79e212b 100644
--- a/pkg/analyzer/test/id_tests/constant_test.dart
+++ b/pkg/analyzer/test/id_tests/constant_test.dart
@@ -41,7 +41,7 @@
bool get supportsErrors => true;
@override
- String computeErrorData(TestConfig config, TestingData testingData, Id id,
+ String? computeErrorData(TestConfig config, TestingData testingData, Id id,
List<AnalysisError> errors) {
var errorCodes = errors.map((e) => e.errorCode).where((errorCode) =>
errorCode !=
@@ -52,7 +52,7 @@
@override
void computeUnitData(TestingData testingData, CompilationUnit unit,
Map<Id, ActualData<String>> actualMap) {
- ConstantsDataExtractor(unit.declaredElement.source.uri, actualMap)
+ ConstantsDataExtractor(unit.declaredElement!.source.uri, actualMap)
.run(unit);
}
}
@@ -62,7 +62,7 @@
: super(uri, actualMap);
@override
- String computeNodeValue(Id id, AstNode node) {
+ String? computeNodeValue(Id id, AstNode node) {
if (node is Identifier) {
var element = node.staticElement;
if (element is PropertyAccessorElement && element.isSynthetic) {
@@ -92,27 +92,27 @@
} else if (type.isDartCoreSymbol) {
return 'Symbol(${value.toSymbolValue()})';
} else if (type.isDartCoreSet) {
- var elements = value.toSetValue().map(_stringify).join(',');
+ var elements = value.toSetValue()!.map(_stringify).join(',');
return '${_stringifyType(type)}($elements)';
} else if (type.isDartCoreList) {
- var elements = value.toListValue().map(_stringify).join(',');
+ var elements = value.toListValue()!.map(_stringify).join(',');
return '${_stringifyType(type)}($elements)';
} else if (type.isDartCoreMap) {
- var elements = value.toMapValue().entries.map((entry) {
- var key = _stringify(entry.key);
- var value = _stringify(entry.value);
+ var elements = value.toMapValue()!.entries.map((entry) {
+ var key = _stringify(entry.key!);
+ var value = _stringify(entry.value!);
return '$key:$value';
}).join(',');
return '${_stringifyType(type)}($elements)';
} else {
// TODO(paulberry): Add `isDartCoreType` to properly recognize type
// literal constants.
- return 'TypeLiteral(${_stringifyType(value.toTypeValue())})';
+ return 'TypeLiteral(${_stringifyType(value.toTypeValue()!)})';
}
// TODO(paulberry): Support object constants.
} else if (type is FunctionType) {
- var element = value.toFunctionValue();
- return 'Function(${element.name},type=${_stringifyType(value.type)})';
+ var element = value.toFunctionValue()!;
+ return 'Function(${element.name},type=${_stringifyType(value.type!)})';
}
throw UnimplementedError('_stringify for type $type');
}
diff --git a/pkg/analyzer/test/id_tests/definite_assignment_test.dart b/pkg/analyzer/test/id_tests/definite_assignment_test.dart
index 03d7c45..72071678 100644
--- a/pkg/analyzer/test/id_tests/definite_assignment_test.dart
+++ b/pkg/analyzer/test/id_tests/definite_assignment_test.dart
@@ -42,7 +42,7 @@
bool get supportsErrors => true;
@override
- String computeErrorData(TestConfig config, TestingData testingData, Id id,
+ String? computeErrorData(TestConfig config, TestingData testingData, Id id,
List<AnalysisError> errors) {
var errorCodes = errors.map((e) => e.errorCode).where((errorCode) =>
errorCode !=
@@ -53,10 +53,10 @@
@override
void computeUnitData(TestingData testingData, CompilationUnit unit,
Map<Id, ActualData<String>> actualMap) {
- var flowResult =
- testingData.uriToFlowAnalysisData[unit.declaredElement.source.uri];
+ var unitElement = unit.declaredElement!;
+ var flowResult = testingData.uriToFlowAnalysisData[unitElement.source.uri]!;
_DefiniteAssignmentDataExtractor(
- unit.declaredElement.source.uri, actualMap, flowResult)
+ unitElement.source.uri, actualMap, flowResult)
.run(unit);
}
}
@@ -69,7 +69,7 @@
: super(uri, actualMap);
@override
- String computeNodeValue(Id id, AstNode node) {
+ String? computeNodeValue(Id id, AstNode node) {
if (node is SimpleIdentifier && node.inGetterContext()) {
var element = node.staticElement;
if (element is LocalVariableElement || element is ParameterElement) {
@@ -86,10 +86,10 @@
const _DefiniteAssignmentDataInterpreter();
@override
- String getText(String actualData, [String indentation]) => actualData;
+ String getText(String actualData, [String? indentation]) => actualData;
@override
- String isAsExpected(String actualData, String expectedData) {
+ String? isAsExpected(String actualData, String? expectedData) {
if (actualData == expectedData) {
return null;
} else {
@@ -98,5 +98,5 @@
}
@override
- bool isEmpty(String actualData) => actualData == null;
+ bool isEmpty(String? actualData) => actualData == null;
}
diff --git a/pkg/analyzer/test/id_tests/definite_unassignment_test.dart b/pkg/analyzer/test/id_tests/definite_unassignment_test.dart
index c0e1153..0f3cf47 100644
--- a/pkg/analyzer/test/id_tests/definite_unassignment_test.dart
+++ b/pkg/analyzer/test/id_tests/definite_unassignment_test.dart
@@ -42,7 +42,7 @@
bool get supportsErrors => true;
@override
- String computeErrorData(TestConfig config, TestingData testingData, Id id,
+ String? computeErrorData(TestConfig config, TestingData testingData, Id id,
List<AnalysisError> errors) {
var errorCodes = errors.map((e) => e.errorCode).where((errorCode) =>
errorCode !=
@@ -53,10 +53,10 @@
@override
void computeUnitData(TestingData testingData, CompilationUnit unit,
Map<Id, ActualData<String>> actualMap) {
- var flowResult =
- testingData.uriToFlowAnalysisData[unit.declaredElement.source.uri];
+ var unitElement = unit.declaredElement!;
+ var flowResult = testingData.uriToFlowAnalysisData[unitElement.source.uri]!;
_DefiniteUnassignmentDataExtractor(
- unit.declaredElement.source.uri, actualMap, flowResult)
+ unitElement.source.uri, actualMap, flowResult)
.run(unit);
}
}
@@ -69,7 +69,7 @@
: super(uri, actualMap);
@override
- String computeNodeValue(Id id, AstNode node) {
+ String? computeNodeValue(Id id, AstNode node) {
if (node is SimpleIdentifier && node.inGetterContext()) {
var element = node.staticElement;
if (element is LocalVariableElement || element is ParameterElement) {
@@ -86,10 +86,10 @@
const _DefiniteUnassignmentDataInterpreter();
@override
- String getText(String actualData, [String indentation]) => actualData;
+ String getText(String actualData, [String? indentation]) => actualData;
@override
- String isAsExpected(String actualData, String expectedData) {
+ String? isAsExpected(String actualData, String? expectedData) {
if (actualData == expectedData) {
return null;
} else {
@@ -98,5 +98,5 @@
}
@override
- bool isEmpty(String actualData) => actualData == null;
+ bool isEmpty(String? actualData) => actualData == null;
}
diff --git a/pkg/analyzer/test/id_tests/inheritance_test.dart b/pkg/analyzer/test/id_tests/inheritance_test.dart
index 3233740..a8a7dea 100644
--- a/pkg/analyzer/test/id_tests/inheritance_test.dart
+++ b/pkg/analyzer/test/id_tests/inheritance_test.dart
@@ -71,7 +71,7 @@
@override
void computeUnitData(TestingData testingData, CompilationUnit unit,
Map<Id, ActualData<String>> actualMap) {
- _InheritanceDataExtractor(unit.declaredElement.source.uri, actualMap)
+ _InheritanceDataExtractor(unit.declaredElement!.source.uri, actualMap)
.run(unit);
}
}
@@ -83,7 +83,7 @@
: super(uri, actualMap);
@override
- String computeElementValue(Id id, Element element) {
+ String? computeElementValue(Id id, Element element) {
if (element is LibraryElement) {
return 'nnbd=${element.isNonNullableByDefault}';
}
@@ -91,10 +91,10 @@
}
@override
- void computeForClass(Declaration node, Id id) {
+ void computeForClass(Declaration node, Id? id) {
super.computeForClass(node, id);
if (node is ClassDeclaration) {
- var element = node.declaredElement;
+ var element = node.declaredElement!;
void registerMember(
MemberId id, int offset, Object object, DartType type) {
@@ -104,9 +104,9 @@
var interface = inheritance.getInterface(element);
for (var name in interface.map.keys) {
- var executable = interface.map[name];
+ var executable = interface.map[name]!;
- ClassElement enclosingClass = executable.enclosingElement;
+ var enclosingClass = executable.enclosingElement as ClassElement;
if (enclosingClass.isDartCoreObject) continue;
var id = MemberId.internal(
@@ -127,6 +127,8 @@
} else {
type = executable.parameters.first.type;
}
+ } else {
+ throw UnimplementedError('(${executable.runtimeType}) $executable');
}
registerMember(id, offset, executable, type);
@@ -135,9 +137,9 @@
}
@override
- String computeNodeValue(Id id, AstNode node) {
+ String? computeNodeValue(Id id, AstNode node) {
if (node is ClassDeclaration) {
- var cls = node.declaredElement;
+ var cls = node.declaredElement!;
var supertypes = <String>[];
supertypes.add(supertypeToString(cls.thisType));
for (var supertype in cls.allSupertypes) {
diff --git a/pkg/analyzer/test/id_tests/nullability_test.dart b/pkg/analyzer/test/id_tests/nullability_test.dart
index 19c6869..b2f1561 100644
--- a/pkg/analyzer/test/id_tests/nullability_test.dart
+++ b/pkg/analyzer/test/id_tests/nullability_test.dart
@@ -13,7 +13,6 @@
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/dart/element/type_system.dart';
import 'package:analyzer/src/dart/analysis/testing_data.dart';
-import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/dart/resolver/flow_analysis_visitor.dart';
import 'package:analyzer/src/util/ast_data_extractor.dart';
import 'package:test/test.dart';
@@ -34,7 +33,7 @@
}
class FlowTestBase {
- FlowAnalysisDataForTesting flowResult;
+ late final FlowAnalysisDataForTesting flowResult;
/// Resolve the given [code] and track nullability in the unit.
Future<void> trackCode(String code) async {
@@ -59,8 +58,9 @@
@override
void computeUnitData(TestingData testingData, CompilationUnit unit,
Map<Id, ActualData<String>> actualMap) {
- _NullabilityDataExtractor(unit.declaredElement.source.uri, actualMap,
- unit.declaredElement.library.typeSystem)
+ var unitElement = unit.declaredElement!;
+ _NullabilityDataExtractor(
+ unitElement.source.uri, actualMap, unitElement.library.typeSystem)
.run(unit);
}
}
@@ -73,15 +73,15 @@
: super(uri, actualMap);
@override
- String computeNodeValue(Id id, AstNode node) {
+ String? computeNodeValue(Id id, AstNode node) {
if (node is SimpleIdentifier &&
node.inGetterContext() &&
!node.inDeclarationContext()) {
var element = node.staticElement;
if (element is LocalVariableElement || element is ParameterElement) {
- TypeImpl promotedType = _readType(node);
- TypeImpl declaredType = (element as VariableElement).type;
- var isPromoted = promotedType != null && promotedType != declaredType;
+ var promotedType = _readType(node);
+ var declaredType = (element as VariableElement).type;
+ var isPromoted = promotedType != declaredType;
if (isPromoted &&
_typeSystem.isPotentiallyNullable(declaredType) &&
!_typeSystem.isPotentiallyNullable(promotedType)) {
@@ -95,13 +95,13 @@
static DartType _readType(SimpleIdentifier node) {
var parent = node.parent;
if (parent is AssignmentExpression && parent.leftHandSide == node) {
- return parent.readType;
+ return parent.readType!;
} else if (parent is PostfixExpression) {
- return parent.readType;
+ return parent.readType ?? node.staticType!;
} else if (parent is PrefixExpression) {
- return parent.readType;
+ return parent.readType ?? node.staticType!;
} else {
- return node.staticType;
+ return node.staticType!;
}
}
}
@@ -110,10 +110,10 @@
const _NullabilityDataInterpreter();
@override
- String getText(String actualData, [String indentation]) => actualData;
+ String getText(String actualData, [String? indentation]) => actualData;
@override
- String isAsExpected(String actualData, String expectedData) {
+ String? isAsExpected(String actualData, String? expectedData) {
if (actualData == expectedData) {
return null;
} else {
diff --git a/pkg/analyzer/test/id_tests/reachability_test.dart b/pkg/analyzer/test/id_tests/reachability_test.dart
index c8751ff..aff26d2 100644
--- a/pkg/analyzer/test/id_tests/reachability_test.dart
+++ b/pkg/analyzer/test/id_tests/reachability_test.dart
@@ -30,7 +30,7 @@
}
class FlowTestBase {
- FlowAnalysisDataForTesting flowResult;
+ late final FlowAnalysisDataForTesting flowResult;
/// Resolve the given [code] and track nullability in the unit.
Future<void> trackCode(String code) async {
@@ -61,10 +61,9 @@
@override
void computeUnitData(TestingData testingData, CompilationUnit unit,
Map<Id, ActualData<Set<_ReachabilityAssertion>>> actualMap) {
- var flowResult =
- testingData.uriToFlowAnalysisData[unit.declaredElement.source.uri];
- _ReachabilityDataExtractor(
- unit.declaredElement.source.uri, actualMap, flowResult)
+ var unitElement = unit.declaredElement!;
+ var flowResult = testingData.uriToFlowAnalysisData[unitElement.source.uri]!;
+ _ReachabilityDataExtractor(unitElement.source.uri, actualMap, flowResult)
.run(unit);
}
}
@@ -80,7 +79,7 @@
: super(uri, actualMap);
@override
- Set<_ReachabilityAssertion> computeNodeValue(Id id, AstNode node) {
+ Set<_ReachabilityAssertion>? computeNodeValue(Id id, AstNode node) {
Set<_ReachabilityAssertion> result = {};
if (node is Expression && node.parent is ExpressionStatement) {
// The reachability of an expression statement and the statement it
@@ -103,7 +102,7 @@
}
void _checkBodyCompletion(
- FunctionBody body, Set<_ReachabilityAssertion> result) {
+ FunctionBody? body, Set<_ReachabilityAssertion> result) {
if (body != null &&
_flowResult.functionBodiesThatDontComplete.contains(body)) {
result.add(_ReachabilityAssertion.doesNotComplete);
@@ -117,12 +116,12 @@
@override
String getText(Set<_ReachabilityAssertion> actualData,
- [String indentation]) =>
+ [String? indentation]) =>
_sortedRepresentation(_toStrings(actualData));
@override
- String isAsExpected(
- Set<_ReachabilityAssertion> actualData, String expectedData) {
+ String? isAsExpected(
+ Set<_ReachabilityAssertion> actualData, String? expectedData) {
var actualStrings = _toStrings(actualData);
var actualSorted = _sortedRepresentation(actualStrings);
var expectedSorted = _sortedRepresentation(expectedData?.split(','));
@@ -136,7 +135,7 @@
@override
bool isEmpty(Set<_ReachabilityAssertion> actualData) => actualData.isEmpty;
- String _sortedRepresentation(Iterable<String> values) {
+ String _sortedRepresentation(Iterable<String>? values) {
var list = values == null || values.isEmpty ? ['none'] : values.toList();
list.sort();
return list.join(',');
diff --git a/pkg/analyzer/test/id_tests/type_promotion_test.dart b/pkg/analyzer/test/id_tests/type_promotion_test.dart
index 177ce59..302be7f 100644
--- a/pkg/analyzer/test/id_tests/type_promotion_test.dart
+++ b/pkg/analyzer/test/id_tests/type_promotion_test.dart
@@ -11,7 +11,6 @@
import 'package:analyzer/dart/element/null_safety_understanding_flag.dart';
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/src/dart/analysis/testing_data.dart';
-import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/util/ast_data_extractor.dart';
import '../util/id_testing_helper.dart';
@@ -40,7 +39,7 @@
@override
void computeUnitData(TestingData testingData, CompilationUnit unit,
Map<Id, ActualData<DartType>> actualMap) {
- _TypePromotionDataExtractor(unit.declaredElement.source.uri, actualMap)
+ _TypePromotionDataExtractor(unit.declaredElement!.source.uri, actualMap)
.run(unit);
}
}
@@ -50,12 +49,12 @@
: super(uri, actualMap);
@override
- DartType computeNodeValue(Id id, AstNode node) {
+ DartType? computeNodeValue(Id id, AstNode node) {
if (node is SimpleIdentifier && node.inGetterContext()) {
var element = _readElement(node);
if (element is LocalVariableElement || element is ParameterElement) {
- var promotedType = _readType(node) as TypeImpl;
- var declaredType = (element as VariableElement).type as TypeImpl;
+ var promotedType = _readType(node);
+ var declaredType = (element as VariableElement).type;
var isPromoted = promotedType != declaredType;
if (isPromoted) {
return promotedType;
@@ -65,7 +64,7 @@
return null;
}
- static Element _readElement(SimpleIdentifier node) {
+ static Element? _readElement(SimpleIdentifier node) {
var parent = node.parent;
if (parent is AssignmentExpression && parent.leftHandSide == node) {
return parent.readElement;
@@ -78,7 +77,7 @@
}
}
- static DartType _readType(SimpleIdentifier node) {
+ static DartType? _readType(SimpleIdentifier node) {
var parent = node.parent;
if (parent is AssignmentExpression && parent.leftHandSide == node) {
return parent.readType;
@@ -96,12 +95,12 @@
const _TypePromotionDataInterpreter();
@override
- String getText(DartType actualData, [String indentation]) {
+ String getText(DartType actualData, [String? indentation]) {
return actualData.getDisplayString(withNullability: true);
}
@override
- String isAsExpected(DartType actualData, String expectedData) {
+ String? isAsExpected(DartType actualData, String? expectedData) {
var actualDataText = getText(actualData);
if (actualDataText == expectedData) {
return null;
@@ -111,5 +110,5 @@
}
@override
- bool isEmpty(DartType actualData) => actualData == null;
+ bool isEmpty(DartType? actualData) => actualData == null;
}
diff --git a/pkg/analyzer/test/instrumentation/instrumentation_test.dart b/pkg/analyzer/test/instrumentation/instrumentation_test.dart
index b6b4af5..8ed202b 100644
--- a/pkg/analyzer/test/instrumentation/instrumentation_test.dart
+++ b/pkg/analyzer/test/instrumentation/instrumentation_test.dart
@@ -177,7 +177,7 @@
class MulticastInstrumentationServerTest {
TestInstrumentationLogger loggerA = TestInstrumentationLogger();
TestInstrumentationLogger loggerB = TestInstrumentationLogger();
- MulticastInstrumentationService logger;
+ late final MulticastInstrumentationService logger;
void setUp() {
logger = MulticastInstrumentationService([
diff --git a/pkg/analyzer/test/resource_utils.dart b/pkg/analyzer/test/resource_utils.dart
index c38b139..d51194e 100644
--- a/pkg/analyzer/test/resource_utils.dart
+++ b/pkg/analyzer/test/resource_utils.dart
@@ -97,7 +97,7 @@
@override
Folder getStateLocation(String pluginId) =>
- _provider.getStateLocation(pluginId);
+ _provider.getStateLocation(pluginId)!;
/// Assert that the given path is valid for the OS platform on which the
/// tests are running.
diff --git a/pkg/analyzer/test/source/analysis_options_provider_test.dart b/pkg/analyzer/test/source/analysis_options_provider_test.dart
index 810d8d2..ae41532 100644
--- a/pkg/analyzer/test/source/analysis_options_provider_test.dart
+++ b/pkg/analyzer/test/source/analysis_options_provider_test.dart
@@ -101,10 +101,10 @@
@reflectiveTest
class AnalysisOptionsProviderTest {
- /*late*/ TestPathTranslator pathTranslator;
- /*late*/ ResourceProvider resourceProvider;
+ late final TestPathTranslator pathTranslator;
+ late final ResourceProvider resourceProvider;
- /*late*/ AnalysisOptionsProvider provider;
+ late final AnalysisOptionsProvider provider;
String get optionsFileName => AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE;
@@ -232,7 +232,7 @@
}
YamlMap _getOptions(String posixPath, {bool crawlUp = false}) {
- Resource resource = pathTranslator.getResource(posixPath);
+ var resource = pathTranslator.getResource(posixPath) as Folder;
return provider.getOptions(resource, crawlUp: crawlUp);
}
}
diff --git a/pkg/analyzer/test/source/error_processor_test.dart b/pkg/analyzer/test/source/error_processor_test.dart
index 2a58d77..d9a581f 100644
--- a/pkg/analyzer/test/source/error_processor_test.dart
+++ b/pkg/analyzer/test/source/error_processor_test.dart
@@ -10,7 +10,9 @@
import 'package:analyzer/src/dart/analysis/session.dart';
import 'package:analyzer/src/error/codes.dart';
import 'package:analyzer/src/generated/engine.dart';
+import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/task/options.dart';
+import 'package:collection/collection.dart';
import 'package:test/test.dart';
import 'package:yaml/yaml.dart';
@@ -58,8 +60,8 @@
unused_local_variable: true # skipped
use_of_void_result: unsupported_action # skipped
''');
- expect(getProcessor(invalid_assignment).severity, ErrorSeverity.ERROR);
- expect(getProcessor(missing_return).severity, isNull);
+ expect(getProcessor(invalid_assignment)!.severity, ErrorSeverity.ERROR);
+ expect(getProcessor(missing_return)!.severity, isNull);
expect(getProcessor(unused_local_variable), isNull);
expect(getProcessor(use_of_void_result), isNull);
});
@@ -100,9 +102,8 @@
expect(unusedLocalProcessor.severity, ErrorSeverity.ERROR);
// skip
- var invalidAssignmentProcessor = errorConfig.processors.firstWhere(
- (p) => p.appliesTo(invalid_assignment),
- orElse: () => null);
+ var invalidAssignmentProcessor = errorConfig.processors
+ .firstWhereOrNull((p) => p.appliesTo(invalid_assignment));
expect(invalidAssignmentProcessor, isNull);
});
@@ -126,9 +127,8 @@
expect(unusedLocalProcessor.severity, ErrorSeverity.ERROR);
// skip
- var invalidAssignmentProcessor = errorConfig.processors.firstWhere(
- (p) => p.appliesTo(invalid_assignment),
- orElse: () => null);
+ var invalidAssignmentProcessor = errorConfig.processors
+ .firstWhereOrNull((p) => p.appliesTo(invalid_assignment));
expect(invalidAssignmentProcessor, isNull);
});
});
@@ -146,17 +146,16 @@
});
}
-TestContext context;
+late TestContext context;
AnalysisOptionsProvider optionsProvider = AnalysisOptionsProvider();
-ErrorProcessor processor;
void configureOptions(String options) {
YamlMap optionMap = optionsProvider.getOptionsFromString(options);
applyToAnalysisOptions(context.analysisOptions, optionMap);
}
-ErrorProcessor getProcessor(AnalysisError error) =>
+ErrorProcessor? getProcessor(AnalysisError error) =>
ErrorProcessor.getProcessor(context.analysisOptions, error);
class TestContext extends AnalysisContextImpl {
@@ -166,6 +165,11 @@
AnalysisOptionsImpl(),
DeclaredVariables(),
),
- null,
+ _SourceFactoryMock(),
);
}
+
+class _SourceFactoryMock implements SourceFactory {
+ @override
+ noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
+}
diff --git a/pkg/analyzer/test/source/package_map_resolver_test.dart b/pkg/analyzer/test/source/package_map_resolver_test.dart
index db9a3d1..faa7e02 100644
--- a/pkg/analyzer/test/source/package_map_resolver_test.dart
+++ b/pkg/analyzer/test/source/package_map_resolver_test.dart
@@ -39,24 +39,12 @@
expect(PackageMapUriResolver.isPackageUri(uri), isFalse);
}
- void test_new_null_packageMap() {
- expect(() {
- PackageMapUriResolver(provider, null);
- }, throwsArgumentError);
- }
-
- void test_new_null_resourceProvider() {
- expect(() {
- PackageMapUriResolver(null, <String, List<Folder>>{});
- }, throwsArgumentError);
- }
-
void test_resolve_multiple_folders() {
var a = provider.newFile(provider.convertPath('/aaa/a.dart'), '');
var b = provider.newFile(provider.convertPath('/bbb/b.dart'), '');
expect(() {
PackageMapUriResolver(provider, <String, List<Folder>>{
- 'pkg': <Folder>[a.parent, b.parent]
+ 'pkg': <Folder>[a.parent!, b.parent!]
});
}, throwsArgumentError);
}
@@ -64,7 +52,7 @@
void test_resolve_nonPackage() {
UriResolver resolver = PackageMapUriResolver(provider, EMPTY_MAP);
Uri uri = Uri.parse('dart:core');
- Source result = resolver.resolveAbsolute(uri);
+ var result = resolver.resolveAbsolute(uri);
expect(result, isNull);
}
@@ -75,21 +63,19 @@
provider.newFile(pkgFileB, 'library lib_b;');
PackageMapUriResolver resolver =
PackageMapUriResolver(provider, <String, List<Folder>>{
- 'pkgA': <Folder>[provider.getResource(provider.convertPath('/pkgA/lib'))],
- 'pkgB': <Folder>[provider.getResource(provider.convertPath('/pkgB/lib'))]
+ 'pkgA': <Folder>[provider.getFolder(provider.convertPath('/pkgA/lib'))],
+ 'pkgB': <Folder>[provider.getFolder(provider.convertPath('/pkgB/lib'))]
});
{
Uri uri = Uri.parse('package:pkgA/libA.dart');
- Source result = resolver.resolveAbsolute(uri);
- expect(result, isNotNull);
+ var result = resolver.resolveAbsolute(uri)!;
expect(result.exists(), isTrue);
expect(result.uriKind, UriKind.PACKAGE_URI);
expect(result.fullName, pkgFileA);
}
{
Uri uri = Uri.parse('package:pkgB/libB.dart');
- Source result = resolver.resolveAbsolute(uri);
- expect(result, isNotNull);
+ var result = resolver.resolveAbsolute(uri)!;
expect(result.exists(), isTrue);
expect(result.uriKind, UriKind.PACKAGE_URI);
expect(result.fullName, pkgFileB);
@@ -106,7 +92,7 @@
});
var uri = Uri.parse('package:aaa/проба/a.dart');
- var result = resolver.resolveAbsolute(uri);
+ var result = resolver.resolveAbsolute(uri)!;
expect(
result.fullName,
provider.convertPath('/packages/aaa/lib/проба/a.dart'),
@@ -123,7 +109,7 @@
});
var uri = Uri.parse('package:aaa/with space/a.dart');
- var result = resolver.resolveAbsolute(uri);
+ var result = resolver.resolveAbsolute(uri)!;
expect(
result.fullName,
provider.convertPath('/packages/aaa/lib/with space/a.dart'),
@@ -133,28 +119,28 @@
void test_resolve_package_invalid_leadingSlash() {
UriResolver resolver = PackageMapUriResolver(provider, EMPTY_MAP);
Uri uri = Uri.parse('package:/foo');
- Source result = resolver.resolveAbsolute(uri);
+ var result = resolver.resolveAbsolute(uri);
expect(result, isNull);
}
void test_resolve_package_invalid_noSlash() {
UriResolver resolver = PackageMapUriResolver(provider, EMPTY_MAP);
Uri uri = Uri.parse('package:foo');
- Source result = resolver.resolveAbsolute(uri);
+ var result = resolver.resolveAbsolute(uri);
expect(result, isNull);
}
void test_resolve_package_invalid_onlySlash() {
UriResolver resolver = PackageMapUriResolver(provider, EMPTY_MAP);
Uri uri = Uri.parse('package:/');
- Source result = resolver.resolveAbsolute(uri);
+ var result = resolver.resolveAbsolute(uri);
expect(result, isNull);
}
void test_resolve_package_notInMap() {
UriResolver resolver = PackageMapUriResolver(provider, EMPTY_MAP);
Uri uri = Uri.parse('package:analyzer/analyzer.dart');
- Source result = resolver.resolveAbsolute(uri);
+ var result = resolver.resolveAbsolute(uri);
expect(result, isNull);
}
@@ -165,26 +151,24 @@
provider.newFile(pkgFileB, 'library lib_b;');
PackageMapUriResolver resolver =
PackageMapUriResolver(provider, <String, List<Folder>>{
- 'pkgA': <Folder>[provider.getResource(provider.convertPath('/pkgA/lib'))],
- 'pkgB': <Folder>[provider.getResource(provider.convertPath('/pkgB/lib'))]
+ 'pkgA': <Folder>[provider.getFolder(provider.convertPath('/pkgA/lib'))],
+ 'pkgB': <Folder>[provider.getFolder(provider.convertPath('/pkgB/lib'))]
});
{
Source source =
_createFileSource(provider.convertPath('/pkgA/lib/libA.dart'));
- Uri uri = resolver.restoreAbsolute(source);
- expect(uri, isNotNull);
+ var uri = resolver.restoreAbsolute(source)!;
expect(uri.toString(), 'package:pkgA/libA.dart');
}
{
Source source =
_createFileSource(provider.convertPath('/pkgB/lib/src/libB.dart'));
- Uri uri = resolver.restoreAbsolute(source);
- expect(uri, isNotNull);
+ var uri = resolver.restoreAbsolute(source)!;
expect(uri.toString(), 'package:pkgB/src/libB.dart');
}
{
Source source = _createFileSource('/no/such/file');
- Uri uri = resolver.restoreAbsolute(source);
+ var uri = resolver.restoreAbsolute(source);
expect(uri, isNull);
}
}
diff --git a/pkg/analyzer/test/src/command_line/arguments_test.dart b/pkg/analyzer/test/src/command_line/arguments_test.dart
index 4f8ada1..83b2bda 100644
--- a/pkg/analyzer/test/src/command_line/arguments_test.dart
+++ b/pkg/analyzer/test/src/command_line/arguments_test.dart
@@ -51,12 +51,12 @@
endsWith(dartSdkSummaryPath),
);
- Map<String, String> declaredVariables = options.declaredVariables;
+ var declaredVariables = options.declaredVariables;
expect(declaredVariables, hasLength(2));
expect(declaredVariables['foo'], '1');
expect(declaredVariables['bar'], '2');
- AnalysisOptionsImpl defaultOptions = options.defaultOptions;
+ var defaultOptions = options.defaultOptions as AnalysisOptionsImpl;
expect(defaultOptions, isNotNull);
expect(defaultOptions.implicitCasts, false);
expect(defaultOptions.implicitDynamic, false);
@@ -74,7 +74,7 @@
expect(options.declaredVariables, isEmpty);
expect(options.defaultAnalysisOptionsFilePath, isNull);
expect(options.defaultPackageFilePath, isNull);
- AnalysisOptionsImpl defaultOptions = options.defaultOptions;
+ var defaultOptions = options.defaultOptions as AnalysisOptionsImpl;
expect(defaultOptions, isNotNull);
expect(defaultOptions.implicitCasts, true);
expect(defaultOptions.implicitDynamic, true);
@@ -122,7 +122,7 @@
ContextBuilderOptions options =
createContextBuilderOptions(resourceProvider, result);
expect(options, isNotNull);
- AnalysisOptionsImpl defaultOptions = options.defaultOptions;
+ var defaultOptions = options.defaultOptions as AnalysisOptionsImpl;
expect(defaultOptions, isNotNull);
expect(defaultOptions.implicitCasts, true);
}
@@ -137,7 +137,7 @@
ContextBuilderOptions options =
createContextBuilderOptions(resourceProvider, result);
expect(options, isNotNull);
- AnalysisOptionsImpl defaultOptions = options.defaultOptions;
+ var defaultOptions = options.defaultOptions as AnalysisOptionsImpl;
expect(defaultOptions, isNotNull);
expect(defaultOptions.implicitCasts, false);
}
diff --git a/pkg/analyzer/test/src/context/builder_test.dart b/pkg/analyzer/test/src/context/builder_test.dart
index 588e22f..5f911df 100644
--- a/pkg/analyzer/test/src/context/builder_test.dart
+++ b/pkg/analyzer/test/src/context/builder_test.dart
@@ -42,25 +42,25 @@
@reflectiveTest
class ContextBuilderTest with ResourceProviderMixin {
/// The SDK manager used by the tests;
- DartSdkManager sdkManager;
+ late final DartSdkManager sdkManager;
/// The content cache used by the tests.
- ContentCache contentCache;
+ late final ContentCache contentCache;
/// The options passed to the context builder.
ContextBuilderOptions builderOptions = ContextBuilderOptions();
/// The context builder to be used in the test.
- ContextBuilder builder;
+ late ContextBuilder builder;
/// The path to the default SDK, or `null` if the test has not explicitly
/// invoked [createDefaultSdk].
- String defaultSdkPath;
+ late final String defaultSdkPath;
- _MockLintRule _mockLintRule;
- _MockLintRule _mockLintRule2;
- _MockLintRule _mockLintRule3;
- _MockLintRule _mockPublicMemberApiDocs;
+ late final _MockLintRule _mockLintRule;
+ late final _MockLintRule _mockLintRule2;
+ late final _MockLintRule _mockLintRule3;
+ late final _MockLintRule _mockPublicMemberApiDocs;
Uri convertedDirectoryUri(String directoryPath) {
return Uri.directory(convertPath(directoryPath),
@@ -100,7 +100,7 @@
AnalysisOptionsImpl expected = AnalysisOptionsImpl();
expected.lint = true;
expected.lintRules = <LintRule>[
- Registry.ruleRegistry['mock_lint_rule'],
+ Registry.ruleRegistry['mock_lint_rule']!,
];
String path = convertPath('/some/directory/path');
@@ -111,7 +111,7 @@
- mock_lint_rule
''');
- AnalysisOptions options = builder.getAnalysisOptions(path);
+ var options = builder.getAnalysisOptions(path);
_expectEqualOptions(options, expected);
}
@@ -125,7 +125,7 @@
AnalysisOptionsImpl expected = AnalysisOptionsImpl();
expected.lint = false;
expected.lintRules = <LintRule>[
- Registry.ruleRegistry['mock_lint_rule'],
+ Registry.ruleRegistry['mock_lint_rule']!,
];
String path = convertPath('/some/directory/path');
@@ -136,7 +136,7 @@
- mock_lint_rule
''');
- AnalysisOptions options = builder.getAnalysisOptions(path);
+ var options = builder.getAnalysisOptions(path);
_expectEqualOptions(options, expected);
}
@@ -150,7 +150,7 @@
AnalysisOptionsImpl expected = AnalysisOptionsImpl();
expected.lint = true;
expected.lintRules = <LintRule>[
- Registry.ruleRegistry['mock_lint_rule'],
+ Registry.ruleRegistry['mock_lint_rule']!,
];
String path = convertPath('/some/directory/path');
@@ -161,7 +161,7 @@
- mock_lint_rule
''');
- AnalysisOptions options = builder.getAnalysisOptions(path);
+ var options = builder.getAnalysisOptions(path);
_expectEqualOptions(options, expected);
}
@@ -181,7 +181,7 @@
newFile(filePath, content: '''
''');
- AnalysisOptions options = builder.getAnalysisOptions(path);
+ var options = builder.getAnalysisOptions(path);
_expectEqualOptions(options, expected);
}
@@ -216,12 +216,12 @@
AnalysisOptionsImpl defaultOptions = AnalysisOptionsImpl();
defaultOptions.implicitCasts = !defaultOptions.implicitCasts;
builderOptions.defaultOptions = defaultOptions;
- AnalysisOptions options = builder.createDefaultOptions();
+ var options = builder.createDefaultOptions();
_expectEqualOptions(options, defaultOptions);
}
void test_createDefaultOptions_noDefault() {
- AnalysisOptions options = builder.createDefaultOptions();
+ var options = builder.createDefaultOptions();
_expectEqualOptions(options, AnalysisOptionsImpl());
}
@@ -309,7 +309,7 @@
newFolder('/workspace/bazel-genfiles');
newFolder(projectPath);
- SourceFactoryImpl factory = builder.createSourceFactory(projectPath);
+ var factory = builder.createSourceFactory(projectPath) as SourceFactoryImpl;
expect(factory.resolvers,
contains(predicate((r) => r is BazelFileUriResolver)));
expect(factory.resolvers,
@@ -324,7 +324,7 @@
newFolder(projectPath);
newFile(join(projectPath, '.packages'));
- SourceFactoryImpl factory = builder.createSourceFactory(projectPath);
+ var factory = builder.createSourceFactory(projectPath) as SourceFactoryImpl;
expect(factory.resolvers,
contains(predicate((r) => r is ResourceUriResolver)));
expect(factory.resolvers,
@@ -355,11 +355,11 @@
SourceFactory factory = builder.createSourceFactory(projectPath);
- Source dartSource = factory.forUri('dart:async');
+ var dartSource = factory.forUri('dart:async')!;
expect(dartSource, isNotNull);
expect(dartSource.fullName, asyncPath);
- Source packageSource = factory.forUri('package:b/b.dart');
+ var packageSource = factory.forUri('package:b/b.dart')!;
expect(packageSource, isNotNull);
expect(packageSource.fullName, join(packageB, 'b.dart'));
}
@@ -383,12 +383,12 @@
SourceFactory factory = builder.createSourceFactory(projectPath);
- Source dartSource = factory.forUri('dart:core');
+ var dartSource = factory.forUri('dart:core')!;
expect(dartSource, isNotNull);
expect(
dartSource.fullName, join(defaultSdkPath, 'lib', 'core', 'core.dart'));
- Source packageSource = factory.forUri('package:a/a.dart');
+ var packageSource = factory.forUri('package:a/a.dart')!;
expect(packageSource, isNotNull);
expect(packageSource.fullName, join(packageA, 'a.dart'));
}
@@ -491,7 +491,7 @@
void test_findSdk_noPackageMap_html_strong() {
DartSdk sdk = builder.findSdk(null);
expect(sdk, isNotNull);
- Source htmlSource = sdk.mapDartUri('dart:html');
+ Source htmlSource = sdk.mapDartUri('dart:html')!;
expect(htmlSource.fullName,
convertPath('/sdk/lib/html/dart2js/html_dart2js.dart'));
expect(htmlSource.exists(), isTrue);
@@ -515,8 +515,7 @@
rules:
- mock_lint_rule2
''');
- AnalysisOptions options =
- builder.getAnalysisOptions(convertPath('/root/some/path'));
+ var options = builder.getAnalysisOptions(convertPath('/root/some/path'));
_expectEqualOptions(options, expected);
}
@@ -537,7 +536,7 @@
- mock_lint_rule
''');
String projectPath = convertPath('/some/directory/path');
- AnalysisOptions options = builder.getAnalysisOptions(projectPath);
+ var options = builder.getAnalysisOptions(projectPath);
_expectEqualOptions(options, expected);
}
@@ -553,7 +552,7 @@
- non_existent_lint_rule
''');
- AnalysisOptions options = builder.getAnalysisOptions(path);
+ var options = builder.getAnalysisOptions(path);
_expectEqualOptions(options, expected);
}
@@ -571,7 +570,7 @@
implicit-dynamic: false
''');
- AnalysisOptions options = builder.getAnalysisOptions(path);
+ var options = builder.getAnalysisOptions(path);
_expectEqualOptions(options, expected);
}
@@ -589,7 +588,7 @@
builder = ContextBuilder(resourceProvider, sdkManager, contentCache,
options: builderOptions);
AnalysisOptionsImpl expected = AnalysisOptionsImpl();
- AnalysisOptions options = builder.getAnalysisOptions(projectPath);
+ var options = builder.getAnalysisOptions(projectPath);
_expectEqualOptions(options, expected);
}
@@ -627,7 +626,7 @@
- mock_lint_rule
''');
- AnalysisOptions options = builder.getAnalysisOptions(path);
+ var options = builder.getAnalysisOptions(path);
_expectEqualOptions(options, expected);
}
@@ -649,7 +648,7 @@
- non_existent_lint_rule
''');
- AnalysisOptions options = builder.getAnalysisOptions(path);
+ var options = builder.getAnalysisOptions(path);
_expectEqualOptions(options, AnalysisOptionsImpl());
}
@@ -664,7 +663,7 @@
implicit-dynamic: false
''');
- AnalysisOptions options = builder.getAnalysisOptions(path);
+ var options = builder.getAnalysisOptions(path);
_expectEqualOptions(options, expected);
}
@@ -706,7 +705,7 @@
newFile(filePath);
builderOptions.defaultAnalysisOptionsFilePath = filePath;
- File result = builder.getOptionsFile(path);
+ var result = builder.getOptionsFile(path)!;
expect(result, isNotNull);
expect(result.path, filePath);
}
@@ -718,7 +717,7 @@
join(parentPath, AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE);
newFile(filePath);
- File result = builder.getOptionsFile(path);
+ var result = builder.getOptionsFile(path)!;
expect(result, isNotNull);
expect(result.path, filePath);
}
@@ -728,7 +727,7 @@
String filePath = join(path, AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE);
newFile(filePath);
- File result = builder.getOptionsFile(path);
+ var result = builder.getOptionsFile(path)!;
expect(result, isNotNull);
expect(result.path, filePath);
}
@@ -738,7 +737,7 @@
expect(packages.packages, hasLength(nameToPath.length));
for (var name in nameToPath.keys) {
var expectedPath = nameToPath[name];
- var path = packages[name].libFolder.path;
+ var path = packages[name]!.libFolder.path;
expect(path, expectedPath, reason: 'package $name');
}
}
@@ -770,7 +769,7 @@
expect(actual.strictRawTypes, expected.strictRawTypes);
}
- Uri _relativeUri(String path, {String from}) {
+ Uri _relativeUri(String path, {String? from}) {
var pathContext = resourceProvider.pathContext;
String relativePath = pathContext.relative(path, from: from);
return pathContext.toUri(relativePath);
@@ -781,20 +780,23 @@
class EmbedderYamlLocatorTest extends EmbedderRelatedTest {
void test_empty() {
EmbedderYamlLocator locator = EmbedderYamlLocator({
- 'fox': <Folder>[pathTranslator.getResource(emptyPath)]
+ 'fox': <Folder>[pathTranslator.getResource(emptyPath) as Folder]
});
expect(locator.embedderYamls, hasLength(0));
}
void test_invalid() {
EmbedderYamlLocator locator = EmbedderYamlLocator(null);
- locator.addEmbedderYaml(null, r'''{{{,{{}}},}}''');
+ locator.addEmbedderYaml(
+ pathTranslator.getResource(foxLib) as Folder,
+ r'''{{{,{{}}},}}''',
+ );
expect(locator.embedderYamls, hasLength(0));
}
void test_valid() {
EmbedderYamlLocator locator = EmbedderYamlLocator({
- 'fox': <Folder>[pathTranslator.getResource(foxLib)]
+ 'fox': <Folder>[pathTranslator.getResource(foxLib) as Folder]
});
expect(locator.embedderYamls, hasLength(1));
}
diff --git a/pkg/analyzer/test/src/context/package_config_json_test.dart b/pkg/analyzer/test/src/context/package_config_json_test.dart
index f1e2b45..382d4ce 100644
--- a/pkg/analyzer/test/src/context/package_config_json_test.dart
+++ b/pkg/analyzer/test/src/context/package_config_json_test.dart
@@ -4,7 +4,6 @@
import 'package:analyzer/src/context/package_config_json.dart';
import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart';
-import 'package:meta/meta.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -86,18 +85,20 @@
"generatorVersion": "2.8.0-edge.28b0f1839726c0743e25a2765c5322a24f6e2afa"
}
''');
- expect(config.generated.year, 2019);
- expect(config.generated.month, 12);
- expect(config.generated.day, 10);
- expect(config.generated.hour, 18);
- expect(config.generated.minute, 29);
- expect(config.generated.second, 14);
+ var generated = config.generated!;
+ expect(generated.year, 2019);
+ expect(generated.month, 12);
+ expect(generated.day, 10);
+ expect(generated.hour, 18);
+ expect(generated.minute, 29);
+ expect(generated.second, 14);
expect(config.generator, 'pub');
- expect(config.generatorVersion.major, 2);
- expect(config.generatorVersion.minor, 8);
- expect(config.generatorVersion.patch, 0);
+ var generatorVersion = config.generatorVersion!;
+ expect(generatorVersion.major, 2);
+ expect(generatorVersion.minor, 8);
+ expect(generatorVersion.patch, 0);
}
test_packages() {
@@ -320,12 +321,12 @@
final String name;
final String rootUriPath;
final String packageUriPath;
- final LanguageVersion languageVersion;
+ final LanguageVersion? languageVersion;
_ExpectedPackage({
- @required this.name,
- @required this.rootUriPath,
- @required this.packageUriPath,
- @required this.languageVersion,
+ required this.name,
+ required this.rootUriPath,
+ required this.packageUriPath,
+ required this.languageVersion,
});
}
diff --git a/pkg/analyzer/test/src/context/packages_test.dart b/pkg/analyzer/test/src/context/packages_test.dart
index 0313bbc..204ca42 100644
--- a/pkg/analyzer/test/src/context/packages_test.dart
+++ b/pkg/analyzer/test/src/context/packages_test.dart
@@ -4,7 +4,6 @@
import 'package:analyzer/src/context/packages.dart';
import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart';
-import 'package:meta/meta.dart';
import 'package:pub_semver/pub_semver.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -126,7 +125,7 @@
},
);
- void check(String posixPath, String expectedPackageName) {
+ void check(String posixPath, String? expectedPackageName) {
var path = convertPath(posixPath);
var package = packages.packageForPath(path);
expect(package?.name, expectedPackageName);
@@ -135,7 +134,7 @@
check('/home/aaa/lib/a.dart', 'aaa');
check('/home/aaa/bbb/lib/b.dart', 'bbb');
check('/home/ccc/lib/c.dart', 'ccc');
- check('/home/ddd/lib/c.dart', null);
+ check('/home/ddd/lib/d.dart', null);
}
test_parseDotPackagesFile() {
@@ -313,11 +312,11 @@
void _assertPackage(
Packages packages, {
- @required String name,
- @required String expectedLibPath,
- @required Version expectedVersion,
+ required String name,
+ required String expectedLibPath,
+ required Version? expectedVersion,
}) {
- var package = packages[name];
+ var package = packages[name]!;
expect(package.name, name);
expect(package.libFolder.path, convertPath(expectedLibPath));
expect(package.languageVersion, expectedVersion);
diff --git a/pkg/analyzer/test/src/dart/analysis/analysis_context_collection_test.dart b/pkg/analyzer/test/src/dart/analysis/analysis_context_collection_test.dart
index 02eadbe..2cb3c25 100644
--- a/pkg/analyzer/test/src/dart/analysis/analysis_context_collection_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/analysis_context_collection_test.dart
@@ -5,7 +5,6 @@
import 'package:analyzer/src/dart/analysis/analysis_context_collection.dart';
import 'package:analyzer/src/test_utilities/mock_sdk.dart';
import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart';
-import 'package:meta/meta.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -108,7 +107,7 @@
}
AnalysisContextCollectionImpl _newCollection(
- {@required List<String> includedPaths}) {
+ {required List<String> includedPaths}) {
return AnalysisContextCollectionImpl(
resourceProvider: resourceProvider,
includedPaths: includedPaths,
diff --git a/pkg/analyzer/test/src/dart/analysis/base.dart b/pkg/analyzer/test/src/dart/analysis/base.dart
index 91a5398..c262ddd 100644
--- a/pkg/analyzer/test/src/dart/analysis/base.dart
+++ b/pkg/analyzer/test/src/dart/analysis/base.dart
@@ -24,25 +24,25 @@
import 'package:test/test.dart';
class BaseAnalysisDriverTest with ResourceProviderMixin {
- DartSdk sdk;
+ late final DartSdk sdk;
final ByteStore byteStore = MemoryByteStore();
final FileContentOverlay contentOverlay = FileContentOverlay();
final StringBuffer logBuffer = StringBuffer();
- PerformanceLog logger;
+ late final PerformanceLog logger;
final _GeneratedUriResolverMock generatedUriResolver =
_GeneratedUriResolverMock();
- AnalysisDriverScheduler scheduler;
- AnalysisDriver driver;
+ late final AnalysisDriverScheduler scheduler;
+ late final AnalysisDriver driver;
final List<AnalysisStatus> allStatuses = <AnalysisStatus>[];
final List<ResolvedUnitResult> allResults = <ResolvedUnitResult>[];
final List<ExceptionResult> allExceptions = <ExceptionResult>[];
- String testProject;
- String testProject2;
- String testFile;
- String testCode;
+ late final String testProject;
+ late final String testProject2;
+ late final String testFile;
+ late final String testCode;
List<String> enabledExperiments = [];
@@ -56,8 +56,8 @@
}
AnalysisDriver createAnalysisDriver(
- {Map<String, List<Folder>> packageMap,
- SummaryDataStore externalSummaries}) {
+ {Map<String, List<Folder>>? packageMap,
+ SummaryDataStore? externalSummaries}) {
packageMap ??= <String, List<Folder>>{
'test': [getFolder('$testProject/lib')],
'aaa': [getFolder('/aaa/lib')],
@@ -155,9 +155,9 @@
}
class _GeneratedUriResolverMock implements UriResolver {
- Source Function(Uri, Uri) resolveAbsoluteFunction;
+ Source? Function(Uri, Uri?)? resolveAbsoluteFunction;
- Uri Function(Source) restoreAbsoluteFunction;
+ Uri? Function(Source)? restoreAbsoluteFunction;
@override
void clearCache() {}
@@ -168,17 +168,17 @@
}
@override
- Source resolveAbsolute(Uri uri, [Uri actualUri]) {
+ Source? resolveAbsolute(Uri uri, [Uri? actualUri]) {
if (resolveAbsoluteFunction != null) {
- return resolveAbsoluteFunction(uri, actualUri);
+ return resolveAbsoluteFunction!(uri, actualUri);
}
return null;
}
@override
- Uri restoreAbsolute(Source source) {
+ Uri? restoreAbsolute(Source source) {
if (restoreAbsoluteFunction != null) {
- return restoreAbsoluteFunction(source);
+ return restoreAbsoluteFunction!(source);
}
return null;
}
diff --git a/pkg/analyzer/test/src/dart/analysis/byte_store_test.dart b/pkg/analyzer/test/src/dart/analysis/byte_store_test.dart
index 42bc17b..47202d9 100644
--- a/pkg/analyzer/test/src/dart/analysis/byte_store_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/byte_store_test.dart
@@ -14,7 +14,7 @@
}
List<int> _b(int length) {
- return List<int>.filled(length, null);
+ return List<int>.filled(length, 0);
}
@reflectiveTest
diff --git a/pkg/analyzer/test/src/dart/analysis/cache_test.dart b/pkg/analyzer/test/src/dart/analysis/cache_test.dart
index b966f63..9a6cac3 100644
--- a/pkg/analyzer/test/src/dart/analysis/cache_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/cache_test.dart
@@ -13,7 +13,7 @@
}
List<int> _b(int length) {
- return List<int>.filled(length, null);
+ return List<int>.filled(length, 0);
}
@reflectiveTest
@@ -97,5 +97,5 @@
Cache<String, List<int>> _newBytesCache(int maxSizeBytes) =>
Cache<String, List<int>>(maxSizeBytes, (bytes) => bytes.length);
- static List<int> _noBytes() => null;
+ static List<int>? _noBytes() => null;
}
diff --git a/pkg/analyzer/test/src/dart/analysis/context_builder_test.dart b/pkg/analyzer/test/src/dart/analysis/context_builder_test.dart
index 439d445..bf798bc 100644
--- a/pkg/analyzer/test/src/dart/analysis/context_builder_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/context_builder_test.dart
@@ -21,8 +21,8 @@
@reflectiveTest
class ContextBuilderImplTest with ResourceProviderMixin {
- ContextBuilderImpl contextBuilder;
- ContextRoot contextRoot;
+ late final ContextBuilderImpl contextBuilder;
+ late final ContextRoot contextRoot;
void assertEquals(DeclaredVariables actual, DeclaredVariables expected) {
Iterable<String> actualNames = actual.variableNames;
@@ -43,11 +43,11 @@
MockSdk(resourceProvider: resourceProvider);
DeclaredVariables declaredVariables =
DeclaredVariables.fromMap({'foo': 'true'});
- DriverBasedAnalysisContext context = contextBuilder.createContext(
+ var context = contextBuilder.createContext(
contextRoot: contextRoot,
declaredVariables: declaredVariables,
sdkPath: resourceProvider.convertPath(sdkRoot),
- );
+ ) as DriverBasedAnalysisContext;
expect(context.analysisOptions, isNotNull);
expect(context.contextRoot, contextRoot);
assertEquals(context.driver.declaredVariables, declaredVariables);
@@ -57,14 +57,15 @@
DeclaredVariables declaredVariables =
DeclaredVariables.fromMap({'bar': 'true'});
MockSdk sdk = MockSdk(resourceProvider: resourceProvider);
- DriverBasedAnalysisContext context = contextBuilder.createContext(
- contextRoot: contextRoot,
- declaredVariables: declaredVariables,
- sdkPath: resourceProvider.convertPath(sdkRoot));
+ var context = contextBuilder.createContext(
+ contextRoot: contextRoot,
+ declaredVariables: declaredVariables,
+ sdkPath: resourceProvider.convertPath(sdkRoot))
+ as DriverBasedAnalysisContext;
expect(context.analysisOptions, isNotNull);
expect(context.contextRoot, contextRoot);
assertEquals(context.driver.declaredVariables, declaredVariables);
- expect(context.driver.sourceFactory.dartSdk.mapDartUri('dart:core'),
+ expect(context.driver.sourceFactory.dartSdk!.mapDartUri('dart:core'),
sdk.mapDartUri('dart:core'));
}
@@ -80,12 +81,13 @@
test_createContext_sdkPath() {
MockSdk sdk = MockSdk(resourceProvider: resourceProvider);
- DriverBasedAnalysisContext context = contextBuilder.createContext(
- contextRoot: contextRoot,
- sdkPath: resourceProvider.convertPath(sdkRoot));
+ var context = contextBuilder.createContext(
+ contextRoot: contextRoot,
+ sdkPath: resourceProvider.convertPath(sdkRoot))
+ as DriverBasedAnalysisContext;
expect(context.analysisOptions, isNotNull);
expect(context.contextRoot, contextRoot);
- expect(context.driver.sourceFactory.dartSdk.mapDartUri('dart:core'),
+ expect(context.driver.sourceFactory.dartSdk!.mapDartUri('dart:core'),
sdk.mapDartUri('dart:core'));
}
diff --git a/pkg/analyzer/test/src/dart/analysis/context_locator_test.dart b/pkg/analyzer/test/src/dart/analysis/context_locator_test.dart
index df58649..560bb58 100644
--- a/pkg/analyzer/test/src/dart/analysis/context_locator_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/context_locator_test.dart
@@ -17,7 +17,7 @@
@reflectiveTest
class ContextLocatorImplTest with ResourceProviderMixin {
- ContextLocatorImpl contextLocator;
+ late final ContextLocatorImpl contextLocator;
ContextRoot findRoot(List<ContextRoot> roots, Resource rootFolder) {
for (ContextRoot root in roots) {
@@ -120,7 +120,7 @@
expect(outer1Root.optionsFile, outer1OptionsFile);
expect(outer1Root.packagesFile, outer1PackagesFile);
- ContextRoot outer2Root = findRoot(roots, testFile.parent);
+ ContextRoot outer2Root = findRoot(roots, testFile.parent!);
expect(outer2Root.includedPaths, unorderedEquals([testFile.path]));
expect(outer2Root.excludedPaths, isEmpty);
expect(outer2Root.optionsFile, outer2OptionsFile);
@@ -369,7 +369,7 @@
expect(
outerRoot.excludedPaths,
unorderedEquals([
- outerPackagesFile.parent.path,
+ outerPackagesFile.parent!.path,
innerRootFolder.path,
]),
);
@@ -381,7 +381,7 @@
expect(
innerRoot.excludedPaths,
unorderedEquals([
- innerPackagesFile.parent.path,
+ innerPackagesFile.parent!.path,
]),
);
expect(innerRoot.optionsFile, outerOptionsFile);
@@ -471,7 +471,7 @@
ContextRoot outerRoot = findRoot(roots, outerRootFolder);
expect(outerRoot.includedPaths, unorderedEquals([outerRootFolder.path]));
expect(outerRoot.excludedPaths,
- unorderedEquals([innerOptionsFile.parent.path]));
+ unorderedEquals([innerOptionsFile.parent!.path]));
expect(outerRoot.optionsFile, outerOptionsFile);
expect(outerRoot.packagesFile, outerPackagesFile);
}
@@ -577,7 +577,7 @@
expect(
contentRoot.excludedPaths,
unorderedEquals(
- [packageConfigJsonFile.parent.path],
+ [packageConfigJsonFile.parent!.path],
),
);
expect(contentRoot.optionsFile, optionsFile);
@@ -593,7 +593,7 @@
contextLocator.locateRoots(includedPaths: [testFile.path]);
expect(roots, hasLength(1));
- ContextRoot package1Root = findRoot(roots, testFile.parent);
+ ContextRoot package1Root = findRoot(roots, testFile.parent!);
expect(package1Root.includedPaths, unorderedEquals([testFile.path]));
expect(package1Root.excludedPaths, isEmpty);
expect(package1Root.optionsFile, optionsFile);
diff --git a/pkg/analyzer/test/src/dart/analysis/context_root_test.dart b/pkg/analyzer/test/src/dart/analysis/context_root_test.dart
index ce510fe..d640ddd 100644
--- a/pkg/analyzer/test/src/dart/analysis/context_root_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/context_root_test.dart
@@ -16,9 +16,9 @@
@reflectiveTest
class ContextRootTest with ResourceProviderMixin {
- String rootPath;
- Folder rootFolder;
- ContextRootImpl contextRoot;
+ late final String rootPath;
+ late final Folder rootFolder;
+ late ContextRootImpl contextRoot;
void setUp() {
rootPath = convertPath('/test/root');
diff --git a/pkg/analyzer/test/src/dart/analysis/dependency/base.dart b/pkg/analyzer/test/src/dart/analysis/dependency/base.dart
index 6c12cef..5581413 100644
--- a/pkg/analyzer/test/src/dart/analysis/dependency/base.dart
+++ b/pkg/analyzer/test/src/dart/analysis/dependency/base.dart
@@ -5,24 +5,23 @@
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/src/dart/analysis/dependency/library_builder.dart';
import 'package:analyzer/src/dart/analysis/dependency/node.dart';
-import 'package:meta/meta.dart';
import 'package:test/test.dart';
import '../../resolution/context_collection_resolution.dart';
class BaseDependencyTest extends PubPackageResolutionTest {
// DependencyTracker tracker;
- String a;
- String b;
- String c;
- Uri aUri;
- Uri bUri;
- Uri cUri;
+ late final String a;
+ late final String b;
+ late final String c;
+ late final Uri aUri;
+ late final Uri bUri;
+ late final Uri cUri;
bool hasDartCore = false;
void assertNodes(List<Node> actualNodes, List<ExpectedNode> expectedNodes,
- {Node expectedEnclosingClass}) {
+ {Node? expectedEnclosingClass}) {
expect(actualNodes, hasLength(expectedNodes.length));
for (var expectedNode in expectedNodes) {
var topNode = _getNode(
@@ -34,7 +33,7 @@
expect(topNode.enclosingClass, expectedEnclosingClass);
if (expectedNode.classMembers != null) {
- assertNodes(topNode.classMembers, expectedNode.classMembers,
+ assertNodes(topNode.classMembers!, expectedNode.classMembers!,
expectedEnclosingClass: topNode);
} else {
expect(topNode.classMembers, isNull);
@@ -42,8 +41,8 @@
if (expectedNode.classTypeParameters != null) {
assertNodes(
- topNode.classTypeParameters,
- expectedNode.classTypeParameters,
+ topNode.classTypeParameters!,
+ expectedNode.classTypeParameters!,
expectedEnclosingClass: topNode,
);
} else {
@@ -65,7 +64,7 @@
driverFor(path).changeFile(path);
var units = await _resolveLibrary(path);
- var uri = units.first.declaredElement.source.uri;
+ var uri = units.first.declaredElement!.source.uri;
return buildLibrary(uri, units);
@@ -78,10 +77,10 @@
}
Node getNode(Library library,
- {@required String name,
- NodeKind kind,
- String memberOf,
- String typeParameterOf}) {
+ {required String name,
+ NodeKind? kind,
+ String? memberOf,
+ String? typeParameterOf}) {
var uri = library.uri;
var nodes = library.declaredNodes;
if (memberOf != null) {
@@ -90,11 +89,11 @@
class_.kind,
anyOf(NodeKind.CLASS, NodeKind.ENUM, NodeKind.MIXIN),
);
- nodes = class_.classMembers;
+ nodes = class_.classMembers!;
} else if (typeParameterOf != null) {
var class_ = _getNode(nodes, uri: uri, name: typeParameterOf);
expect(class_.kind, anyOf(NodeKind.CLASS, NodeKind.MIXIN));
- nodes = class_.classTypeParameters;
+ nodes = class_.classTypeParameters!;
}
return _getNode(nodes, uri: uri, name: name, kind: kind);
}
@@ -124,7 +123,7 @@
// }
Node _getNode(List<Node> nodes,
- {@required Uri uri, @required String name, NodeKind kind}) {
+ {required Uri uri, required String name, NodeKind? kind}) {
var nameObj = LibraryQualifiedName(uri, name);
for (var node in nodes) {
if (node.name == nameObj) {
@@ -140,7 +139,7 @@
Future<List<CompilationUnit>> _resolveLibrary(String libraryPath) async {
var session = contextFor(libraryPath).currentSession;
var resolvedLibrary = await session.getResolvedLibrary(libraryPath);
- return resolvedLibrary.units.map((ru) => ru.unit).toList();
+ return resolvedLibrary.units!.map((ru) => ru.unit!).toList();
}
}
@@ -148,8 +147,8 @@
final Uri uri;
final String name;
final NodeKind kind;
- final List<ExpectedNode> classMembers;
- final List<ExpectedNode> classTypeParameters;
+ final List<ExpectedNode>? classMembers;
+ final List<ExpectedNode>? classTypeParameters;
ExpectedNode(
this.uri,
diff --git a/pkg/analyzer/test/src/dart/analysis/dependency/declared_nodes_test.dart b/pkg/analyzer/test/src/dart/analysis/dependency/declared_nodes_test.dart
index 5fbbf4b..c59eefd 100644
--- a/pkg/analyzer/test/src/dart/analysis/dependency/declared_nodes_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/dependency/declared_nodes_test.dart
@@ -1683,7 +1683,7 @@
Future<void> _assertApiTokenSignatureNotSame(
String name, NodeKind kind, String codeBefore, String codeAfter,
- {String memberOf, String typeParameterOf}) async {
+ {String? memberOf, String? typeParameterOf}) async {
Node getNodeLocal(Library library) {
return getNode(
library,
@@ -1708,7 +1708,7 @@
Future<void> _assertApiTokenSignatureSame(
String name, NodeKind kind, String codeBefore, String codeAfter,
- {String memberOf, String typeParameterOf}) async {
+ {String? memberOf, String? typeParameterOf}) async {
Node getNodeLocal(Library library) {
return getNode(
library,
diff --git a/pkg/analyzer/test/src/dart/analysis/dependency/reference_collector_test.dart b/pkg/analyzer/test/src/dart/analysis/dependency/reference_collector_test.dart
index 196abda..01ca1e1 100644
--- a/pkg/analyzer/test/src/dart/analysis/dependency/reference_collector_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/dependency/reference_collector_test.dart
@@ -2246,8 +2246,8 @@
class _Base extends BaseDependencyTest {
void _assertApi(Library library, String name, NodeKind kind,
- {String memberOf,
- String typeParameterOf,
+ {String? memberOf,
+ String? typeParameterOf,
List<String> unprefixed = const [],
Map<String, List<String>> prefixed = const {},
List<String> superPrefixed = const [],
@@ -2295,8 +2295,8 @@
}
void _assertImpl(Library library, String name, NodeKind kind,
- {String memberOf,
- String typeParameterOf,
+ {String? memberOf,
+ String? typeParameterOf,
List<String> unprefixed = const [],
Map<String, List<String>> prefixed = const {},
List<String> superPrefixed = const [],
diff --git a/pkg/analyzer/test/src/dart/analysis/driver_caching_test.dart b/pkg/analyzer/test/src/dart/analysis/driver_caching_test.dart
index 31db512..72108e0 100644
--- a/pkg/analyzer/test/src/dart/analysis/driver_caching_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/driver_caching_test.dart
@@ -96,6 +96,7 @@
_assertNoLinkedCycles();
}
+ @FailingTest(issue: 'https://github.com/dart-lang/linter/issues/2399')
test_lints() async {
useEmptyByteStore();
diff --git a/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart b/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart
index 25d5b03..020f3a0 100644
--- a/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart
@@ -37,12 +37,12 @@
class AnalysisDriverResolutionTest extends PubPackageResolutionTest
with ElementsTypesMixin {
void assertDeclaredVariableType(SimpleIdentifier node, String expected) {
- VariableElement element = node.staticElement;
+ var element = node.staticElement as VariableElement;
assertType(element.type, expected);
}
void assertDeclaredVariableTypeDynamic(SimpleIdentifier node) {
- VariableElement element = node.staticElement;
+ var element = node.staticElement as VariableElement;
expect(element.type, isDynamicType);
}
@@ -83,7 +83,7 @@
expect(nameIdentifier.staticElement, isNull);
expect(nameIdentifier.staticType, isNull);
- SimpleIdentifier expression = named.expression;
+ var expression = named.expression as SimpleIdentifier;
expect(expression.staticElement, same(variable.getter));
expect(expression.staticType, variable.type);
};
@@ -100,8 +100,8 @@
List<Statement> statements = _getMainStatements(result);
- ExpressionStatement statement = statements[0];
- AdjacentStrings expression = statement.expression;
+ var statement = statements[0] as ExpressionStatement;
+ var expression = statement.expression as AdjacentStrings;
expect(expression.staticType, typeProvider.stringType);
expect(expression.strings, hasLength(3));
@@ -141,46 +141,47 @@
await resolveTestFile();
- TopLevelVariableDeclaration myDeclaration = result.unit.declarations[0];
- VariableDeclaration myVariable = myDeclaration.variables.variables[0];
- TopLevelVariableElement myElement = myVariable.declaredElement;
+ var myDeclaration =
+ result.unit!.declarations[0] as TopLevelVariableDeclaration;
+ var myVariable = myDeclaration.variables.variables[0];
+ var myElement = myVariable.declaredElement as TopLevelVariableElement;
void assertMyAnnotation(AnnotatedNode node) {
Annotation annotation = node.metadata[0];
expect(annotation.element, same(myElement.getter));
- SimpleIdentifier identifier_1 = annotation.name;
+ var identifier_1 = annotation.name as SimpleIdentifier;
expect(identifier_1.staticElement, same(myElement.getter));
expect(identifier_1.staticType, isNull);
}
{
- ClassDeclaration classNode = result.unit.declarations[1];
+ var classNode = result.unit!.declarations[1] as ClassDeclaration;
assertMyAnnotation(classNode);
{
- FieldDeclaration node = classNode.members[0];
+ var node = classNode.members[0] as FieldDeclaration;
assertMyAnnotation(node);
}
{
- ConstructorDeclaration node = classNode.members[1];
+ var node = classNode.members[1] as ConstructorDeclaration;
assertMyAnnotation(node);
}
{
- MethodDeclaration node = classNode.members[2];
+ var node = classNode.members[2] as MethodDeclaration;
assertMyAnnotation(node);
}
}
{
- TopLevelVariableDeclaration node = result.unit.declarations[2];
+ var node = result.unit!.declarations[2] as TopLevelVariableDeclaration;
assertMyAnnotation(node);
}
{
- FunctionDeclaration node = result.unit.declarations[3];
+ var node = result.unit!.declarations[3] as FunctionDeclaration;
assertMyAnnotation(node);
}
}
@@ -200,7 +201,7 @@
Annotation annotation = directive.metadata[0];
expect(annotation.element, findElement.topGet('a'));
- SimpleIdentifier aRef = annotation.name;
+ var aRef = annotation.name as SimpleIdentifier;
assertElement(aRef, findElement.topGet('a'));
assertTypeNull(aRef);
}
@@ -220,7 +221,7 @@
Annotation annotation = directive.metadata[0];
expect(annotation.element, findElement.topGet('a'));
- SimpleIdentifier aRef = annotation.name;
+ var aRef = annotation.name as SimpleIdentifier;
assertElement(aRef, findElement.topGet('a'));
assertTypeNull(aRef);
}
@@ -240,7 +241,7 @@
Annotation annotation = directive.metadata[0];
expect(annotation.element, findElement.topGet('a'));
- SimpleIdentifier aRef = annotation.name;
+ var aRef = annotation.name as SimpleIdentifier;
assertElement(aRef, findElement.topGet('a'));
assertTypeNull(aRef);
}
@@ -263,7 +264,7 @@
Annotation annotation = directive.metadata[0];
expect(annotation.element, findElement.topGet('a'));
- SimpleIdentifier aRef = annotation.name;
+ var aRef = annotation.name as SimpleIdentifier;
assertElement(aRef, findElement.topGet('a'));
assertTypeNull(aRef);
}
@@ -286,7 +287,7 @@
Annotation annotation = directive.metadata[0];
expect(annotation.element, findElement.topGet('a'));
- SimpleIdentifier aRef = annotation.name;
+ var aRef = annotation.name as SimpleIdentifier;
assertElement(aRef, findElement.topGet('a'));
assertTypeNull(aRef);
}
@@ -308,7 +309,7 @@
var getter = findElement.topGet(name);
expect(annotation.element, getter);
- SimpleIdentifier ref = annotation.name;
+ var ref = annotation.name as SimpleIdentifier;
assertElement(ref, getter);
assertTypeNull(ref);
}
@@ -344,17 +345,18 @@
await resolveTestFile();
- ClassDeclaration c = result.unit.declarations[0];
- ConstructorDeclaration constructor = c.members[1];
- ConstructorElement element = constructor.declaredElement;
+ var c = result.unit!.declarations[0] as ClassDeclaration;
+ var constructor = c.members[1] as ConstructorDeclaration;
+ ConstructorElement element = constructor.declaredElement!;
- FunctionDeclaration main = result.unit.declarations[1];
- VariableDeclarationStatement statement =
- (main.functionExpression.body as BlockFunctionBody).block.statements[0];
+ var main = result.unit!.declarations[1] as FunctionDeclaration;
+ var statement = (main.functionExpression.body as BlockFunctionBody)
+ .block
+ .statements[0] as VariableDeclarationStatement;
Annotation annotation = statement.variables.metadata[0];
expect(annotation.element, same(element));
- SimpleIdentifier identifier_1 = annotation.name;
+ var identifier_1 = annotation.name as SimpleIdentifier;
expect(identifier_1.staticElement, same(c.declaredElement));
}
@@ -373,18 +375,19 @@
await resolveTestFile();
- TopLevelVariableDeclaration myDeclaration = result.unit.declarations[0];
+ var myDeclaration =
+ result.unit!.declarations[0] as TopLevelVariableDeclaration;
VariableDeclaration myVariable = myDeclaration.variables.variables[0];
- TopLevelVariableElement myElement = myVariable.declaredElement;
+ var myElement = myVariable.declaredElement as TopLevelVariableElement;
- ClassDeclaration classNode = result.unit.declarations[1];
- MethodDeclaration node = classNode.members[0];
- VariableDeclarationStatement statement =
- (node.body as BlockFunctionBody).block.statements[0];
+ var classNode = result.unit!.declarations[1] as ClassDeclaration;
+ var node = classNode.members[0] as MethodDeclaration;
+ var statement = (node.body as BlockFunctionBody).block.statements[0]
+ as VariableDeclarationStatement;
Annotation annotation = statement.variables.metadata[0];
expect(annotation.element, same(myElement.getter));
- SimpleIdentifier identifier_1 = annotation.name;
+ var identifier_1 = annotation.name as SimpleIdentifier;
expect(identifier_1.staticElement, same(myElement.getter));
assertTypeNull(identifier_1);
}
@@ -402,19 +405,19 @@
main() {}
''');
await resolveTestFile();
- CompilationUnit unit = result.unit;
+ CompilationUnit unit = result.unit!;
- ImportElement aImport = unit.declaredElement.library.imports[0];
- PrefixElement aPrefix = aImport.prefix;
- LibraryElement aLibrary = aImport.importedLibrary;
+ ImportElement aImport = unit.declaredElement!.library.imports[0];
+ PrefixElement aPrefix = aImport.prefix!;
+ LibraryElement aLibrary = aImport.importedLibrary!;
CompilationUnitElement aUnitElement = aLibrary.definingCompilationUnit;
- ClassElement aClass = aUnitElement.getType('A');
- var aGetter = aClass.getField('a').getter;
+ ClassElement aClass = aUnitElement.getType('A')!;
+ var aGetter = aClass.getField('a')!.getter;
Annotation annotation = unit.declarations[0].metadata.single;
expect(annotation.element, same(aGetter));
- PrefixedIdentifier prefixed = annotation.name;
+ var prefixed = annotation.name as PrefixedIdentifier;
expect(prefixed.prefix.staticElement, same(aPrefix));
expect(prefixed.prefix.staticType, isNull);
@@ -422,8 +425,8 @@
expect(prefixed.identifier.staticElement, same(aClass));
expect(prefixed.prefix.staticType, isNull);
- expect(annotation.constructorName.staticElement, aGetter);
- expect(annotation.constructorName.staticType, typeProvider.intType);
+ expect(annotation.constructorName!.staticElement, aGetter);
+ expect(annotation.constructorName!.staticType, typeProvider.intType);
expect(annotation.arguments, isNull);
}
@@ -441,19 +444,19 @@
main() {}
''');
await resolveTestFile();
- CompilationUnit unit = result.unit;
+ CompilationUnit unit = result.unit!;
- ImportElement aImport = unit.declaredElement.library.imports[0];
- PrefixElement aPrefix = aImport.prefix;
- LibraryElement aLibrary = aImport.importedLibrary;
+ ImportElement aImport = unit.declaredElement!.library.imports[0];
+ PrefixElement aPrefix = aImport.prefix!;
+ LibraryElement aLibrary = aImport.importedLibrary!;
CompilationUnitElement aUnitElement = aLibrary.definingCompilationUnit;
- ClassElement aClass = aUnitElement.getType('A');
- ConstructorElement constructor = aClass.unnamedConstructor;
+ ClassElement aClass = aUnitElement.getType('A')!;
+ ConstructorElement constructor = aClass.unnamedConstructor!;
Annotation annotation = unit.declarations[0].metadata.single;
expect(annotation.element, same(constructor));
- PrefixedIdentifier prefixed = annotation.name;
+ var prefixed = annotation.name as PrefixedIdentifier;
expect(prefixed.prefix.staticElement, same(aPrefix));
expect(prefixed.prefix.staticType, isNull);
@@ -463,7 +466,7 @@
expect(annotation.constructorName, isNull);
- var arguments = annotation.arguments.arguments;
+ var arguments = annotation.arguments!.arguments;
var parameters = constructor.parameters;
_assertArgumentToParameter(arguments[0], parameters[0]);
_assertArgumentToParameter(arguments[1], parameters[1]);
@@ -482,19 +485,19 @@
main() {}
''');
await resolveTestFile();
- CompilationUnit unit = result.unit;
+ CompilationUnit unit = result.unit!;
- ImportElement aImport = unit.declaredElement.library.imports[0];
- PrefixElement aPrefix = aImport.prefix;
- LibraryElement aLibrary = aImport.importedLibrary;
+ ImportElement aImport = unit.declaredElement!.library.imports[0];
+ PrefixElement aPrefix = aImport.prefix!;
+ LibraryElement aLibrary = aImport.importedLibrary!;
CompilationUnitElement aUnitElement = aLibrary.definingCompilationUnit;
- ClassElement aClass = aUnitElement.getType('A');
- ConstructorElement constructor = aClass.getNamedConstructor('named');
+ ClassElement aClass = aUnitElement.getType('A')!;
+ ConstructorElement constructor = aClass.getNamedConstructor('named')!;
Annotation annotation = unit.declarations[0].metadata.single;
expect(annotation.element, same(constructor));
- PrefixedIdentifier prefixed = annotation.name;
+ var prefixed = annotation.name as PrefixedIdentifier;
expect(prefixed.prefix.staticElement, same(aPrefix));
expect(prefixed.prefix.staticType, isNull);
@@ -502,11 +505,11 @@
expect(prefixed.identifier.staticElement, same(aClass));
expect(prefixed.prefix.staticType, isNull);
- SimpleIdentifier constructorName = annotation.constructorName;
+ var constructorName = annotation.constructorName as SimpleIdentifier;
expect(constructorName.staticElement, same(constructor));
assertType(constructorName.staticType, 'A Function(int, {int b})');
- var arguments = annotation.arguments.arguments;
+ var arguments = annotation.arguments!.arguments;
var parameters = constructor.parameters;
_assertArgumentToParameter(arguments[0], parameters[0]);
_assertArgumentToParameter(arguments[1], parameters[1]);
@@ -523,18 +526,18 @@
main() {}
''');
await resolveTestFile();
- CompilationUnit unit = result.unit;
+ CompilationUnit unit = result.unit!;
- ImportElement aImport = unit.declaredElement.library.imports[0];
- PrefixElement aPrefix = aImport.prefix;
- LibraryElement aLibrary = aImport.importedLibrary;
+ ImportElement aImport = unit.declaredElement!.library.imports[0];
+ PrefixElement aPrefix = aImport.prefix!;
+ LibraryElement aLibrary = aImport.importedLibrary!;
CompilationUnitElement aUnitElement = aLibrary.definingCompilationUnit;
var topAnnotation = aUnitElement.topLevelVariables[0].getter;
Annotation annotation = unit.declarations[0].metadata.single;
expect(annotation.element, same(topAnnotation));
- PrefixedIdentifier prefixed = annotation.name;
+ var prefixed = annotation.name as PrefixedIdentifier;
expect(prefixed.prefix.staticElement, same(aPrefix));
expect(prefixed.prefix.staticType, isNull);
@@ -556,15 +559,15 @@
}
''');
await resolveTestFile();
- CompilationUnit unit = result.unit;
- CompilationUnitElement unitElement = unit.declaredElement;
+ CompilationUnit unit = result.unit!;
+ CompilationUnitElement unitElement = unit.declaredElement!;
- ClassElement aClass = unitElement.getType('A');
- var aGetter = aClass.getField('a').getter;
+ ClassElement aClass = unitElement.getType('A')!;
+ var aGetter = aClass.getField('a')!.getter;
Annotation annotation = unit.declarations[0].metadata.single;
expect(annotation.element, same(aGetter));
- PrefixedIdentifier prefixed = annotation.name;
+ var prefixed = annotation.name as PrefixedIdentifier;
expect(prefixed.prefix.staticElement, same(aClass));
assertTypeNull(prefixed.prefix);
@@ -586,21 +589,21 @@
}
''');
await resolveTestFile();
- CompilationUnit unit = result.unit;
- CompilationUnitElement unitElement = unit.declaredElement;
+ CompilationUnit unit = result.unit!;
+ CompilationUnitElement unitElement = unit.declaredElement!;
- ClassElement aClass = unitElement.getType('A');
- ConstructorElement constructor = aClass.unnamedConstructor;
+ ClassElement aClass = unitElement.getType('A')!;
+ ConstructorElement constructor = aClass.unnamedConstructor!;
Annotation annotation = unit.declarations[0].metadata.single;
expect(annotation.element, same(constructor));
- SimpleIdentifier name = annotation.name;
+ var name = annotation.name as SimpleIdentifier;
expect(name.staticElement, same(aClass));
expect(annotation.constructorName, isNull);
- var arguments = annotation.arguments.arguments;
+ var arguments = annotation.arguments!.arguments;
var parameters = constructor.parameters;
_assertArgumentToParameter(arguments[0], parameters[0]);
_assertArgumentToParameter(arguments[1], parameters[1]);
@@ -616,15 +619,15 @@
}
''');
await resolveTestFile();
- CompilationUnit unit = result.unit;
- CompilationUnitElement unitElement = unit.declaredElement;
+ CompilationUnit unit = result.unit!;
+ CompilationUnitElement unitElement = unit.declaredElement!;
- ClassElement aClass = unitElement.getType('A');
+ ClassElement aClass = unitElement.getType('A')!;
ConstructorElement constructor = aClass.constructors.single;
Annotation annotation = unit.declarations[0].metadata.single;
expect(annotation.element, same(constructor));
- PrefixedIdentifier prefixed = annotation.name;
+ var prefixed = annotation.name as PrefixedIdentifier;
expect(prefixed.prefix.staticElement, same(aClass));
assertTypeNull(prefixed.prefix);
@@ -634,7 +637,7 @@
expect(annotation.constructorName, isNull);
- var arguments = annotation.arguments.arguments;
+ var arguments = annotation.arguments!.arguments;
var parameters = constructor.parameters;
_assertArgumentToParameter(arguments[0], parameters[0]);
_assertArgumentToParameter(arguments[1], parameters[1]);
@@ -653,12 +656,12 @@
f() {}
''');
await resolveTestFile();
- var elementC = AstFinder.getClass(result.unit, 'C').declaredElement;
+ var elementC = AstFinder.getClass(result.unit!, 'C').declaredElement!;
var constructorC = elementC.constructors[0];
- var elementD = AstFinder.getClass(result.unit, 'D').declaredElement;
+ var elementD = AstFinder.getClass(result.unit!, 'D').declaredElement!;
var constructorD = elementD.constructors[0];
- var atD = AstFinder.getTopLevelFunction(result.unit, 'f').metadata[0];
- InstanceCreationExpression constC = atD.arguments.arguments[0];
+ var atD = AstFinder.getTopLevelFunction(result.unit!, 'f').metadata[0];
+ var constC = atD.arguments!.arguments[0] as InstanceCreationExpression;
expect(atD.name.staticElement, elementD);
expect(atD.element, constructorD);
@@ -684,27 +687,29 @@
await resolveTestFile();
- TopLevelVariableDeclaration declaration_1 = result.unit.declarations[0];
+ var declaration_1 =
+ result.unit!.declarations[0] as TopLevelVariableDeclaration;
VariableDeclaration variable_1 = declaration_1.variables.variables[0];
- TopLevelVariableElement element_1 = variable_1.declaredElement;
+ var element_1 = variable_1.declaredElement as TopLevelVariableElement;
- TopLevelVariableDeclaration declaration_2 = result.unit.declarations[1];
+ var declaration_2 =
+ result.unit!.declarations[1] as TopLevelVariableDeclaration;
VariableDeclaration variable_2 = declaration_2.variables.variables[0];
- TopLevelVariableElement element_2 = variable_2.declaredElement;
+ var element_2 = variable_2.declaredElement as TopLevelVariableElement;
- FunctionDeclaration main = result.unit.declarations[2];
+ var main = result.unit!.declarations[2] as FunctionDeclaration;
Annotation annotation_1 = main.metadata[0];
expect(annotation_1.element, same(element_1.getter));
- SimpleIdentifier identifier_1 = annotation_1.name;
+ var identifier_1 = annotation_1.name as SimpleIdentifier;
expect(identifier_1.staticElement, same(element_1.getter));
assertTypeNull(identifier_1);
Annotation annotation_2 = main.metadata[1];
expect(annotation_2.element, same(element_2.getter));
- SimpleIdentifier identifier_2 = annotation_2.name;
+ var identifier_2 = annotation_2.name as SimpleIdentifier;
expect(identifier_2.staticElement, same(element_2.getter));
assertTypeNull(identifier_2);
}
@@ -717,27 +722,28 @@
}
''');
- NodeList<Statement> statements = _getMainStatements(result);
+ List<Statement> statements = _getMainStatements(result);
// num v = 42;
VariableElement vElement;
{
- VariableDeclarationStatement statement = statements[0];
- vElement = statement.variables.variables[0].name.staticElement;
+ var statement = statements[0] as VariableDeclarationStatement;
+ vElement = statement.variables.variables[0].name.staticElement
+ as VariableElement;
expect(vElement.type, typeProvider.numType);
}
// v as int;
{
- ExpressionStatement statement = statements[1];
- AsExpression asExpression = statement.expression;
+ var statement = statements[1] as ExpressionStatement;
+ var asExpression = statement.expression as AsExpression;
expect(asExpression.staticType, typeProvider.intType);
- SimpleIdentifier target = asExpression.expression;
+ var target = asExpression.expression as SimpleIdentifier;
expect(target.staticElement, vElement);
expect(target.staticType, typeProvider.numType);
- TypeName intName = asExpression.type;
+ var intName = asExpression.type as TypeName;
expect(intName.name.staticElement, typeProvider.intType.element);
expect(intName.name.staticType, isNull);
}
@@ -768,15 +774,15 @@
List<Statement> mainStatements = _getMainStatements(result);
- VariableDeclarationStatement statement = mainStatements[0];
+ var statement = mainStatements[0] as VariableDeclarationStatement;
VariableDeclaration vNode = statement.variables.variables[0];
- VariableElement vElement = vNode.declaredElement;
+ VariableElement vElement = vNode.declaredElement!;
expect(vElement.type, typeProvider.intType);
- BinaryExpression value = vNode.initializer;
+ var value = vNode.initializer as BinaryExpression;
expect(value.leftOperand.staticType, typeProvider.intType);
expect(value.rightOperand.staticType, typeProvider.intType);
- expect(value.staticElement.name, '+');
+ expect(value.staticElement!.name, '+');
expect(value.staticType, typeProvider.intType);
}
@@ -827,8 +833,8 @@
List<Statement> mainStatements = _getMainStatements(result);
- ExpressionStatement statement = mainStatements[0];
- BinaryExpression binary = statement.expression;
+ var statement = mainStatements[0] as ExpressionStatement;
+ var binary = statement.expression as BinaryExpression;
expect(binary.operator.type, TokenType.QUESTION_QUESTION);
expect(binary.staticElement, isNull);
expect(binary.staticType, typeProvider.numType);
@@ -849,15 +855,15 @@
List<Statement> statements = _getMainStatements(result);
{
- ExpressionStatement statement = statements[0];
- BinaryExpression binaryExpression = statement.expression;
+ var statement = statements[0] as ExpressionStatement;
+ var binaryExpression = statement.expression as BinaryExpression;
expect(binaryExpression.staticElement, isNull);
expect(binaryExpression.staticType, typeProvider.boolType);
}
{
- ExpressionStatement statement = statements[1];
- BinaryExpression binaryExpression = statement.expression;
+ var statement = statements[1] as ExpressionStatement;
+ var binaryExpression = statement.expression as BinaryExpression;
expect(binaryExpression.staticElement, isNull);
expect(binaryExpression.staticType, typeProvider.boolType);
}
@@ -874,12 +880,12 @@
await resolveTestFile();
List<Statement> statements = _getMainStatements(result);
- ExpressionStatement statement = statements[0];
- BinaryExpression expression = statement.expression;
+ var statement = statements[0] as ExpressionStatement;
+ var expression = statement.expression as BinaryExpression;
expect(expression.operator.type, TokenType.BANG_EQ);
expect(expression.leftOperand.staticType, typeProvider.intType);
expect(expression.rightOperand.staticType, typeProvider.intType);
- expect(expression.staticElement.name, '==');
+ expect(expression.staticElement!.name, '==');
expect(expression.staticType, typeProvider.boolType);
}
@@ -924,16 +930,16 @@
List<Statement> statements = _getMainStatements(result);
- ExpressionStatement statement = statements[0];
- CascadeExpression expression = statement.expression;
+ var statement = statements[0] as ExpressionStatement;
+ var expression = statement.expression as CascadeExpression;
expect(expression.target.staticType, isNotNull);
NodeList<Expression> sections = expression.cascadeSections;
- MethodInvocation a = sections[0];
+ var a = sections[0] as MethodInvocation;
expect(a.methodName.staticElement, isNotNull);
expect(a.staticType, isNotNull);
- MethodInvocation b = sections[1];
+ var b = sections[1] as MethodInvocation;
expect(b.methodName.staticElement, isNotNull);
expect(b.staticType, isNotNull);
}
@@ -952,27 +958,28 @@
''');
await resolveTestFile();
- FunctionDeclaration mainDeclaration = result.unit.declarations[0];
- FunctionElement mainElement = mainDeclaration.declaredElement;
- BlockFunctionBody mainBody = mainDeclaration.functionExpression.body;
+ var mainDeclaration = result.unit!.declarations[0] as FunctionDeclaration;
+ var mainElement = mainDeclaration.declaredElement as FunctionElement;
+ var mainBody = mainDeclaration.functionExpression.body as BlockFunctionBody;
List<Statement> mainStatements = mainBody.block.statements;
- VariableDeclarationStatement itemsStatement = mainStatements[0];
- var itemsElement = itemsStatement.variables.variables[0].declaredElement;
+ var itemsStatement = mainStatements[0] as VariableDeclarationStatement;
+ var itemsElement = itemsStatement.variables.variables[0].declaredElement!;
// First closure.
ParameterElement itemElement1;
{
- ExpressionStatement forStatement = mainStatements[1];
- MethodInvocation forInvocation = forStatement.expression;
+ var forStatement = mainStatements[1] as ExpressionStatement;
+ var forInvocation = forStatement.expression as MethodInvocation;
- SimpleIdentifier forTarget = forInvocation.target;
+ var forTarget = forInvocation.target as SimpleIdentifier;
expect(forTarget.staticElement, itemsElement);
var closureTypeStr = 'Null Function(int)';
- FunctionExpression closure = forInvocation.argumentList.arguments[0];
+ var closure =
+ forInvocation.argumentList.arguments[0] as FunctionExpression;
- FunctionElementImpl closureElement = closure.declaredElement;
+ var closureElement = closure.declaredElement as FunctionElementImpl;
expect(closureElement.enclosingElement, same(mainElement));
ParameterElement itemElement = closureElement.parameters[0];
@@ -982,37 +989,38 @@
assertType(closureElement.type, closureTypeStr);
expect(closure.staticType, same(closureElement.type));
- List<FormalParameter> closureParameters = closure.parameters.parameters;
+ List<FormalParameter> closureParameters = closure.parameters!.parameters;
expect(closureParameters, hasLength(1));
- SimpleFormalParameter itemNode = closureParameters[0];
+ var itemNode = closureParameters[0] as SimpleFormalParameter;
_assertSimpleParameter(itemNode, itemElement,
name: 'item',
offset: 56,
kind: ParameterKind.REQUIRED,
type: typeProvider.intType);
- BlockFunctionBody closureBody = closure.body;
+ var closureBody = closure.body as BlockFunctionBody;
List<Statement> closureStatements = closureBody.block.statements;
- ExpressionStatement itemStatement = closureStatements[0];
- SimpleIdentifier itemIdentifier = itemStatement.expression;
+ var itemStatement = closureStatements[0] as ExpressionStatement;
+ var itemIdentifier = itemStatement.expression as SimpleIdentifier;
expect(itemIdentifier.staticElement, itemElement);
expect(itemIdentifier.staticType, typeProvider.intType);
}
// Second closure, same names, different elements.
{
- ExpressionStatement forStatement = mainStatements[2];
- MethodInvocation forInvocation = forStatement.expression;
+ var forStatement = mainStatements[2] as ExpressionStatement;
+ var forInvocation = forStatement.expression as MethodInvocation;
- SimpleIdentifier forTarget = forInvocation.target;
+ var forTarget = forInvocation.target as SimpleIdentifier;
expect(forTarget.staticElement, itemsElement);
var closureTypeStr = 'Null Function(int)';
- FunctionExpression closure = forInvocation.argumentList.arguments[0];
+ var closure =
+ forInvocation.argumentList.arguments[0] as FunctionExpression;
- FunctionElementImpl closureElement = closure.declaredElement;
+ var closureElement = closure.declaredElement as FunctionElementImpl;
expect(closureElement.enclosingElement, same(mainElement));
ParameterElement itemElement = closureElement.parameters[0];
@@ -1022,21 +1030,21 @@
assertType(closureElement.type, closureTypeStr);
expect(closure.staticType, same(closureElement.type));
- List<FormalParameter> closureParameters = closure.parameters.parameters;
+ List<FormalParameter> closureParameters = closure.parameters!.parameters;
expect(closureParameters, hasLength(1));
- SimpleFormalParameter itemNode = closureParameters[0];
+ var itemNode = closureParameters[0] as SimpleFormalParameter;
_assertSimpleParameter(itemNode, itemElement,
name: 'item',
offset: 97,
kind: ParameterKind.REQUIRED,
type: typeProvider.intType);
- BlockFunctionBody closureBody = closure.body;
+ var closureBody = closure.body as BlockFunctionBody;
List<Statement> closureStatements = closureBody.block.statements;
- ExpressionStatement itemStatement = closureStatements[0];
- SimpleIdentifier itemIdentifier = itemStatement.expression;
+ var itemStatement = closureStatements[0] as ExpressionStatement;
+ var itemIdentifier = itemStatement.expression as SimpleIdentifier;
expect(itemIdentifier.staticElement, itemElement);
expect(itemIdentifier.staticType, typeProvider.intType);
}
@@ -1055,7 +1063,7 @@
var closure = findNode.functionExpression('<T>() =>');
assertType(closure, 'List<T> Function<T>()');
- FunctionElementImpl closureElement = closure.declaredElement;
+ var closureElement = closure.declaredElement as FunctionElementImpl;
expect(closureElement.enclosingElement, findElement.function('main'));
assertType(closureElement.returnType, 'List<T>');
expect(closureElement.parameters, isEmpty);
@@ -1081,15 +1089,15 @@
}
''');
await resolveTestFile();
- CompilationUnit unit = result.unit;
+ CompilationUnit unit = result.unit!;
- ClassDeclaration c = unit.declarations[0];
- FieldDeclaration declaration = c.members[0];
+ var c = unit.declarations[0] as ClassDeclaration;
+ var declaration = c.members[0] as FieldDeclaration;
VariableDeclaration field = declaration.fields.variables[0];
- FunctionExpressionInvocation invocation = field.initializer;
- FunctionExpression closure = invocation.function.unParenthesized;
- FunctionElementImpl closureElement = closure.declaredElement;
+ var invocation = field.initializer as FunctionExpressionInvocation;
+ var closure = invocation.function.unParenthesized as FunctionExpression;
+ var closureElement = closure.declaredElement as FunctionElementImpl;
expect(closureElement, isNotNull);
}
@@ -1098,14 +1106,14 @@
var v = (() => 42)();
''');
await resolveTestFile();
- CompilationUnit unit = result.unit;
+ CompilationUnit unit = result.unit!;
- TopLevelVariableDeclaration declaration = unit.declarations[0];
+ var declaration = unit.declarations[0] as TopLevelVariableDeclaration;
VariableDeclaration variable = declaration.variables.variables[0];
- FunctionExpressionInvocation invocation = variable.initializer;
- FunctionExpression closure = invocation.function.unParenthesized;
- FunctionElementImpl closureElement = closure.declaredElement;
+ var invocation = variable.initializer as FunctionExpressionInvocation;
+ var closure = invocation.function.unParenthesized as FunctionExpression;
+ var closureElement = closure.declaredElement as FunctionElementImpl;
expect(closureElement, isNotNull);
}
@@ -1120,8 +1128,8 @@
List<Statement> statements = _getMainStatements(result);
- ExpressionStatement statement = statements[0];
- ConditionalExpression expression = statement.expression;
+ var statement = statements[0] as ExpressionStatement;
+ var expression = statement.expression as ConditionalExpression;
expect(expression.staticType, typeProvider.numType);
expect(expression.condition.staticType, typeProvider.boolType);
expect(expression.thenExpression.staticType, typeProvider.intType);
@@ -1155,15 +1163,15 @@
''');
await resolveTestFile();
- ClassDeclaration cNode = result.unit.declarations[0];
+ var cNode = result.unit!.declarations[0] as ClassDeclaration;
- ConstructorDeclaration constructorNode = cNode.members[0];
- ParameterElement pElement = constructorNode.declaredElement.parameters[0];
+ var constructorNode = cNode.members[0] as ConstructorDeclaration;
+ ParameterElement pElement = constructorNode.declaredElement!.parameters[0];
- BlockFunctionBody constructorBody = constructorNode.body;
- ExpressionStatement pStatement = constructorBody.block.statements[0];
+ var constructorBody = constructorNode.body as BlockFunctionBody;
+ var pStatement = constructorBody.block.statements[0] as ExpressionStatement;
- SimpleIdentifier pIdentifier = pStatement.expression;
+ var pIdentifier = pStatement.expression as SimpleIdentifier;
expect(pIdentifier.staticElement, same(pElement));
expect(pIdentifier.staticType, typeProvider.intType);
}
@@ -1179,19 +1187,20 @@
''');
await resolveTestFile();
- ClassDeclaration cNode = result.unit.declarations[0];
- ClassElement cElement = cNode.declaredElement;
- FieldElement fElement = cElement.getField('f');
+ var cNode = result.unit!.declarations[0] as ClassDeclaration;
+ ClassElement cElement = cNode.declaredElement!;
+ FieldElement fElement = cElement.getField('f')!;
- ConstructorDeclaration constructorNode = cNode.members[1];
+ var constructorNode = cNode.members[1] as ConstructorDeclaration;
ParameterElement pParameterElement =
- constructorNode.declaredElement.parameters[0];
+ constructorNode.declaredElement!.parameters[0];
{
- ConstructorFieldInitializer initializer = constructorNode.initializers[0];
+ var initializer =
+ constructorNode.initializers[0] as ConstructorFieldInitializer;
expect(initializer.fieldName.staticElement, same(fElement));
- SimpleIdentifier expression = initializer.expression;
+ var expression = initializer.expression as SimpleIdentifier;
expect(expression.staticElement, same(pParameterElement));
}
}
@@ -1209,26 +1218,28 @@
''');
await resolveTestFile();
- ClassDeclaration aNode = result.unit.declarations[0];
- ClassElement aElement = aNode.declaredElement;
+ var aNode = result.unit!.declarations[0] as ClassDeclaration;
+ ClassElement aElement = aNode.declaredElement!;
- ClassDeclaration bNode = result.unit.declarations[1];
+ var bNode = result.unit!.declarations[1] as ClassDeclaration;
{
- ConstructorDeclaration constructor = bNode.members[0];
- SuperConstructorInvocation initializer = constructor.initializers[0];
+ var constructor = bNode.members[0] as ConstructorDeclaration;
+ var initializer =
+ constructor.initializers[0] as SuperConstructorInvocation;
expect(initializer.staticElement, same(aElement.unnamedConstructor));
expect(initializer.constructorName, isNull);
}
{
- var namedConstructor = aElement.getNamedConstructor('named');
+ var namedConstructor = aElement.getNamedConstructor('named')!;
- ConstructorDeclaration constructor = bNode.members[1];
- SuperConstructorInvocation initializer = constructor.initializers[0];
+ var constructor = bNode.members[1] as ConstructorDeclaration;
+ var initializer =
+ constructor.initializers[0] as SuperConstructorInvocation;
expect(initializer.staticElement, same(namedConstructor));
- var constructorName = initializer.constructorName;
+ var constructorName = initializer.constructorName!;
expect(constructorName.staticElement, same(namedConstructor));
expect(constructorName.staticType, isNull);
@@ -1249,15 +1260,15 @@
''');
await resolveTestFile();
- ClassDeclaration cNode = result.unit.declarations[0];
- ClassElement cElement = cNode.declaredElement;
+ var cNode = result.unit!.declarations[0] as ClassDeclaration;
+ ClassElement cElement = cNode.declaredElement!;
{
var unnamedConstructor = cElement.constructors[0];
- ConstructorDeclaration constructor = cNode.members[2];
- RedirectingConstructorInvocation initializer =
- constructor.initializers[0];
+ var constructor = cNode.members[2] as ConstructorDeclaration;
+ var initializer =
+ constructor.initializers[0] as RedirectingConstructorInvocation;
expect(initializer.staticElement, same(unnamedConstructor));
expect(initializer.constructorName, isNull);
@@ -1271,12 +1282,12 @@
{
var namedConstructor = cElement.constructors[1];
- ConstructorDeclaration constructor = cNode.members[3];
- RedirectingConstructorInvocation initializer =
- constructor.initializers[0];
+ var constructor = cNode.members[3] as ConstructorDeclaration;
+ var initializer =
+ constructor.initializers[0] as RedirectingConstructorInvocation;
expect(initializer.staticElement, same(namedConstructor));
- var constructorName = initializer.constructorName;
+ var constructorName = initializer.constructorName!;
expect(constructorName.staticElement, same(namedConstructor));
expect(constructorName.staticType, isNull);
@@ -1300,25 +1311,25 @@
await resolveTestFile();
expect(result.errors, isEmpty);
- ClassDeclaration aNode = result.unit.declarations[0];
- ClassElement aElement = aNode.declaredElement;
+ var aNode = result.unit!.declarations[0] as ClassDeclaration;
+ ClassElement aElement = aNode.declaredElement!;
- ClassDeclaration bNode = result.unit.declarations[1];
+ var bNode = result.unit!.declarations[1] as ClassDeclaration;
{
ConstructorElement aUnnamed = aElement.constructors[0];
- ConstructorDeclaration constructor = bNode.members[0];
- ConstructorElement element = constructor.declaredElement;
+ var constructor = bNode.members[0] as ConstructorDeclaration;
+ ConstructorElement element = constructor.declaredElement!;
expect(element.redirectedConstructor, same(aUnnamed));
- var constructorName = constructor.redirectedConstructor;
+ var constructorName = constructor.redirectedConstructor!;
expect(constructorName.staticElement, same(aUnnamed));
TypeName typeName = constructorName.type;
expect(typeName.type, interfaceTypeStar(aElement));
- SimpleIdentifier identifier = typeName.name;
+ var identifier = typeName.name as SimpleIdentifier;
expect(identifier.staticElement, same(aElement));
expect(identifier.staticType, isNull);
@@ -1328,22 +1339,22 @@
{
ConstructorElement aNamed = aElement.constructors[1];
- ConstructorDeclaration constructor = bNode.members[1];
- ConstructorElement element = constructor.declaredElement;
+ var constructor = bNode.members[1] as ConstructorDeclaration;
+ ConstructorElement element = constructor.declaredElement!;
expect(element.redirectedConstructor, same(aNamed));
- var constructorName = constructor.redirectedConstructor;
+ var constructorName = constructor.redirectedConstructor!;
expect(constructorName.staticElement, same(aNamed));
- TypeName typeName = constructorName.type;
+ var typeName = constructorName.type;
expect(typeName.type, interfaceTypeStar(aElement));
- SimpleIdentifier identifier = typeName.name;
+ var identifier = typeName.name as SimpleIdentifier;
expect(identifier.staticElement, same(aElement));
expect(identifier.staticType, isNull);
- expect(constructorName.name.staticElement, aNamed);
- expect(constructorName.name.staticType, isNull);
+ expect(constructorName.name!.staticElement, aNamed);
+ expect(constructorName.name!.staticType, isNull);
}
}
@@ -1361,12 +1372,12 @@
await resolveTestFile();
expect(result.errors, isEmpty);
- ClassDeclaration aNode = result.unit.declarations[0];
- ClassElement aElement = aNode.declaredElement;
+ var aNode = result.unit!.declarations[0] as ClassDeclaration;
+ ClassElement aElement = aNode.declaredElement!;
- ClassDeclaration bNode = result.unit.declarations[1];
+ var bNode = result.unit!.declarations[1] as ClassDeclaration;
TypeParameterType uType =
- typeParameterTypeStar(bNode.declaredElement.typeParameters[0]);
+ typeParameterTypeStar(bNode.declaredElement!.typeParameters[0]);
InterfaceType auType = aElement.instantiate(
typeArguments: [uType],
nullabilitySuffix: NullabilitySuffix.star,
@@ -1375,19 +1386,19 @@
{
ConstructorElement expectedElement = aElement.constructors[0];
- ConstructorDeclaration constructor = bNode.members[0];
- ConstructorElement element = constructor.declaredElement;
+ var constructor = bNode.members[0] as ConstructorDeclaration;
+ ConstructorElement element = constructor.declaredElement!;
- ConstructorMember actualMember = element.redirectedConstructor;
+ var actualMember = element.redirectedConstructor!;
assertMember(actualMember, expectedElement, {'T': 'U'});
- var constructorName = constructor.redirectedConstructor;
+ var constructorName = constructor.redirectedConstructor!;
expect(constructorName.staticElement, same(actualMember));
TypeName typeName = constructorName.type;
expect(typeName.type, auType);
- SimpleIdentifier identifier = typeName.name;
+ var identifier = typeName.name as SimpleIdentifier;
expect(identifier.staticElement, same(aElement));
expect(identifier.staticType, isNull);
@@ -1397,24 +1408,24 @@
{
ConstructorElement expectedElement = aElement.constructors[1];
- ConstructorDeclaration constructor = bNode.members[1];
- ConstructorElement element = constructor.declaredElement;
+ var constructor = bNode.members[1] as ConstructorDeclaration;
+ ConstructorElement element = constructor.declaredElement!;
- ConstructorMember actualMember = element.redirectedConstructor;
+ var actualMember = element.redirectedConstructor!;
assertMember(actualMember, expectedElement, {'T': 'U'});
- var constructorName = constructor.redirectedConstructor;
+ var constructorName = constructor.redirectedConstructor!;
expect(constructorName.staticElement, same(actualMember));
TypeName typeName = constructorName.type;
expect(typeName.type, auType);
- SimpleIdentifier identifier = typeName.name;
+ var identifier = typeName.name as SimpleIdentifier;
expect(identifier.staticElement, same(aElement));
expect(identifier.staticType, isNull);
- expect(constructorName.name.staticElement, same(actualMember));
- expect(constructorName.name.staticType, isNull);
+ expect(constructorName.name!.staticElement, same(actualMember));
+ expect(constructorName.name!.staticType, isNull);
}
}
@@ -1433,12 +1444,12 @@
assertType(invocation, 'Future<dynamic>');
assertInvokeType(invocation, 'Future<dynamic> Function()');
- SimpleIdentifier target = invocation.target;
+ var target = invocation.target as SimpleIdentifier;
assertElement(target, import.prefix);
assertType(target, null);
var name = invocation.methodName;
- assertElement(name, import.importedLibrary.loadLibraryFunction);
+ assertElement(name, import.importedLibrary!.loadLibraryFunction);
assertType(name, 'Future<dynamic> Function()');
}
@@ -1459,12 +1470,12 @@
assertType(invocation, 'Future<dynamic>');
assertInvokeType(invocation, 'Future<dynamic> Function()');
- SimpleIdentifier target = invocation.target;
+ var target = invocation.target as SimpleIdentifier;
assertElement(target, import.prefix);
assertType(target, null);
var name = invocation.methodName;
- assertElement(name, import.importedLibrary.loadLibraryFunction);
+ assertElement(name, import.importedLibrary!.loadLibraryFunction);
assertType(name, 'Future<dynamic> Function()');
var bRef = invocation.argumentList.arguments[0];
@@ -1495,7 +1506,7 @@
assertType(prefix, null);
var identifier = prefixed.identifier;
- assertElement(identifier, import.importedLibrary.loadLibraryFunction);
+ assertElement(identifier, import.importedLibrary!.loadLibraryFunction);
assertType(identifier, 'Future<dynamic> Function()');
}
@@ -1510,9 +1521,9 @@
''');
await resolveTestFile();
var import = findElement.import('package:test/a.dart');
- TopLevelVariableElement v = (import.importedLibrary.publicNamespace.get('v')
+ var v = (import.importedLibrary!.publicNamespace.get('v')
as PropertyAccessorElement)
- .variable;
+ .variable as TopLevelVariableElement;
{
var prefixed = findNode.prefixed('a.v;');
@@ -1561,7 +1572,7 @@
''');
await resolveTestFile();
var export = findElement.export('package:test/a.dart');
- var namespace = export.exportedLibrary.exportNamespace;
+ var namespace = export.exportedLibrary!.exportNamespace;
{
var ref = findNode.simple('MyClass');
@@ -1571,21 +1582,21 @@
{
var ref = findNode.simple('myVar');
- PropertyAccessorElement getter = namespace.get('myVar');
+ var getter = namespace.get('myVar') as PropertyAccessorElement;
assertElement(ref, getter.variable);
assertType(ref, null);
}
{
var ref = findNode.simple('myGetter');
- PropertyAccessorElement getter = namespace.get('myGetter');
+ var getter = namespace.get('myGetter') as PropertyAccessorElement;
assertElement(ref, getter.variable);
assertType(ref, null);
}
{
var ref = findNode.simple('mySetter');
- PropertyAccessorElement getter = namespace.get('mySetter=');
+ var getter = namespace.get('mySetter=') as PropertyAccessorElement;
assertElement(ref, getter.variable);
assertType(ref, null);
}
@@ -1609,7 +1620,7 @@
''');
await resolveTestFile();
var import = findElement.import('package:test/a.dart');
- var namespace = import.importedLibrary.exportNamespace;
+ var namespace = import.importedLibrary!.exportNamespace;
{
var ref = findNode.simple('MyClass');
@@ -1619,21 +1630,21 @@
{
var ref = findNode.simple('myVar');
- PropertyAccessorElement getter = namespace.get('myVar');
+ var getter = namespace.get('myVar') as PropertyAccessorElement;
assertElement(ref, getter.variable);
assertType(ref, null);
}
{
var ref = findNode.simple('myGetter');
- PropertyAccessorElement getter = namespace.get('myGetter');
+ var getter = namespace.get('myGetter') as PropertyAccessorElement;
assertElement(ref, getter.variable);
assertType(ref, null);
}
{
var ref = findNode.simple('mySetter');
- PropertyAccessorElement getter = namespace.get('mySetter=');
+ var getter = namespace.get('mySetter=') as PropertyAccessorElement;
assertElement(ref, getter.variable);
assertType(ref, null);
}
@@ -1657,7 +1668,7 @@
''');
await resolveTestFile();
var import = findElement.import('package:test/a.dart');
- var namespace = import.importedLibrary.exportNamespace;
+ var namespace = import.importedLibrary!.exportNamespace;
{
var ref = findNode.simple('MyClass');
@@ -1667,21 +1678,21 @@
{
var ref = findNode.simple('myVar');
- PropertyAccessorElement getter = namespace.get('myVar');
+ var getter = namespace.get('myVar') as PropertyAccessorElement;
assertElement(ref, getter.variable);
assertType(ref, null);
}
{
var ref = findNode.simple('myGetter');
- PropertyAccessorElement getter = namespace.get('myGetter');
+ var getter = namespace.get('myGetter') as PropertyAccessorElement;
assertElement(ref, getter.variable);
assertType(ref, null);
}
{
var ref = findNode.simple('mySetter');
- PropertyAccessorElement getter = namespace.get('mySetter=');
+ var getter = namespace.get('mySetter=') as PropertyAccessorElement;
assertElement(ref, getter.variable);
assertType(ref, null);
}
@@ -1702,16 +1713,16 @@
''');
await resolveTestFile();
- EnumDeclaration enumNode = result.unit.declarations[0];
- ClassElement enumElement = enumNode.declaredElement;
+ var enumNode = result.unit!.declarations[0] as EnumDeclaration;
+ ClassElement enumElement = enumNode.declaredElement!;
List<Statement> mainStatements = _getMainStatements(result);
- ExpressionStatement statement = mainStatements[0];
- MethodInvocation invocation = statement.expression;
+ var statement = mainStatements[0] as ExpressionStatement;
+ var invocation = statement.expression as MethodInvocation;
assertInvokeType(invocation, 'String Function()');
- MethodElement methodElement = invocation.methodName.staticElement;
+ var methodElement = invocation.methodName.staticElement as MethodElement;
expect(methodElement.name, 'toString');
expect(methodElement.enclosingElement, same(enumElement));
}
@@ -1727,15 +1738,15 @@
var statements = _getMainStatements(result);
- VariableDeclarationStatement statement = statements[0];
+ var statement = statements[0] as VariableDeclarationStatement;
- TypeName typeName = statement.variables.type;
+ var typeName = statement.variables.type as TypeName;
expect(typeName.type, isDynamicType);
- expect(typeName.typeArguments.arguments[0].type, typeProvider.intType);
+ expect(typeName.typeArguments!.arguments[0].type, typeProvider.intType);
VariableDeclaration vNode = statement.variables.variables[0];
expect(vNode.name.staticType, isNull);
- expect(vNode.declaredElement.type, isDynamicType);
+ expect(vNode.declaredElement!.type, isDynamicType);
}
test_field_context() async {
@@ -1746,12 +1757,12 @@
''');
await resolveTestFile();
- ClassDeclaration cNode = result.unit.declarations[0];
- var tElement = cNode.declaredElement.typeParameters[0];
+ var cNode = result.unit!.declarations[0] as ClassDeclaration;
+ var tElement = cNode.declaredElement!.typeParameters[0];
- FieldDeclaration fDeclaration = cNode.members[0];
+ var fDeclaration = cNode.members[0] as FieldDeclaration;
VariableDeclaration fNode = fDeclaration.fields.variables[0];
- FieldElement fElement = fNode.declaredElement;
+ var fElement = fNode.declaredElement as FieldElement;
expect(
fElement.type, typeProvider.listType2(typeParameterTypeStar(tElement)));
}
@@ -1794,27 +1805,28 @@
''');
await resolveTestFile();
- ClassDeclaration clazz = result.unit.declarations[0];
- ConstructorDeclaration constructor = clazz.members[0];
+ var clazz = result.unit!.declarations[0] as ClassDeclaration;
+ var constructor = clazz.members[0] as ConstructorDeclaration;
List<FormalParameter> parameters = constructor.parameters.parameters;
- FunctionTypedFormalParameter p = parameters[0];
- expect(p.declaredElement, same(constructor.declaredElement.parameters[0]));
+ var p = parameters[0] as FunctionTypedFormalParameter;
+ expect(p.declaredElement, same(constructor.declaredElement!.parameters[0]));
{
- FunctionType type = (p.identifier.staticElement as ParameterElement).type;
+ var type =
+ (p.identifier.staticElement as ParameterElement).type as FunctionType;
expect(type.returnType, typeProvider.stringType);
expect(type.parameters, hasLength(1));
expect(type.parameters[0].type, typeProvider.intType);
}
- _assertTypeNameSimple(p.returnType, typeProvider.stringType);
+ _assertTypeNameSimple(p.returnType!, typeProvider.stringType);
{
- SimpleFormalParameter a = p.parameters.parameters[0];
- _assertTypeNameSimple(a.type, typeProvider.intType);
- expect(a.identifier.staticType, isNull);
+ var a = p.parameters.parameters[0] as SimpleFormalParameter;
+ _assertTypeNameSimple(a.type!, typeProvider.intType);
+ expect(a.identifier!.staticType, isNull);
}
}
@@ -1828,39 +1840,39 @@
''');
await resolveTestFile();
- ClassDeclaration clazz = result.unit.declarations[0];
+ var clazz = result.unit!.declarations[0] as ClassDeclaration;
- FieldDeclaration fDeclaration = clazz.members[0];
+ var fDeclaration = clazz.members[0] as FieldDeclaration;
VariableDeclaration fNode = fDeclaration.fields.variables[0];
- FieldElement fElement = fNode.declaredElement;
+ var fElement = fNode.declaredElement as FieldElement;
- ConstructorDeclaration constructor = clazz.members[1];
+ var constructor = clazz.members[1] as ConstructorDeclaration;
- FieldFormalParameterElement pElement =
- constructor.declaredElement.parameters[0];
+ var pElement = constructor.declaredElement!.parameters[0]
+ as FieldFormalParameterElement;
expect(pElement.field, same(fElement));
List<FormalParameter> parameters = constructor.parameters.parameters;
- FieldFormalParameter p = parameters[0];
+ var p = parameters[0] as FieldFormalParameter;
expect(p.declaredElement, same(pElement));
expect(p.identifier.staticElement, same(pElement));
assertType(p.identifier.staticType, 'String Function(int)');
{
- FunctionType type = p.identifier.staticType;
+ var type = p.identifier.staticType as FunctionType;
expect(type.returnType, typeProvider.stringType);
expect(type.parameters, hasLength(1));
expect(type.parameters[0].type, typeProvider.intType);
}
- _assertTypeNameSimple(p.type, typeProvider.stringType);
+ _assertTypeNameSimple(p.type!, typeProvider.stringType);
{
- SimpleFormalParameter a = p.parameters.parameters[0];
- _assertTypeNameSimple(a.type, typeProvider.intType);
- expect(a.identifier.staticType, isNull);
+ var a = p.parameters!.parameters[0] as SimpleFormalParameter;
+ _assertTypeNameSimple(a.type!, typeProvider.intType);
+ expect(a.identifier!.staticType, isNull);
}
}
@@ -1873,20 +1885,20 @@
''');
await resolveTestFile();
- ClassDeclaration clazz = result.unit.declarations[0];
+ var clazz = result.unit!.declarations[0] as ClassDeclaration;
- FieldDeclaration fDeclaration = clazz.members[0];
+ var fDeclaration = clazz.members[0] as FieldDeclaration;
VariableDeclaration fNode = fDeclaration.fields.variables[0];
- FieldElement fElement = fNode.declaredElement;
+ var fElement = fNode.declaredElement as FieldElement;
- ConstructorDeclaration constructor = clazz.members[1];
+ var constructor = clazz.members[1] as ConstructorDeclaration;
List<FormalParameter> parameters = constructor.parameters.parameters;
- FieldFormalParameterElement parameterElement =
- constructor.declaredElement.parameters[0];
+ var parameterElement = constructor.declaredElement!.parameters[0]
+ as FieldFormalParameterElement;
expect(parameterElement.field, same(fElement));
- FieldFormalParameter parameterNode = parameters[0];
+ var parameterNode = parameters[0] as FieldFormalParameter;
expect(parameterNode.type, isNull);
expect(parameterNode.declaredElement, same(parameterElement));
@@ -1903,21 +1915,21 @@
''');
await resolveTestFile();
- ClassDeclaration clazz = result.unit.declarations[0];
+ var clazz = result.unit!.declarations[0] as ClassDeclaration;
- FieldDeclaration fDeclaration = clazz.members[0];
+ var fDeclaration = clazz.members[0] as FieldDeclaration;
VariableDeclaration fNode = fDeclaration.fields.variables[0];
- FieldElement fElement = fNode.declaredElement;
+ var fElement = fNode.declaredElement as FieldElement;
- ConstructorDeclaration constructor = clazz.members[1];
+ var constructor = clazz.members[1] as ConstructorDeclaration;
List<FormalParameter> parameters = constructor.parameters.parameters;
- FieldFormalParameterElement parameterElement =
- constructor.declaredElement.parameters[0];
+ var parameterElement = constructor.declaredElement!.parameters[0]
+ as FieldFormalParameterElement;
expect(parameterElement.field, same(fElement));
- FieldFormalParameter parameterNode = parameters[0];
- _assertTypeNameSimple(parameterNode.type, typeProvider.intType);
+ var parameterNode = parameters[0] as FieldFormalParameter;
+ _assertTypeNameSimple(parameterNode.type!, typeProvider.intType);
expect(parameterNode.declaredElement, same(parameterElement));
expect(parameterNode.identifier.staticElement, same(parameterElement));
@@ -1936,14 +1948,14 @@
''');
await resolveTestFile();
-// ClassDeclaration aNode = result.unit.declarations[0];
-// ClassElement eElement = aNode.declaredElement;
+// var aNode = result.unit!.declarations[0] as ClassDeclaration;
+// ClassElement eElement = aNode.declaredElement!;
// MethodElement mElement = eElement.getMethod('m');
List<Statement> mainStatements = _getMainStatements(result);
- ExpressionStatement statement = mainStatements[0];
- MethodInvocation invocation = statement.expression;
+ var statement = mainStatements[0] as ExpressionStatement;
+ var invocation = statement.expression as MethodInvocation;
assertInvokeType(invocation, 'void Function(int)');
// TODO(scheglov) Check for MethodElement
// expect(invocation.methodName.staticElement, same(mElement));
@@ -1976,14 +1988,14 @@
List<Statement> statements = _getMainStatements(result);
- ExpressionStatement statement = statements[0];
- FunctionExpressionInvocation invocation = statement.expression;
+ var statement = statements[0] as ExpressionStatement;
+ var invocation = statement.expression as FunctionExpressionInvocation;
expect(invocation.staticElement, isNull);
assertInvokeType(invocation, 'int Function(String)');
expect(invocation.staticType, typeProvider.intType);
- List<TypeAnnotation> typeArguments = invocation.typeArguments.arguments;
+ List<TypeAnnotation> typeArguments = invocation.typeArguments!.arguments;
expect(typeArguments, hasLength(1));
_assertTypeNameSimple(typeArguments[0], typeProvider.stringType);
}
@@ -2012,7 +2024,7 @@
var fTypeParameter = fType.normalParameterTypes[0] as TypeParameterType;
expect(fTypeParameter.element, same(fTypeTypeParameter));
var tRef = findNode.simple('T>');
- var functionTypeNode = tRef.parent.parent.parent as GenericFunctionType;
+ var functionTypeNode = tRef.parent!.parent!.parent as GenericFunctionType;
var functionType = functionTypeNode.type as FunctionType;
assertElement(tRef, functionType.typeFormals[0]);
}
@@ -2035,18 +2047,18 @@
VariableElement itemsElement;
{
- VariableDeclarationStatement statement = mainStatements[0];
+ var statement = mainStatements[0] as VariableDeclarationStatement;
VariableDeclaration itemsNode = statement.variables.variables[0];
- itemsElement = itemsNode.declaredElement;
+ itemsElement = itemsNode.declaredElement!;
expect(itemsElement.type, listIntType);
}
- ExpressionStatement statement = mainStatements[1];
- IndexExpression indexExpression = statement.expression;
+ var statement = mainStatements[1] as ExpressionStatement;
+ var indexExpression = statement.expression as IndexExpression;
expect(indexExpression.staticType, intType);
- MethodMember actualElement = indexExpression.staticElement;
- MethodMember expectedElement = listIntType.getMethod('[]');
+ var actualElement = indexExpression.staticElement as MethodMember;
+ var expectedElement = listIntType.getMethod('[]') as MethodMember;
expect(actualElement.name, '[]');
expect(actualElement.declaration, same(expectedElement.declaration));
expect(actualElement.returnType, intType);
@@ -2065,17 +2077,17 @@
addTestFile(content);
await resolveTestFile();
- CompilationUnit unit = result.unit;
+ CompilationUnit unit = result.unit!;
- ClassDeclaration cNode = unit.declarations[0];
- ClassElement cElement = cNode.declaredElement;
+ var cNode = unit.declarations[0] as ClassDeclaration;
+ ClassElement cElement = cNode.declaredElement!;
ConstructorElement defaultConstructor = cElement.constructors[0];
ConstructorElement namedConstructor = cElement.constructors[1];
{
- TopLevelVariableDeclaration aDeclaration = unit.declarations[1];
+ var aDeclaration = unit.declarations[1] as TopLevelVariableDeclaration;
VariableDeclaration aNode = aDeclaration.variables.variables[0];
- InstanceCreationExpression value = aNode.initializer;
+ var value = aNode.initializer as InstanceCreationExpression;
expect(value.staticType, interfaceTypeStar(cElement));
var constructorName = value.constructorName;
@@ -2091,19 +2103,19 @@
}
{
- TopLevelVariableDeclaration bDeclaration = unit.declarations[2];
+ var bDeclaration = unit.declarations[2] as TopLevelVariableDeclaration;
VariableDeclaration bNode = bDeclaration.variables.variables[0];
- InstanceCreationExpression value = bNode.initializer;
+ var value = bNode.initializer as InstanceCreationExpression;
expect(value.staticType, interfaceTypeStar(cElement));
var constructorName = value.constructorName;
expect(constructorName.staticElement, namedConstructor);
- expect(constructorName.name.staticType, isNull);
+ expect(constructorName.name!.staticType, isNull);
TypeName typeName = constructorName.type;
expect(typeName.typeArguments, isNull);
- SimpleIdentifier typeIdentifier = typeName.name;
+ var typeIdentifier = typeName.name as SimpleIdentifier;
expect(typeIdentifier.staticElement, cElement);
expect(typeIdentifier.staticType, isNull);
}
@@ -2118,16 +2130,16 @@
''');
await resolveTestFile();
- CompilationUnit unit = result.unit;
+ CompilationUnit unit = result.unit!;
- ClassDeclaration xNode = unit.declarations[0];
- ClassElement xElement = xNode.declaredElement;
+ var xNode = unit.declarations[0] as ClassDeclaration;
+ ClassElement xElement = xNode.declaredElement!;
ConstructorElement constructorElement = xElement.constructors[0];
- TopLevelVariableDeclaration vDeclaration = unit.declarations[1];
+ var vDeclaration = unit.declarations[1] as TopLevelVariableDeclaration;
VariableDeclaration vNode = vDeclaration.variables.variables[0];
- InstanceCreationExpression creation = vNode.initializer;
+ var creation = vNode.initializer as InstanceCreationExpression;
List<Expression> arguments = creation.argumentList.arguments;
expect(creation.staticType, interfaceTypeStar(xElement));
@@ -2159,17 +2171,17 @@
addTestFile(content);
await resolveTestFile();
- CompilationUnit unit = result.unit;
+ CompilationUnit unit = result.unit!;
- ClassDeclaration cNode = unit.declarations[0];
- ClassElement cElement = cNode.declaredElement;
+ var cNode = unit.declarations[0] as ClassDeclaration;
+ ClassElement cElement = cNode.declaredElement!;
ConstructorElement defaultConstructor = cElement.constructors[0];
ConstructorElement namedConstructor = cElement.constructors[1];
{
- TopLevelVariableDeclaration aDeclaration = unit.declarations[1];
+ var aDeclaration = unit.declarations[1] as TopLevelVariableDeclaration;
VariableDeclaration aNode = aDeclaration.variables.variables[0];
- InstanceCreationExpression value = aNode.initializer;
+ var value = aNode.initializer as InstanceCreationExpression;
expect(value.staticType, interfaceTypeStar(cElement));
var constructorName = value.constructorName;
@@ -2188,20 +2200,20 @@
}
{
- TopLevelVariableDeclaration bDeclaration = unit.declarations[2];
+ var bDeclaration = unit.declarations[2] as TopLevelVariableDeclaration;
VariableDeclaration bNode = bDeclaration.variables.variables[0];
- InstanceCreationExpression value = bNode.initializer;
+ var value = bNode.initializer as InstanceCreationExpression;
expect(value.staticType, interfaceTypeStar(cElement));
var constructorName = value.constructorName;
expect(constructorName.staticElement, namedConstructor);
- expect(constructorName.name.staticElement, namedConstructor);
- expect(constructorName.name.staticType, isNull);
+ expect(constructorName.name!.staticElement, namedConstructor);
+ expect(constructorName.name!.staticType, isNull);
TypeName typeName = constructorName.type;
expect(typeName.typeArguments, isNull);
- SimpleIdentifier typeIdentifier = typeName.name;
+ var typeIdentifier = typeName.name as SimpleIdentifier;
expect(typeIdentifier.staticElement, cElement);
expect(typeIdentifier.staticType, isNull);
@@ -2226,12 +2238,12 @@
}
''');
await resolveTestFile();
- CompilationUnit unit = result.unit;
+ CompilationUnit unit = result.unit!;
- ImportElement aImport = unit.declaredElement.library.imports[0];
- LibraryElement aLibrary = aImport.importedLibrary;
+ ImportElement aImport = unit.declaredElement!.library.imports[0];
+ LibraryElement aLibrary = aImport.importedLibrary!;
- ClassElement cElement = aLibrary.getType('C');
+ ClassElement cElement = aLibrary.getType('C')!;
ConstructorElement defaultConstructor = cElement.constructors[0];
ConstructorElement namedConstructor = cElement.constructors[1];
@@ -2242,8 +2254,8 @@
nullabilitySuffix: NullabilitySuffix.star,
);
- ExpressionStatement statement = statements[0];
- InstanceCreationExpression creation = statement.expression;
+ var statement = statements[0] as ExpressionStatement;
+ var creation = statement.expression as InstanceCreationExpression;
expect(creation.staticType, cTypeInt);
var constructorName = creation.constructorName;
@@ -2253,7 +2265,7 @@
TypeName typeName = constructorName.type;
expect(typeName.typeArguments, isNull);
- PrefixedIdentifier typeIdentifier = typeName.name;
+ var typeIdentifier = typeName.name as PrefixedIdentifier;
expect(typeIdentifier.staticElement, same(cElement));
expect(typeIdentifier.staticType, isNull);
@@ -2271,19 +2283,19 @@
nullabilitySuffix: NullabilitySuffix.star,
);
- ExpressionStatement statement = statements[1];
- InstanceCreationExpression creation = statement.expression;
+ var statement = statements[1] as ExpressionStatement;
+ var creation = statement.expression as InstanceCreationExpression;
expect(creation.staticType, cTypeDouble);
var constructorName = creation.constructorName;
- expect(constructorName.name.staticElement, namedConstructor);
- expect(constructorName.name.staticType, isNull);
+ expect(constructorName.name!.staticElement, namedConstructor);
+ expect(constructorName.name!.staticType, isNull);
expect(constructorName.staticElement, namedConstructor);
TypeName typeName = constructorName.type;
expect(typeName.typeArguments, isNull);
- PrefixedIdentifier typeIdentifier = typeName.name;
+ var typeIdentifier = typeName.name as PrefixedIdentifier;
expect(typeIdentifier.staticElement, cElement);
expect(typeIdentifier.staticType, isNull);
@@ -2301,21 +2313,21 @@
nullabilitySuffix: NullabilitySuffix.star,
);
- ExpressionStatement statement = statements[2];
- InstanceCreationExpression creation = statement.expression;
+ var statement = statements[2] as ExpressionStatement;
+ var creation = statement.expression as InstanceCreationExpression;
expect(creation.staticType, cTypeBool);
var constructorName = creation.constructorName;
- expect(constructorName.name.staticElement, namedConstructor);
- expect(constructorName.name.staticType, isNull);
+ expect(constructorName.name!.staticElement, namedConstructor);
+ expect(constructorName.name!.staticType, isNull);
expect(constructorName.staticElement, namedConstructor);
TypeName typeName = constructorName.type;
- expect(typeName.typeArguments.arguments, hasLength(1));
+ expect(typeName.typeArguments!.arguments, hasLength(1));
_assertTypeNameSimple(
- typeName.typeArguments.arguments[0], typeProvider.boolType);
+ typeName.typeArguments!.arguments[0], typeProvider.boolType);
- PrefixedIdentifier typeIdentifier = typeName.name;
+ var typeIdentifier = typeName.name as PrefixedIdentifier;
expect(typeIdentifier.staticElement, cElement);
expect(typeIdentifier.staticType, isNull);
@@ -2343,10 +2355,10 @@
}
''');
await resolveTestFile();
- CompilationUnit unit = result.unit;
- CompilationUnitElement unitElement = unit.declaredElement;
+ CompilationUnit unit = result.unit!;
+ CompilationUnitElement unitElement = unit.declaredElement!;
- ClassElement cElement = unitElement.getType('C');
+ ClassElement cElement = unitElement.getType('C')!;
ConstructorElement defaultConstructor = cElement.constructors[0];
ConstructorElement namedConstructor = cElement.constructors[1];
@@ -2357,8 +2369,8 @@
nullabilitySuffix: NullabilitySuffix.star,
);
- ExpressionStatement statement = statements[0];
- InstanceCreationExpression creation = statement.expression;
+ var statement = statements[0] as ExpressionStatement;
+ var creation = statement.expression as InstanceCreationExpression;
expect(creation.staticType, cTypeInt);
var constructorName = creation.constructorName;
@@ -2368,7 +2380,7 @@
TypeName typeName = constructorName.type;
expect(typeName.typeArguments, isNull);
- SimpleIdentifier typeIdentifier = typeName.name;
+ var typeIdentifier = typeName.name as SimpleIdentifier;
expect(typeIdentifier.staticElement, same(cElement));
expect(typeIdentifier.staticType, isNull);
}
@@ -2379,8 +2391,8 @@
nullabilitySuffix: NullabilitySuffix.star,
);
- ExpressionStatement statement = statements[1];
- InstanceCreationExpression creation = statement.expression;
+ var statement = statements[1] as ExpressionStatement;
+ var creation = statement.expression as InstanceCreationExpression;
expect(creation.staticType, cTypeBool);
var constructorName = creation.constructorName;
@@ -2388,11 +2400,11 @@
expect(constructorName.staticElement, defaultConstructor);
TypeName typeName = constructorName.type;
- expect(typeName.typeArguments.arguments, hasLength(1));
+ expect(typeName.typeArguments!.arguments, hasLength(1));
_assertTypeNameSimple(
- typeName.typeArguments.arguments[0], typeProvider.boolType);
+ typeName.typeArguments!.arguments[0], typeProvider.boolType);
- SimpleIdentifier typeIdentifier = typeName.name;
+ var typeIdentifier = typeName.name as SimpleIdentifier;
expect(typeIdentifier.staticElement, same(cElement));
expect(typeIdentifier.staticType, isNull);
}
@@ -2403,19 +2415,19 @@
nullabilitySuffix: NullabilitySuffix.star,
);
- ExpressionStatement statement = statements[2];
- InstanceCreationExpression creation = statement.expression;
+ var statement = statements[2] as ExpressionStatement;
+ var creation = statement.expression as InstanceCreationExpression;
expect(creation.staticType, cTypeDouble);
var constructorName = creation.constructorName;
- expect(constructorName.name.staticElement, namedConstructor);
- expect(constructorName.name.staticType, isNull);
+ expect(constructorName.name!.staticElement, namedConstructor);
+ expect(constructorName.name!.staticType, isNull);
expect(constructorName.staticElement, namedConstructor);
TypeName typeName = constructorName.type;
expect(typeName.typeArguments, isNull);
- SimpleIdentifier typeIdentifier = typeName.name;
+ var typeIdentifier = typeName.name as SimpleIdentifier;
expect(typeIdentifier.staticElement, cElement);
expect(typeIdentifier.staticType, isNull);
}
@@ -2426,21 +2438,21 @@
nullabilitySuffix: NullabilitySuffix.star,
);
- ExpressionStatement statement = statements[3];
- InstanceCreationExpression creation = statement.expression;
+ var statement = statements[3] as ExpressionStatement;
+ var creation = statement.expression as InstanceCreationExpression;
expect(creation.staticType, cTypeBool);
var constructorName = creation.constructorName;
- expect(constructorName.name.staticElement, namedConstructor);
- expect(constructorName.name.staticType, isNull);
+ expect(constructorName.name!.staticElement, namedConstructor);
+ expect(constructorName.name!.staticType, isNull);
expect(constructorName.staticElement, namedConstructor);
TypeName typeName = constructorName.type;
- expect(typeName.typeArguments.arguments, hasLength(1));
+ expect(typeName.typeArguments!.arguments, hasLength(1));
_assertTypeNameSimple(
- typeName.typeArguments.arguments[0], typeProvider.boolType);
+ typeName.typeArguments!.arguments[0], typeProvider.boolType);
- SimpleIdentifier typeIdentifier = typeName.name;
+ var typeIdentifier = typeName.name as SimpleIdentifier;
expect(typeIdentifier.staticElement, cElement);
expect(typeIdentifier.staticType, isNull);
}
@@ -2458,8 +2470,8 @@
await resolveTestFile();
var cElement = findElement.class_('C');
- var defaultConstructor = cElement.unnamedConstructor;
- var namedConstructor = cElement.getNamedConstructor('named');
+ var defaultConstructor = cElement.unnamedConstructor!;
+ var namedConstructor = cElement.getNamedConstructor('named')!;
{
var creation = findNode.instanceCreation('new C<int, double>(1, 2.3);');
@@ -2470,9 +2482,9 @@
var typeName = creation.constructorName.type;
assertTypeName(typeName, cElement, 'C<int, double>');
- var typeArguments = typeName.typeArguments.arguments;
- assertTypeName(typeArguments[0], intElement, 'int');
- assertTypeName(typeArguments[1], doubleElement, 'double');
+ var typeArguments = typeName.typeArguments!.arguments;
+ assertTypeName(typeArguments[0] as TypeName, intElement, 'int');
+ assertTypeName(typeArguments[1] as TypeName, doubleElement, 'double');
expect(creation.constructorName.name, isNull);
@@ -2489,9 +2501,9 @@
var typeName = creation.constructorName.type;
assertTypeName(typeName, cElement, 'C<num, String>');
- var typeArguments = typeName.typeArguments.arguments;
- assertTypeName(typeArguments[0], numElement, 'num');
- assertTypeName(typeArguments[1], stringElement, 'String');
+ var typeArguments = typeName.typeArguments!.arguments;
+ assertTypeName(typeArguments[0] as TypeName, numElement, 'num');
+ assertTypeName(typeArguments[1] as TypeName, stringElement, 'String');
var constructorName = creation.constructorName.name;
assertMember(
@@ -3087,7 +3099,7 @@
assertElement(type.name, c);
assertTypeNull(type.name);
- SimpleIdentifier aRef = creation.argumentList.arguments[0];
+ var aRef = creation.argumentList.arguments[0] as SimpleIdentifier;
assertElement(aRef, findElement.topGet('a'));
assertType(aRef, 'int');
}
@@ -3097,14 +3109,14 @@
assertType(creation, 'C<bool>');
ConstructorName constructorName = creation.constructorName;
- expect(constructorName.name.name, 'named');
+ expect(constructorName.name!.name, 'named');
TypeName type = constructorName.type;
expect(type.typeArguments, isNull);
assertElement(type.name, c);
assertType(type.name, 'C<bool>');
- SimpleIdentifier bRef = creation.argumentList.arguments[0];
+ var bRef = creation.argumentList.arguments[0] as SimpleIdentifier;
assertElement(bRef, findElement.topGet('b'));
assertType(bRef, 'bool');
}
@@ -3114,10 +3126,10 @@
assertType(creation, 'C<double>');
ConstructorName constructorName = creation.constructorName;
- expect(constructorName.name.name, 'named2');
+ expect(constructorName.name!.name, 'named2');
TypeName type = constructorName.type;
- assertTypeArguments(type.typeArguments, [doubleType]);
+ assertTypeArguments(type.typeArguments!, [doubleType]);
assertElement(type.name, c);
assertType(type.name, 'C<double>');
}
@@ -3140,7 +3152,7 @@
var creation = findNode.instanceCreation('new C(x: a)');
_assertConstructorInvocation(creation, classElement);
- NamedExpression argument = creation.argumentList.arguments[0];
+ var argument = creation.argumentList.arguments[0] as NamedExpression;
assertElementNull(argument.name.label);
var aRef = argument.expression;
assertElement(aRef, findElement.topGet('a'));
@@ -3249,7 +3261,7 @@
await resolveTestFile();
expect(result.errors, isNotEmpty);
- ImportElement import = findNode.import('dart:math').element;
+ ImportElement import = findNode.import('dart:math').element!;
var pRef = findNode.simple('p(a)');
assertElement(pRef, import.prefix);
@@ -3301,13 +3313,13 @@
assertType(invocation.methodName, 'void Function({dynamic p})');
assertType(invocation, 'void');
- NamedExpression arg0 = invocation.argumentList.arguments[0];
+ var arg0 = invocation.argumentList.arguments[0] as NamedExpression;
assertElement(arg0.name.label, f.parameters[0]);
- assertIdentifierTopGetRef(arg0.expression, 'a');
+ assertIdentifierTopGetRef(arg0.expression as SimpleIdentifier, 'a');
- NamedExpression arg1 = invocation.argumentList.arguments[1];
+ var arg1 = invocation.argumentList.arguments[1] as NamedExpression;
assertElement(arg1.name.label, f.parameters[0]);
- assertIdentifierTopGetRef(arg1.expression, 'b');
+ assertIdentifierTopGetRef(arg1.expression as SimpleIdentifier, 'b');
}
test_invalid_invocation_arguments_named_duplicate3() async {
@@ -3327,17 +3339,17 @@
assertType(invocation.methodName, 'void Function({dynamic p})');
assertType(invocation, 'void');
- NamedExpression arg0 = invocation.argumentList.arguments[0];
+ var arg0 = invocation.argumentList.arguments[0] as NamedExpression;
assertElement(arg0.name.label, f.parameters[0]);
- assertIdentifierTopGetRef(arg0.expression, 'a');
+ assertIdentifierTopGetRef(arg0.expression as SimpleIdentifier, 'a');
- NamedExpression arg1 = invocation.argumentList.arguments[1];
+ var arg1 = invocation.argumentList.arguments[1] as NamedExpression;
assertElement(arg1.name.label, f.parameters[0]);
- assertIdentifierTopGetRef(arg1.expression, 'b');
+ assertIdentifierTopGetRef(arg1.expression as SimpleIdentifier, 'b');
- NamedExpression arg2 = invocation.argumentList.arguments[2];
+ var arg2 = invocation.argumentList.arguments[2] as NamedExpression;
assertElement(arg2.name.label, f.parameters[0]);
- assertIdentifierTopGetRef(arg2.expression, 'c');
+ assertIdentifierTopGetRef(arg2.expression as SimpleIdentifier, 'c');
}
test_invalid_invocation_arguments_requiredAfterNamed() async {
@@ -3458,11 +3470,11 @@
await resolveTestFile();
expect(result.errors, isNotEmpty);
- ImportElement import = findNode.import('dart:math').element;
+ ImportElement import = findNode.import('dart:math').element!;
var invocation = findNode.methodInvocation('p(a)');
expect(invocation.staticType, isDynamicType);
- assertUnresolvedInvokeType(invocation.staticInvokeType);
+ assertUnresolvedInvokeType(invocation.staticInvokeType!);
var pRef = invocation.methodName;
assertElement(pRef, import.prefix);
@@ -3631,8 +3643,8 @@
await resolveTestFile();
expect(result.errors, isNotEmpty);
- ImportElement import = findNode.import('a.dart').element;
- var tElement = import.importedLibrary.publicNamespace.get('T');
+ ImportElement import = findNode.import('a.dart').element!;
+ var tElement = import.importedLibrary!.publicNamespace.get('T');
var prefixedName = findNode.prefixed('p.T');
assertTypeDynamic(prefixedName);
@@ -3645,7 +3657,7 @@
assertElement(tRef, tElement);
assertTypeDynamic(tRef);
- TypeName typeName = prefixedName.parent;
+ var typeName = prefixedName.parent as TypeName;
expect(typeName.type, isDynamicType);
}
@@ -3699,8 +3711,8 @@
await resolveTestFile();
expect(result.errors, isNotEmpty);
- ImportElement import = findNode.import('a.dart').element;
- var tElement = import.importedLibrary.publicNamespace.get('T');
+ ImportElement import = findNode.import('a.dart').element!;
+ var tElement = import.importedLibrary!.publicNamespace.get('T');
var prefixedName = findNode.prefixed('p.T');
assertTypeDynamic(prefixedName);
@@ -3713,7 +3725,7 @@
assertElement(tRef, tElement);
assertTypeDynamic(tRef);
- TypeName typeName = prefixedName.parent;
+ var typeName = prefixedName.parent as TypeName;
expect(typeName.type, isDynamicType);
}
@@ -3728,7 +3740,7 @@
expect(result.errors, isNotEmpty);
var tRef = findNode.simple('T.U v;');
- var tElement = findNode.typeParameter('T>()').declaredElement;
+ var tElement = findNode.typeParameter('T>()').declaredElement!;
assertElement(tRef, tElement);
assertTypeDynamic(tRef);
}
@@ -3791,27 +3803,28 @@
}
''');
- NodeList<Statement> statements = _getMainStatements(result);
+ List<Statement> statements = _getMainStatements(result);
// var v = 42;
VariableElement vElement;
{
- VariableDeclarationStatement statement = statements[0];
- vElement = statement.variables.variables[0].name.staticElement;
+ var statement = statements[0] as VariableDeclarationStatement;
+ vElement = statement.variables.variables[0].name.staticElement
+ as VariableElement;
}
// v is num;
{
- ExpressionStatement statement = statements[1];
- IsExpression isExpression = statement.expression;
+ var statement = statements[1] as ExpressionStatement;
+ var isExpression = statement.expression as IsExpression;
expect(isExpression.notOperator, isNull);
expect(isExpression.staticType, typeProvider.boolType);
- SimpleIdentifier target = isExpression.expression;
+ var target = isExpression.expression as SimpleIdentifier;
expect(target.staticElement, vElement);
expect(target.staticType, typeProvider.intType);
- TypeName numName = isExpression.type;
+ var numName = isExpression.type as TypeName;
expect(numName.name.staticElement, typeProvider.numType.element);
expect(numName.name.staticType, isNull);
}
@@ -3825,27 +3838,28 @@
}
''');
- NodeList<Statement> statements = _getMainStatements(result);
+ List<Statement> statements = _getMainStatements(result);
// var v = 42;
VariableElement vElement;
{
- VariableDeclarationStatement statement = statements[0];
- vElement = statement.variables.variables[0].name.staticElement;
+ var statement = statements[0] as VariableDeclarationStatement;
+ vElement = statement.variables.variables[0].name.staticElement
+ as VariableElement;
}
// v is! num;
{
- ExpressionStatement statement = statements[1];
- IsExpression isExpression = statement.expression;
+ var statement = statements[1] as ExpressionStatement;
+ var isExpression = statement.expression as IsExpression;
expect(isExpression.notOperator, isNotNull);
expect(isExpression.staticType, typeProvider.boolType);
- SimpleIdentifier target = isExpression.expression;
+ var target = isExpression.expression as SimpleIdentifier;
expect(target.staticElement, vElement);
expect(target.staticType, typeProvider.intType);
- TypeName numName = isExpression.type;
+ var numName = isExpression.type as TypeName;
expect(numName.name.staticElement, typeProvider.numType.element);
expect(numName.name.staticType, isNull);
}
@@ -3864,21 +3878,21 @@
await resolveTestFile();
List<Statement> statements = _getMainStatements(result);
- LabeledStatement statement = statements[0];
+ var statement = statements[0] as LabeledStatement;
Label label = statement.labels.single;
- LabelElement labelElement = label.label.staticElement;
+ var labelElement = label.label.staticElement as LabelElement;
- WhileStatement whileStatement = statement.statement;
- Block whileBlock = whileStatement.body;
+ var whileStatement = statement.statement as WhileStatement;
+ var whileBlock = whileStatement.body as Block;
- ContinueStatement continueStatement = whileBlock.statements[0];
- expect(continueStatement.label.staticElement, same(labelElement));
- expect(continueStatement.label.staticType, isNull);
+ var continueStatement = whileBlock.statements[0] as ContinueStatement;
+ expect(continueStatement.label!.staticElement, same(labelElement));
+ expect(continueStatement.label!.staticType, isNull);
- BreakStatement breakStatement = whileBlock.statements[1];
- expect(breakStatement.label.staticElement, same(labelElement));
- expect(breakStatement.label.staticType, isNull);
+ var breakStatement = whileBlock.statements[1] as BreakStatement;
+ expect(breakStatement.label!.staticElement, same(labelElement));
+ expect(breakStatement.label!.staticType, isNull);
}
test_listLiteral_01() async {
@@ -3944,17 +3958,17 @@
InterfaceType doubleType = typeProvider.doubleType;
- FunctionDeclarationStatement fStatement = mainStatements[0];
+ var fStatement = mainStatements[0] as FunctionDeclarationStatement;
FunctionDeclaration fNode = fStatement.functionDeclaration;
FunctionExpression fExpression = fNode.functionExpression;
- FunctionElement fElement = fNode.declaredElement;
+ var fElement = fNode.declaredElement as FunctionElement;
expect(fElement, isNotNull);
assertType(fElement.type, fTypeString);
expect(fNode.name.staticElement, same(fElement));
expect(fNode.name.staticType, isNull);
- TypeName fReturnTypeNode = fNode.returnType;
+ var fReturnTypeNode = fNode.returnType as TypeName;
expect(fReturnTypeNode.name.staticElement, same(doubleType.element));
expect(fReturnTypeNode.type, doubleType);
@@ -3964,27 +3978,27 @@
List<ParameterElement> elements = fElement.parameters;
expect(elements, hasLength(2));
- List<FormalParameter> nodes = fExpression.parameters.parameters;
+ List<FormalParameter> nodes = fExpression.parameters!.parameters;
expect(nodes, hasLength(2));
- _assertSimpleParameter(nodes[0], elements[0],
+ _assertSimpleParameter(nodes[0] as SimpleFormalParameter, elements[0],
name: 'a',
offset: 29,
kind: ParameterKind.REQUIRED,
type: typeProvider.intType);
- _assertSimpleParameter(nodes[1], elements[1],
+ _assertSimpleParameter(nodes[1] as SimpleFormalParameter, elements[1],
name: 'b',
offset: 39,
kind: ParameterKind.REQUIRED,
type: typeProvider.stringType);
}
- VariableDeclarationStatement vStatement = mainStatements[1];
+ var vStatement = mainStatements[1] as VariableDeclarationStatement;
VariableDeclaration vDeclaration = vStatement.variables.variables[0];
- expect(vDeclaration.declaredElement.type, doubleType);
+ expect(vDeclaration.declaredElement!.type, doubleType);
- MethodInvocation fInvocation = vDeclaration.initializer;
+ var fInvocation = vDeclaration.initializer as MethodInvocation;
expect(fInvocation.methodName.staticElement, same(fElement));
assertType(fInvocation.methodName, fTypeString);
expect(fInvocation.staticType, doubleType);
@@ -4020,16 +4034,16 @@
List<Statement> mainStatements = _getMainStatements(result);
- FunctionDeclarationStatement fStatement = mainStatements[0];
+ var fStatement = mainStatements[0] as FunctionDeclarationStatement;
FunctionDeclaration fNode = fStatement.functionDeclaration;
FunctionExpression fExpression = fNode.functionExpression;
- FunctionElement fElement = fNode.declaredElement;
+ var fElement = fNode.declaredElement as FunctionElement;
TypeParameterElement tElement = fElement.typeParameters[0];
TypeParameterElement uElement = fElement.typeParameters[1];
{
- var fTypeParameters = fExpression.typeParameters.typeParameters;
+ var fTypeParameters = fExpression.typeParameters!.typeParameters;
expect(fTypeParameters, hasLength(2));
TypeParameter tNode = fTypeParameters[0];
@@ -4049,7 +4063,7 @@
expect(fNode.name.staticElement, same(fElement));
expect(fNode.name.staticType, fElement.type);
- TypeName fReturnTypeNode = fNode.returnType;
+ var fReturnTypeNode = fNode.returnType as TypeName;
expect(fReturnTypeNode.name.staticElement, same(tElement));
expect(fReturnTypeNode.type, typeParameterTypeStar(tElement));
@@ -4059,16 +4073,16 @@
List<ParameterElement> parameters = fElement.parameters;
expect(parameters, hasLength(2));
- List<FormalParameter> nodes = fExpression.parameters.parameters;
+ List<FormalParameter> nodes = fExpression.parameters!.parameters;
expect(nodes, hasLength(2));
- _assertSimpleParameter(nodes[0], parameters[0],
+ _assertSimpleParameter(nodes[0] as SimpleFormalParameter, parameters[0],
name: 'a',
offset: 28,
kind: ParameterKind.REQUIRED,
type: typeParameterTypeStar(tElement));
- _assertSimpleParameter(nodes[1], parameters[1],
+ _assertSimpleParameter(nodes[1] as SimpleFormalParameter, parameters[1],
name: 'b',
offset: 33,
kind: ParameterKind.REQUIRED,
@@ -4083,11 +4097,11 @@
assertType(bRef, 'U');
}
- VariableDeclarationStatement vStatement = mainStatements[1];
+ var vStatement = mainStatements[1] as VariableDeclarationStatement;
VariableDeclaration vDeclaration = vStatement.variables.variables[0];
- expect(vDeclaration.declaredElement.type, typeProvider.intType);
+ expect(vDeclaration.declaredElement!.type, typeProvider.intType);
- MethodInvocation fInvocation = vDeclaration.initializer;
+ var fInvocation = vDeclaration.initializer as MethodInvocation;
expect(fInvocation.methodName.staticElement, same(fElement));
expect(fInvocation.staticType, typeProvider.intType);
@@ -4104,9 +4118,9 @@
await resolveTestFile();
List<Statement> mainStatements = _getMainStatements(result);
- FunctionDeclarationStatement fStatement = mainStatements[0];
+ var fStatement = mainStatements[0] as FunctionDeclarationStatement;
FunctionDeclaration fNode = fStatement.functionDeclaration;
- FunctionElement fElement = fNode.declaredElement;
+ var fElement = fNode.declaredElement as FunctionElement;
assertType(
fElement.type, 'void Function<T extends U, U, V extends U>(T, U, V)');
@@ -4126,9 +4140,9 @@
await resolveTestFile();
List<Statement> mainStatements = _getMainStatements(result);
- FunctionDeclarationStatement fStatement = mainStatements[0];
+ var fStatement = mainStatements[0] as FunctionDeclarationStatement;
FunctionDeclaration fNode = fStatement.functionDeclaration;
- FunctionElement fElement = fNode.declaredElement;
+ var fElement = fNode.declaredElement as FunctionElement;
assertType(fElement.type, 'void Function<T>({T x})');
var tElement = fElement.typeParameters[0];
@@ -4146,9 +4160,9 @@
await resolveTestFile();
List<Statement> mainStatements = _getMainStatements(result);
- FunctionDeclarationStatement fStatement = mainStatements[0];
+ var fStatement = mainStatements[0] as FunctionDeclarationStatement;
FunctionDeclaration fNode = fStatement.functionDeclaration;
- FunctionElement fElement = fNode.declaredElement;
+ var fElement = fNode.declaredElement as FunctionElement;
assertType(fElement.type, 'void Function<T>([T])');
var tElement = fElement.typeParameters[0];
@@ -4171,17 +4185,17 @@
InterfaceType doubleType = typeProvider.doubleType;
- FunctionDeclarationStatement fStatement = mainStatements[0];
+ var fStatement = mainStatements[0] as FunctionDeclarationStatement;
FunctionDeclaration fNode = fStatement.functionDeclaration;
FunctionExpression fExpression = fNode.functionExpression;
- FunctionElement fElement = fNode.declaredElement;
+ var fElement = fNode.declaredElement as FunctionElement;
expect(fElement, isNotNull);
assertType(fElement.type, fTypeString);
expect(fNode.name.staticElement, same(fElement));
expect(fNode.name.staticType, isNull);
- TypeName fReturnTypeNode = fNode.returnType;
+ var fReturnTypeNode = fNode.returnType as TypeName;
expect(fReturnTypeNode.name.staticElement, same(doubleType.element));
expect(fReturnTypeNode.type, doubleType);
@@ -4191,22 +4205,22 @@
List<ParameterElement> elements = fElement.parameters;
expect(elements, hasLength(3));
- List<FormalParameter> nodes = fExpression.parameters.parameters;
+ List<FormalParameter> nodes = fExpression.parameters!.parameters;
expect(nodes, hasLength(3));
- _assertSimpleParameter(nodes[0], elements[0],
+ _assertSimpleParameter(nodes[0] as SimpleFormalParameter, elements[0],
name: 'a',
offset: 29,
kind: ParameterKind.REQUIRED,
type: typeProvider.intType);
- _assertDefaultParameter(nodes[1], elements[1],
+ _assertDefaultParameter(nodes[1] as DefaultFormalParameter, elements[1],
name: 'b',
offset: 40,
kind: ParameterKind.NAMED,
type: typeProvider.stringType);
- _assertDefaultParameter(nodes[2], elements[2],
+ _assertDefaultParameter(nodes[2] as DefaultFormalParameter, elements[2],
name: 'c',
offset: 48,
kind: ParameterKind.NAMED,
@@ -4214,8 +4228,8 @@
}
{
- ExpressionStatement statement = mainStatements[1];
- MethodInvocation invocation = statement.expression;
+ var statement = mainStatements[1] as ExpressionStatement;
+ var invocation = statement.expression as MethodInvocation;
List<Expression> arguments = invocation.argumentList.arguments;
_assertArgumentToParameter(arguments[0], fElement.parameters[0]);
@@ -4234,10 +4248,10 @@
await resolveTestFile();
List<Statement> mainStatements = _getMainStatements(result);
- FunctionDeclarationStatement fStatement = mainStatements[0];
+ var fStatement = mainStatements[0] as FunctionDeclarationStatement;
FunctionDeclaration fNode = fStatement.functionDeclaration;
FunctionExpression fExpression = fNode.functionExpression;
- FunctionElement fElement = fNode.declaredElement;
+ var fElement = fNode.declaredElement as FunctionElement;
expect(fNode.returnType, isNull);
expect(fElement, isNotNull);
@@ -4263,17 +4277,17 @@
InterfaceType doubleType = typeProvider.doubleType;
- FunctionDeclarationStatement fStatement = mainStatements[0];
+ var fStatement = mainStatements[0] as FunctionDeclarationStatement;
FunctionDeclaration fNode = fStatement.functionDeclaration;
FunctionExpression fExpression = fNode.functionExpression;
- FunctionElement fElement = fNode.declaredElement;
+ var fElement = fNode.declaredElement as FunctionElement;
expect(fElement, isNotNull);
assertType(fElement.type, fTypeString);
expect(fNode.name.staticElement, same(fElement));
expect(fNode.name.staticType, isNull);
- TypeName fReturnTypeNode = fNode.returnType;
+ var fReturnTypeNode = fNode.returnType as TypeName;
expect(fReturnTypeNode.name.staticElement, same(doubleType.element));
expect(fReturnTypeNode.type, doubleType);
@@ -4283,22 +4297,22 @@
List<ParameterElement> elements = fElement.parameters;
expect(elements, hasLength(3));
- List<FormalParameter> nodes = fExpression.parameters.parameters;
+ List<FormalParameter> nodes = fExpression.parameters!.parameters;
expect(nodes, hasLength(3));
- _assertSimpleParameter(nodes[0], elements[0],
+ _assertSimpleParameter(nodes[0] as SimpleFormalParameter, elements[0],
name: 'a',
offset: 29,
kind: ParameterKind.REQUIRED,
type: typeProvider.intType);
- _assertDefaultParameter(nodes[1], elements[1],
+ _assertDefaultParameter(nodes[1] as DefaultFormalParameter, elements[1],
name: 'b',
offset: 40,
kind: ParameterKind.POSITIONAL,
type: typeProvider.stringType);
- _assertDefaultParameter(nodes[2], elements[2],
+ _assertDefaultParameter(nodes[2] as DefaultFormalParameter, elements[2],
name: 'c',
offset: 48,
kind: ParameterKind.POSITIONAL,
@@ -4306,11 +4320,11 @@
}
{
- VariableDeclarationStatement statement = mainStatements[1];
+ var statement = mainStatements[1] as VariableDeclarationStatement;
VariableDeclaration declaration = statement.variables.variables[0];
- expect(declaration.declaredElement.type, doubleType);
+ expect(declaration.declaredElement!.type, doubleType);
- MethodInvocation invocation = declaration.initializer;
+ var invocation = declaration.initializer as MethodInvocation;
expect(invocation.methodName.staticElement, same(fElement));
assertType(invocation.methodName, fTypeString);
expect(invocation.staticType, doubleType);
@@ -4359,17 +4373,17 @@
InterfaceType intType = typeProvider.intType;
- FunctionDeclaration main = result.unit.declarations[0];
+ var main = result.unit!.declarations[0] as FunctionDeclaration;
List<Statement> statements = _getMainStatements(result);
// (int p)
- VariableElement pElement = main.declaredElement.parameters[0];
+ VariableElement pElement = main.declaredElement!.parameters[0];
expect(pElement.type, intType);
// p;
{
- ExpressionStatement statement = statements[0];
- SimpleIdentifier identifier = statement.expression;
+ var statement = statements[0] as ExpressionStatement;
+ var identifier = statement.expression as SimpleIdentifier;
expect(identifier.staticElement, pElement);
expect(identifier.staticType, intType);
}
@@ -4391,44 +4405,48 @@
List<Statement> mainStatements = _getMainStatements(result);
// f(int a) {}
- FunctionDeclarationStatement fStatement = mainStatements[0];
+ var fStatement = mainStatements[0] as FunctionDeclarationStatement;
FunctionDeclaration fNode = fStatement.functionDeclaration;
FunctionExpression fExpression = fNode.functionExpression;
- FunctionElement fElement = fNode.declaredElement;
+ var fElement = fNode.declaredElement as FunctionElement;
ParameterElement aElement = fElement.parameters[0];
- _assertSimpleParameter(fExpression.parameters.parameters[0], aElement,
+ _assertSimpleParameter(
+ fExpression.parameters!.parameters[0] as SimpleFormalParameter,
+ aElement,
name: 'a',
offset: 27,
kind: ParameterKind.REQUIRED,
type: typeProvider.intType);
- BlockFunctionBody fBody = fExpression.body;
+ var fBody = fExpression.body as BlockFunctionBody;
List<Statement> fStatements = fBody.block.statements;
// a;
- ExpressionStatement aStatement = fStatements[0];
- SimpleIdentifier aNode = aStatement.expression;
+ var aStatement = fStatements[0] as ExpressionStatement;
+ var aNode = aStatement.expression as SimpleIdentifier;
expect(aNode.staticElement, same(aElement));
expect(aNode.staticType, typeProvider.intType);
// g(double b) {}
- FunctionDeclarationStatement gStatement = fStatements[1];
+ var gStatement = fStatements[1] as FunctionDeclarationStatement;
FunctionDeclaration gNode = gStatement.functionDeclaration;
FunctionExpression gExpression = gNode.functionExpression;
- FunctionElement gElement = gNode.declaredElement;
+ var gElement = gNode.declaredElement as FunctionElement;
ParameterElement bElement = gElement.parameters[0];
- _assertSimpleParameter(gExpression.parameters.parameters[0], bElement,
+ _assertSimpleParameter(
+ gExpression.parameters!.parameters[0] as SimpleFormalParameter,
+ bElement,
name: 'b',
offset: 57,
kind: ParameterKind.REQUIRED,
type: typeProvider.doubleType);
- BlockFunctionBody gBody = gExpression.body;
+ var gBody = gExpression.body as BlockFunctionBody;
List<Statement> gStatements = gBody.block.statements;
// b;
- ExpressionStatement bStatement = gStatements[0];
- SimpleIdentifier bNode = bStatement.expression;
+ var bStatement = gStatements[0] as ExpressionStatement;
+ var bNode = bStatement.expression as SimpleIdentifier;
expect(bNode.staticElement, same(bElement));
expect(bNode.staticType, typeProvider.doubleType);
}
@@ -4446,7 +4464,7 @@
var mainStatements = _getMainStatements(result);
var fDeclaration = mainStatements[0] as FunctionDeclarationStatement;
- var fElement = fDeclaration.functionDeclaration.declaredElement;
+ var fElement = fDeclaration.functionDeclaration.declaredElement!;
var tElement = fElement.typeParameters[0];
var body = fDeclaration.functionDeclaration.functionExpression.body
as BlockFunctionBody;
@@ -4469,7 +4487,7 @@
var mainStatements = _getMainStatements(result);
var fDeclaration = mainStatements[0] as FunctionDeclarationStatement;
- var fElement = fDeclaration.functionDeclaration.declaredElement;
+ var fElement = fDeclaration.functionDeclaration.declaredElement!;
var tElement = fElement.typeParameters[0];
var body = fDeclaration.functionDeclaration.functionExpression.body
as BlockFunctionBody;
@@ -4501,7 +4519,7 @@
var mainStatements = _getMainStatements(result);
var fDeclaration = mainStatements[0] as FunctionDeclarationStatement;
- var fElement = fDeclaration.functionDeclaration.declaredElement;
+ var fElement = fDeclaration.functionDeclaration.declaredElement!;
var tElement = fElement.typeParameters[0];
var body = fDeclaration.functionDeclaration.functionExpression.body
as BlockFunctionBody;
@@ -4532,7 +4550,7 @@
var mainStatements = _getMainStatements(result);
var fDeclaration = mainStatements[0] as FunctionDeclarationStatement;
- var fElement = fDeclaration.functionDeclaration.declaredElement;
+ var fElement = fDeclaration.functionDeclaration.declaredElement!;
var tElement = fElement.typeParameters[0];
var body = fDeclaration.functionDeclaration.functionExpression.body
as BlockFunctionBody;
@@ -4564,7 +4582,7 @@
var mainStatements = _getMainStatements(result);
var fDeclaration = mainStatements[0] as FunctionDeclarationStatement;
- var fElement = fDeclaration.functionDeclaration.declaredElement;
+ var fElement = fDeclaration.functionDeclaration.declaredElement!;
var tElement = fElement.typeParameters[0];
var body = fDeclaration.functionDeclaration.functionExpression.body
as BlockFunctionBody;
@@ -4592,7 +4610,7 @@
var mainStatements = _getMainStatements(result);
var fDeclaration = mainStatements[0] as FunctionDeclarationStatement;
- var fElement = fDeclaration.functionDeclaration.declaredElement;
+ var fElement = fDeclaration.functionDeclaration.declaredElement!;
var tElement = fElement.typeParameters[0];
var body = fDeclaration.functionDeclaration.functionExpression.body
as BlockFunctionBody;
@@ -4601,7 +4619,7 @@
var yTypeType = yType.type as InterfaceType;
var yTypeTypeArgument = yTypeType.typeArguments[0] as TypeParameterType;
expect(yTypeTypeArgument.element, same(tElement));
- var yElementType = yType.typeArguments.arguments[0] as TypeName;
+ var yElementType = yType.typeArguments!.arguments[0] as TypeName;
var tReference = yElementType.name;
assertElement(tReference, tElement);
assertTypeNull(tReference);
@@ -4620,7 +4638,7 @@
var mainStatements = _getMainStatements(result);
var fDeclaration = mainStatements[0] as FunctionDeclarationStatement;
- var fElement = fDeclaration.functionDeclaration.declaredElement;
+ var fElement = fDeclaration.functionDeclaration.declaredElement!;
var tElement = fElement.typeParameters[0];
var body = fDeclaration.functionDeclaration.functionExpression.body
as BlockFunctionBody;
@@ -4643,7 +4661,7 @@
''');
await resolveTestFile();
- var tElement = findNode.typeParameter('T>(T x)').declaredElement;
+ var tElement = findNode.typeParameter('T>(T x)').declaredElement!;
var gType = findNode.typeName('Consumer<T>');
var gTypeType = gType.type as FunctionType;
@@ -4652,7 +4670,7 @@
gTypeType.namedParameterTypes['u'] as TypeParameterType;
expect(gTypeParameterType.element, same(tElement));
- var gArgumentType = gType.typeArguments.arguments[0] as TypeName;
+ var gArgumentType = gType.typeArguments!.arguments[0] as TypeName;
var tReference = gArgumentType.name;
assertElement(tReference, tElement);
assertTypeNull(tReference);
@@ -4670,7 +4688,7 @@
''');
await resolveTestFile();
- var tElement = findNode.typeParameter('T>(T x)').declaredElement;
+ var tElement = findNode.typeParameter('T>(T x)').declaredElement!;
var gType = findNode.typeName('Consumer<T>');
var gTypeType = gType.type as FunctionType;
@@ -4679,7 +4697,7 @@
gTypeType.normalParameterTypes[0] as TypeParameterType;
expect(gTypeParameterType.element, same(tElement));
- var gArgumentType = gType.typeArguments.arguments[0] as TypeName;
+ var gArgumentType = gType.typeArguments!.arguments[0] as TypeName;
var tReference = gArgumentType.name;
assertElement(tReference, tElement);
assertTypeNull(tReference);
@@ -4697,7 +4715,7 @@
''');
await resolveTestFile();
- var tElement = findNode.typeParameter('T>(T x)').declaredElement;
+ var tElement = findNode.typeParameter('T>(T x)').declaredElement!;
var gType = findNode.typeName('Consumer<T>');
var gTypeType = gType.type as FunctionType;
@@ -4706,7 +4724,7 @@
gTypeType.optionalParameterTypes[0] as TypeParameterType;
expect(gTypeParameterType.element, same(tElement));
- var gArgumentType = gType.typeArguments.arguments[0] as TypeName;
+ var gArgumentType = gType.typeArguments!.arguments[0] as TypeName;
var tReference = gArgumentType.name;
assertElement(tReference, tElement);
assertTypeNull(tReference);
@@ -4724,7 +4742,7 @@
''');
await resolveTestFile();
- var tElement = findNode.typeParameter('T>(T x)').declaredElement;
+ var tElement = findNode.typeParameter('T>(T x)').declaredElement!;
var gType = findNode.typeName('Producer<T>');
var gTypeType = gType.type as FunctionType;
@@ -4732,7 +4750,7 @@
var gTypeReturnType = gTypeType.returnType as TypeParameterType;
expect(gTypeReturnType.element, same(tElement));
- var gArgumentType = gType.typeArguments.arguments[0] as TypeName;
+ var gArgumentType = gType.typeArguments!.arguments[0] as TypeName;
var tReference = gArgumentType.name;
assertElement(tReference, tElement);
assertTypeNull(tReference);
@@ -4748,23 +4766,23 @@
InterfaceType intType = typeProvider.intType;
- FunctionDeclaration main = result.unit.declarations[0];
+ var main = result.unit!.declarations[0] as FunctionDeclaration;
expect(main.declaredElement, isNotNull);
expect(main.name.staticElement, isNotNull);
expect(main.name.staticType, isNull);
- BlockFunctionBody body = main.functionExpression.body;
+ var body = main.functionExpression.body as BlockFunctionBody;
NodeList<Statement> statements = body.block.statements;
// var v = 42;
VariableElement vElement;
{
- VariableDeclarationStatement statement = statements[0];
+ var statement = statements[0] as VariableDeclarationStatement;
VariableDeclaration vNode = statement.variables.variables[0];
expect(vNode.name.staticType, isNull);
- expect(vNode.initializer.staticType, intType);
+ expect(vNode.initializer!.staticType, intType);
- vElement = vNode.name.staticElement;
+ vElement = vNode.name.staticElement as VariableElement;
expect(vElement, isNotNull);
expect(vElement.type, isNotNull);
expect(vElement.type, intType);
@@ -4772,8 +4790,8 @@
// v;
{
- ExpressionStatement statement = statements[1];
- SimpleIdentifier identifier = statement.expression;
+ var statement = statements[1] as ExpressionStatement;
+ var identifier = statement.expression as SimpleIdentifier;
expect(identifier.staticElement, same(vElement));
expect(identifier.staticType, intType);
}
@@ -4791,21 +4809,21 @@
}
''');
await resolveTestFile();
- CompilationUnit unit = result.unit;
+ CompilationUnit unit = result.unit!;
- ClassDeclaration cDeclaration = unit.declarations[0];
+ var cDeclaration = unit.declarations[0] as ClassDeclaration;
- FieldDeclaration vDeclaration = cDeclaration.members[0];
+ var vDeclaration = cDeclaration.members[0] as FieldDeclaration;
VariableDeclaration vNode = vDeclaration.fields.variables[0];
- FieldElement vElement = vNode.declaredElement;
+ var vElement = vNode.declaredElement as FieldElement;
expect(vElement.type, typeProvider.numType);
- MethodDeclaration fooDeclaration = cDeclaration.members[1];
- BlockFunctionBody fooBody = fooDeclaration.body;
+ var fooDeclaration = cDeclaration.members[1] as MethodDeclaration;
+ var fooBody = fooDeclaration.body as BlockFunctionBody;
List<Statement> statements = fooBody.block.statements;
- ForStatement forEachStatement = statements[0];
- Block forBlock = forEachStatement.body;
+ var forEachStatement = statements[0] as ForStatement;
+ var forBlock = forEachStatement.body as Block;
var forEachParts =
forEachStatement.forLoopParts as ForEachPartsWithIdentifier;
@@ -4813,8 +4831,8 @@
expect(vInFor.staticElement, same(vElement.setter));
expect(vInFor.staticType, typeProvider.numType);
- ExpressionStatement statement = forBlock.statements[0];
- SimpleIdentifier identifier = statement.expression;
+ var statement = forBlock.statements[0] as ExpressionStatement;
+ var identifier = statement.expression as SimpleIdentifier;
expect(identifier.staticElement, same(vElement.getter));
expect(identifier.staticType, typeProvider.numType);
}
@@ -4832,13 +4850,13 @@
List<Statement> statements = _getMainStatements(result);
- VariableDeclarationStatement vStatement = statements[0];
+ var vStatement = statements[0] as VariableDeclarationStatement;
VariableDeclaration vNode = vStatement.variables.variables[0];
- LocalVariableElement vElement = vNode.declaredElement;
+ var vElement = vNode.declaredElement as LocalVariableElement;
expect(vElement.type, typeProvider.numType);
- ForStatement forEachStatement = statements[1];
- Block forBlock = forEachStatement.body;
+ var forEachStatement = statements[1] as ForStatement;
+ var forBlock = forEachStatement.body as Block;
var forEachParts =
forEachStatement.forLoopParts as ForEachPartsWithIdentifier;
@@ -4846,8 +4864,8 @@
expect(vInFor.staticElement, vElement);
expect(vInFor.staticType, typeProvider.numType);
- ExpressionStatement statement = forBlock.statements[0];
- SimpleIdentifier identifier = statement.expression;
+ var statement = forBlock.statements[0] as ExpressionStatement;
+ var identifier = statement.expression as SimpleIdentifier;
expect(identifier.staticElement, same(vElement));
expect(identifier.staticType, typeProvider.numType);
}
@@ -4862,17 +4880,17 @@
num v;
''');
await resolveTestFile();
- CompilationUnit unit = result.unit;
+ CompilationUnit unit = result.unit!;
List<Statement> statements = _getMainStatements(result);
- TopLevelVariableDeclaration vDeclaration = unit.declarations[1];
+ var vDeclaration = unit.declarations[1] as TopLevelVariableDeclaration;
VariableDeclaration vNode = vDeclaration.variables.variables[0];
- TopLevelVariableElement vElement = vNode.declaredElement;
+ var vElement = vNode.declaredElement as TopLevelVariableElement;
expect(vElement.type, typeProvider.numType);
- ForStatement forEachStatement = statements[0];
- Block forBlock = forEachStatement.body;
+ var forEachStatement = statements[0] as ForStatement;
+ var forBlock = forEachStatement.body as Block;
var forEachParts =
forEachStatement.forLoopParts as ForEachPartsWithIdentifier;
@@ -4880,8 +4898,8 @@
expect(vInFor.staticElement, same(vElement.setter));
expect(vInFor.staticType, typeProvider.numType);
- ExpressionStatement statement = forBlock.statements[0];
- SimpleIdentifier identifier = statement.expression;
+ var statement = forBlock.statements[0] as ExpressionStatement;
+ var identifier = statement.expression as SimpleIdentifier;
expect(identifier.staticElement, same(vElement.getter));
expect(identifier.staticType, typeProvider.numType);
}
@@ -4898,20 +4916,20 @@
List<Statement> statements = _getMainStatements(result);
- ForStatement forEachStatement = statements[0];
- Block forBlock = forEachStatement.body;
+ var forEachStatement = statements[0] as ForStatement;
+ var forBlock = forEachStatement.body as Block;
var forEachParts =
forEachStatement.forLoopParts as ForEachPartsWithDeclaration;
DeclaredIdentifier vNode = forEachParts.loopVariable;
- LocalVariableElement vElement = vNode.declaredElement;
+ LocalVariableElement vElement = vNode.declaredElement!;
expect(vElement.type, typeProvider.intType);
expect(vNode.identifier.staticElement, vElement);
expect(vNode.identifier.staticType, isNull);
- ExpressionStatement statement = forBlock.statements[0];
- SimpleIdentifier identifier = statement.expression;
+ var statement = forBlock.statements[0] as ExpressionStatement;
+ var identifier = statement.expression as SimpleIdentifier;
expect(identifier.staticElement, vElement);
expect(identifier.staticType, typeProvider.intType);
}
@@ -4928,27 +4946,27 @@
List<Statement> statements = _getMainStatements(result);
- ForStatement forEachStatement = statements[0];
- Block forBlock = forEachStatement.body;
+ var forEachStatement = statements[0] as ForStatement;
+ var forBlock = forEachStatement.body as Block;
var forEachParts =
forEachStatement.forLoopParts as ForEachPartsWithDeclaration;
DeclaredIdentifier vNode = forEachParts.loopVariable;
- LocalVariableElement vElement = vNode.declaredElement;
+ LocalVariableElement vElement = vNode.declaredElement!;
expect(vElement.type, typeProvider.numType);
- TypeName vTypeName = vNode.type;
+ var vTypeName = vNode.type as TypeName;
expect(vTypeName.type, typeProvider.numType);
- SimpleIdentifier vTypeIdentifier = vTypeName.name;
+ var vTypeIdentifier = vTypeName.name as SimpleIdentifier;
expect(vTypeIdentifier.staticElement, typeProvider.numType.element);
expect(vTypeIdentifier.staticType, isNull);
expect(vNode.identifier.staticElement, vElement);
expect(vNode.identifier.staticType, isNull);
- ExpressionStatement statement = forBlock.statements[0];
- SimpleIdentifier identifier = statement.expression;
+ var statement = forBlock.statements[0] as ExpressionStatement;
+ var identifier = statement.expression as SimpleIdentifier;
expect(identifier.staticElement, vElement);
expect(identifier.staticType, typeProvider.numType);
}
@@ -4963,14 +4981,14 @@
List<Statement> statements = _getMainStatements(result);
- VariableDeclarationStatement declarationStatement = statements[0];
+ var declarationStatement = statements[0] as VariableDeclarationStatement;
VariableDeclaration aNode = declarationStatement.variables.variables[0];
- LocalVariableElement aElement = aNode.declaredElement;
+ var aElement = aNode.declaredElement as LocalVariableElement;
expect(aElement.type, typeProvider.intType);
VariableDeclaration bNode = declarationStatement.variables.variables[1];
- LocalVariableElement bElement = bNode.declaredElement;
+ var bElement = bNode.declaredElement as LocalVariableElement;
expect(bElement.type, typeProvider.doubleType);
}
@@ -4993,47 +5011,47 @@
List<Statement> mainStatements = _getMainStatements(result);
// f() {}
- FunctionDeclarationStatement fStatement = mainStatements[0];
+ var fStatement = mainStatements[0] as FunctionDeclarationStatement;
FunctionDeclaration fNode = fStatement.functionDeclaration;
- BlockFunctionBody fBody = fNode.functionExpression.body;
+ var fBody = fNode.functionExpression.body as BlockFunctionBody;
List<Statement> fStatements = fBody.block.statements;
// int a;
- VariableDeclarationStatement aDeclaration = fStatements[0];
+ var aDeclaration = fStatements[0] as VariableDeclarationStatement;
VariableElement aElement =
- aDeclaration.variables.variables[0].declaredElement;
+ aDeclaration.variables.variables[0].declaredElement!;
// a;
{
- ExpressionStatement aStatement = fStatements[1];
- SimpleIdentifier aNode = aStatement.expression;
+ var aStatement = fStatements[1] as ExpressionStatement;
+ var aNode = aStatement.expression as SimpleIdentifier;
expect(aNode.staticElement, same(aElement));
expect(aNode.staticType, typeProvider.intType);
}
// g(double b) {}
- FunctionDeclarationStatement gStatement = fStatements[2];
+ var gStatement = fStatements[2] as FunctionDeclarationStatement;
FunctionDeclaration gNode = gStatement.functionDeclaration;
- BlockFunctionBody gBody = gNode.functionExpression.body;
+ var gBody = gNode.functionExpression.body as BlockFunctionBody;
List<Statement> gStatements = gBody.block.statements;
// double b;
- VariableDeclarationStatement bDeclaration = gStatements[0];
+ var bDeclaration = gStatements[0] as VariableDeclarationStatement;
VariableElement bElement =
- bDeclaration.variables.variables[0].declaredElement;
+ bDeclaration.variables.variables[0].declaredElement!;
// a;
{
- ExpressionStatement aStatement = gStatements[1];
- SimpleIdentifier aNode = aStatement.expression;
+ var aStatement = gStatements[1] as ExpressionStatement;
+ var aNode = aStatement.expression as SimpleIdentifier;
expect(aNode.staticElement, same(aElement));
expect(aNode.staticType, typeProvider.intType);
}
// b;
{
- ExpressionStatement bStatement = gStatements[2];
- SimpleIdentifier bNode = bStatement.expression;
+ var bStatement = gStatements[2] as ExpressionStatement;
+ var bNode = bStatement.expression as SimpleIdentifier;
expect(bNode.staticElement, same(bElement));
expect(bNode.staticType, typeProvider.doubleType);
}
@@ -5051,15 +5069,15 @@
var statements = _getMainStatements(result);
{
- ExpressionStatement statement = statements[0];
- SetOrMapLiteral mapLiteral = statement.expression;
+ var statement = statements[0] as ExpressionStatement;
+ var mapLiteral = statement.expression as SetOrMapLiteral;
expect(mapLiteral.staticType,
typeProvider.mapType2(typeProvider.intType, typeProvider.doubleType));
}
{
- ExpressionStatement statement = statements[1];
- SetOrMapLiteral mapLiteral = statement.expression;
+ var statement = statements[1] as ExpressionStatement;
+ var mapLiteral = statement.expression as SetOrMapLiteral;
expect(
mapLiteral.staticType,
typeProvider.mapType2(
@@ -5104,9 +5122,9 @@
String fTypeString = 'double Function(int, {String b, bool c})';
await resolveTestFile();
- ClassDeclaration classDeclaration = result.unit.declarations[0];
- MethodDeclaration methodDeclaration = classDeclaration.members[0];
- MethodElement methodElement = methodDeclaration.declaredElement;
+ var classDeclaration = result.unit!.declarations[0] as ClassDeclaration;
+ var methodDeclaration = classDeclaration.members[0] as MethodDeclaration;
+ var methodElement = methodDeclaration.declaredElement as MethodElement;
InterfaceType doubleType = typeProvider.doubleType;
@@ -5116,7 +5134,7 @@
expect(methodDeclaration.name.staticElement, same(methodElement));
expect(methodDeclaration.name.staticType, isNull);
- TypeName fReturnTypeNode = methodDeclaration.returnType;
+ var fReturnTypeNode = methodDeclaration.returnType as TypeName;
expect(fReturnTypeNode.name.staticElement, same(doubleType.element));
expect(fReturnTypeNode.type, doubleType);
//
@@ -5125,22 +5143,22 @@
List<ParameterElement> elements = methodElement.parameters;
expect(elements, hasLength(3));
- List<FormalParameter> nodes = methodDeclaration.parameters.parameters;
+ List<FormalParameter> nodes = methodDeclaration.parameters!.parameters;
expect(nodes, hasLength(3));
- _assertSimpleParameter(nodes[0], elements[0],
+ _assertSimpleParameter(nodes[0] as SimpleFormalParameter, elements[0],
name: 'a',
offset: 25,
kind: ParameterKind.REQUIRED,
type: typeProvider.intType);
- _assertDefaultParameter(nodes[1], elements[1],
+ _assertDefaultParameter(nodes[1] as DefaultFormalParameter, elements[1],
name: 'b',
offset: 36,
kind: ParameterKind.NAMED,
type: typeProvider.stringType);
- _assertDefaultParameter(nodes[2], elements[2],
+ _assertDefaultParameter(nodes[2] as DefaultFormalParameter, elements[2],
name: 'c',
offset: 44,
kind: ParameterKind.NAMED,
@@ -5148,10 +5166,11 @@
//
// Validate the arguments at the call site.
//
- FunctionDeclaration functionDeclaration = result.unit.declarations[1];
- BlockFunctionBody body = functionDeclaration.functionExpression.body;
- ExpressionStatement statement = body.block.statements[0];
- MethodInvocation invocation = statement.expression;
+ var functionDeclaration =
+ result.unit!.declarations[1] as FunctionDeclaration;
+ var body = functionDeclaration.functionExpression.body as BlockFunctionBody;
+ var statement = body.block.statements[0] as ExpressionStatement;
+ var invocation = statement.expression as MethodInvocation;
List<Expression> arguments = invocation.argumentList.arguments;
_assertArgumentToParameter(arguments[0], methodElement.parameters[0]);
@@ -5171,14 +5190,14 @@
await resolveTestFile();
expect(result.errors, isEmpty);
- ClassDeclaration cNode = result.unit.declarations[0];
- ClassElement cElement = cNode.declaredElement;
+ var cNode = result.unit!.declarations[0] as ClassDeclaration;
+ ClassElement cElement = cNode.declaredElement!;
MethodElement callElement = cElement.methods[0];
List<Statement> statements = _getMainStatements(result);
- ExpressionStatement statement = statements[0];
- MethodInvocation invocation = statement.expression;
+ var statement = statements[0] as ExpressionStatement;
+ var invocation = statement.expression as MethodInvocation;
expect(invocation.staticType, typeProvider.doubleType);
assertInvokeType(invocation, 'double Function(int)');
@@ -5197,20 +5216,20 @@
await resolveTestFile();
expect(result.errors, isEmpty);
- FunctionDeclaration main = result.unit.declarations[0];
- FunctionElement mainElement = main.declaredElement;
+ var main = result.unit!.declarations[0] as FunctionDeclaration;
+ var mainElement = main.declaredElement as FunctionElement;
ParameterElement parameter = mainElement.parameters[0];
- BlockFunctionBody mainBody = main.functionExpression.body;
+ var mainBody = main.functionExpression.body as BlockFunctionBody;
List<Statement> statements = mainBody.block.statements;
- ExpressionStatement statement = statements[0];
- MethodInvocation invocation = statement.expression;
+ var statement = statements[0] as ExpressionStatement;
+ var invocation = statement.expression as MethodInvocation;
expect(invocation.staticType, typeProvider.doubleType);
assertInvokeType(invocation, 'double Function(int)');
- SimpleIdentifier target = invocation.target;
+ var target = invocation.target as SimpleIdentifier;
expect(target.staticElement, same(parameter));
assertType(target.staticType, 'double Function(int)');
@@ -5234,13 +5253,13 @@
''');
await resolveTestFile();
- ClassDeclaration aNode = result.unit.declarations[0];
- MethodDeclaration fooNode = aNode.members[0];
- MethodElement fooElement = fooNode.declaredElement;
+ var aNode = result.unit!.declarations[0] as ClassDeclaration;
+ var fooNode = aNode.members[0] as MethodDeclaration;
+ var fooElement = fooNode.declaredElement as MethodElement;
List<Statement> mainStatements = _getMainStatements(result);
- ExpressionStatement statement = mainStatements[0];
- MethodInvocation invocation = statement.expression;
+ var statement = mainStatements[0] as ExpressionStatement;
+ var invocation = statement.expression as MethodInvocation;
expect(invocation.methodName.staticElement, same(fooElement));
var invokeTypeStr = 'void Function(int)';
@@ -5319,11 +5338,11 @@
await resolveTestFile();
List<Statement> mainStatements = _getMainStatements(result);
- FunctionDeclaration foo = result.unit.declarations[1];
- ExecutableElement fooElement = foo.declaredElement;
+ var foo = result.unit!.declarations[1] as FunctionDeclaration;
+ ExecutableElement fooElement = foo.declaredElement!;
- ExpressionStatement statement = mainStatements[0];
- MethodInvocation invocation = statement.expression;
+ var statement = mainStatements[0] as ExpressionStatement;
+ var invocation = statement.expression as MethodInvocation;
List<Expression> arguments = invocation.argumentList.arguments;
_assertArgumentToParameter(arguments[0], fooElement.parameters[0]);
@@ -5466,17 +5485,17 @@
await resolveTestFile();
List<Statement> mainStatements = _getMainStatements(result);
- ClassDeclaration cNode = result.unit.declarations[1];
- ClassElement cElement = cNode.declaredElement;
- MethodDeclaration mNode = cNode.members[0];
- MethodElement mElement = mNode.declaredElement;
+ var cNode = result.unit!.declarations[1] as ClassDeclaration;
+ ClassElement cElement = cNode.declaredElement!;
+ var mNode = cNode.members[0] as MethodDeclaration;
+ var mElement = mNode.declaredElement as MethodElement;
{
- ExpressionStatement statement = mainStatements[0];
- MethodInvocation invocation = statement.expression;
+ var statement = mainStatements[0] as ExpressionStatement;
+ var invocation = statement.expression as MethodInvocation;
List<Expression> arguments = invocation.argumentList.arguments;
- SimpleIdentifier target = invocation.target;
+ var target = invocation.target as SimpleIdentifier;
expect(target.staticElement, same(cElement));
assertTypeNull(target);
@@ -5491,12 +5510,12 @@
}
{
- MethodDeclaration fooNode = cNode.members[1];
- BlockFunctionBody fooBody = fooNode.body;
+ var fooNode = cNode.members[1] as MethodDeclaration;
+ var fooBody = fooNode.body as BlockFunctionBody;
List<Statement> statements = fooBody.block.statements;
- ExpressionStatement statement = statements[0];
- MethodInvocation invocation = statement.expression;
+ var statement = statements[0] as ExpressionStatement;
+ var invocation = statement.expression as MethodInvocation;
List<Expression> arguments = invocation.argumentList.arguments;
expect(invocation.target, isNull);
@@ -5523,16 +5542,16 @@
''');
await resolveTestFile();
- ClassDeclaration cNode = result.unit.declarations[0];
- TypeParameterElement tElement = cNode.declaredElement.typeParameters[0];
+ var cNode = result.unit!.declarations[0] as ClassDeclaration;
+ TypeParameterElement tElement = cNode.declaredElement!.typeParameters[0];
- MethodDeclaration barNode = cNode.members[1];
- BlockFunctionBody barBody = barNode.body;
- ExpressionStatement fooStatement = barBody.block.statements[0];
- MethodInvocation fooInvocation = fooStatement.expression;
+ var barNode = cNode.members[1] as MethodDeclaration;
+ var barBody = barNode.body as BlockFunctionBody;
+ var fooStatement = barBody.block.statements[0] as ExpressionStatement;
+ var fooInvocation = fooStatement.expression as MethodInvocation;
assertInvokeType(fooInvocation, 'T Function(C<T>)');
assertType(fooInvocation.staticType, 'T');
- expect(fooInvocation.staticType.element, same(tElement));
+ expect(fooInvocation.staticType!.element, same(tElement));
}
test_methodInvocation_topLevelFunction() async {
@@ -5549,11 +5568,11 @@
InterfaceType doubleType = typeProvider.doubleType;
- FunctionDeclaration fNode = result.unit.declarations[1];
- FunctionElement fElement = fNode.declaredElement;
+ var fNode = result.unit!.declarations[1] as FunctionDeclaration;
+ var fElement = fNode.declaredElement as FunctionElement;
- ExpressionStatement statement = mainStatements[0];
- MethodInvocation invocation = statement.expression;
+ var statement = mainStatements[0] as ExpressionStatement;
+ var invocation = statement.expression as MethodInvocation;
List<Expression> arguments = invocation.argumentList.arguments;
expect(invocation.methodName.staticElement, same(fElement));
@@ -5578,26 +5597,26 @@
List<Statement> mainStatements = _getMainStatements(result);
- FunctionDeclaration fNode = result.unit.declarations[1];
- FunctionElement fElement = fNode.declaredElement;
+ var fNode = result.unit!.declarations[1] as FunctionDeclaration;
+ var fElement = fNode.declaredElement as FunctionElement;
// f<bool, String>(true, 'str');
{
String fTypeString = 'void Function(bool, String)';
- ExpressionStatement statement = mainStatements[0];
- MethodInvocation invocation = statement.expression;
+ var statement = mainStatements[0] as ExpressionStatement;
+ var invocation = statement.expression as MethodInvocation;
- List<TypeAnnotation> typeArguments = invocation.typeArguments.arguments;
+ List<TypeAnnotation> typeArguments = invocation.typeArguments!.arguments;
expect(typeArguments, hasLength(2));
{
- TypeName typeArgument = typeArguments[0];
+ var typeArgument = typeArguments[0] as TypeName;
InterfaceType boolType = typeProvider.boolType;
expect(typeArgument.type, boolType);
expect(typeArgument.name.staticElement, boolType.element);
expect(typeArgument.name.staticType, boolType);
}
{
- TypeName typeArgument = typeArguments[1];
+ var typeArgument = typeArguments[1] as TypeName;
InterfaceType stringType = typeProvider.stringType;
expect(typeArgument.type, stringType);
expect(typeArgument.name.staticElement, stringType.element);
@@ -5620,8 +5639,8 @@
// f(1, 2.3);
{
String fTypeString = 'void Function(int, double)';
- ExpressionStatement statement = mainStatements[1];
- MethodInvocation invocation = statement.expression;
+ var statement = mainStatements[1] as ExpressionStatement;
+ var invocation = statement.expression as MethodInvocation;
List<Expression> arguments = invocation.argumentList.arguments;
expect(invocation.methodName.staticElement, same(fElement));
@@ -5659,7 +5678,7 @@
{
var creation = findNode.instanceCreation('C.named(); // ref');
- var namedConstructor = c.getNamedConstructor('named');
+ var namedConstructor = c.getNamedConstructor('named')!;
assertElement(creation, namedConstructor);
assertType(creation, 'C');
@@ -5683,7 +5702,7 @@
await resolveTestFile();
expect(result.errors, isEmpty);
var import = findElement.import('package:test/a.dart');
- var c = import.importedLibrary.getType('C');
+ var c = import.importedLibrary!.getType('C')!;
{
var creation = findNode.instanceCreation('C(); // ref');
@@ -5696,7 +5715,7 @@
{
var creation = findNode.instanceCreation('C.named(); // ref');
- var namedConstructor = c.getNamedConstructor('named');
+ var namedConstructor = c.getNamedConstructor('named')!;
assertElement(creation, namedConstructor);
assertType(creation, 'C');
@@ -5721,7 +5740,7 @@
{
var creation = findNode.instanceCreation('C<int>(); // ref');
- assertMember(creation, c.unnamedConstructor, {'T': 'int'});
+ assertMember(creation, c.unnamedConstructor!, {'T': 'int'});
assertType(creation, 'C<int>');
assertTypeName(creation.constructorName.type, c, 'C<int>');
@@ -5730,7 +5749,7 @@
{
var creation = findNode.instanceCreation('C<String>.named(); // ref');
- var namedConstructor = c.getNamedConstructor('named');
+ var namedConstructor = c.getNamedConstructor('named')!;
assertMember(creation, namedConstructor, {'T': 'String'});
assertType(creation, 'C<String>');
@@ -6008,20 +6027,20 @@
VariableElement v;
{
- VariableDeclarationStatement statement = mainStatements[0];
- v = statement.variables.variables[0].declaredElement;
+ var statement = mainStatements[0] as VariableDeclarationStatement;
+ v = statement.variables.variables[0].declaredElement!;
expect(v.type, typeProvider.intType);
}
{
- ExpressionStatement statement = mainStatements[1];
+ var statement = mainStatements[1] as ExpressionStatement;
- PostfixExpression postfix = statement.expression;
+ var postfix = statement.expression as PostfixExpression;
expect(postfix.operator.type, TokenType.PLUS_PLUS);
- expect(postfix.staticElement.name, '+');
+ expect(postfix.staticElement!.name, '+');
expect(postfix.staticType, typeProvider.intType);
- SimpleIdentifier operand = postfix.operand;
+ var operand = postfix.operand as SimpleIdentifier;
if (hasAssignmentLeftResolution) {
expect(operand.staticElement, same(v));
expect(operand.staticType, typeProvider.intType);
@@ -6044,23 +6063,23 @@
addTestFile(content);
await resolveTestFile();
- CompilationUnit unit = result.unit;
+ CompilationUnit unit = result.unit!;
- ClassDeclaration cClassDeclaration = unit.declarations[1];
- ClassElement cClassElement = cClassDeclaration.declaredElement;
- FieldElement fElement = cClassElement.getField('f');
+ var cClassDeclaration = unit.declarations[1] as ClassDeclaration;
+ ClassElement cClassElement = cClassDeclaration.declaredElement!;
+ FieldElement fElement = cClassElement.getField('f')!;
List<Statement> mainStatements = _getMainStatements(result);
{
- ExpressionStatement statement = mainStatements[0];
+ var statement = mainStatements[0] as ExpressionStatement;
- PostfixExpression postfix = statement.expression;
+ var postfix = statement.expression as PostfixExpression;
expect(postfix.operator.type, TokenType.PLUS_PLUS);
- expect(postfix.staticElement.name, '+');
+ expect(postfix.staticElement!.name, '+');
expect(postfix.staticType, typeProvider.intType);
- PropertyAccess propertyAccess = postfix.operand;
+ var propertyAccess = postfix.operand as PropertyAccess;
if (hasAssignmentLeftResolution) {
expect(propertyAccess.staticType, typeProvider.intType);
} else {
@@ -6143,16 +6162,16 @@
List<Statement> statements = _getMainStatements(result);
- ClassDeclaration cDeclaration = result.unit.declarations[1];
- ClassElement cElement = cDeclaration.declaredElement;
+ var cDeclaration = result.unit!.declarations[1] as ClassDeclaration;
+ ClassElement cElement = cDeclaration.declaredElement!;
FieldElement fElement = cElement.fields[0];
- VariableDeclarationStatement cStatement = statements[0];
+ var cStatement = statements[0] as VariableDeclarationStatement;
VariableElement vElement =
- cStatement.variables.variables[0].declaredElement;
+ cStatement.variables.variables[0].declaredElement!;
- ExpressionStatement statement = statements[1];
- PrefixedIdentifier prefixed = statement.expression;
+ var statement = statements[1] as ExpressionStatement;
+ var prefixed = statement.expression as PrefixedIdentifier;
SimpleIdentifier prefix = prefixed.prefix;
expect(prefix.staticElement, same(vElement));
@@ -6178,12 +6197,12 @@
List<Statement> statements = _getMainStatements(result);
- ClassDeclaration cDeclaration = result.unit.declarations[1];
- ClassElement cElement = cDeclaration.declaredElement;
+ var cDeclaration = result.unit!.declarations[1] as ClassDeclaration;
+ ClassElement cElement = cDeclaration.declaredElement!;
FieldElement fElement = cElement.fields[0];
- ExpressionStatement statement = statements[0];
- PrefixedIdentifier prefixed = statement.expression;
+ var statement = statements[0] as ExpressionStatement;
+ var prefixed = statement.expression as PrefixedIdentifier;
SimpleIdentifier prefix = prefixed.prefix;
expect(prefix.staticElement, same(cElement));
@@ -6203,15 +6222,15 @@
await resolveTestFile();
expect(result.errors, isEmpty);
- FunctionDeclaration main = result.unit.declarations[0];
- FunctionElement mainElement = main.declaredElement;
+ var main = result.unit!.declarations[0] as FunctionDeclaration;
+ var mainElement = main.declaredElement as FunctionElement;
ParameterElement parameter = mainElement.parameters[0];
- BlockFunctionBody mainBody = main.functionExpression.body;
+ var mainBody = main.functionExpression.body as BlockFunctionBody;
List<Statement> statements = mainBody.block.statements;
- ExpressionStatement statement = statements[0];
- PrefixedIdentifier prefixed = statement.expression;
+ var statement = statements[0] as ExpressionStatement;
+ var prefixed = statement.expression as PrefixedIdentifier;
expect(prefixed.prefix.staticElement, same(parameter));
assertType(prefixed.prefix.staticType, 'double Function(int)');
@@ -6246,18 +6265,18 @@
// TODO(scheglov) Uncomment and fix "unused imports" hint.
// expect(result.errors, isEmpty);
- var unitElement = result.unit.declaredElement;
+ var unitElement = result.unit!.declaredElement!;
ImportElement myImport = unitElement.library.imports[0];
- PrefixElement myPrefix = myImport.prefix;
+ PrefixElement myPrefix = myImport.prefix!;
- var myLibrary = myImport.importedLibrary;
+ var myLibrary = myImport.importedLibrary!;
var myUnit = myLibrary.definingCompilationUnit;
var myClass = myUnit.types.single;
var myTypeAlias = myUnit.typeAliases.single;
var myTopVariable = myUnit.topLevelVariables[0];
var myTopFunction = myUnit.functions.single;
- var myGetter = myUnit.topLevelVariables[1].getter;
- var mySetter = myUnit.topLevelVariables[2].setter;
+ var myGetter = myUnit.topLevelVariables[1].getter!;
+ var mySetter = myUnit.topLevelVariables[2].setter!;
expect(myTopVariable.name, 'myTopVariable');
expect(myGetter.displayName, 'myGetter');
expect(mySetter.displayName, 'mySetter');
@@ -6271,8 +6290,8 @@
void assertPrefixedIdentifier(
int statementIndex, Element expectedElement, DartType expectedType) {
- ExpressionStatement statement = statements[statementIndex];
- PrefixedIdentifier prefixed = statement.expression;
+ var statement = statements[statementIndex] as ExpressionStatement;
+ var prefixed = statement.expression as PrefixedIdentifier;
assertPrefix(prefixed.prefix);
expect(prefixed.identifier.staticElement, same(expectedElement));
@@ -6281,11 +6300,11 @@
assertPrefixedIdentifier(0, myClass, typeProvider.typeType);
assertPrefixedIdentifier(1, myTypeAlias, typeProvider.typeType);
- assertPrefixedIdentifier(2, myTopVariable.getter, typeProvider.intType);
+ assertPrefixedIdentifier(2, myTopVariable.getter!, typeProvider.intType);
{
- ExpressionStatement statement = statements[3];
- PrefixedIdentifier prefixed = statement.expression;
+ var statement = statements[3] as ExpressionStatement;
+ var prefixed = statement.expression as PrefixedIdentifier;
assertPrefix(prefixed.prefix);
expect(prefixed.identifier.staticElement, same(myTopFunction));
@@ -6293,9 +6312,9 @@
}
{
- ExpressionStatement statement = statements[4];
- MethodInvocation invocation = statement.expression;
- assertPrefix(invocation.target);
+ var statement = statements[4] as ExpressionStatement;
+ var invocation = statement.expression as MethodInvocation;
+ assertPrefix(invocation.target as SimpleIdentifier);
expect(invocation.methodName.staticElement, same(myTopFunction));
expect(invocation.methodName.staticType, isNotNull);
@@ -6304,9 +6323,9 @@
assertPrefixedIdentifier(5, myGetter, typeProvider.intType);
{
- ExpressionStatement statement = statements[6];
- AssignmentExpression assignment = statement.expression;
- PrefixedIdentifier left = assignment.leftHandSide;
+ var statement = statements[6] as ExpressionStatement;
+ var assignment = statement.expression as AssignmentExpression;
+ var left = assignment.leftHandSide as PrefixedIdentifier;
assertPrefix(left.prefix);
if (hasAssignmentLeftResolution) {
@@ -6335,20 +6354,20 @@
VariableElement v;
{
- VariableDeclarationStatement statement = mainStatements[0];
- v = statement.variables.variables[0].declaredElement;
+ var statement = mainStatements[0] as VariableDeclarationStatement;
+ v = statement.variables.variables[0].declaredElement!;
expect(v.type, typeProvider.intType);
}
{
- ExpressionStatement statement = mainStatements[1];
+ var statement = mainStatements[1] as ExpressionStatement;
- PrefixExpression prefix = statement.expression;
+ var prefix = statement.expression as PrefixExpression;
expect(prefix.operator.type, TokenType.PLUS_PLUS);
- expect(prefix.staticElement.name, '+');
+ expect(prefix.staticElement!.name, '+');
expect(prefix.staticType, typeProvider.intType);
- SimpleIdentifier operand = prefix.operand;
+ var operand = prefix.operand as SimpleIdentifier;
if (hasAssignmentLeftResolution) {
expect(operand.staticElement, same(v));
expect(operand.staticType, typeProvider.intType);
@@ -6359,14 +6378,14 @@
}
{
- ExpressionStatement statement = mainStatements[2];
+ var statement = mainStatements[2] as ExpressionStatement;
- PrefixExpression prefix = statement.expression;
+ var prefix = statement.expression as PrefixExpression;
expect(prefix.operator.type, TokenType.TILDE);
- expect(prefix.staticElement.name, '~');
+ expect(prefix.staticElement!.name, '~');
expect(prefix.staticType, typeProvider.intType);
- SimpleIdentifier operand = prefix.operand;
+ var operand = prefix.operand as SimpleIdentifier;
expect(operand.staticElement, same(v));
expect(operand.staticType, typeProvider.intType);
}
@@ -6387,20 +6406,20 @@
VariableElement v;
{
- VariableDeclarationStatement statement = mainStatements[0];
- v = statement.variables.variables[0].declaredElement;
+ var statement = mainStatements[0] as VariableDeclarationStatement;
+ v = statement.variables.variables[0].declaredElement!;
expect(v.type, typeProvider.boolType);
}
{
- ExpressionStatement statement = mainStatements[1];
+ var statement = mainStatements[1] as ExpressionStatement;
- PrefixExpression prefix = statement.expression;
+ var prefix = statement.expression as PrefixExpression;
expect(prefix.operator.type, TokenType.BANG);
expect(prefix.staticElement, isNull);
expect(prefix.staticType, typeProvider.boolType);
- SimpleIdentifier operand = prefix.operand;
+ var operand = prefix.operand as SimpleIdentifier;
expect(operand.staticElement, same(v));
expect(operand.staticType, typeProvider.boolType);
}
@@ -6419,23 +6438,23 @@
addTestFile(content);
await resolveTestFile();
- CompilationUnit unit = result.unit;
+ CompilationUnit unit = result.unit!;
- ClassDeclaration cClassDeclaration = unit.declarations[1];
- ClassElement cClassElement = cClassDeclaration.declaredElement;
- FieldElement fElement = cClassElement.getField('f');
+ var cClassDeclaration = unit.declarations[1] as ClassDeclaration;
+ ClassElement cClassElement = cClassDeclaration.declaredElement!;
+ FieldElement fElement = cClassElement.getField('f')!;
List<Statement> mainStatements = _getMainStatements(result);
{
- ExpressionStatement statement = mainStatements[0];
+ var statement = mainStatements[0] as ExpressionStatement;
- PrefixExpression prefix = statement.expression;
+ var prefix = statement.expression as PrefixExpression;
expect(prefix.operator.type, TokenType.PLUS_PLUS);
- expect(prefix.staticElement.name, '+');
+ expect(prefix.staticElement!.name, '+');
expect(prefix.staticType, typeProvider.intType);
- PropertyAccess propertyAccess = prefix.operand;
+ var propertyAccess = prefix.operand as PropertyAccess;
if (hasAssignmentLeftResolution) {
expect(propertyAccess.staticType, typeProvider.intType);
} else {
@@ -6453,14 +6472,14 @@
}
{
- ExpressionStatement statement = mainStatements[1];
+ var statement = mainStatements[1] as ExpressionStatement;
- PrefixExpression prefix = statement.expression;
+ var prefix = statement.expression as PrefixExpression;
expect(prefix.operator.type, TokenType.TILDE);
- expect(prefix.staticElement.name, '~');
+ expect(prefix.staticElement!.name, '~');
expect(prefix.staticType, typeProvider.intType);
- PropertyAccess propertyAccess = prefix.operand;
+ var propertyAccess = prefix.operand as PropertyAccess;
expect(propertyAccess.staticType, typeProvider.intType);
SimpleIdentifier propertyName = propertyAccess.propertyName;
@@ -6481,20 +6500,20 @@
addTestFile(content);
await resolveTestFile();
- CompilationUnit unit = result.unit;
+ CompilationUnit unit = result.unit!;
- ClassDeclaration cClassDeclaration = unit.declarations[1];
- ClassElement cClassElement = cClassDeclaration.declaredElement;
- FieldElement fElement = cClassElement.getField('f');
+ var cClassDeclaration = unit.declarations[1] as ClassDeclaration;
+ ClassElement cClassElement = cClassDeclaration.declaredElement!;
+ FieldElement fElement = cClassElement.getField('f')!;
List<Statement> mainStatements = _getMainStatements(result);
{
- ExpressionStatement statement = mainStatements[0];
- PropertyAccess access = statement.expression;
+ var statement = mainStatements[0] as ExpressionStatement;
+ var access = statement.expression as PropertyAccess;
expect(access.staticType, typeProvider.intType);
- InstanceCreationExpression newC = access.target;
+ var newC = access.target as InstanceCreationExpression;
expect(
newC.constructorName.staticElement,
cClassElement.unnamedConstructor,
@@ -6518,20 +6537,20 @@
addTestFile(content);
await resolveTestFile();
- CompilationUnit unit = result.unit;
+ CompilationUnit unit = result.unit!;
- ClassDeclaration cClassDeclaration = unit.declarations[1];
- ClassElement cClassElement = cClassDeclaration.declaredElement;
- FieldElement fElement = cClassElement.getField('f');
+ var cClassDeclaration = unit.declarations[1] as ClassDeclaration;
+ ClassElement cClassElement = cClassDeclaration.declaredElement!;
+ FieldElement fElement = cClassElement.getField('f')!;
List<Statement> mainStatements = _getMainStatements(result);
{
- ExpressionStatement statement = mainStatements[0];
- PropertyAccess access = statement.expression;
+ var statement = mainStatements[0] as ExpressionStatement;
+ var access = statement.expression as PropertyAccess;
expect(access.staticType, typeProvider.intType);
- InstanceCreationExpression newC = access.target;
+ var newC = access.target as InstanceCreationExpression;
expect(
newC.constructorName.staticElement,
cClassElement.unnamedConstructor,
@@ -6585,50 +6604,51 @@
}
''');
- FunctionDeclaration main = result.unit.declarations[0];
+ var main = result.unit!.declarations[0] as FunctionDeclaration;
expect(main.declaredElement, isNotNull);
expect(main.name.staticElement, isNotNull);
expect(main.name.staticType, isNull);
- BlockFunctionBody body = main.functionExpression.body;
+ var body = main.functionExpression.body as BlockFunctionBody;
NodeList<Statement> statements = body.block.statements;
// var v = 42;
VariableElement vElement;
{
- VariableDeclarationStatement statement = statements[0];
- vElement = statement.variables.variables[0].name.staticElement;
+ var statement = statements[0] as VariableDeclarationStatement;
+ vElement = statement.variables.variables[0].name.staticElement
+ as VariableElement;
}
{
- ExpressionStatement statement = statements[1];
- StringInterpolation interpolation = statement.expression;
+ var statement = statements[1] as ExpressionStatement;
+ var interpolation = statement.expression as StringInterpolation;
- InterpolationExpression element_1 = interpolation.elements[1];
- SimpleIdentifier expression_1 = element_1.expression;
+ var element_1 = interpolation.elements[1] as InterpolationExpression;
+ var expression_1 = element_1.expression as SimpleIdentifier;
expect(expression_1.staticElement, same(vElement));
expect(expression_1.staticType, typeProvider.intType);
- InterpolationExpression element_3 = interpolation.elements[3];
- SimpleIdentifier expression_3 = element_3.expression;
+ var element_3 = interpolation.elements[3] as InterpolationExpression;
+ var expression_3 = element_3.expression as SimpleIdentifier;
expect(expression_3.staticElement, same(vElement));
expect(expression_3.staticType, typeProvider.intType);
- InterpolationExpression element_5 = interpolation.elements[5];
- SimpleIdentifier expression_5 = element_5.expression;
+ var element_5 = interpolation.elements[5] as InterpolationExpression;
+ var expression_5 = element_5.expression as SimpleIdentifier;
expect(expression_5.staticElement, same(vElement));
expect(expression_5.staticType, typeProvider.intType);
}
{
- ExpressionStatement statement = statements[2];
- StringInterpolation interpolation = statement.expression;
+ var statement = statements[2] as ExpressionStatement;
+ var interpolation = statement.expression as StringInterpolation;
- InterpolationExpression element_1 = interpolation.elements[1];
- BinaryExpression expression = element_1.expression;
+ var element_1 = interpolation.elements[1] as InterpolationExpression;
+ var expression = element_1.expression as BinaryExpression;
expect(expression.staticType, typeProvider.intType);
- SimpleIdentifier left = expression.leftOperand;
+ var left = expression.leftOperand as SimpleIdentifier;
expect(left.staticElement, same(vElement));
expect(left.staticType, typeProvider.intType);
}
@@ -6668,22 +6688,24 @@
addTestFile(content);
await resolveTestFile();
- ClassDeclaration aNode = result.unit.declarations[0];
- ClassDeclaration bNode = result.unit.declarations[1];
+ var aNode = result.unit!.declarations[0] as ClassDeclaration;
+ var bNode = result.unit!.declarations[1] as ClassDeclaration;
- MethodElement methodElement = aNode.members[0].declaredElement;
- PropertyAccessorElement getterElement = aNode.members[1].declaredElement;
- PropertyAccessorElement setterElement = aNode.members[2].declaredElement;
- MethodElement operatorElement = aNode.members[3].declaredElement;
+ var methodElement = aNode.members[0].declaredElement as MethodElement;
+ var getterElement =
+ aNode.members[1].declaredElement as PropertyAccessorElement;
+ var setterElement =
+ aNode.members[2].declaredElement as PropertyAccessorElement;
+ var operatorElement = aNode.members[3].declaredElement as MethodElement;
- MethodDeclaration testNode = bNode.members[0];
- BlockFunctionBody testBody = testNode.body;
+ var testNode = bNode.members[0] as MethodDeclaration;
+ var testBody = testNode.body as BlockFunctionBody;
List<Statement> testStatements = testBody.block.statements;
// method(1);
{
- ExpressionStatement statement = testStatements[0];
- MethodInvocation invocation = statement.expression;
+ var statement = testStatements[0] as ExpressionStatement;
+ var invocation = statement.expression as MethodInvocation;
expect(invocation.target, isNull);
@@ -6692,20 +6714,20 @@
// super.method(2);
{
- ExpressionStatement statement = testStatements[1];
- MethodInvocation invocation = statement.expression;
+ var statement = testStatements[1] as ExpressionStatement;
+ var invocation = statement.expression as MethodInvocation;
- SuperExpression target = invocation.target;
+ var target = invocation.target as SuperExpression;
expect(
- target.staticType, interfaceTypeStar(bNode.declaredElement)); // raw
+ target.staticType, interfaceTypeStar(bNode.declaredElement!)); // raw
expect(invocation.methodName.staticElement, same(methodElement));
}
// getter;
{
- ExpressionStatement statement = testStatements[2];
- SimpleIdentifier identifier = statement.expression;
+ var statement = testStatements[2] as ExpressionStatement;
+ var identifier = statement.expression as SimpleIdentifier;
expect(identifier.staticElement, same(getterElement));
expect(identifier.staticType, typeProvider.intType);
@@ -6713,13 +6735,13 @@
// super.getter;
{
- ExpressionStatement statement = testStatements[3];
- PropertyAccess propertyAccess = statement.expression;
+ var statement = testStatements[3] as ExpressionStatement;
+ var propertyAccess = statement.expression as PropertyAccess;
expect(propertyAccess.staticType, typeProvider.intType);
- SuperExpression target = propertyAccess.target;
+ var target = propertyAccess.target as SuperExpression;
expect(
- target.staticType, interfaceTypeStar(bNode.declaredElement)); // raw
+ target.staticType, interfaceTypeStar(bNode.declaredElement!)); // raw
expect(propertyAccess.propertyName.staticElement, same(getterElement));
expect(propertyAccess.propertyName.staticType, typeProvider.intType);
@@ -6727,10 +6749,10 @@
// setter = 3;
{
- ExpressionStatement statement = testStatements[4];
- AssignmentExpression assignment = statement.expression;
+ var statement = testStatements[4] as ExpressionStatement;
+ var assignment = statement.expression as AssignmentExpression;
- SimpleIdentifier identifier = assignment.leftHandSide;
+ var identifier = assignment.leftHandSide as SimpleIdentifier;
if (hasAssignmentLeftResolution) {
expect(identifier.staticElement, same(setterElement));
expect(identifier.staticType, typeProvider.intType);
@@ -6742,14 +6764,14 @@
// this.setter = 4;
{
- ExpressionStatement statement = testStatements[5];
- AssignmentExpression assignment = statement.expression;
+ var statement = testStatements[5] as ExpressionStatement;
+ var assignment = statement.expression as AssignmentExpression;
- PropertyAccess propertyAccess = assignment.leftHandSide;
+ var propertyAccess = assignment.leftHandSide as PropertyAccess;
- SuperExpression target = propertyAccess.target;
+ var target = propertyAccess.target as SuperExpression;
expect(
- target.staticType, interfaceTypeStar(bNode.declaredElement)); // raw
+ target.staticType, interfaceTypeStar(bNode.declaredElement!)); // raw
if (hasAssignmentLeftResolution) {
expect(propertyAccess.propertyName.staticElement, same(setterElement));
@@ -6762,12 +6784,12 @@
// super + 5;
{
- ExpressionStatement statement = testStatements[6];
- BinaryExpression binary = statement.expression;
+ var statement = testStatements[6] as ExpressionStatement;
+ var binary = statement.expression as BinaryExpression;
- ThisExpression target = binary.leftOperand;
+ var target = binary.leftOperand as ThisExpression;
expect(
- target.staticType, interfaceTypeStar(bNode.declaredElement)); // raw
+ target.staticType, interfaceTypeStar(bNode.declaredElement!)); // raw
expect(binary.staticElement, same(operatorElement));
expect(binary.staticType, typeProvider.intType);
@@ -6795,15 +6817,17 @@
addTestFile(content);
await resolveTestFile();
- ClassDeclaration aNode = result.unit.declarations[0];
+ var aNode = result.unit!.declarations[0] as ClassDeclaration;
- MethodElement methodElement = aNode.members[0].declaredElement;
- PropertyAccessorElement getterElement = aNode.members[1].declaredElement;
- PropertyAccessorElement setterElement = aNode.members[2].declaredElement;
- MethodElement operatorElement = aNode.members[3].declaredElement;
+ var methodElement = aNode.members[0].declaredElement as MethodElement;
+ var getterElement =
+ aNode.members[1].declaredElement as PropertyAccessorElement;
+ var setterElement =
+ aNode.members[2].declaredElement as PropertyAccessorElement;
+ var operatorElement = aNode.members[3].declaredElement as MethodElement;
- MethodDeclaration testNode = aNode.members[4];
- BlockFunctionBody testBody = testNode.body;
+ var testNode = aNode.members[4] as MethodDeclaration;
+ var testBody = testNode.body as BlockFunctionBody;
List<Statement> testStatements = testBody.block.statements;
var elementA = findElement.class_('A');
@@ -6811,8 +6835,8 @@
// method(1);
{
- ExpressionStatement statement = testStatements[0];
- MethodInvocation invocation = statement.expression;
+ var statement = testStatements[0] as ExpressionStatement;
+ var invocation = statement.expression as MethodInvocation;
expect(invocation.target, isNull);
@@ -6821,10 +6845,10 @@
// this.method(2);
{
- ExpressionStatement statement = testStatements[1];
- MethodInvocation invocation = statement.expression;
+ var statement = testStatements[1] as ExpressionStatement;
+ var invocation = statement.expression as MethodInvocation;
- ThisExpression target = invocation.target;
+ var target = invocation.target as ThisExpression;
expect(target.staticType, thisTypeA); // raw
expect(invocation.methodName.staticElement, same(methodElement));
@@ -6832,8 +6856,8 @@
// getter;
{
- ExpressionStatement statement = testStatements[2];
- SimpleIdentifier identifier = statement.expression;
+ var statement = testStatements[2] as ExpressionStatement;
+ var identifier = statement.expression as SimpleIdentifier;
expect(identifier.staticElement, same(getterElement));
expect(identifier.staticType, typeProvider.intType);
@@ -6841,11 +6865,11 @@
// this.getter;
{
- ExpressionStatement statement = testStatements[3];
- PropertyAccess propertyAccess = statement.expression;
+ var statement = testStatements[3] as ExpressionStatement;
+ var propertyAccess = statement.expression as PropertyAccess;
expect(propertyAccess.staticType, typeProvider.intType);
- ThisExpression target = propertyAccess.target;
+ var target = propertyAccess.target as ThisExpression;
expect(target.staticType, thisTypeA); // raw
expect(propertyAccess.propertyName.staticElement, same(getterElement));
@@ -6854,10 +6878,10 @@
// setter = 3;
{
- ExpressionStatement statement = testStatements[4];
- AssignmentExpression assignment = statement.expression;
+ var statement = testStatements[4] as ExpressionStatement;
+ var assignment = statement.expression as AssignmentExpression;
- SimpleIdentifier identifier = assignment.leftHandSide;
+ var identifier = assignment.leftHandSide as SimpleIdentifier;
if (hasAssignmentLeftResolution) {
expect(identifier.staticElement, same(setterElement));
expect(identifier.staticType, typeProvider.intType);
@@ -6869,12 +6893,12 @@
// this.setter = 4;
{
- ExpressionStatement statement = testStatements[5];
- AssignmentExpression assignment = statement.expression;
+ var statement = testStatements[5] as ExpressionStatement;
+ var assignment = statement.expression as AssignmentExpression;
- PropertyAccess propertyAccess = assignment.leftHandSide;
+ var propertyAccess = assignment.leftHandSide as PropertyAccess;
- ThisExpression target = propertyAccess.target;
+ var target = propertyAccess.target as ThisExpression;
expect(target.staticType, thisTypeA); // raw
if (hasAssignmentLeftResolution) {
@@ -6888,10 +6912,10 @@
// this + 5;
{
- ExpressionStatement statement = testStatements[6];
- BinaryExpression binary = statement.expression;
+ var statement = testStatements[6] as ExpressionStatement;
+ var binary = statement.expression as BinaryExpression;
- ThisExpression target = binary.leftOperand;
+ var target = binary.leftOperand as ThisExpression;
expect(target.staticType, thisTypeA); // raw
expect(binary.staticElement, same(operatorElement));
@@ -6909,19 +6933,20 @@
addTestFile(content);
await resolveTestFile();
- ClassDeclaration cNode = result.unit.declarations[0];
- ClassElement cElement = cNode.declaredElement;
+ var cNode = result.unit!.declarations[0] as ClassDeclaration;
+ ClassElement cElement = cNode.declaredElement!;
- ConstructorDeclaration constructorNode = cNode.members[1];
+ var constructorNode = cNode.members[1] as ConstructorDeclaration;
- DefaultFormalParameter aNode = constructorNode.parameters.parameters[0];
- _assertDefaultParameter(aNode, cElement.unnamedConstructor.parameters[0],
+ var aNode =
+ constructorNode.parameters.parameters[0] as DefaultFormalParameter;
+ _assertDefaultParameter(aNode, cElement.unnamedConstructor!.parameters[0],
name: 'a',
offset: 31,
kind: ParameterKind.POSITIONAL,
type: typeProvider.intType);
- BinaryExpression binary = aNode.defaultValue;
+ var binary = aNode.defaultValue as BinaryExpression;
expect(binary.staticElement, isNotNull);
expect(binary.staticType, typeProvider.intType);
expect(binary.leftOperand.staticType, typeProvider.intType);
@@ -6953,17 +6978,17 @@
addTestFile(content);
await resolveTestFile();
- ClassDeclaration aNode = result.unit.declarations[0];
- ClassElement aElement = aNode.declaredElement;
+ var aNode = result.unit!.declarations[0] as ClassDeclaration;
+ ClassElement aElement = aNode.declaredElement!;
- ClassDeclaration bNode = result.unit.declarations[1];
- ClassElement bElement = bNode.declaredElement;
+ var bNode = result.unit!.declarations[1] as ClassDeclaration;
+ ClassElement bElement = bNode.declaredElement!;
- ClassDeclaration cNode = result.unit.declarations[2];
- ClassElement cElement = cNode.declaredElement;
+ var cNode = result.unit!.declarations[2] as ClassDeclaration;
+ ClassElement cElement = cNode.declaredElement!;
- ClassDeclaration dNode = result.unit.declarations[3];
- Element dElement = dNode.declaredElement;
+ var dNode = result.unit!.declarations[3] as ClassDeclaration;
+ Element dElement = dNode.declaredElement!;
SimpleIdentifier dName = dNode.name;
expect(dName.staticElement, same(dElement));
@@ -6975,10 +7000,10 @@
nullabilitySuffix: NullabilitySuffix.star,
);
- TypeName superClass = dNode.extendsClause.superclass;
+ TypeName superClass = dNode.extendsClause!.superclass;
expect(superClass.type, expectedType);
- SimpleIdentifier identifier = superClass.name;
+ var identifier = superClass.name as SimpleIdentifier;
expect(identifier.staticElement, aElement);
expect(identifier.staticType, isNull);
}
@@ -6989,10 +7014,10 @@
nullabilitySuffix: NullabilitySuffix.star,
);
- TypeName mixinType = dNode.withClause.mixinTypes[0];
+ TypeName mixinType = dNode.withClause!.mixinTypes[0];
expect(mixinType.type, expectedType);
- SimpleIdentifier identifier = mixinType.name;
+ var identifier = mixinType.name as SimpleIdentifier;
expect(identifier.staticElement, bElement);
expect(identifier.staticType, isNull);
}
@@ -7003,10 +7028,10 @@
nullabilitySuffix: NullabilitySuffix.star,
);
- TypeName implementedType = dNode.implementsClause.interfaces[0];
+ TypeName implementedType = dNode.implementsClause!.interfaces[0];
expect(implementedType.type, expectedType);
- SimpleIdentifier identifier = implementedType.name;
+ var identifier = implementedType.name as SimpleIdentifier;
expect(identifier.staticElement, cElement);
expect(identifier.staticType, isNull);
}
@@ -7022,17 +7047,17 @@
addTestFile(content);
await resolveTestFile();
- ClassDeclaration aNode = result.unit.declarations[0];
- ClassElement aElement = aNode.declaredElement;
+ var aNode = result.unit!.declarations[0] as ClassDeclaration;
+ ClassElement aElement = aNode.declaredElement!;
- ClassDeclaration bNode = result.unit.declarations[1];
- ClassElement bElement = bNode.declaredElement;
+ var bNode = result.unit!.declarations[1] as ClassDeclaration;
+ ClassElement bElement = bNode.declaredElement!;
- ClassDeclaration cNode = result.unit.declarations[2];
- ClassElement cElement = cNode.declaredElement;
+ var cNode = result.unit!.declarations[2] as ClassDeclaration;
+ ClassElement cElement = cNode.declaredElement!;
- ClassTypeAlias dNode = result.unit.declarations[3];
- Element dElement = dNode.declaredElement;
+ var dNode = result.unit!.declarations[3] as ClassTypeAlias;
+ Element dElement = dNode.declaredElement!;
SimpleIdentifier dName = dNode.name;
expect(dName.staticElement, same(dElement));
@@ -7047,7 +7072,7 @@
TypeName superClass = dNode.superclass;
expect(superClass.type, expectedType);
- SimpleIdentifier identifier = superClass.name;
+ var identifier = superClass.name as SimpleIdentifier;
expect(identifier.staticElement, same(aElement));
expect(identifier.staticType, isNull);
}
@@ -7061,7 +7086,7 @@
TypeName mixinType = dNode.withClause.mixinTypes[0];
expect(mixinType.type, expectedType);
- SimpleIdentifier identifier = mixinType.name;
+ var identifier = mixinType.name as SimpleIdentifier;
expect(identifier.staticElement, same(bElement));
expect(identifier.staticType, isNull);
}
@@ -7072,10 +7097,10 @@
nullabilitySuffix: NullabilitySuffix.star,
);
- TypeName interfaceType = dNode.implementsClause.interfaces[0];
+ TypeName interfaceType = dNode.implementsClause!.interfaces[0];
expect(interfaceType.type, expectedType);
- SimpleIdentifier identifier = interfaceType.name;
+ var identifier = interfaceType.name as SimpleIdentifier;
expect(identifier.staticElement, same(cElement));
expect(identifier.staticType, isNull);
}
@@ -7090,8 +7115,8 @@
addTestFile(content);
await resolveTestFile();
- EnumDeclaration enumNode = result.unit.declarations[0];
- ClassElement enumElement = enumNode.declaredElement;
+ var enumNode = result.unit!.declarations[0] as EnumDeclaration;
+ ClassElement enumElement = enumNode.declaredElement!;
SimpleIdentifier dName = enumNode.name;
expect(dName.staticElement, same(enumElement));
@@ -7131,8 +7156,8 @@
ClassElement doubleElement = doubleType.element;
ClassElement intElement = intType.element;
- ClassDeclaration cNode = result.unit.declarations[0];
- ClassElement cElement = cNode.declaredElement;
+ var cNode = result.unit!.declarations[0] as ClassDeclaration;
+ ClassElement cElement = cNode.declaredElement!;
// The class name identifier.
expect(cNode.name.staticElement, same(cElement));
@@ -7140,9 +7165,9 @@
// unnamed constructor
{
- ConstructorDeclaration node = cNode.members[0];
+ var node = cNode.members[0] as ConstructorDeclaration;
expect(node.declaredElement, isNotNull);
- assertType(node.declaredElement.type, 'C Function(int)');
+ assertType(node.declaredElement!.type, 'C Function(int)');
expect(node.returnType.staticElement, same(cElement));
expect(node.returnType.staticType, isNull);
expect(node.name, isNull);
@@ -7150,24 +7175,24 @@
// named constructor
{
- ConstructorDeclaration node = cNode.members[1];
+ var node = cNode.members[1] as ConstructorDeclaration;
expect(node.declaredElement, isNotNull);
- assertType(node.declaredElement.type, 'C Function(int)');
+ assertType(node.declaredElement!.type, 'C Function(int)');
expect(node.returnType.staticElement, same(cElement));
expect(node.returnType.staticType, isNull);
- expect(node.name.staticElement, same(node.declaredElement));
- expect(node.name.staticType, isNull);
+ expect(node.name!.staticElement, same(node.declaredElement));
+ expect(node.name!.staticType, isNull);
}
// publicMethod()
{
- MethodDeclaration node = cNode.members[2];
+ var node = cNode.members[2] as MethodDeclaration;
expect(node.declaredElement, isNotNull);
- assertType(node.declaredElement.type, 'int Function(double)');
+ assertType(node.declaredElement!.type, 'int Function(double)');
// method return type
- TypeName returnType = node.returnType;
- SimpleIdentifier returnTypeName = returnType.name;
+ var returnType = node.returnType as TypeName;
+ var returnTypeName = returnType.name as SimpleIdentifier;
expect(returnType.type, intType);
expect(returnTypeName.staticElement, intElement);
expect(returnTypeName.staticType, isNull);
@@ -7178,28 +7203,28 @@
// method parameter
{
- SimpleFormalParameter pNode = node.parameters.parameters[0];
+ var pNode = node.parameters!.parameters[0] as SimpleFormalParameter;
expect(pNode.declaredElement, isNotNull);
- expect(pNode.declaredElement.type, doubleType);
+ expect(pNode.declaredElement!.type, doubleType);
- TypeName pType = pNode.type;
+ var pType = pNode.type as TypeName;
expect(pType.name.staticElement, doubleElement);
expect(pType.name.staticType, isNull);
- expect(pNode.identifier.staticElement, pNode.declaredElement);
- expect(pNode.identifier.staticType, isNull);
+ expect(pNode.identifier!.staticElement, pNode.declaredElement);
+ expect(pNode.identifier!.staticType, isNull);
}
}
// publicGetter()
{
- MethodDeclaration node = cNode.members[3];
+ var node = cNode.members[3] as MethodDeclaration;
expect(node.declaredElement, isNotNull);
- assertType(node.declaredElement.type, 'int Function()');
+ assertType(node.declaredElement!.type, 'int Function()');
// getter return type
- TypeName returnType = node.returnType;
- SimpleIdentifier returnTypeName = returnType.name;
+ var returnType = node.returnType as TypeName;
+ var returnTypeName = returnType.name as SimpleIdentifier;
expect(returnType.type, intType);
expect(returnTypeName.staticElement, intElement);
expect(returnTypeName.staticType, isNull);
@@ -7211,13 +7236,13 @@
// publicSetter()
{
- MethodDeclaration node = cNode.members[4];
+ var node = cNode.members[4] as MethodDeclaration;
expect(node.declaredElement, isNotNull);
- assertType(node.declaredElement.type, 'void Function(double)');
+ assertType(node.declaredElement!.type, 'void Function(double)');
// setter return type
- TypeName returnType = node.returnType;
- SimpleIdentifier returnTypeName = returnType.name;
+ var returnType = node.returnType as TypeName;
+ var returnTypeName = returnType.name as SimpleIdentifier;
expect(returnType.type, VoidTypeImpl.instance);
expect(returnTypeName.staticElement, isNull);
expect(returnTypeName.staticType, isNull);
@@ -7228,16 +7253,16 @@
// setter parameter
{
- SimpleFormalParameter pNode = node.parameters.parameters[0];
+ var pNode = node.parameters!.parameters[0] as SimpleFormalParameter;
expect(pNode.declaredElement, isNotNull);
- expect(pNode.declaredElement.type, doubleType);
+ expect(pNode.declaredElement!.type, doubleType);
- TypeName pType = pNode.type;
+ var pType = pNode.type as TypeName;
expect(pType.name.staticElement, doubleElement);
expect(pType.name.staticType, isNull);
- expect(pNode.identifier.staticElement, pNode.declaredElement);
- expect(pNode.identifier.staticType, isNull);
+ expect(pNode.identifier!.staticElement, pNode.declaredElement);
+ expect(pNode.identifier!.staticType, isNull);
}
}
}
@@ -7256,13 +7281,13 @@
// topFunction()
{
- FunctionDeclaration node = result.unit.declarations[0];
+ var node = result.unit!.declarations[0] as FunctionDeclaration;
expect(node.declaredElement, isNotNull);
- assertType(node.declaredElement.type, 'int Function(double)');
+ assertType(node.declaredElement!.type, 'int Function(double)');
// function return type
- TypeName returnType = node.returnType;
- SimpleIdentifier returnTypeName = returnType.name;
+ var returnType = node.returnType as TypeName;
+ var returnTypeName = returnType.name as SimpleIdentifier;
expect(returnType.type, intType);
expect(returnTypeName.staticElement, intElement);
expect(returnTypeName.staticType, isNull);
@@ -7273,29 +7298,29 @@
// function parameter
{
- SimpleFormalParameter pNode =
- node.functionExpression.parameters.parameters[0];
+ var pNode = node.functionExpression.parameters!.parameters[0]
+ as SimpleFormalParameter;
expect(pNode.declaredElement, isNotNull);
- expect(pNode.declaredElement.type, doubleType);
+ expect(pNode.declaredElement!.type, doubleType);
- TypeName pType = pNode.type;
+ var pType = pNode.type as TypeName;
expect(pType.name.staticElement, doubleElement);
expect(pType.name.staticType, isNull);
- expect(pNode.identifier.staticElement, pNode.declaredElement);
- expect(pNode.identifier.staticType, isNull);
+ expect(pNode.identifier!.staticElement, pNode.declaredElement);
+ expect(pNode.identifier!.staticType, isNull);
}
}
// topGetter()
{
- FunctionDeclaration node = result.unit.declarations[1];
+ var node = result.unit!.declarations[1] as FunctionDeclaration;
expect(node.declaredElement, isNotNull);
- assertType(node.declaredElement.type, 'int Function()');
+ assertType(node.declaredElement!.type, 'int Function()');
// getter return type
- TypeName returnType = node.returnType;
- SimpleIdentifier returnTypeName = returnType.name;
+ var returnType = node.returnType as TypeName;
+ var returnTypeName = returnType.name as SimpleIdentifier;
expect(returnType.type, intType);
expect(returnTypeName.staticElement, intElement);
expect(returnTypeName.staticType, isNull);
@@ -7307,13 +7332,13 @@
// topSetter()
{
- FunctionDeclaration node = result.unit.declarations[2];
+ var node = result.unit!.declarations[2] as FunctionDeclaration;
expect(node.declaredElement, isNotNull);
- assertType(node.declaredElement.type, 'void Function(double)');
+ assertType(node.declaredElement!.type, 'void Function(double)');
// setter return type
- TypeName returnType = node.returnType;
- SimpleIdentifier returnTypeName = returnType.name;
+ var returnType = node.returnType as TypeName;
+ var returnTypeName = returnType.name as SimpleIdentifier;
expect(returnType.type, VoidTypeImpl.instance);
expect(returnTypeName.staticElement, isNull);
expect(returnTypeName.staticType, isNull);
@@ -7324,17 +7349,17 @@
// setter parameter
{
- SimpleFormalParameter pNode =
- node.functionExpression.parameters.parameters[0];
+ var pNode = node.functionExpression.parameters!.parameters[0]
+ as SimpleFormalParameter;
expect(pNode.declaredElement, isNotNull);
- expect(pNode.declaredElement.type, doubleType);
+ expect(pNode.declaredElement!.type, doubleType);
- TypeName pType = pNode.type;
+ var pType = pNode.type as TypeName;
expect(pType.name.staticElement, doubleElement);
expect(pType.name.staticType, isNull);
- expect(pNode.identifier.staticElement, pNode.declaredElement);
- expect(pNode.identifier.staticType, isNull);
+ expect(pNode.identifier!.staticElement, pNode.declaredElement);
+ expect(pNode.identifier!.staticType, isNull);
}
}
}
@@ -7349,33 +7374,33 @@
addTestFile(content);
await resolveTestFile();
- CompilationUnit unit = result.unit;
- CompilationUnitElement unitElement = unit.declaredElement;
+ CompilationUnit unit = result.unit!;
+ CompilationUnitElement unitElement = unit.declaredElement!;
- ClassDeclaration cNode = unit.declarations[0];
- ClassElement cElement = cNode.declaredElement;
+ var cNode = unit.declarations[0] as ClassDeclaration;
+ ClassElement cElement = cNode.declaredElement!;
TypeParameterElement tElement = cElement.typeParameters[0];
expect(cElement, same(unitElement.types[0]));
{
- FieldElement aElement = cElement.getField('a');
- FieldDeclaration aDeclaration = cNode.members[0];
+ FieldElement aElement = cElement.getField('a')!;
+ var aDeclaration = cNode.members[0] as FieldDeclaration;
VariableDeclaration aNode = aDeclaration.fields.variables[0];
expect(aNode.declaredElement, same(aElement));
expect(aElement.type, typeProvider.intType);
expect(aNode.name.staticElement, same(aElement));
expect(aNode.name.staticType, isNull);
- Expression aValue = aNode.initializer;
+ var aValue = aNode.initializer as Expression;
expect(aValue.staticType, typeProvider.intType);
}
{
- FieldElement bElement = cElement.getField('b');
- FieldDeclaration bDeclaration = cNode.members[1];
+ FieldElement bElement = cElement.getField('b')!;
+ var bDeclaration = cNode.members[1] as FieldDeclaration;
- TypeName typeName = bDeclaration.fields.type;
- SimpleIdentifier typeIdentifier = typeName.name;
+ var typeName = bDeclaration.fields.type as TypeName;
+ var typeIdentifier = typeName.name as SimpleIdentifier;
expect(typeIdentifier.staticElement, same(tElement));
expect(typeIdentifier.staticType, isNull);
@@ -7396,15 +7421,15 @@
addTestFile(content);
await resolveTestFile();
- CompilationUnit unit = result.unit;
+ CompilationUnit unit = result.unit!;
- ClassDeclaration cNode = unit.declarations[0];
- ClassElement cElement = cNode.declaredElement;
+ var cNode = unit.declarations[0] as ClassDeclaration;
+ ClassElement cElement = cNode.declaredElement!;
- FieldDeclaration fieldDeclaration = cNode.members[0];
+ var fieldDeclaration = cNode.members[0] as FieldDeclaration;
{
- FieldElement aElement = cElement.getField('a');
+ FieldElement aElement = cElement.getField('a')!;
VariableDeclaration aNode = fieldDeclaration.fields.variables[0];
expect(aNode.declaredElement, same(aElement));
@@ -7413,12 +7438,12 @@
expect(aNode.name.staticElement, same(aElement));
expect(aNode.name.staticType, isNull);
- Expression aValue = aNode.initializer;
+ Expression aValue = aNode.initializer!;
expect(aValue.staticType, typeProvider.intType);
}
{
- FieldElement bElement = cElement.getField('b');
+ FieldElement bElement = cElement.getField('b')!;
VariableDeclaration bNode = fieldDeclaration.fields.variables[1];
expect(bNode.declaredElement, same(bElement));
@@ -7427,7 +7452,7 @@
expect(bNode.name.staticElement, same(bElement));
expect(bNode.name.staticType, isNull);
- Expression aValue = bNode.initializer;
+ Expression aValue = bNode.initializer!;
expect(aValue.staticType, typeProvider.doubleType);
}
}
@@ -7440,37 +7465,37 @@
addTestFile(content);
await resolveTestFile();
- CompilationUnit unit = result.unit;
- CompilationUnitElement unitElement = unit.declaredElement;
+ CompilationUnit unit = result.unit!;
+ CompilationUnitElement unitElement = unit.declaredElement!;
{
- TopLevelVariableDeclaration aDeclaration = unit.declarations[0];
+ var aDeclaration = unit.declarations[0] as TopLevelVariableDeclaration;
VariableDeclaration aNode = aDeclaration.variables.variables[0];
- TopLevelVariableElement aElement = aNode.declaredElement;
+ var aElement = aNode.declaredElement as TopLevelVariableElement;
expect(aElement, same(unitElement.topLevelVariables[0]));
expect(aElement.type, typeProvider.intType);
expect(aNode.name.staticElement, same(aElement));
expect(aNode.name.staticType, isNull);
- Expression aValue = aNode.initializer;
+ Expression aValue = aNode.initializer!;
expect(aValue.staticType, typeProvider.intType);
}
{
- TopLevelVariableDeclaration bDeclaration = unit.declarations[1];
+ var bDeclaration = unit.declarations[1] as TopLevelVariableDeclaration;
VariableDeclaration bNode = bDeclaration.variables.variables[0];
- TopLevelVariableElement bElement = bNode.declaredElement;
+ var bElement = bNode.declaredElement as TopLevelVariableElement;
expect(bElement, same(unitElement.topLevelVariables[1]));
expect(bElement.type, typeProvider.doubleType);
- TypeName typeName = bDeclaration.variables.type;
+ var typeName = bDeclaration.variables.type as TypeName;
_assertTypeNameSimple(typeName, typeProvider.doubleType);
expect(bNode.name.staticElement, same(bElement));
expect(bNode.name.staticType, isNull);
- Expression aValue = bNode.initializer;
+ Expression aValue = bNode.initializer!;
expect(aValue.staticType, typeProvider.doubleType);
}
}
@@ -7482,35 +7507,36 @@
addTestFile(content);
await resolveTestFile();
- CompilationUnit unit = result.unit;
- CompilationUnitElement unitElement = unit.declaredElement;
+ CompilationUnit unit = result.unit!;
+ CompilationUnitElement unitElement = unit.declaredElement!;
- TopLevelVariableDeclaration variableDeclaration = unit.declarations[0];
+ var variableDeclaration =
+ unit.declarations[0] as TopLevelVariableDeclaration;
expect(variableDeclaration.variables.type, isNull);
{
VariableDeclaration aNode = variableDeclaration.variables.variables[0];
- TopLevelVariableElement aElement = aNode.declaredElement;
+ var aElement = aNode.declaredElement as TopLevelVariableElement;
expect(aElement, same(unitElement.topLevelVariables[0]));
expect(aElement.type, typeProvider.intType);
expect(aNode.name.staticElement, same(aElement));
expect(aNode.name.staticType, isNull);
- Expression aValue = aNode.initializer;
+ Expression aValue = aNode.initializer!;
expect(aValue.staticType, typeProvider.intType);
}
{
VariableDeclaration bNode = variableDeclaration.variables.variables[1];
- TopLevelVariableElement bElement = bNode.declaredElement;
+ var bElement = bNode.declaredElement as TopLevelVariableElement;
expect(bElement, same(unitElement.topLevelVariables[1]));
expect(bElement.type, typeProvider.doubleType);
expect(bNode.name.staticElement, same(bElement));
expect(bNode.name.staticType, isNull);
- Expression aValue = bNode.initializer;
+ Expression aValue = bNode.initializer!;
expect(aValue.staticType, typeProvider.doubleType);
}
}
@@ -7525,8 +7551,8 @@
String fTypeString = 'double Function(int, {String b, bool c})';
await resolveTestFile();
- FunctionDeclaration fDeclaration = result.unit.declarations[0];
- FunctionElement fElement = fDeclaration.declaredElement;
+ var fDeclaration = result.unit!.declarations[0] as FunctionDeclaration;
+ var fElement = fDeclaration.declaredElement as FunctionElement;
InterfaceType doubleType = typeProvider.doubleType;
@@ -7536,7 +7562,7 @@
expect(fDeclaration.name.staticElement, same(fElement));
expect(fDeclaration.name.staticType, isNull);
- TypeName fReturnTypeNode = fDeclaration.returnType;
+ var fReturnTypeNode = fDeclaration.returnType as TypeName;
expect(fReturnTypeNode.name.staticElement, same(doubleType.element));
expect(fReturnTypeNode.type, doubleType);
//
@@ -7546,16 +7572,16 @@
expect(elements, hasLength(3));
List<FormalParameter> nodes =
- fDeclaration.functionExpression.parameters.parameters;
+ fDeclaration.functionExpression.parameters!.parameters;
expect(nodes, hasLength(3));
- _assertSimpleParameter(nodes[0], elements[0],
+ _assertSimpleParameter(nodes[0] as SimpleFormalParameter, elements[0],
name: 'a',
offset: 13,
kind: ParameterKind.REQUIRED,
type: typeProvider.intType);
- DefaultFormalParameter bNode = nodes[1];
+ var bNode = nodes[1] as DefaultFormalParameter;
_assertDefaultParameter(bNode, elements[1],
name: 'b',
offset: 24,
@@ -7563,14 +7589,14 @@
type: typeProvider.stringType);
expect(bNode.defaultValue, isNull);
- DefaultFormalParameter cNode = nodes[2];
+ var cNode = nodes[2] as DefaultFormalParameter;
_assertDefaultParameter(cNode, elements[2],
name: 'c',
offset: 32,
kind: ParameterKind.NAMED,
type: typeProvider.boolType);
{
- BinaryExpression defaultValue = cNode.defaultValue;
+ var defaultValue = cNode.defaultValue as BinaryExpression;
expect(defaultValue.staticElement, isNotNull);
expect(defaultValue.staticType, typeProvider.boolType);
}
@@ -7578,10 +7604,10 @@
//
// Validate the arguments at the call site.
//
- FunctionDeclaration mainDeclaration = result.unit.declarations[1];
- BlockFunctionBody body = mainDeclaration.functionExpression.body;
- ExpressionStatement statement = body.block.statements[0];
- MethodInvocation invocation = statement.expression;
+ var mainDeclaration = result.unit!.declarations[1] as FunctionDeclaration;
+ var body = mainDeclaration.functionExpression.body as BlockFunctionBody;
+ var statement = body.block.statements[0] as ExpressionStatement;
+ var invocation = statement.expression as MethodInvocation;
List<Expression> arguments = invocation.argumentList.arguments;
_assertArgumentToParameter(arguments[0], fElement.parameters[0]);
@@ -7596,25 +7622,27 @@
addTestFile(content);
await resolveTestFile();
- CompilationUnit unit = result.unit;
+ CompilationUnit unit = result.unit!;
- FunctionTypeAlias alias = unit.declarations[0];
- TypeAliasElement aliasElement = alias.declaredElement;
+ var alias = unit.declarations[0] as FunctionTypeAlias;
+ TypeAliasElement aliasElement = alias.declaredElement!;
var function = aliasElement.aliasedElement as GenericFunctionTypeElement;
expect(aliasElement, same(findElement.typeAlias('F')));
expect(function.returnType, typeProvider.intType);
- _assertTypeNameSimple(alias.returnType, typeProvider.intType);
+ _assertTypeNameSimple(alias.returnType as TypeName, typeProvider.intType);
_assertSimpleParameter(
- alias.parameters.parameters[0], function.parameters[0],
+ alias.parameters.parameters[0] as SimpleFormalParameter,
+ function.parameters[0],
name: 'a',
offset: 22,
kind: ParameterKind.REQUIRED,
type: typeProvider.boolType);
_assertSimpleParameter(
- alias.parameters.parameters[1], function.parameters[1],
+ alias.parameters.parameters[1] as SimpleFormalParameter,
+ function.parameters[1],
name: 'b',
offset: 27,
kind: ParameterKind.REQUIRED,
@@ -7628,25 +7656,25 @@
''';
addTestFile(content);
await resolveTestFile();
- CompilationUnit unit = result.unit;
- CompilationUnitElement unitElement = unit.declaredElement;
+ CompilationUnit unit = result.unit!;
+ CompilationUnitElement unitElement = unit.declaredElement!;
- ClassDeclaration aNode = unit.declarations[0];
- ClassElement aElement = aNode.declaredElement;
+ var aNode = unit.declarations[0] as ClassDeclaration;
+ ClassElement aElement = aNode.declaredElement!;
expect(aElement, same(unitElement.types[0]));
- ClassDeclaration cNode = unit.declarations[1];
- ClassElement cElement = cNode.declaredElement;
+ var cNode = unit.declarations[1] as ClassDeclaration;
+ ClassElement cElement = cNode.declaredElement!;
expect(cElement, same(unitElement.types[1]));
{
- TypeParameter tNode = cNode.typeParameters.typeParameters[0];
+ TypeParameter tNode = cNode.typeParameters!.typeParameters[0];
expect(tNode.declaredElement, same(cElement.typeParameters[0]));
- TypeName bound = tNode.bound;
+ var bound = tNode.bound as TypeName;
expect(bound.type, interfaceTypeStar(aElement));
- SimpleIdentifier boundIdentifier = bound.name;
+ var boundIdentifier = bound.name as SimpleIdentifier;
expect(boundIdentifier.staticElement, same(aElement));
expect(boundIdentifier.staticType, isNull);
}
@@ -7658,26 +7686,26 @@
nullabilitySuffix: NullabilitySuffix.star,
);
- TypeParameter uNode = cNode.typeParameters.typeParameters[1];
+ TypeParameter uNode = cNode.typeParameters!.typeParameters[1];
expect(uNode.declaredElement, same(cElement.typeParameters[1]));
- TypeName bound = uNode.bound;
+ var bound = uNode.bound as TypeName;
expect(bound.type, listOfA);
- SimpleIdentifier listIdentifier = bound.name;
+ var listIdentifier = bound.name as SimpleIdentifier;
expect(listIdentifier.staticElement, same(listElement));
expect(listIdentifier.staticType, isNull);
- TypeName aTypeName = bound.typeArguments.arguments[0];
+ var aTypeName = bound.typeArguments!.arguments[0] as TypeName;
expect(aTypeName.type, interfaceTypeStar(aElement));
- SimpleIdentifier aIdentifier = aTypeName.name;
+ var aIdentifier = aTypeName.name as SimpleIdentifier;
expect(aIdentifier.staticElement, same(aElement));
expect(aIdentifier.staticType, isNull);
}
{
- TypeParameter vNode = cNode.typeParameters.typeParameters[2];
+ TypeParameter vNode = cNode.typeParameters!.typeParameters[2];
expect(vNode.declaredElement, same(cElement.typeParameters[2]));
expect(vNode.bound, isNull);
}
@@ -7709,87 +7737,95 @@
// catch (e, st)
{
- TryStatement statement = statements[0];
+ var statement = statements[0] as TryStatement;
CatchClause catchClause = statement.catchClauses[0];
expect(catchClause.exceptionType, isNull);
- SimpleIdentifier exceptionNode = catchClause.exceptionParameter;
- LocalVariableElement exceptionElement = exceptionNode.staticElement;
+ var exceptionNode = catchClause.exceptionParameter as SimpleIdentifier;
+ var exceptionElement =
+ exceptionNode.staticElement as LocalVariableElement;
expect(exceptionElement.type, DynamicTypeImpl.instance);
- SimpleIdentifier stackNode = catchClause.stackTraceParameter;
- LocalVariableElement stackElement = stackNode.staticElement;
+ var stackNode = catchClause.stackTraceParameter as SimpleIdentifier;
+ var stackElement = stackNode.staticElement as LocalVariableElement;
expect(stackElement.type, typeProvider.stackTraceType);
List<Statement> catchStatements = catchClause.body.statements;
- ExpressionStatement exceptionStatement = catchStatements[0];
- SimpleIdentifier exceptionIdentifier = exceptionStatement.expression;
+ var exceptionStatement = catchStatements[0] as ExpressionStatement;
+ var exceptionIdentifier =
+ exceptionStatement.expression as SimpleIdentifier;
expect(exceptionIdentifier.staticElement, same(exceptionElement));
expect(exceptionIdentifier.staticType, DynamicTypeImpl.instance);
- ExpressionStatement stackStatement = catchStatements[1];
- SimpleIdentifier stackIdentifier = stackStatement.expression;
+ var stackStatement = catchStatements[1] as ExpressionStatement;
+ var stackIdentifier = stackStatement.expression as SimpleIdentifier;
expect(stackIdentifier.staticElement, same(stackElement));
expect(stackIdentifier.staticType, typeProvider.stackTraceType);
}
// on int catch (e, st)
{
- TryStatement statement = statements[1];
+ var statement = statements[1] as TryStatement;
CatchClause catchClause = statement.catchClauses[0];
- _assertTypeNameSimple(catchClause.exceptionType, typeProvider.intType);
+ _assertTypeNameSimple(
+ catchClause.exceptionType as TypeName, typeProvider.intType);
- SimpleIdentifier exceptionNode = catchClause.exceptionParameter;
- LocalVariableElement exceptionElement = exceptionNode.staticElement;
+ var exceptionNode = catchClause.exceptionParameter as SimpleIdentifier;
+ var exceptionElement =
+ exceptionNode.staticElement as LocalVariableElement;
expect(exceptionElement.type, typeProvider.intType);
- SimpleIdentifier stackNode = catchClause.stackTraceParameter;
- LocalVariableElement stackElement = stackNode.staticElement;
+ var stackNode = catchClause.stackTraceParameter as SimpleIdentifier;
+ var stackElement = stackNode.staticElement as LocalVariableElement;
expect(stackElement.type, typeProvider.stackTraceType);
List<Statement> catchStatements = catchClause.body.statements;
- ExpressionStatement exceptionStatement = catchStatements[0];
- SimpleIdentifier exceptionIdentifier = exceptionStatement.expression;
+ var exceptionStatement = catchStatements[0] as ExpressionStatement;
+ var exceptionIdentifier =
+ exceptionStatement.expression as SimpleIdentifier;
expect(exceptionIdentifier.staticElement, same(exceptionElement));
expect(exceptionIdentifier.staticType, typeProvider.intType);
- ExpressionStatement stackStatement = catchStatements[1];
- SimpleIdentifier stackIdentifier = stackStatement.expression;
+ var stackStatement = catchStatements[1] as ExpressionStatement;
+ var stackIdentifier = stackStatement.expression as SimpleIdentifier;
expect(stackIdentifier.staticElement, same(stackElement));
expect(stackIdentifier.staticType, typeProvider.stackTraceType);
}
// catch (e)
{
- TryStatement statement = statements[2];
+ var statement = statements[2] as TryStatement;
CatchClause catchClause = statement.catchClauses[0];
expect(catchClause.exceptionType, isNull);
expect(catchClause.stackTraceParameter, isNull);
- SimpleIdentifier exceptionNode = catchClause.exceptionParameter;
- LocalVariableElement exceptionElement = exceptionNode.staticElement;
+ var exceptionNode = catchClause.exceptionParameter as SimpleIdentifier;
+ var exceptionElement =
+ exceptionNode.staticElement as LocalVariableElement;
expect(exceptionElement.type, DynamicTypeImpl.instance);
}
// on int catch (e)
{
- TryStatement statement = statements[3];
+ var statement = statements[3] as TryStatement;
CatchClause catchClause = statement.catchClauses[0];
- _assertTypeNameSimple(catchClause.exceptionType, typeProvider.intType);
+ _assertTypeNameSimple(catchClause.exceptionType!, typeProvider.intType);
expect(catchClause.stackTraceParameter, isNull);
- SimpleIdentifier exceptionNode = catchClause.exceptionParameter;
- LocalVariableElement exceptionElement = exceptionNode.staticElement;
+ var exceptionNode = catchClause.exceptionParameter as SimpleIdentifier;
+ var exceptionElement =
+ exceptionNode.staticElement as LocalVariableElement;
expect(exceptionElement.type, typeProvider.intType);
}
// on int catch (e)
{
- TryStatement statement = statements[4];
+ var statement = statements[4] as TryStatement;
CatchClause catchClause = statement.catchClauses[0];
- _assertTypeNameSimple(catchClause.exceptionType, typeProvider.intType);
+ _assertTypeNameSimple(
+ catchClause.exceptionType as TypeName, typeProvider.intType);
expect(catchClause.exceptionParameter, isNull);
expect(catchClause.stackTraceParameter, isNull);
}
@@ -7823,18 +7859,18 @@
await resolveTestFile();
FunctionTypeAlias alias = findNode.functionTypeAlias('F<T>');
- TypeAliasElement aliasElement = alias.declaredElement;
+ TypeAliasElement aliasElement = alias.declaredElement!;
FieldDeclaration fDeclaration = findNode.fieldDeclaration('F<int> f');
- TypeName typeName = fDeclaration.fields.type;
+ var typeName = fDeclaration.fields.type as TypeName;
assertType(typeName, 'int Function(bool)');
- SimpleIdentifier typeIdentifier = typeName.name;
+ var typeIdentifier = typeName.name as SimpleIdentifier;
expect(typeIdentifier.staticElement, same(aliasElement));
expect(typeIdentifier.staticType, isNull);
- List<TypeAnnotation> typeArguments = typeName.typeArguments.arguments;
+ List<TypeAnnotation> typeArguments = typeName.typeArguments!.arguments;
expect(typeArguments, hasLength(1));
_assertTypeNameSimple(typeArguments[0], typeProvider.intType);
}
@@ -7867,20 +7903,20 @@
c.A a2;
''');
await resolveTestFile();
- CompilationUnit unit = result.unit;
+ CompilationUnit unit = result.unit!;
- ImportElement bImport = unit.declaredElement.library.imports[0];
- ImportElement cImport = unit.declaredElement.library.imports[1];
+ ImportElement bImport = unit.declaredElement!.library.imports[0];
+ ImportElement cImport = unit.declaredElement!.library.imports[1];
- LibraryElement bLibrary = bImport.importedLibrary;
- LibraryElement aLibrary = bLibrary.exports[0].exportedLibrary;
- ClassElement aClass = aLibrary.getType('A');
+ LibraryElement bLibrary = bImport.importedLibrary!;
+ LibraryElement aLibrary = bLibrary.exports[0].exportedLibrary!;
+ ClassElement aClass = aLibrary.getType('A')!;
{
- TopLevelVariableDeclaration declaration = unit.declarations[0];
- TypeName typeName = declaration.variables.type;
+ var declaration = unit.declarations[0] as TopLevelVariableDeclaration;
+ var typeName = declaration.variables.type as TypeName;
- PrefixedIdentifier typeIdentifier = typeName.name;
+ var typeIdentifier = typeName.name as PrefixedIdentifier;
expect(typeIdentifier.staticElement, aClass);
expect(typeIdentifier.prefix.name, 'b');
@@ -7890,10 +7926,10 @@
}
{
- TopLevelVariableDeclaration declaration = unit.declarations[1];
- TypeName typeName = declaration.variables.type;
+ var declaration = unit.declarations[1] as TopLevelVariableDeclaration;
+ var typeName = declaration.variables.type as TypeName;
- PrefixedIdentifier typeIdentifier = typeName.name;
+ var typeIdentifier = typeName.name as PrefixedIdentifier;
expect(typeIdentifier.staticElement, aClass);
expect(typeIdentifier.prefix.name, 'c');
@@ -7912,23 +7948,23 @@
typedef void F(int p);
''');
await resolveTestFile();
- CompilationUnit unit = result.unit;
+ CompilationUnit unit = result.unit!;
- FunctionTypeAlias fNode = unit.declarations[1];
- TypeAliasElement fElement = fNode.declaredElement;
+ var fNode = unit.declarations[1] as FunctionTypeAlias;
+ TypeAliasElement fElement = fNode.declaredElement!;
var statements = _getMainStatements(result);
{
- ExpressionStatement statement = statements[0];
- SimpleIdentifier identifier = statement.expression;
+ var statement = statements[0] as ExpressionStatement;
+ var identifier = statement.expression as SimpleIdentifier;
expect(identifier.staticElement, same(typeProvider.intType.element));
expect(identifier.staticType, typeProvider.typeType);
}
{
- ExpressionStatement statement = statements[1];
- SimpleIdentifier identifier = statement.expression;
+ var statement = statements[1] as ExpressionStatement;
+ var identifier = statement.expression as SimpleIdentifier;
expect(identifier.staticElement, same(fElement));
expect(identifier.staticType, typeProvider.typeType);
}
@@ -7958,9 +7994,9 @@
expect(result.errors, isNotEmpty);
List<Statement> statements = _getMainStatements(result);
- ExpressionStatement statement = statements[0];
+ var statement = statements[0] as ExpressionStatement;
- InstanceCreationExpression creation = statement.expression;
+ var creation = statement.expression as InstanceCreationExpression;
expect(creation.staticType, isDynamicType);
ConstructorName constructorName = creation.constructorName;
@@ -7969,11 +8005,11 @@
TypeName typeName = constructorName.type;
expect(typeName.type, isDynamicType);
- SimpleIdentifier typeIdentifier = typeName.name;
+ var typeIdentifier = typeName.name as SimpleIdentifier;
expect(typeIdentifier.staticElement, isNull);
expect(typeIdentifier.staticType, isNull);
- assertTypeArguments(typeName.typeArguments, [intType, doubleType]);
+ assertTypeArguments(typeName.typeArguments!, [intType, doubleType]);
_assertInvocationArguments(creation.argumentList,
[checkTopVarRef('arg1'), checkTopVarUndefinedNamedRef('arg2')]);
}
@@ -7990,9 +8026,9 @@
expect(result.errors, isNotEmpty);
List<Statement> statements = _getMainStatements(result);
- ExpressionStatement statement = statements[0];
+ var statement = statements[0] as ExpressionStatement;
- InstanceCreationExpression creation = statement.expression;
+ var creation = statement.expression as InstanceCreationExpression;
expect(creation.staticType, isDynamicType);
ConstructorName constructorName = creation.constructorName;
@@ -8001,7 +8037,7 @@
TypeName typeName = constructorName.type;
expect(typeName.type, isDynamicType);
- PrefixedIdentifier typePrefixed = typeName.name;
+ var typePrefixed = typeName.name as PrefixedIdentifier;
expect(typePrefixed.staticElement, isNull);
expect(typePrefixed.staticType, isDynamicType);
@@ -8013,7 +8049,7 @@
expect(typeIdentifier.staticElement, isNull);
expect(typeIdentifier.staticType, isDynamicType);
- assertTypeArguments(typeName.typeArguments, [intType, doubleType]);
+ assertTypeArguments(typeName.typeArguments!, [intType, doubleType]);
_assertInvocationArguments(creation.argumentList,
[checkTopVarRef('arg1'), checkTopVarUndefinedNamedRef('arg2')]);
}
@@ -8030,13 +8066,13 @@
await resolveTestFile();
expect(result.errors, isNotEmpty);
- var unitElement = result.unit.declaredElement;
+ var unitElement = result.unit!.declaredElement!;
var foo = unitElement.library.imports[0].prefix;
List<Statement> statements = _getMainStatements(result);
- ExpressionStatement statement = statements[0];
+ var statement = statements[0] as ExpressionStatement;
- InstanceCreationExpression creation = statement.expression;
+ var creation = statement.expression as InstanceCreationExpression;
expect(creation.staticType, isDynamicType);
ConstructorName constructorName = creation.constructorName;
@@ -8045,7 +8081,7 @@
TypeName typeName = constructorName.type;
expect(typeName.type, isDynamicType);
- PrefixedIdentifier typePrefixed = typeName.name;
+ var typePrefixed = typeName.name as PrefixedIdentifier;
expect(typePrefixed.staticElement, isNull);
expect(typePrefixed.staticType, isDynamicType);
@@ -8057,7 +8093,7 @@
expect(typeIdentifier.staticElement, isNull);
expect(typeIdentifier.staticType, isDynamicType);
- assertTypeArguments(typeName.typeArguments, [intType, doubleType]);
+ assertTypeArguments(typeName.typeArguments!, [intType, doubleType]);
_assertInvocationArguments(creation.argumentList,
[checkTopVarRef('arg1'), checkTopVarUndefinedNamedRef('arg2')]);
}
@@ -8073,9 +8109,9 @@
expect(result.errors, isNotEmpty);
List<Statement> statements = _getMainStatements(result);
- ExpressionStatement statement = statements[0];
+ var statement = statements[0] as ExpressionStatement;
- InstanceCreationExpression creation = statement.expression;
+ var creation = statement.expression as InstanceCreationExpression;
expect(creation.staticType, isDynamicType);
ConstructorName constructorName = creation.constructorName;
@@ -8083,7 +8119,7 @@
TypeName typeName = constructorName.type;
expect(typeName.type, isDynamicType);
- PrefixedIdentifier typePrefixed = typeName.name;
+ var typePrefixed = typeName.name as PrefixedIdentifier;
assertElementNull(typePrefixed);
assertTypeNull(typePrefixed);
@@ -8096,9 +8132,9 @@
assertTypeNull(typeIdentifier);
assertElementNull(constructorName.name);
- assertTypeNull(constructorName.name);
+ assertTypeNull(constructorName.name!);
- assertTypeArguments(typeName.typeArguments, [intType, doubleType]);
+ assertTypeArguments(typeName.typeArguments!, [intType, doubleType]);
_assertInvocationArguments(creation.argumentList,
[checkTopVarRef('arg1'), checkTopVarUndefinedNamedRef('arg2')]);
}
@@ -8114,14 +8150,14 @@
await resolveTestFile();
expect(result.errors, isNotEmpty);
- var unitElement = result.unit.declaredElement;
+ var unitElement = result.unit!.declaredElement!;
var mathImport = unitElement.library.imports[0];
var foo = mathImport.prefix;
List<Statement> statements = _getMainStatements(result);
- ExpressionStatement statement = statements[0];
+ var statement = statements[0] as ExpressionStatement;
- InstanceCreationExpression creation = statement.expression;
+ var creation = statement.expression as InstanceCreationExpression;
expect(creation.staticType, isDynamicType);
ConstructorName constructorName = creation.constructorName;
@@ -8129,7 +8165,7 @@
TypeName typeName = constructorName.type;
expect(typeName.type, isDynamicType);
- PrefixedIdentifier typePrefixed = typeName.name;
+ var typePrefixed = typeName.name as PrefixedIdentifier;
assertElementNull(typePrefixed);
assertTypeNull(typePrefixed);
@@ -8142,9 +8178,9 @@
assertTypeNull(typeIdentifier);
assertElementNull(constructorName.name);
- assertTypeNull(constructorName.name);
+ assertTypeNull(constructorName.name!);
- assertTypeArguments(typeName.typeArguments, [intType, doubleType]);
+ assertTypeArguments(typeName.typeArguments!, [intType, doubleType]);
_assertInvocationArguments(creation.argumentList,
[checkTopVarRef('arg1'), checkTopVarUndefinedNamedRef('arg2')]);
}
@@ -8160,15 +8196,15 @@
await resolveTestFile();
expect(result.errors, isNotEmpty);
- var unitElement = result.unit.declaredElement;
+ var unitElement = result.unit!.declaredElement!;
var mathImport = unitElement.library.imports[0];
var foo = mathImport.prefix;
- var randomElement = mathImport.importedLibrary.getType('Random');
+ var randomElement = mathImport.importedLibrary!.getType('Random')!;
List<Statement> statements = _getMainStatements(result);
- ExpressionStatement statement = statements[0];
+ var statement = statements[0] as ExpressionStatement;
- InstanceCreationExpression creation = statement.expression;
+ var creation = statement.expression as InstanceCreationExpression;
expect(creation.staticType, interfaceTypeStar(randomElement));
ConstructorName constructorName = creation.constructorName;
@@ -8176,7 +8212,7 @@
TypeName typeName = constructorName.type;
assertType(typeName, 'Random');
- PrefixedIdentifier typePrefixed = typeName.name;
+ var typePrefixed = typeName.name as PrefixedIdentifier;
assertElement(typePrefixed, randomElement);
assertTypeNull(typePrefixed);
@@ -8189,9 +8225,9 @@
assertTypeNull(typeIdentifier);
assertElementNull(constructorName.name);
- assertTypeNull(constructorName.name);
+ assertTypeNull(constructorName.name!);
- assertTypeArguments(typeName.typeArguments, [intType, doubleType]);
+ assertTypeArguments(typeName.typeArguments!, [intType, doubleType]);
_assertInvocationArguments(creation.argumentList,
[checkTopVarRef('arg1'), checkTopVarUndefinedNamedRef('arg2')]);
}
@@ -8207,18 +8243,18 @@
expect(result.errors, isNotEmpty);
List<Statement> statements = _getMainStatements(result);
- ExpressionStatement statement = statements[0];
+ var statement = statements[0] as ExpressionStatement;
- MethodInvocation invocation = statement.expression;
+ var invocation = statement.expression as MethodInvocation;
expect(invocation.target, isNull);
expect(invocation.staticType, isDynamicType);
- assertUnresolvedInvokeType(invocation.staticInvokeType);
+ assertUnresolvedInvokeType(invocation.staticInvokeType!);
SimpleIdentifier name = invocation.methodName;
expect(name.staticElement, isNull);
expect(name.staticType, isDynamicType);
- assertTypeArguments(invocation.typeArguments, [intType, doubleType]);
+ assertTypeArguments(invocation.typeArguments!, [intType, doubleType]);
_assertInvocationArguments(invocation.argumentList,
[checkTopVarRef('arg1'), checkTopVarUndefinedNamedRef('arg2')]);
}
@@ -8237,21 +8273,21 @@
TopLevelVariableElement foo = _getTopLevelVariable(result, 'foo');
List<Statement> statements = _getMainStatements(result);
- ExpressionStatement statement = statements[0];
+ var statement = statements[0] as ExpressionStatement;
- MethodInvocation invocation = statement.expression;
+ var invocation = statement.expression as MethodInvocation;
expect(invocation.staticType, isDynamicType);
- assertUnresolvedInvokeType(invocation.staticInvokeType);
+ assertUnresolvedInvokeType(invocation.staticInvokeType!);
- SimpleIdentifier target = invocation.target;
+ var target = invocation.target as SimpleIdentifier;
expect(target.staticElement, same(foo.getter));
expect(target.staticType, typeProvider.objectType);
SimpleIdentifier name = invocation.methodName;
expect(name.staticElement, isNull);
- assertUnresolvedInvokeType(name.staticType);
+ assertUnresolvedInvokeType(name.staticType!);
- assertTypeArguments(invocation.typeArguments, [intType, doubleType]);
+ assertTypeArguments(invocation.typeArguments!, [intType, doubleType]);
_assertInvocationArguments(invocation.argumentList,
[checkTopVarRef('arg1'), checkTopVarUndefinedNamedRef('arg2')]);
}
@@ -8268,17 +8304,17 @@
var invocation = findNode.methodInvocation('foo.bar');
assertTypeDynamic(invocation);
- assertUnresolvedInvokeType(invocation.staticInvokeType);
+ assertUnresolvedInvokeType(invocation.staticInvokeType!);
- SimpleIdentifier target = invocation.target;
+ var target = invocation.target as SimpleIdentifier;
assertElementNull(target);
assertTypeDynamic(target);
SimpleIdentifier name = invocation.methodName;
assertElementNull(name);
- assertUnresolvedInvokeType(name.staticType);
+ assertUnresolvedInvokeType(name.staticType!);
- assertTypeArguments(invocation.typeArguments, [intType, doubleType]);
+ assertTypeArguments(invocation.typeArguments!, [intType, doubleType]);
_assertInvocationArguments(invocation.argumentList,
[checkTopVarRef('arg1'), checkTopVarUndefinedNamedRef('arg2')]);
}
@@ -8296,7 +8332,7 @@
assertElementNull(postfix);
assertTypeDynamic(postfix);
- SimpleIdentifier aRef = postfix.operand;
+ var aRef = postfix.operand as SimpleIdentifier;
if (hasAssignmentLeftResolution) {
assertElementNull(aRef);
assertTypeDynamic(aRef);
@@ -8321,7 +8357,7 @@
assertElementNull(postfix);
assertType(postfix, 'A');
- SimpleIdentifier aRef = postfix.operand;
+ var aRef = postfix.operand as SimpleIdentifier;
if (hasAssignmentLeftResolution) {
assertElement(aRef, findElement.topSet('a'));
assertType(aRef, 'A');
@@ -8344,7 +8380,7 @@
assertElementNull(prefix);
assertTypeDynamic(prefix);
- SimpleIdentifier aRef = prefix.operand;
+ var aRef = prefix.operand as SimpleIdentifier;
if (hasAssignmentLeftResolution) {
assertElementNull(aRef);
assertTypeDynamic(aRef);
@@ -8369,7 +8405,7 @@
assertElementNull(prefix);
assertTypeDynamic(prefix);
- SimpleIdentifier aRef = prefix.operand;
+ var aRef = prefix.operand as SimpleIdentifier;
if (hasAssignmentLeftResolution) {
assertElement(aRef, findElement.topSet('a'));
assertType(aRef, 'A');
@@ -8392,9 +8428,9 @@
TopLevelVariableElement foo = _getTopLevelVariable(result, 'foo');
List<Statement> statements = _getMainStatements(result);
- ExpressionStatement statement = statements[0];
+ var statement = statements[0] as ExpressionStatement;
- PrefixedIdentifier prefixed = statement.expression;
+ var prefixed = statement.expression as PrefixedIdentifier;
expect(prefixed.staticElement, isNull);
expect(prefixed.staticType, isDynamicType);
@@ -8417,9 +8453,9 @@
expect(result.errors, isNotEmpty);
List<Statement> statements = _getMainStatements(result);
- ExpressionStatement statement = statements[0];
+ var statement = statements[0] as ExpressionStatement;
- PrefixedIdentifier prefixed = statement.expression;
+ var prefixed = statement.expression as PrefixedIdentifier;
expect(prefixed.staticElement, isNull);
expect(prefixed.staticType, isDynamicType);
@@ -8442,13 +8478,13 @@
expect(result.errors, isNotEmpty);
List<Statement> statements = _getMainStatements(result);
- ExpressionStatement statement = statements[0];
+ var statement = statements[0] as ExpressionStatement;
- PropertyAccess propertyAccess = statement.expression;
+ var propertyAccess = statement.expression as PropertyAccess;
expect(propertyAccess.staticType, isDynamicType);
{
- PrefixedIdentifier prefixed = propertyAccess.target;
+ var prefixed = propertyAccess.target as PrefixedIdentifier;
expect(prefixed.staticElement, isNull);
expect(prefixed.staticType, isDynamicType);
@@ -8479,13 +8515,13 @@
TopLevelVariableElement foo = _getTopLevelVariable(result, 'foo');
List<Statement> statements = _getMainStatements(result);
- ExpressionStatement statement = statements[0];
+ var statement = statements[0] as ExpressionStatement;
- PropertyAccess propertyAccess = statement.expression;
+ var propertyAccess = statement.expression as PropertyAccess;
expect(propertyAccess.staticType, isDynamicType);
{
- PrefixedIdentifier prefixed = propertyAccess.target;
+ var prefixed = propertyAccess.target as PrefixedIdentifier;
expect(prefixed.staticElement, isNull);
expect(prefixed.staticType, isDynamicType);
@@ -8514,17 +8550,17 @@
expect(result.errors, isNotEmpty);
PropertyAccessorElement objectHashCode =
- objectElement.getGetter('hashCode');
+ objectElement.getGetter('hashCode')!;
TopLevelVariableElement foo = _getTopLevelVariable(result, 'foo');
List<Statement> statements = _getMainStatements(result);
- ExpressionStatement statement = statements[0];
+ var statement = statements[0] as ExpressionStatement;
- PropertyAccess propertyAccess = statement.expression;
+ var propertyAccess = statement.expression as PropertyAccess;
expect(propertyAccess.staticType, isDynamicType);
{
- PrefixedIdentifier prefixed = propertyAccess.target;
+ var prefixed = propertyAccess.target as PrefixedIdentifier;
assertPrefixedIdentifier(
prefixed,
element: elementMatcher(
@@ -8593,8 +8629,8 @@
expect(result.errors, isNotEmpty);
List<Statement> statements = _getMainStatements(result);
- ExpressionStatement statement = statements[0];
- SimpleIdentifier identifier = statement.expression;
+ var statement = statements[0] as ExpressionStatement;
+ var identifier = statement.expression as SimpleIdentifier;
expect(identifier.staticElement, isNull);
expect(identifier.staticType, isDynamicType);
}
@@ -8604,8 +8640,8 @@
/// parameter.
void _assertArgumentToParameter(
Expression argument, ParameterElement expected,
- {DartType memberType}) {
- ParameterElement actual = argument.staticParameterElement;
+ {DartType? memberType}) {
+ ParameterElement actual = argument.staticParameterElement!;
if (memberType != null) {
expect(actual.type, memberType);
}
@@ -8622,7 +8658,7 @@
/// Assert that the [argument] has the [expectedType]. If the [argument] is
/// a [NamedExpression], the name must be resolved to the same parameter.
void _assertArgumentToParameter2(Expression argument, String expectedType) {
- ParameterElement actual = argument.staticParameterElement;
+ ParameterElement actual = argument.staticParameterElement!;
assertType(actual.type, expectedType);
if (argument is NamedExpression) {
@@ -8645,7 +8681,7 @@
var typeName = constructorName.type;
expect(typeName.typeArguments, isNull);
- SimpleIdentifier typeIdentifier = typeName.name;
+ var typeIdentifier = typeName.name as SimpleIdentifier;
assertElement(typeIdentifier, classElement);
assertTypeNull(typeIdentifier);
@@ -8655,9 +8691,9 @@
void _assertDefaultParameter(
DefaultFormalParameter node, ParameterElement element,
- {String name, int offset, ParameterKind kind, DartType type}) {
+ {String? name, int? offset, ParameterKind? kind, DartType? type}) {
expect(node, isNotNull);
- NormalFormalParameter normalNode = node.parameter;
+ var normalNode = node.parameter as SimpleFormalParameter;
_assertSimpleParameter(normalNode, element,
name: name, offset: offset, kind: kind, type: type);
}
@@ -8673,7 +8709,7 @@
}
void _assertParameterElement(ParameterElement element,
- {String name, int offset, ParameterKind kind, DartType type}) {
+ {String? name, int? offset, ParameterKind? kind, DartType? type}) {
expect(element, isNotNull);
expect(name, isNotNull);
expect(offset, isNotNull);
@@ -8688,34 +8724,35 @@
void _assertSimpleParameter(
SimpleFormalParameter node, ParameterElement element,
- {String name, int offset, ParameterKind kind, DartType type}) {
+ {String? name, int? offset, ParameterKind? kind, DartType? type}) {
_assertParameterElement(element,
name: name, offset: offset, kind: kind, type: type);
expect(node, isNotNull);
expect(node.declaredElement, same(element));
- expect(node.identifier.staticElement, same(element));
+ expect(node.identifier!.staticElement, same(element));
- TypeName typeName = node.type;
+ var typeName = node.type as TypeName?;
if (typeName != null) {
expect(typeName.type, type);
- expect(typeName.name.staticElement, same(type.element));
+ expect(typeName.name.staticElement, same(type!.element));
}
}
- void _assertTypeNameSimple(TypeName typeName, DartType type) {
+ void _assertTypeNameSimple(TypeAnnotation typeName, DartType type) {
+ typeName as TypeName;
expect(typeName.type, type);
- SimpleIdentifier identifier = typeName.name;
+ var identifier = typeName.name as SimpleIdentifier;
expect(identifier.staticElement, same(type.element));
expect(identifier.staticType, isNull);
}
List<Statement> _getMainStatements(ResolvedUnitResult result) {
- for (var declaration in result.unit.declarations) {
+ for (var declaration in result.unit!.declarations) {
if (declaration is FunctionDeclaration &&
declaration.name.name == 'main') {
- BlockFunctionBody body = declaration.functionExpression.body;
+ var body = declaration.functionExpression.body as BlockFunctionBody;
return body.block.statements;
}
}
@@ -8724,7 +8761,7 @@
TopLevelVariableElement _getTopLevelVariable(
ResolvedUnitResult result, String name) {
- for (var variable in result.unit.declaredElement.topLevelVariables) {
+ for (var variable in result.unit!.declaredElement!.topLevelVariables) {
if (variable.name == name) {
return variable;
}
diff --git a/pkg/analyzer/test/src/dart/analysis/driver_test.dart b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
index e47b257..1430912 100644
--- a/pkg/analyzer/test/src/dart/analysis/driver_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
@@ -51,14 +51,14 @@
@reflectiveTest
class AnalysisDriverSchedulerTest with ResourceProviderMixin {
- DartSdk sdk;
+ late DartSdk sdk;
final ByteStore byteStore = MemoryByteStore();
final FileContentOverlay contentOverlay = FileContentOverlay();
final StringBuffer logBuffer = StringBuffer();
- PerformanceLog logger;
+ late final PerformanceLog logger;
- AnalysisDriverScheduler scheduler;
+ late final AnalysisDriverScheduler scheduler;
List<ResolvedUnitResult> allResults = [];
@@ -193,7 +193,7 @@
driver1.priorityFiles = [a];
driver2.priorityFiles = [a];
- ResolvedUnitResult result = await driver2.getResult(b);
+ ResolvedUnitResult result = (await driver2.getResult(b))!;
expect(result.path, b);
await scheduler.status.firstWhere((status) => status.isIdle);
@@ -442,17 +442,17 @@
part of 'lib.dart';
''');
- ResolvedUnitResult libResult = await driver.getResult(lib);
- ResolvedUnitResult partResult1 = await driver.getResult(part1);
- ResolvedUnitResult partResult2 = await driver.getResult(part2);
+ ResolvedUnitResult libResult = (await driver.getResult(lib))!;
+ ResolvedUnitResult partResult1 = (await driver.getResult(part1))!;
+ ResolvedUnitResult partResult2 = (await driver.getResult(part2))!;
- CompilationUnit libUnit = libResult.unit;
- CompilationUnit partUnit1 = partResult1.unit;
- CompilationUnit partUnit2 = partResult2.unit;
+ CompilationUnit libUnit = libResult.unit!;
+ CompilationUnit partUnit1 = partResult1.unit!;
+ CompilationUnit partUnit2 = partResult2.unit!;
- CompilationUnitElement unitElement = libUnit.declaredElement;
- CompilationUnitElement partElement1 = partUnit1.declaredElement;
- CompilationUnitElement partElement2 = partUnit2.declaredElement;
+ CompilationUnitElement unitElement = libUnit.declaredElement!;
+ CompilationUnitElement partElement1 = partUnit1.declaredElement!;
+ CompilationUnitElement partElement2 = partUnit2.declaredElement!;
LibraryElement libraryElement = unitElement.library;
{
@@ -489,7 +489,7 @@
driver.addFile(lib);
- ResolvedUnitResult libResult = await driver.getResult(lib);
+ ResolvedUnitResult libResult = (await driver.getResult(lib))!;
List<AnalysisError> errors = libResult.errors;
expect(errors, hasLength(1));
expect(errors[0].errorCode, CompileTimeErrorCode.PART_OF_UNNAMED_LIBRARY);
@@ -508,7 +508,7 @@
driver.addFile(lib);
- ResolvedUnitResult libResult = await driver.getResult(lib);
+ ResolvedUnitResult libResult = (await driver.getResult(lib))!;
List<AnalysisError> errors = libResult.errors;
expect(errors, hasLength(1));
expect(errors[0].errorCode, CompileTimeErrorCode.PART_OF_DIFFERENT_LIBRARY);
@@ -527,7 +527,7 @@
driver.addFile(lib);
- ResolvedUnitResult libResult = await driver.getResult(lib);
+ ResolvedUnitResult libResult = (await driver.getResult(lib))!;
List<AnalysisError> errors = libResult.errors;
expect(errors, hasLength(1));
expect(errors[0].errorCode, CompileTimeErrorCode.PART_OF_DIFFERENT_LIBRARY);
@@ -546,7 +546,7 @@
driver.addFile(lib);
- ResolvedUnitResult libResult = await driver.getResult(lib);
+ ResolvedUnitResult libResult = (await driver.getResult(lib))!;
List<AnalysisError> errors = libResult.errors;
expect(errors, hasLength(1));
expect(errors[0].errorCode, CompileTimeErrorCode.PART_OF_NON_PART);
@@ -558,7 +558,7 @@
driver.priorityFiles = [a];
- ResolvedUnitResult result1 = await driver.getResult(a);
+ ResolvedUnitResult result1 = (await driver.getResult(a))!;
expect(driver.test.priorityResults, containsPair(a, result1));
await waitForIdleWithoutExceptions();
@@ -566,7 +566,7 @@
// Get the (cached) result, not reported to the stream.
{
- ResolvedUnitResult result2 = await driver.getResult(a);
+ ResolvedUnitResult result2 = (await driver.getResult(a))!;
expect(result2, same(result1));
expect(allResults, isEmpty);
}
@@ -574,7 +574,7 @@
// Get the (cached) result, reported to the stream.
{
ResolvedUnitResult result2 =
- await driver.getResult(a, sendCachedToStream: true);
+ (await driver.getResult(a, sendCachedToStream: true))!;
expect(result2, same(result1));
expect(allResults, hasLength(1));
@@ -590,21 +590,21 @@
driver.priorityFiles = [a];
- ResolvedUnitResult result1 = await driver.getResult(a);
+ ResolvedUnitResult result1 = (await driver.getResult(a))!;
expect(driver.test.priorityResults, containsPair(a, result1));
// Change a file.
// The cache is flushed.
driver.changeFile(a);
expect(driver.test.priorityResults, isEmpty);
- ResolvedUnitResult result2 = await driver.getResult(a);
+ ResolvedUnitResult result2 = (await driver.getResult(a))!;
expect(driver.test.priorityResults, containsPair(a, result2));
// Add a file.
// The cache is flushed.
driver.addFile(b);
expect(driver.test.priorityResults, isEmpty);
- ResolvedUnitResult result3 = await driver.getResult(a);
+ ResolvedUnitResult result3 = (await driver.getResult(a))!;
expect(driver.test.priorityResults, containsPair(a, result3));
// Remove a file.
@@ -621,7 +621,7 @@
driver.priorityFiles = [a];
- ResolvedUnitResult result1 = await driver.getResult(a);
+ ResolvedUnitResult result1 = (await driver.getResult(a))!;
expect(driver.test.priorityResults, hasLength(1));
expect(driver.test.priorityResults, containsPair(a, result1));
@@ -632,7 +632,7 @@
expect(driver.test.priorityResults, containsPair(a, result1));
// Get the result for "b".
- ResolvedUnitResult result2 = await driver.getResult(b);
+ ResolvedUnitResult result2 = (await driver.getResult(b))!;
expect(driver.test.priorityResults, hasLength(2));
expect(driver.test.priorityResults, containsPair(a, result1));
expect(driver.test.priorityResults, containsPair(b, result2));
@@ -648,11 +648,11 @@
var a = convertPath('/test/bin/a.dart');
newFile(a, content: 'var a = 1;');
- ResolvedUnitResult result1 = await driver.getResult(a);
+ ResolvedUnitResult result1 = (await driver.getResult(a))!;
expect(driver.test.priorityResults, isEmpty);
// The file is not priority, so its result is not cached.
- ResolvedUnitResult result2 = await driver.getResult(a);
+ ResolvedUnitResult result2 = (await driver.getResult(a))!;
expect(result2, isNot(same(result1)));
}
@@ -673,7 +673,7 @@
expect(allResults, hasLength(1));
{
ResolvedUnitResult ar = allResults.firstWhere((r) => r.path == a);
- _assertTopLevelVarType(ar.unit, 'A', 'int');
+ _assertTopLevelVarType(ar.unit!, 'A', 'int');
}
allResults.clear();
@@ -690,7 +690,7 @@
expect(allResults, hasLength(1));
{
ResolvedUnitResult ar = allResults.firstWhere((r) => r.path == a);
- _assertTopLevelVarType(ar.unit, 'A', 'double');
+ _assertTopLevelVarType(ar.unit!, 'A', 'double');
}
}
@@ -744,12 +744,12 @@
expect(allResults, hasLength(2));
{
ResolvedUnitResult ar = allResults.firstWhere((r) => r.path == a);
- _assertTopLevelVarType(ar.unit, 'A1', 'int');
- _assertTopLevelVarType(ar.unit, 'A2', 'int');
+ _assertTopLevelVarType(ar.unit!, 'A1', 'int');
+ _assertTopLevelVarType(ar.unit!, 'A2', 'int');
}
{
ResolvedUnitResult br = allResults.firstWhere((r) => r.path == b);
- _assertTopLevelVarType(br.unit, 'B1', 'int');
+ _assertTopLevelVarType(br.unit!, 'B1', 'int');
}
// Clear the results and update "a".
@@ -767,12 +767,12 @@
expect(allResults, hasLength(2));
{
ResolvedUnitResult ar = allResults.firstWhere((r) => r.path == a);
- _assertTopLevelVarType(ar.unit, 'A1', 'double');
- _assertTopLevelVarType(ar.unit, 'A2', 'double');
+ _assertTopLevelVarType(ar.unit!, 'A1', 'double');
+ _assertTopLevelVarType(ar.unit!, 'A2', 'double');
}
{
ResolvedUnitResult br = allResults.firstWhere((r) => r.path == b);
- _assertTopLevelVarType(br.unit, 'B1', 'double');
+ _assertTopLevelVarType(br.unit!, 'B1', 'double');
}
}
@@ -785,7 +785,7 @@
expect(allResults, hasLength(1));
ResolvedUnitResult result = allResults[0];
expect(result.path, testFile);
- _assertTopLevelVarType(result.unit, 'V', 'int');
+ _assertTopLevelVarType(result.unit!, 'V', 'int');
}
// Update the file, but don't notify the driver.
@@ -808,7 +808,7 @@
expect(allResults, hasLength(1));
ResolvedUnitResult result = allResults[0];
expect(result.path, testFile);
- _assertTopLevelVarType(result.unit, 'V', 'double');
+ _assertTopLevelVarType(result.unit!, 'V', 'double');
}
}
@@ -822,10 +822,10 @@
@A(5)
class C {}
''');
- var result = await driver.getResult(testFile);
- var atD = AstFinder.getClass(result.unit, 'C').metadata[0];
+ var result = (await driver.getResult(testFile))!;
+ var atD = AstFinder.getClass(result.unit!, 'C').metadata[0];
var atDI = atD.elementAnnotation as ElementAnnotationImpl;
- var value = atDI.evaluationResult.value;
+ var value = atDI.evaluationResult!.value;
// That is illegal.
expect(value, isNull);
}
@@ -839,16 +839,15 @@
final value;
}
''');
- var result = await driver.getResult(testFile);
- var atD = AstFinder.getClass(result.unit, 'C').metadata[0];
+ var result = (await driver.getResult(testFile))!;
+ var atD = AstFinder.getClass(result.unit!, 'C').metadata[0];
var atDI = atD.elementAnnotation as ElementAnnotationImpl;
- var value = atDI.evaluationResult.value;
- expect(value, isNotNull);
+ var value = atDI.evaluationResult!.value!;
expect(value.type, isNotNull);
assertType(value.type, 'D');
- expect(value.fields.keys, ['value']);
- expect(value.getField('value').toIntValue(), 1);
- expect(atDI.evaluationResult.errors, isEmpty);
+ expect(value.fields!.keys, ['value']);
+ expect(value.getField('value')!.toIntValue(), 1);
+ expect(atDI.evaluationResult!.errors, isEmpty);
}
test_const_annotation_withoutArgs() async {
@@ -856,9 +855,9 @@
const x = 1;
@x class C {}
''');
- var result = await driver.getResult(testFile);
- Annotation at_x = AstFinder.getClass(result.unit, 'C').metadata[0];
- expect(at_x.elementAnnotation.computeConstantValue().toIntValue(), 1);
+ var result = (await driver.getResult(testFile))!;
+ Annotation at_x = AstFinder.getClass(result.unit!, 'C').metadata[0];
+ expect(at_x.elementAnnotation!.computeConstantValue()!.toIntValue(), 1);
}
test_const_circular_reference() async {
@@ -866,10 +865,10 @@
const x = y + 1;
const y = x + 1;
''');
- var result = await driver.getResult(testFile);
- var x = AstFinder.getTopLevelVariableElement(result.unit, 'x')
+ var result = (await driver.getResult(testFile))!;
+ var x = AstFinder.getTopLevelVariableElement(result.unit!, 'x')
as TopLevelVariableElementImpl;
- _expectCircularityError(x.evaluationResult);
+ _expectCircularityError(x.evaluationResult!);
}
test_const_dependency_sameUnit() async {
@@ -877,11 +876,11 @@
const x = y + 1;
const y = 1;
''');
- var result = await driver.getResult(testFile);
- var x = AstFinder.getTopLevelVariableElement(result.unit, 'x');
- var y = AstFinder.getTopLevelVariableElement(result.unit, 'y');
- expect(x.computeConstantValue().toIntValue(), 2);
- expect(y.computeConstantValue().toIntValue(), 1);
+ var result = (await driver.getResult(testFile))!;
+ var x = AstFinder.getTopLevelVariableElement(result.unit!, 'x');
+ var y = AstFinder.getTopLevelVariableElement(result.unit!, 'y');
+ expect(x.computeConstantValue()!.toIntValue(), 2);
+ expect(y.computeConstantValue()!.toIntValue(), 1);
}
test_const_externalConstFactory() async {
@@ -894,8 +893,8 @@
class B {}
''');
- var result = await driver.getResult(testFile);
- var x = AstFinder.getTopLevelVariableElement(result.unit, 'x');
+ var result = (await driver.getResult(testFile))!;
+ var x = AstFinder.getTopLevelVariableElement(result.unit!, 'x');
expect(x.computeConstantValue(), isNotNull);
}
@@ -919,7 +918,7 @@
const c = C.WARNING;
const d = D.WARNING;
''');
- ResolvedUnitResult result = await driver.getResult(b);
+ ResolvedUnitResult result = (await driver.getResult(b))!;
expect(result.errors, isEmpty);
}
@@ -948,7 +947,7 @@
const C();
}
''');
- ResolvedUnitResult result = await driver.getResult(b);
+ ResolvedUnitResult result = (await driver.getResult(b))!;
expect(result.errors, isEmpty);
}
@@ -960,8 +959,8 @@
}
const x = const Derived();
''');
- var result = await driver.getResult(testFile);
- var x = AstFinder.getTopLevelVariableElement(result.unit, 'x');
+ var result = (await driver.getResult(testFile))!;
+ var x = AstFinder.getTopLevelVariableElement(result.unit!, 'x');
expect(x.computeConstantValue(), isNotNull);
}
@@ -969,23 +968,23 @@
addTestFile('''
const x = 1;
''');
- var result = await driver.getResult(testFile);
- var x = AstFinder.getTopLevelVariableElement(result.unit, 'x');
- expect(x.computeConstantValue().toIntValue(), 1);
+ var result = (await driver.getResult(testFile))!;
+ var x = AstFinder.getTopLevelVariableElement(result.unit!, 'x');
+ expect(x.computeConstantValue()!.toIntValue(), 1);
}
test_currentSession() async {
var a = convertPath('/a.dart');
newFile(a, content: 'var V = 1;');
- await driver.getResult(a);
+ (await driver.getResult(a))!;
var session1 = driver.currentSession;
expect(session1, isNotNull);
modifyFile(a, 'var V = 2;');
driver.changeFile(a);
- await driver.getResult(a);
+ (await driver.getResult(a))!;
var session2 = driver.currentSession;
expect(session2, isNotNull);
@@ -1030,7 +1029,7 @@
await driver.discoverAvailableFiles();
void assertHasDartUri(String uri) {
- var file = sdk.mapDartUri(uri).fullName;
+ var file = sdk.mapDartUri(uri)!.fullName;
expect(driver.knownFiles, contains(file));
}
@@ -1046,7 +1045,7 @@
export 'foo.dart';
''');
- ResolvedUnitResult result = await driver.getResult(testFile);
+ ResolvedUnitResult result = (await driver.getResult(testFile))!;
List<AnalysisError> errors = result.errors;
expect(errors, hasLength(1));
expect(errors[0].errorCode, CompileTimeErrorCode.URI_DOES_NOT_EXIST);
@@ -1057,7 +1056,7 @@
import 'foo.dart';
''');
- ResolvedUnitResult result = await driver.getResult(testFile);
+ ResolvedUnitResult result = (await driver.getResult(testFile))!;
List<AnalysisError> errors = result.errors;
expect(errors, hasLength(1));
expect(errors[0].errorCode, CompileTimeErrorCode.URI_DOES_NOT_EXIST);
@@ -1071,7 +1070,7 @@
}
''', priority: true);
- ResolvedUnitResult result = await driver.getResult(testFile);
+ ResolvedUnitResult result = (await driver.getResult(testFile))!;
List<AnalysisError> errors = result.errors;
expect(errors, hasLength(1));
expect(errors[0].errorCode, CompileTimeErrorCode.URI_DOES_NOT_EXIST);
@@ -1083,7 +1082,7 @@
part 'foo.dart';
''');
- ResolvedUnitResult result = await driver.getResult(testFile);
+ ResolvedUnitResult result = (await driver.getResult(testFile))!;
List<AnalysisError> errors = result.errors;
expect(errors, hasLength(1));
expect(errors[0].errorCode, CompileTimeErrorCode.URI_DOES_NOT_EXIST);
@@ -1149,7 +1148,7 @@
expect(driver.getCachedResult(a), isNull);
driver.priorityFiles = [a];
- ResolvedUnitResult result = await driver.getResult(a);
+ ResolvedUnitResult result = (await driver.getResult(a))!;
expect(driver.getCachedResult(a), same(result));
}
@@ -1158,7 +1157,7 @@
String content = 'int f() => 42 + bar();';
addTestFile(content, priority: true);
- ErrorsResult result = await driver.getErrors(testFile);
+ var result = (await driver.getErrors(testFile))!;
expect(result.path, testFile);
expect(result.uri.toString(), 'package:test/test.dart');
expect(result.errors, hasLength(1));
@@ -1286,7 +1285,7 @@
// Ensure that [a.dart] library cycle is loaded.
// So, `a.dart` is in the library context.
- await driver.getResult(a);
+ (await driver.getResult(a))!;
// Update the file, changing its API signature.
// Note that we don't call `changeFile`.
@@ -1300,14 +1299,14 @@
expect(driver.getFileSync(a).lineInfo.lineCount, 1);
// We have not read `a.dart`, so `A` is still not declared.
- expect((await driver.getResult(b)).errors, isNotEmpty);
+ expect(((await driver.getResult(b))!).errors, isNotEmpty);
// Notify the driver that the file was changed.
driver.changeFile(a);
// So, `class A {}` is declared now.
expect(driver.getFileSync(a).lineInfo.lineCount, 2);
- expect((await driver.getResult(b)).errors, isEmpty);
+ expect(((await driver.getResult(b))!).errors, isEmpty);
}
test_getFileSync_library() async {
@@ -1343,7 +1342,7 @@
''';
addTestFile(content);
- AnalysisDriverUnitIndex index = await driver.getIndex(testFile);
+ AnalysisDriverUnitIndex index = (await driver.getIndex(testFile))!;
int unitId = index.strings.indexOf('package:test/test.dart');
int fooId = index.strings.indexOf('foo');
@@ -1396,17 +1395,17 @@
String content = 'int f() => 42;';
addTestFile(content, priority: true);
- ResolvedUnitResult result = await driver.getResult(testFile);
+ ResolvedUnitResult result = (await driver.getResult(testFile))!;
expect(result.path, testFile);
expect(result.uri.toString(), 'package:test/test.dart');
expect(result.state, ResultState.VALID);
expect(result.content, content);
- expect(result.unit, isNotNull);
+ expect(result.unit!, isNotNull);
expect(result.errors, hasLength(0));
- var f = result.unit.declarations[0] as FunctionDeclaration;
- assertType(f.declaredElement.type, 'int Function()');
- assertType(f.returnType.type, 'int');
+ var f = result.unit!.declarations[0] as FunctionDeclaration;
+ assertType(f.declaredElement!.type, 'int Function()');
+ assertType(f.returnType!.type!, 'int');
// The same result is also received through the stream.
await waitForIdleWithoutExceptions();
@@ -1428,14 +1427,14 @@
driver.addFile(b);
await waitForIdleWithoutExceptions();
- ResolvedUnitResult result = await driver.getResult(b);
+ ResolvedUnitResult result = (await driver.getResult(b))!;
expect(result.errors, isEmpty);
}
test_getResult_doesNotExist() async {
var a = convertPath('/test/lib/a.dart');
- ResolvedUnitResult result = await driver.getResult(a);
+ ResolvedUnitResult result = (await driver.getResult(a))!;
expect(result.path, a);
expect(result.uri.toString(), 'package:test/a.dart');
expect(result.state, ResultState.NOT_A_FILE);
@@ -1446,7 +1445,7 @@
String content = 'main() { int vv; }';
addTestFile(content, priority: true);
- ResolvedUnitResult result = await driver.getResult(testFile);
+ ResolvedUnitResult result = (await driver.getResult(testFile))!;
expect(result.path, testFile);
expect(result.errors, hasLength(1));
{
@@ -1469,7 +1468,7 @@
class B {}
''');
- ResolvedUnitResult result = await driver.getResult(testFile);
+ ResolvedUnitResult result = (await driver.getResult(testFile))!;
expect(result.path, testFile);
}
@@ -1481,7 +1480,7 @@
''';
addTestFile(content, priority: true);
- var result = await driver.getResult(testFile);
+ var result = (await driver.getResult(testFile))!;
expect(result.errors, isEmpty);
}
@@ -1500,7 +1499,7 @@
// No errors in b.dart
{
- ResolvedUnitResult result = await driver.getResult(b);
+ ResolvedUnitResult result = (await driver.getResult(b))!;
expect(result.errors, isEmpty);
}
@@ -1510,7 +1509,7 @@
// The unresolved URI error must be reported.
{
- ResolvedUnitResult result = await driver.getResult(b);
+ ResolvedUnitResult result = (await driver.getResult(b))!;
expect(
result.errors,
contains(predicate((AnalysisError e) =>
@@ -1523,7 +1522,7 @@
// No errors in b.dart again.
{
- ResolvedUnitResult result = await driver.getResult(b);
+ ResolvedUnitResult result = (await driver.getResult(b))!;
expect(result.errors, isEmpty);
}
}
@@ -1536,8 +1535,8 @@
''', priority: true);
await waitForIdleWithoutExceptions();
- ResolvedUnitResult result = await driver.getResult(testFile);
- _assertClassFieldType(result.unit, 'C', 'f', 'int');
+ ResolvedUnitResult result = (await driver.getResult(testFile))!;
+ _assertClassFieldType(result.unit!, 'C', 'f', 'int');
}
test_getResult_inferTypes_instanceMethod() async {
@@ -1551,9 +1550,9 @@
''', priority: true);
await waitForIdleWithoutExceptions();
- ResolvedUnitResult result = await driver.getResult(testFile);
- _assertClassMethodReturnType(result.unit, 'A', 'm', 'int');
- _assertClassMethodReturnType(result.unit, 'B', 'm', 'int');
+ ResolvedUnitResult result = (await driver.getResult(testFile))!;
+ _assertClassMethodReturnType(result.unit!, 'A', 'm', 'int');
+ _assertClassMethodReturnType(result.unit!, 'B', 'm', 'int');
}
test_getResult_invalid_annotation_functionAsConstructor() async {
@@ -1564,8 +1563,8 @@
class C {}
''', priority: true);
- ResolvedUnitResult result = await driver.getResult(testFile);
- ClassDeclaration c = result.unit.declarations[1] as ClassDeclaration;
+ ResolvedUnitResult result = (await driver.getResult(testFile))!;
+ ClassDeclaration c = result.unit!.declarations[1] as ClassDeclaration;
Annotation a = c.metadata[0];
expect(a.name.name, 'fff');
expect(a.name.staticElement, isFunctionElement);
@@ -1591,7 +1590,7 @@
''';
addTestFile(content);
- ResolvedUnitResult result = await driver.getResult(testFile);
+ ResolvedUnitResult result = (await driver.getResult(testFile))!;
expect(result.path, testFile);
}
@@ -1603,12 +1602,12 @@
''';
addTestFile(content, priority: true);
- ResolvedUnitResult result = await driver.getResult(testFile);
+ ResolvedUnitResult result = (await driver.getResult(testFile))!;
expect(result.path, testFile);
// Has only exports for valid URIs.
List<ExportElement> imports = result.libraryElement.exports;
expect(imports.map((import) {
- return import.exportedLibrary?.source?.uri?.toString();
+ return import.exportedLibrary?.source.uri.toString();
}), ['dart:async', null, 'dart:math']);
}
@@ -1620,12 +1619,12 @@
''';
addTestFile(content, priority: true);
- ResolvedUnitResult result = await driver.getResult(testFile);
+ ResolvedUnitResult result = (await driver.getResult(testFile))!;
expect(result.path, testFile);
// Has only imports for valid URIs.
List<ImportElement> imports = result.libraryElement.imports;
expect(imports.map((import) {
- return import.importedLibrary?.source?.uri?.toString();
+ return import.importedLibrary?.source.uri.toString();
}), ['dart:async', null, 'dart:math', 'dart:core']);
}
@@ -1641,7 +1640,7 @@
part '';
''';
addTestFile(content);
- await driver.getResult(testFile);
+ (await driver.getResult(testFile))!;
}
test_getResult_languageVersion() async {
@@ -1651,8 +1650,8 @@
class A{}
''');
- var result = await driver.getResult(path);
- var languageVersion = result.unit.languageVersionToken;
+ var result = (await driver.getResult(path))!;
+ var languageVersion = result.unit!.languageVersionToken!;
expect(languageVersion.major, 2);
expect(languageVersion.minor, 7);
}
@@ -1688,7 +1687,7 @@
// package:my_pkg/c.dart's import is erroneous, causing y's reference to z
// to be unresolved (and therefore have type dynamic).
{
- ResolvedUnitResult result = await driver.getResult(a);
+ ResolvedUnitResult result = (await driver.getResult(a))!;
expect(result.errors, isEmpty);
}
@@ -1698,7 +1697,7 @@
// successfully imports file:///my_pkg/test/d.dart, causing y to have an
// inferred type of String.
{
- ResolvedUnitResult result = await driver.getResult(b);
+ ResolvedUnitResult result = (await driver.getResult(b))!;
List<AnalysisError> errors = result.errors;
expect(errors, hasLength(1));
expect(errors[0].errorCode, CompileTimeErrorCode.INVALID_ASSIGNMENT);
@@ -1712,7 +1711,7 @@
var V;
''';
addTestFile(content);
- await driver.getResult(testFile);
+ (await driver.getResult(testFile))!;
}
test_getResult_nameConflict_local_typeInference() async {
@@ -1726,7 +1725,7 @@
}
''';
addTestFile(content);
- await driver.getResult(testFile);
+ (await driver.getResult(testFile))!;
}
test_getResult_notAbsolutePath() async {
@@ -1739,9 +1738,9 @@
var path = convertPath('/test/lib/test.txt');
newFile(path, content: 'class A {}');
- ResolvedUnitResult result = await driver.getResult(path);
+ ResolvedUnitResult result = (await driver.getResult(path))!;
expect(result, isNotNull);
- expect(result.unit.declaredElement.types.map((e) => e.name), ['A']);
+ expect(result.unit!.declaredElement!.types.map((e) => e.name), ['A']);
}
test_getResult_recursiveFlatten() async {
@@ -1751,7 +1750,7 @@
''';
addTestFile(content);
// Should not throw exceptions.
- await driver.getResult(testFile);
+ (await driver.getResult(testFile))!;
}
test_getResult_sameFile_twoUris() async {
@@ -1773,19 +1772,19 @@
await waitForIdleWithoutExceptions();
{
- ResolvedUnitResult result = await driver.getResult(b);
- expect(_getImportSource(result.unit, 0).uri.toString(),
+ ResolvedUnitResult result = (await driver.getResult(b))!;
+ expect(_getImportSource(result.unit!, 0).uri.toString(),
'package:test/a.dart');
- _assertTopLevelVarType(result.unit, 'VB', 'A<int>');
+ _assertTopLevelVarType(result.unit!, 'VB', 'A<int>');
}
{
- ResolvedUnitResult result = await driver.getResult(c);
+ ResolvedUnitResult result = (await driver.getResult(c))!;
expect(
- _getImportSource(result.unit, 0).uri,
+ _getImportSource(result.unit!, 0).uri,
toUri('/test/lib/a.dart'),
);
- _assertTopLevelVarType(result.unit, 'VC', 'A<double>');
+ _assertTopLevelVarType(result.unit!, 'VC', 'A<double>');
}
}
@@ -1807,9 +1806,9 @@
await waitForIdleWithoutExceptions();
{
- ResolvedUnitResult result = await driver.getResult(a);
- _assertTopLevelVarType(result.unit, 'A1', 'int');
- _assertTopLevelVarType(result.unit, 'A2', 'int');
+ ResolvedUnitResult result = (await driver.getResult(a))!;
+ _assertTopLevelVarType(result.unit!, 'A1', 'int');
+ _assertTopLevelVarType(result.unit!, 'A2', 'int');
}
// Update "a" so that "A1" is now "double".
@@ -1827,37 +1826,36 @@
driver.changeFile(a);
{
- ResolvedUnitResult result = await driver.getResult(a);
- _assertTopLevelVarType(result.unit, 'A1', 'double');
- _assertTopLevelVarType(result.unit, 'A2', 'double');
+ ResolvedUnitResult result = (await driver.getResult(a))!;
+ _assertTopLevelVarType(result.unit!, 'A1', 'double');
+ _assertTopLevelVarType(result.unit!, 'A2', 'double');
}
}
test_getResult_thenRemove() async {
addTestFile('main() {}', priority: true);
- Future<ResolvedUnitResult> resultFuture = driver.getResult(testFile);
+ var resultFuture = driver.getResult(testFile);
driver.removeFile(testFile);
- ResolvedUnitResult result = await resultFuture;
- expect(result, isNotNull);
+ var result = (await resultFuture)!;
expect(result.path, testFile);
- expect(result.unit, isNotNull);
+ expect(result.unit!, isNotNull);
}
test_getResult_twoPendingFutures() async {
String content = 'main() {}';
addTestFile(content, priority: true);
- Future<ResolvedUnitResult> future1 = driver.getResult(testFile);
- Future<ResolvedUnitResult> future2 = driver.getResult(testFile);
+ var future1 = driver.getResult(testFile);
+ var future2 = driver.getResult(testFile);
// Both futures complete, with the same result.
- ResolvedUnitResult result1 = await future1;
- ResolvedUnitResult result2 = await future2;
+ ResolvedUnitResult result1 = (await future1)!;
+ ResolvedUnitResult result2 = (await future2)!;
expect(result2, same(result1));
expect(result1.path, testFile);
- expect(result1.unit, isNotNull);
+ expect(result1.unit!, isNotNull);
}
test_getSourceKind_changedFile() async {
@@ -1873,7 +1871,7 @@
// Ensure that [a.dart] library cycle is loaded.
// So, `a.dart` is in the library context.
- await driver.getResult(a);
+ (await driver.getResult(a))!;
// Update the file, changing its API signature.
// Note that we don't call `changeFile`.
@@ -1887,14 +1885,14 @@
expect(await driver.getSourceKind(a), SourceKind.PART);
// We have not read `a.dart`, so `A` is still not declared.
- expect((await driver.getResult(b)).errors, isNotEmpty);
+ expect(((await driver.getResult(b))!).errors, isNotEmpty);
// Notify the driver that the file was changed.
driver.changeFile(a);
// So, `class A {}` is declared now.
expect(await driver.getSourceKind(a), SourceKind.LIBRARY);
- expect((await driver.getResult(b)).errors, isEmpty);
+ expect(((await driver.getResult(b))!).errors, isEmpty);
}
test_getSourceKind_changeFile() async {
@@ -1948,8 +1946,7 @@
''';
addTestFile(content);
- UnitElementResult unitResult = await driver.getUnitElement(testFile);
- expect(unitResult, isNotNull);
+ UnitElementResult unitResult = (await driver.getUnitElement(testFile))!;
CompilationUnitElement unitElement = unitResult.element;
expect(unitElement.source.fullName, testFile);
expect(unitElement.functions.map((c) => c.name),
@@ -1977,8 +1974,7 @@
test_getUnitElement_notDart() async {
var path = convertPath('/test.txt');
newFile(path, content: 'class A {}');
- UnitElementResult unitResult = await driver.getUnitElement(path);
- expect(unitResult, isNotNull);
+ UnitElementResult unitResult = (await driver.getUnitElement(path))!;
expect(unitResult.element.types.map((e) => e.name), ['A']);
}
@@ -1990,7 +1986,7 @@
String signature = await driver.getUnitElementSignature(a);
expect(signature, isNotNull);
- UnitElementResult unitResult = await driver.getUnitElement(a);
+ UnitElementResult unitResult = (await driver.getUnitElement(a))!;
expect(unitResult.path, a);
expect(unitResult.signature, signature);
@@ -2015,7 +2011,7 @@
expect(driver.hasFilesToAnalyze, isFalse);
// Ask to analyze the file, so there is a file to analyze.
- Future<ResolvedUnitResult> future = driver.getResult(testFile);
+ var future = driver.getResult(testFile);
expect(driver.hasFilesToAnalyze, isTrue);
// Once analysis is done, there is nothing to analyze.
@@ -2052,7 +2048,7 @@
driver.addFile(a);
driver.addFile(b);
- await driver.getResult(b);
+ (await driver.getResult(b))!;
// Modify the library, but don't notify the driver.
// The driver should use the previous library content and elements.
@@ -2064,9 +2060,9 @@
}
''');
- var result = await driver.getResult(b);
- var c = _getTopLevelVar(result.unit, 'c');
- var typeC = c.declaredElement.type as InterfaceType;
+ var result = (await driver.getResult(b))!;
+ var c = _getTopLevelVar(result.unit!, 'c');
+ var typeC = c.declaredElement!.type as InterfaceType;
// The class C has an old field 'foo', not the new 'bar'.
expect(typeC.element.getField('foo'), isNotNull);
expect(typeC.element.getField('bar'), isNull);
@@ -2086,9 +2082,9 @@
driver.addFile(a);
driver.addFile(b);
- ResolvedUnitResult result = await driver.getResult(a);
+ ResolvedUnitResult result = (await driver.getResult(a))!;
expect(result.errors, isEmpty);
- _assertTopLevelVarType(result.unit, 'b', 'B');
+ _assertTopLevelVarType(result.unit!, 'b', 'B');
}
test_importOfNonLibrary_part_afterLibrary() async {
@@ -2111,10 +2107,10 @@
''');
// This ensures that `a.dart` linked library is cached.
- await driver.getResult(a);
+ (await driver.getResult(a))!;
// Should not fail because of considering `b.dart` part as `a.dart` library.
- await driver.getResult(c);
+ (await driver.getResult(c))!;
}
test_instantiateToBounds_invalid() async {
@@ -2213,11 +2209,11 @@
}
test_missingDartLibrary_async() async {
- var asyncPath = sdk.mapDartUri('dart:async').fullName;
+ var asyncPath = sdk.mapDartUri('dart:async')!.fullName;
getFile(asyncPath).delete();
addTestFile('class C {}');
- ErrorsResult result = await driver.getErrors(testFile);
+ ErrorsResult result = (await driver.getErrors(testFile))!;
expect(result.errors, hasLength(1));
AnalysisError error = result.errors[0];
@@ -2225,11 +2221,11 @@
}
test_missingDartLibrary_core() async {
- var corePath = sdk.mapDartUri('dart:core').fullName;
+ var corePath = sdk.mapDartUri('dart:core')!.fullName;
getFile(corePath).delete();
addTestFile('class C {}');
- ErrorsResult result = await driver.getErrors(testFile);
+ ErrorsResult result = (await driver.getErrors(testFile))!;
expect(result.errors, hasLength(1));
AnalysisError error = result.errors[0];
@@ -2249,7 +2245,7 @@
// Ensure that [a.dart] library cycle is loaded.
// So, `a.dart` is in the library context.
- await driver.getResult(a);
+ (await driver.getResult(a))!;
// Update the file, changing its API signature.
// Note that we don't call `changeFile`.
@@ -2267,7 +2263,7 @@
// We have not read `a.dart`, so `A` is still not declared.
{
- var bResult = await driver.getResult(b);
+ var bResult = (await driver.getResult(b))!;
expect(bResult.errors, isNotEmpty);
}
@@ -2280,7 +2276,7 @@
expect(parseResult.unit.declarations, hasLength(1));
}
{
- var bResult = await driver.getResult(b);
+ var bResult = (await driver.getResult(b))!;
expect(bResult.errors, isEmpty);
}
}
@@ -2313,7 +2309,7 @@
// Ensure that [a.dart] library cycle is loaded.
// So, `a.dart` is in the library context.
- await driver.getResult(a);
+ (await driver.getResult(a))!;
// Update the file, changing its API signature.
// Note that we don't call `changeFile`.
@@ -2331,7 +2327,7 @@
// We have not read `a.dart`, so `A` is still not declared.
{
- var bResult = await driver.getResult(b);
+ var bResult = (await driver.getResult(b))!;
expect(bResult.errors, isNotEmpty);
}
@@ -2344,7 +2340,7 @@
expect(parseResult.unit.declarations, hasLength(1));
}
{
- var bResult = await driver.getResult(b);
+ var bResult = (await driver.getResult(b))!;
expect(bResult.errors, isEmpty);
}
}
@@ -2401,7 +2397,7 @@
''');
var parseResult = driver.parseFileSync(path);
- var languageVersion = parseResult.unit.languageVersionToken;
+ var languageVersion = parseResult.unit.languageVersionToken!;
expect(languageVersion.major, 2);
expect(languageVersion.minor, 7);
}
@@ -2457,13 +2453,13 @@
// Process a.dart so that we know that it's a library for c.dart later.
{
- ErrorsResult result = await driver.getErrors(a);
+ ErrorsResult result = (await driver.getErrors(a))!;
expect(result.errors, isEmpty);
}
// c.dart does not have errors in the context of a.dart
{
- ErrorsResult result = await driver.getErrors(c);
+ ErrorsResult result = (await driver.getErrors(c))!;
expect(result.errors, isEmpty);
}
}
@@ -2493,7 +2489,7 @@
// c.dart is resolve in the context of a.dart, so have no errors
{
- ErrorsResult result = await driver.getErrors(c);
+ ErrorsResult result = (await driver.getErrors(c))!;
expect(result.errors, isEmpty);
}
}
@@ -2523,17 +2519,17 @@
// Process a.dart so that we know that it's a library for c.dart later.
{
- ResolvedUnitResult result = await driver.getResult(a);
+ ResolvedUnitResult result = (await driver.getResult(a))!;
expect(result.errors, isEmpty);
- _assertTopLevelVarType(result.unit, 'c', 'C');
+ _assertTopLevelVarType(result.unit!, 'c', 'C');
}
// Now c.dart can be resolved without errors in the context of a.dart
{
- ResolvedUnitResult result = await driver.getResult(c);
+ ResolvedUnitResult result = (await driver.getResult(c))!;
expect(result.errors, isEmpty);
- _assertTopLevelVarType(result.unit, 'a', 'A');
- _assertTopLevelVarType(result.unit, 'b', 'B');
+ _assertTopLevelVarType(result.unit!, 'a', 'A');
+ _assertTopLevelVarType(result.unit!, 'b', 'B');
}
}
@@ -2562,10 +2558,10 @@
// b.dart will be analyzed after a.dart is analyzed.
// So, A and B references are resolved.
- ResolvedUnitResult result = await driver.getResult(c);
+ ResolvedUnitResult result = (await driver.getResult(c))!;
expect(result.errors, isEmpty);
- _assertTopLevelVarType(result.unit, 'a', 'A');
- _assertTopLevelVarType(result.unit, 'b', 'B');
+ _assertTopLevelVarType(result.unit!, 'a', 'A');
+ _assertTopLevelVarType(result.unit!, 'b', 'B');
}
test_part_getResult_changePart_invalidatesLibraryCycle() async {
@@ -2578,7 +2574,7 @@
driver.addFile(a);
// Analyze the library without the part.
- await driver.getResult(a);
+ (await driver.getResult(a))!;
// Create the part file.
// This should invalidate library file state (specifically the library
@@ -2590,7 +2586,7 @@
driver.changeFile(b);
// This should not crash.
- var result = await driver.getResult(b);
+ var result = (await driver.getResult(b))!;
expect(result.errors, isEmpty);
}
@@ -2607,9 +2603,9 @@
// There is no library which c.dart is a part of, so it has unresolved
// A and B references.
- ResolvedUnitResult result = await driver.getResult(c);
+ ResolvedUnitResult result = (await driver.getResult(c))!;
expect(result.errors, isNotEmpty);
- expect(result.unit, isNotNull);
+ expect(result.unit!, isNotNull);
}
test_part_getUnitElement_afterLibrary() async {
@@ -2636,11 +2632,11 @@
driver.addFile(c);
// Process a.dart so that we know that it's a library for c.dart later.
- await driver.getResult(a);
+ (await driver.getResult(a))!;
// c.dart is resolve in the context of a.dart, knows 'A' and 'B'.
{
- UnitElementResult result = await driver.getUnitElement(c);
+ UnitElementResult result = (await driver.getUnitElement(c))!;
var partUnit = result.element;
assertType(partUnit.topLevelVariables[0].type, 'A');
@@ -2676,7 +2672,7 @@
// c.dart is resolve in the context of a.dart, knows 'A' and 'B'.
{
- UnitElementResult result = await driver.getUnitElement(c);
+ UnitElementResult result = (await driver.getUnitElement(c))!;
var partUnit = result.element;
assertType(partUnit.topLevelVariables[0].type, 'A');
@@ -2700,7 +2696,7 @@
// We don't know the library of c.dart, but we should get a result.
// The types "A" and "B" are unresolved.
{
- UnitElementResult result = await driver.getUnitElement(c);
+ UnitElementResult result = (await driver.getUnitElement(c))!;
var partUnit = result.element;
expect(partUnit.topLevelVariables[0].name, 'a');
@@ -2738,7 +2734,7 @@
String signatureBefore = await driver.getUnitElementSignature(c);
// Process a.dart so that we know that it's a library for c.dart later.
- await driver.getResult(a);
+ (await driver.getResult(a))!;
// The before and after signatures must be the same.
String signatureAfter = await driver.getUnitElementSignature(c);
@@ -2881,7 +2877,7 @@
// analyze the delayed parts.
ResolvedUnitResult result = allResults.lastWhere((r) => r.path == c);
expect(result.errors, isEmpty);
- expect(result.unit, isNotNull);
+ expect(result.unit!, isNotNull);
}
test_removeFile_changeFile_implicitlyAnalyzed() async {
@@ -2902,11 +2898,11 @@
expect(allResults, hasLength(2));
{
ResolvedUnitResult ar = allResults.firstWhere((r) => r.path == a);
- _assertTopLevelVarType(ar.unit, 'A', 'int');
+ _assertTopLevelVarType(ar.unit!, 'A', 'int');
}
{
ResolvedUnitResult br = allResults.firstWhere((r) => r.path == b);
- _assertTopLevelVarType(br.unit, 'B', 'int');
+ _assertTopLevelVarType(br.unit!, 'B', 'int');
}
allResults.clear();
@@ -2922,7 +2918,7 @@
expect(allResults, hasLength(1));
{
ResolvedUnitResult ar = allResults.firstWhere((r) => r.path == a);
- _assertTopLevelVarType(ar.unit, 'A', 'double');
+ _assertTopLevelVarType(ar.unit!, 'A', 'double');
}
}
@@ -3067,7 +3063,7 @@
driver.changeFile(b);
await waitForIdleWithoutExceptions();
- List<String> analyzedPaths = allResults.map((r) => r.path).toList();
+ List<String> analyzedPaths = allResults.map((r) => r.path!).toList();
// The changed file must be the first.
expect(analyzedPaths[0], b);
@@ -3109,7 +3105,7 @@
driver.changeFile(a);
await waitForIdleWithoutExceptions();
- List<String> analyzedPaths = allResults.map((r) => r.path).toList();
+ List<String> analyzedPaths = allResults.map((r) => r.path!).toList();
// The changed files must be the first.
expect(analyzedPaths[0], a);
@@ -3131,12 +3127,12 @@
expect(result.path, testFile);
expect(result.uri.toString(), 'package:test/test.dart');
expect(result.content, content);
- expect(result.unit, isNotNull);
+ expect(result.unit!, isNotNull);
expect(result.errors, hasLength(0));
- var f = result.unit.declarations[0] as FunctionDeclaration;
- assertType(f.declaredElement.type, 'int Function()');
- assertType(f.returnType.type, 'int');
+ var f = result.unit!.declarations[0] as FunctionDeclaration;
+ assertType(f.declaredElement!.type, 'int Function()');
+ assertType(f.returnType!.type!, 'int');
}
test_results_priorityFirst() async {
@@ -3156,7 +3152,7 @@
expect(allResults, hasLength(3));
ResolvedUnitResult result = allResults[0];
expect(result.path, b);
- expect(result.unit, isNotNull);
+ expect(result.unit!, isNotNull);
expect(result.errors, hasLength(0));
}
@@ -3259,21 +3255,21 @@
void _assertClassFieldType(CompilationUnit unit, String className,
String fieldName, String expected) {
var node = _getClassField(unit, className, fieldName);
- var type = node.declaredElement.type;
+ var type = node.declaredElement!.type;
assertType(type, expected);
}
void _assertClassMethodReturnType(CompilationUnit unit, String className,
String fieldName, String expected) {
var node = _getClassMethod(unit, className, fieldName);
- var type = node.declaredElement.returnType;
+ var type = node.declaredElement!.returnType;
assertType(type, expected);
}
void _assertTopLevelVarType(
CompilationUnit unit, String name, String expected) {
VariableDeclaration variable = _getTopLevelVar(unit, name);
- assertType(variable.declaredElement.type, expected);
+ assertType(variable.declaredElement!.type, expected);
}
void _expectCircularityError(EvaluationResultImpl evaluationResult) {
@@ -3325,11 +3321,11 @@
ImportElement _getImportElement(CompilationUnit unit, int directiveIndex) {
var import = unit.directives[directiveIndex] as ImportDirective;
- return import.element;
+ return import.element!;
}
Source _getImportSource(CompilationUnit unit, int directiveIndex) {
- return _getImportElement(unit, directiveIndex).importedLibrary.source;
+ return _getImportElement(unit, directiveIndex).importedLibrary!.source;
}
VariableDeclaration _getTopLevelVar(CompilationUnit unit, String name) {
diff --git a/pkg/analyzer/test/src/dart/analysis/experiments_test.dart b/pkg/analyzer/test/src/dart/analysis/experiments_test.dart
index 422cce7..573bc1b 100644
--- a/pkg/analyzer/test/src/dart/analysis/experiments_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/experiments_test.dart
@@ -4,7 +4,6 @@
import 'package:analyzer/src/dart/analysis/experiments.dart';
import 'package:analyzer/src/dart/analysis/experiments_impl.dart';
-import 'package:meta/meta.dart';
import 'package:pub_semver/pub_semver.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -37,8 +36,8 @@
}
ExperimentStatus fromStrings2({
- @required Version sdkLanguageVersion,
- @required List<String> flags,
+ required Version sdkLanguageVersion,
+ required List<String> flags,
}) {
return overrideKnownFeatures(knownFeatures, () {
return ExperimentStatus.fromStrings2(
@@ -375,12 +374,14 @@
expect(getFlags(status), [true, true, true]);
// Restricting to the SDK version does not change anything.
- var status2 = status.restrictToVersion(Version.parse('1.5.0'));
+ var status2 =
+ status.restrictToVersion(Version.parse('1.5.0')) as ExperimentStatus;
assertSdkLanguageVersion(status2, '1.5');
expect(getFlags(status2), [true, true, true]);
// Restricting to the previous version disables the experiments.
- var status3 = status.restrictToVersion(Version.parse('1.4.0'));
+ var status3 =
+ status.restrictToVersion(Version.parse('1.4.0')) as ExperimentStatus;
assertSdkLanguageVersion(status3, '1.5');
expect(getFlags(status3), [true, false, false]);
});
@@ -432,12 +433,14 @@
expect(getFlags(status), [true, true, true, true]);
// Restricting to the SDK version does not change anything.
- var status2 = status.restrictToVersion(Version.parse('1.5.0'));
+ var status2 =
+ status.restrictToVersion(Version.parse('1.5.0')) as ExperimentStatus;
assertSdkLanguageVersion(status2, '1.5');
expect(getFlags(status2), [true, true, true, true]);
// Restricting to a version disables some experiments.
- var status3 = status.restrictToVersion(Version.parse('1.4.0'));
+ var status3 =
+ status.restrictToVersion(Version.parse('1.4.0')) as ExperimentStatus;
assertSdkLanguageVersion(status3, '1.5');
expect(getFlags(status3), [true, true, false, false]);
});
diff --git a/pkg/analyzer/test/src/dart/analysis/feature_set_provider_test.dart b/pkg/analyzer/test/src/dart/analysis/feature_set_provider_test.dart
index 441fe5b..0a48c66 100644
--- a/pkg/analyzer/test/src/dart/analysis/feature_set_provider_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/feature_set_provider_test.dart
@@ -14,7 +14,6 @@
import 'package:analyzer/src/source/package_map_resolver.dart';
import 'package:analyzer/src/test_utilities/mock_sdk.dart';
import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart';
-import 'package:meta/meta.dart';
import 'package:pub_semver/pub_semver.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -27,9 +26,9 @@
@reflectiveTest
class FeatureSetProviderTest with ResourceProviderMixin {
- MockSdk mockSdk;
- SourceFactory sourceFactory;
- FeatureSetProvider provider;
+ late final MockSdk mockSdk;
+ late SourceFactory sourceFactory;
+ late FeatureSetProvider provider;
void setUp() {
newFile('/test/lib/test.dart', content: '');
@@ -264,9 +263,9 @@
);
void check({
- @required String uriStr,
- @required String posixPath,
- @required Version expected,
+ required String uriStr,
+ required String posixPath,
+ required Version expected,
}) {
var uri = Uri.parse(uriStr);
var path = convertPath(posixPath);
@@ -426,7 +425,7 @@
return PackageMapUriResolver(resourceProvider, map);
}
- void _createSourceFactory({UriResolver packageUriResolver}) {
+ void _createSourceFactory({UriResolver? packageUriResolver}) {
var resolvers = <UriResolver>[];
if (packageUriResolver != null) {
resolvers.add(packageUriResolver);
@@ -441,14 +440,14 @@
FeatureSet _getPathFeatureSet(String path) {
path = convertPath(path);
var fileUri = toUri(path);
- var fileSource = sourceFactory.forUri2(fileUri);
- var uri = sourceFactory.restoreUri(fileSource);
+ var fileSource = sourceFactory.forUri2(fileUri)!;
+ var uri = sourceFactory.restoreUri(fileSource)!;
return provider.getFeatureSet(path, uri);
}
FeatureSet _getSdkFeatureSet(String uriStr) {
var uri = Uri.parse(uriStr);
- var path = sourceFactory.forUri2(uri).fullName;
+ var path = sourceFactory.forUri2(uri)!.fullName;
return provider.getFeatureSet(path, uri);
}
diff --git a/pkg/analyzer/test/src/dart/analysis/file_byte_store_test.dart b/pkg/analyzer/test/src/dart/analysis/file_byte_store_test.dart
index af1072d..c767dce 100644
--- a/pkg/analyzer/test/src/dart/analysis/file_byte_store_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/file_byte_store_test.dart
@@ -18,13 +18,13 @@
test_get_bad_notEnoughBytes() {
List<int> bytes = <int>[1, 2, 3];
- List<int> data = validator.getData(bytes);
+ var data = validator.getData(bytes);
expect(data, isNull);
}
test_get_bad_notEnoughBytes_zero() {
List<int> bytes = <int>[];
- List<int> data = validator.getData(bytes);
+ var data = validator.getData(bytes);
expect(data, isNull);
}
@@ -36,20 +36,20 @@
expect(bytes[bytes.length - 1], isNot(42));
bytes[bytes.length - 1] = 42;
- List<int> data2 = validator.getData(bytes);
+ var data2 = validator.getData(bytes);
expect(data2, isNull);
}
test_get_bad_wrongVersion() {
List<int> bytes = <int>[0xBA, 0xDA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00];
- List<int> data = validator.getData(bytes);
+ var data = validator.getData(bytes);
expect(data, isNull);
}
test_get_good() {
List<int> data = <int>[1, 2, 3];
List<int> bytes = validator.wrapData(data);
- List<int> data2 = validator.getData(bytes);
+ var data2 = validator.getData(bytes);
expect(data2, hasLength(3));
expect(data2, data);
}
@@ -57,7 +57,7 @@
test_get_good_zeroBytesData() {
List<int> data = <int>[];
List<int> bytes = validator.wrapData(data);
- List<int> data2 = validator.getData(bytes);
+ var data2 = validator.getData(bytes);
expect(data2, hasLength(0));
expect(data2, data);
}
diff --git a/pkg/analyzer/test/src/dart/analysis/file_state_test.dart b/pkg/analyzer/test/src/dart/analysis/file_state_test.dart
index 56774cd..13f4be9 100644
--- a/pkg/analyzer/test/src/dart/analysis/file_state_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/file_state_test.dart
@@ -36,7 +36,7 @@
@reflectiveTest
class FileSystemStateTest with ResourceProviderMixin {
- MockSdk sdk;
+ late final MockSdk sdk;
final ByteStore byteStore = MemoryByteStore();
final FileContentOverlay contentOverlay = FileContentOverlay();
@@ -44,10 +44,10 @@
final StringBuffer logBuffer = StringBuffer();
final _GeneratedUriResolverMock generatedUriResolver =
_GeneratedUriResolverMock();
- SourceFactory sourceFactory;
- PerformanceLog logger;
+ late final SourceFactory sourceFactory;
+ late final PerformanceLog logger;
- FileSystemState fileSystemState;
+ late final FileSystemState fileSystemState;
void setUp() {
logger = PerformanceLog(logBuffer);
@@ -194,21 +194,21 @@
FileState file = fileSystemState.getFileForPath(a);
expect(_excludeSdk(file.importedFiles), hasLength(2));
- expect(file.importedFiles[0].path, a1);
- expect(file.importedFiles[0].uri, Uri.parse('package:aaa/a1.dart'));
- expect(file.importedFiles[0].source, isNotNull);
+ expect(file.importedFiles[0]!.path, a1);
+ expect(file.importedFiles[0]!.uri, Uri.parse('package:aaa/a1.dart'));
+ expect(file.importedFiles[0]!.source, isNotNull);
_assertIsUnresolvedFile(file.importedFiles[1]);
expect(_excludeSdk(file.exportedFiles), hasLength(2));
- expect(file.exportedFiles[0].path, a2);
- expect(file.exportedFiles[0].uri, Uri.parse('package:aaa/a2.dart'));
- expect(file.exportedFiles[0].source, isNotNull);
+ expect(file.exportedFiles[0]!.path, a2);
+ expect(file.exportedFiles[0]!.uri, Uri.parse('package:aaa/a2.dart'));
+ expect(file.exportedFiles[0]!.source, isNotNull);
_assertIsUnresolvedFile(file.exportedFiles[1]);
expect(_excludeSdk(file.partedFiles), hasLength(2));
- expect(file.partedFiles[0].path, a3);
- expect(file.partedFiles[0].uri, Uri.parse('package:aaa/a3.dart'));
- expect(file.partedFiles[0].source, isNotNull);
+ expect(file.partedFiles[0]!.path, a3);
+ expect(file.partedFiles[0]!.uri, Uri.parse('package:aaa/a3.dart'));
+ expect(file.partedFiles[0]!.source, isNotNull);
_assertIsUnresolvedFile(file.partedFiles[1]);
}
@@ -240,24 +240,24 @@
expect(file.unlinked2, isNotNull);
expect(_excludeSdk(file.importedFiles), hasLength(2));
- expect(file.importedFiles[0].path, a2);
- expect(file.importedFiles[0].uri, Uri.parse('package:aaa/a2.dart'));
- expect(file.importedFiles[0].source, isNotNull);
- expect(file.importedFiles[1].path, b1);
- expect(file.importedFiles[1].uri, Uri.parse('package:bbb/b1.dart'));
- expect(file.importedFiles[1].source, isNotNull);
+ expect(file.importedFiles[0]!.path, a2);
+ expect(file.importedFiles[0]!.uri, Uri.parse('package:aaa/a2.dart'));
+ expect(file.importedFiles[0]!.source, isNotNull);
+ expect(file.importedFiles[1]!.path, b1);
+ expect(file.importedFiles[1]!.uri, Uri.parse('package:bbb/b1.dart'));
+ expect(file.importedFiles[1]!.source, isNotNull);
expect(file.exportedFiles, hasLength(2));
- expect(file.exportedFiles[0].path, b2);
- expect(file.exportedFiles[0].uri, Uri.parse('package:bbb/b2.dart'));
- expect(file.exportedFiles[0].source, isNotNull);
- expect(file.exportedFiles[1].path, a3);
- expect(file.exportedFiles[1].uri, Uri.parse('package:aaa/a3.dart'));
- expect(file.exportedFiles[1].source, isNotNull);
+ expect(file.exportedFiles[0]!.path, b2);
+ expect(file.exportedFiles[0]!.uri, Uri.parse('package:bbb/b2.dart'));
+ expect(file.exportedFiles[0]!.source, isNotNull);
+ expect(file.exportedFiles[1]!.path, a3);
+ expect(file.exportedFiles[1]!.uri, Uri.parse('package:aaa/a3.dart'));
+ expect(file.exportedFiles[1]!.source, isNotNull);
expect(file.partedFiles, hasLength(1));
- expect(file.partedFiles[0].path, a4);
- expect(file.partedFiles[0].uri, Uri.parse('package:aaa/a4.dart'));
+ expect(file.partedFiles[0]!.path, a4);
+ expect(file.partedFiles[0]!.uri, Uri.parse('package:aaa/a4.dart'));
expect(file.libraryFiles, [file, file.partedFiles[0]]);
@@ -283,9 +283,9 @@
part 'not_dart.txt';
''');
FileState file = fileSystemState.getFileForPath(a);
- expect(_excludeSdk(file.importedFiles).map((f) => f.path), [b, not_dart]);
- expect(file.exportedFiles.map((f) => f.path), [c, not_dart]);
- expect(file.partedFiles.map((f) => f.path), [d, not_dart]);
+ expect(_excludeSdk(file.importedFiles).map((f) => f!.path), [b, not_dart]);
+ expect(file.exportedFiles.map((f) => f!.path), [c, not_dart]);
+ expect(file.partedFiles.map((f) => f!.path), [d, not_dart]);
expect(_excludeSdk(fileSystemState.knownFilePaths),
unorderedEquals([a, b, c, d, not_dart]));
}
@@ -357,8 +357,8 @@
var fileUri = toUri(path);
// The files with `package:` and `file:` URIs are different.
- FileState filePackageUri = fileSystemState.getFileForUri(packageUri);
- FileState fileFileUri = fileSystemState.getFileForUri(fileUri);
+ FileState filePackageUri = fileSystemState.getFileForUri(packageUri)!;
+ FileState fileFileUri = fileSystemState.getFileForUri(fileUri)!;
expect(filePackageUri, isNot(same(fileFileUri)));
expect(filePackageUri.path, path);
@@ -665,7 +665,7 @@
expect(_excludeSdk(actual), unorderedEquals(expected));
}
- void _assertIsUnresolvedFile(FileState file) {
+ void _assertIsUnresolvedFile(FileState? file) {
expect(file, isNull);
}
@@ -682,11 +682,11 @@
}
List<T> _excludeSdk<T>(Iterable<T> files) {
- return files.where((Object file) {
+ return files.where((file) {
if (file is LibraryCycle) {
return !file.libraries.any((file) => file.uri.isScheme('dart'));
} else if (file is FileState) {
- return file.uri?.scheme != 'dart';
+ return file.uri.scheme != 'dart';
} else if (file == null) {
return true;
} else {
@@ -701,9 +701,9 @@
}
class _GeneratedUriResolverMock implements UriResolver {
- Source Function(Uri, Uri) resolveAbsoluteFunction;
+ Source? Function(Uri, Uri?)? resolveAbsoluteFunction;
- Uri Function(Source) restoreAbsoluteFunction;
+ Uri? Function(Source)? restoreAbsoluteFunction;
@override
noSuchMethod(Invocation invocation) {
@@ -711,17 +711,17 @@
}
@override
- Source resolveAbsolute(Uri uri, [Uri actualUri]) {
+ Source? resolveAbsolute(Uri uri, [Uri? actualUri]) {
if (resolveAbsoluteFunction != null) {
- return resolveAbsoluteFunction(uri, actualUri);
+ return resolveAbsoluteFunction!(uri, actualUri);
}
return null;
}
@override
- Uri restoreAbsolute(Source source) {
+ Uri? restoreAbsolute(Source source) {
if (restoreAbsoluteFunction != null) {
- return restoreAbsoluteFunction(source);
+ return restoreAbsoluteFunction!(source);
}
return null;
}
diff --git a/pkg/analyzer/test/src/dart/analysis/index_test.dart b/pkg/analyzer/test/src/dart/analysis/index_test.dart
index 3ba7ab9..808c5fb 100644
--- a/pkg/analyzer/test/src/dart/analysis/index_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/index_test.dart
@@ -124,7 +124,7 @@
class A {}
''');
ClassElement elementA = findElement.class_('A');
- ClassElement elementObject = elementA.supertype.element;
+ ClassElement elementObject = elementA.supertype!.element;
assertThat(elementObject).isExtendedAt('A {}', true, length: 0);
}
@@ -264,7 +264,7 @@
math.loadLibrary(); // 2
}
''');
- LibraryElement mathLib = findElement.import('dart:math').importedLibrary;
+ LibraryElement mathLib = findElement.import('dart:math').importedLibrary!;
FunctionElement element = mathLib.loadLibraryFunction;
assertThat(element).isInvokedAt('loadLibrary(); // 1', true);
assertThat(element).isInvokedAt('loadLibrary(); // 2', true);
@@ -330,11 +330,11 @@
''');
var intMethod = findNode.methodDeclaration('foo() {} // int');
- assertThat(intMethod.declaredElement)
+ assertThat(intMethod.declaredElement!)
..isInvokedAt('foo(); // int ref', true);
var doubleMethod = findNode.methodDeclaration('foo() {} // double');
- assertThat(doubleMethod.declaredElement)
+ assertThat(doubleMethod.declaredElement!)
..isInvokedAt('foo(); // double ref', true);
}
@@ -476,7 +476,7 @@
}
}''');
FieldElement field = findElement.field('field');
- assertThat(field.getter)
+ assertThat(field.getter!)
..isReferencedAt('field(); // q', true)
..isReferencedAt('field(); // nq', false);
}
@@ -609,7 +609,7 @@
await _indexTestUnit('''
export 'lib.dart';
''');
- var element = findElement.export('package:test/lib.dart').exportedLibrary;
+ var element = findElement.export('package:test/lib.dart').exportedLibrary!;
assertThat(element)..isReferencedAt("'lib.dart'", true, length: 10);
}
@@ -620,7 +620,7 @@
await _indexTestUnit('''
import 'lib.dart';
''');
- var element = findElement.import('package:test/lib.dart').importedLibrary;
+ var element = findElement.import('package:test/lib.dart').importedLibrary!;
assertThat(element)..isReferencedAt("'lib.dart'", true, length: 10);
}
@@ -733,8 +733,8 @@
''');
// has ".named()", but does not have "named()"
var constructorName = findNode.constructorName('.named();');
- var offsetWithoutDot = constructorName.name.offset;
- var offsetWithDot = constructorName.period.offset;
+ var offsetWithoutDot = constructorName.name!.offset;
+ var offsetWithDot = constructorName.period!.offset;
expect(index.usedElementOffsets, isNot(contains(offsetWithoutDot)));
expect(index.usedElementOffsets, contains(offsetWithDot));
}
@@ -803,8 +803,8 @@
}
''');
FieldElement field = findElement.field('field');
- PropertyAccessorElement getter = field.getter;
- PropertyAccessorElement setter = field.setter;
+ PropertyAccessorElement getter = field.getter!;
+ PropertyAccessorElement setter = field.setter!;
// A()
assertThat(field)..isWrittenAt('field});', true);
// m()
@@ -833,8 +833,8 @@
// aaa
{
FieldElement field = findElement.field('aaa');
- PropertyAccessorElement getter = field.getter;
- PropertyAccessorElement setter = field.setter;
+ PropertyAccessorElement getter = field.getter!;
+ PropertyAccessorElement setter = field.setter!;
assertThat(field)..isWrittenAt('aaa, ', true);
assertThat(getter)..isReferencedAt('aaa);', false);
assertThat(setter)..isReferencedAt('aaa = 1;', false);
@@ -842,8 +842,8 @@
// bbb
{
FieldElement field = findElement.field('bbb');
- PropertyAccessorElement getter = field.getter;
- PropertyAccessorElement setter = field.setter;
+ PropertyAccessorElement getter = field.getter!;
+ PropertyAccessorElement setter = field.setter!;
assertThat(field)..isWrittenAt('bbb) {}', true);
assertThat(getter)..isReferencedAt('bbb);', false);
assertThat(setter)..isReferencedAt('bbb = 2;', false);
@@ -863,11 +863,12 @@
}
''');
ClassElement enumElement = findElement.enum_('MyEnum');
- assertThat(enumElement.getGetter('values'))
+ assertThat(enumElement.getGetter('values')!)
..isReferencedAt('values);', true);
- assertThat(enumElement.getGetter('index'))..isReferencedAt('index);', true);
- assertThat(enumElement.getGetter('A'))..isReferencedAt('A);', true);
- assertThat(enumElement.getGetter('B'))..isReferencedAt('B);', true);
+ assertThat(enumElement.getGetter('index')!)
+ ..isReferencedAt('index);', true);
+ assertThat(enumElement.getGetter('A')!)..isReferencedAt('A);', true);
+ assertThat(enumElement.getGetter('B')!)..isReferencedAt('B);', true);
}
test_isReferencedBy_FieldElement_synthetic_hasGetter() async {
@@ -878,7 +879,7 @@
}
''');
ClassElement element2 = findElement.class_('A');
- assertThat(element2.getField('f')).isWrittenAt('f = 42', true);
+ assertThat(element2.getField('f')!).isWrittenAt('f = 42', true);
}
test_isReferencedBy_FieldElement_synthetic_hasGetterSetter() async {
@@ -890,7 +891,7 @@
}
''');
ClassElement element2 = findElement.class_('A');
- assertThat(element2.getField('f')).isWrittenAt('f = 42', true);
+ assertThat(element2.getField('f')!).isWrittenAt('f = 42', true);
}
test_isReferencedBy_FieldElement_synthetic_hasSetter() async {
@@ -901,7 +902,7 @@
}
''');
ClassElement element2 = findElement.class_('A');
- assertThat(element2.getField('f')).isWrittenAt('f = 42', true);
+ assertThat(element2.getField('f')!).isWrittenAt('f = 42', true);
}
test_isReferencedBy_FunctionElement() async {
@@ -1171,16 +1172,16 @@
var intGetter = findNode.methodDeclaration('0; // int getter');
var intSetter = findNode.methodDeclaration('{} // int setter');
- assertThat(intGetter.declaredElement)
+ assertThat(intGetter.declaredElement!)
..isReferencedAt('foo; // int getter ref', true);
- assertThat(intSetter.declaredElement)
+ assertThat(intSetter.declaredElement!)
..isReferencedAt('foo = 0; // int setter ref', true);
var doubleGetter = findNode.methodDeclaration('0; // double getter');
var doubleSetter = findNode.methodDeclaration('{} // double setter');
- assertThat(doubleGetter.declaredElement)
+ assertThat(doubleGetter.declaredElement!)
..isReferencedAt('foo; // double getter ref', true);
- assertThat(doubleSetter.declaredElement)
+ assertThat(doubleSetter.declaredElement!)
..isReferencedAt('foo = 0; // double setter ref', true);
}
@@ -1212,10 +1213,10 @@
}''');
TopLevelVariableElement variable = importFindLib().topVar('V');
assertThat(variable)..isReferencedAt('V; // imp', true);
- assertThat(variable.getter)
+ assertThat(variable.getter!)
..isReferencedAt('V); // q', true)
..isReferencedAt('V); // nq', false);
- assertThat(variable.setter)
+ assertThat(variable.setter!)
..isReferencedAt('V = 5; // q', true)
..isReferencedAt('V = 5; // nq', false);
}
@@ -1505,7 +1506,7 @@
expect(relations, hasLength(expectedCount));
}
- void isAncestorOf(String search, {int length}) {
+ void isAncestorOf(String search, {int? length}) {
test._assertHasRelation(
element,
relations,
@@ -1513,7 +1514,7 @@
test._expectedLocation(search, false, length: length));
}
- void isExtendedAt(String search, bool isQualified, {int length}) {
+ void isExtendedAt(String search, bool isQualified, {int? length}) {
test._assertHasRelation(
element,
relations,
@@ -1521,7 +1522,7 @@
test._expectedLocation(search, isQualified, length: length));
}
- void isImplementedAt(String search, bool isQualified, {int length}) {
+ void isImplementedAt(String search, bool isQualified, {int? length}) {
test._assertHasRelation(
element,
relations,
@@ -1529,12 +1530,12 @@
test._expectedLocation(search, isQualified, length: length));
}
- void isInvokedAt(String search, bool isQualified, {int length}) {
+ void isInvokedAt(String search, bool isQualified, {int? length}) {
test._assertHasRelation(element, relations, IndexRelationKind.IS_INVOKED_BY,
test._expectedLocation(search, isQualified, length: length));
}
- void isMixedInAt(String search, bool isQualified, {int length}) {
+ void isMixedInAt(String search, bool isQualified, {int? length}) {
test._assertHasRelation(
element,
relations,
@@ -1542,7 +1543,7 @@
test._expectedLocation(search, isQualified, length: length));
}
- void isReferencedAt(String search, bool isQualified, {int length}) {
+ void isReferencedAt(String search, bool isQualified, {int? length}) {
test._assertHasRelation(
element,
relations,
@@ -1550,14 +1551,14 @@
test._expectedLocation(search, isQualified, length: length));
}
- void isWrittenAt(String search, bool isQualified, {int length}) {
+ void isWrittenAt(String search, bool isQualified, {int? length}) {
test._assertHasRelation(element, relations, IndexRelationKind.IS_WRITTEN_BY,
test._expectedLocation(search, isQualified, length: length));
}
}
mixin _IndexMixin on PubPackageResolutionTest {
- AnalysisDriverUnitIndex index;
+ late AnalysisDriverUnitIndex index;
_ElementIndexAssert assertThat(Element element) {
List<_Relation> relations = _getElementRelations(element);
@@ -1627,7 +1628,7 @@
}
ExpectedLocation _expectedLocation(String search, bool isQualified,
- {int length}) {
+ {int? length}) {
int offset = findNode.offset(search);
length ??= findNode.simple(search).length;
return ExpectedLocation(offset, length, isQualified);
@@ -1685,7 +1686,7 @@
return relations;
}
- int _getStringId(String str) {
+ int _getStringId(String? str) {
if (str == null) {
return index.nullStringId;
}
@@ -1720,14 +1721,14 @@
Future<void> _indexTestUnit(String code) async {
await resolveTestCode(code);
- var indexBuilder = indexUnit(result.unit);
+ var indexBuilder = indexUnit(result.unit!);
var indexBytes = indexBuilder.toBuffer();
index = AnalysisDriverUnitIndex.fromBuffer(indexBytes);
}
}
class _NameIndexAssert {
- final IndexTest test;
+ final _IndexMixin test;
final String name;
_NameIndexAssert(this.test, this.name);
diff --git a/pkg/analyzer/test/src/dart/analysis/results/get_element_declaration_test.dart b/pkg/analyzer/test/src/dart/analysis/results/get_element_declaration_test.dart
index 69e058e..71c8f83 100644
--- a/pkg/analyzer/test/src/dart/analysis/results/get_element_declaration_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/results/get_element_declaration_test.dart
@@ -19,15 +19,15 @@
}
mixin GetElementDeclarationMixin implements PubPackageResolutionTest {
- Future<ElementDeclarationResult> getElementDeclaration(Element element);
+ Future<ElementDeclarationResult?> getElementDeclaration(Element element);
test_class() async {
await resolveTestCode(r'''
class A {}
''');
- var element = findNode.classDeclaration('A').declaredElement;
+ var element = findNode.classDeclaration('A').declaredElement!;
var result = await getElementDeclaration(element);
- ClassDeclaration node = result.node;
+ var node = result!.node as ClassDeclaration;
expect(node.name.name, 'A');
}
@@ -37,24 +37,24 @@
class A {} // 2
''');
{
- var element = findNode.classDeclaration('A {} // 1').declaredElement;
+ var element = findNode.classDeclaration('A {} // 1').declaredElement!;
var result = await getElementDeclaration(element);
- ClassDeclaration node = result.node;
+ var node = result!.node as ClassDeclaration;
expect(node.name.name, 'A');
expect(
node.name.offset,
- this.result.content.indexOf('A {} // 1'),
+ this.result.content!.indexOf('A {} // 1'),
);
}
{
- var element = findNode.classDeclaration('A {} // 2').declaredElement;
+ var element = findNode.classDeclaration('A {} // 2').declaredElement!;
var result = await getElementDeclaration(element);
- ClassDeclaration node = result.node;
+ var node = result!.node as ClassDeclaration;
expect(node.name.name, 'A');
expect(
node.name.offset,
- this.result.content.indexOf('A {} // 2'),
+ this.result.content!.indexOf('A {} // 2'),
);
}
}
@@ -67,10 +67,10 @@
await resolveTestCode(r'''
part 'a.dart';
''');
- var library = this.result.unit.declaredElement.library;
- var element = library.getType('A');
+ var library = this.result.unit!.declaredElement!.library;
+ var element = library.getType('A')!;
var result = await getElementDeclaration(element);
- ClassDeclaration node = result.node;
+ var node = result!.node as ClassDeclaration;
expect(node.name.name, 'A');
}
@@ -78,9 +78,9 @@
await resolveTestCode('''
class {}
''');
- var element = findNode.classDeclaration('class {}').declaredElement;
+ var element = findNode.classDeclaration('class {}').declaredElement!;
var result = await getElementDeclaration(element);
- ClassDeclaration node = result.node;
+ var node = result!.node as ClassDeclaration;
expect(node.name.name, '');
expect(node.name.offset, 6);
}
@@ -93,10 +93,17 @@
''');
var element = findElement.class_('B');
var result = await getElementDeclaration(element);
- ClassTypeAlias node = result.node;
+ var node = result!.node as ClassTypeAlias;
expect(node.name.name, 'B');
}
+ test_compilationUnit() async {
+ await resolveTestCode('');
+ var element = findElement.unitElement;
+ var result = await getElementDeclaration(element);
+ expect(result, isNull);
+ }
+
test_constructor() async {
await resolveTestCode(r'''
class A {
@@ -105,17 +112,17 @@
}
''');
{
- var unnamed = findNode.constructor('A();').declaredElement;
+ var unnamed = findNode.constructor('A();').declaredElement!;
var result = await getElementDeclaration(unnamed);
- ConstructorDeclaration node = result.node;
+ var node = result!.node as ConstructorDeclaration;
expect(node.name, isNull);
}
{
- var named = findNode.constructor('A.named();').declaredElement;
+ var named = findNode.constructor('A.named();').declaredElement!;
var result = await getElementDeclaration(named);
- ConstructorDeclaration node = result.node;
- expect(node.name.name, 'named');
+ var node = result!.node as ConstructorDeclaration;
+ expect(node.name!.name, 'named');
}
}
@@ -127,24 +134,24 @@
}
''');
{
- var element = findNode.constructor('A.named(); // 1').declaredElement;
+ var element = findNode.constructor('A.named(); // 1').declaredElement!;
var result = await getElementDeclaration(element);
- ConstructorDeclaration node = result.node;
- expect(node.name.name, 'named');
+ var node = result!.node as ConstructorDeclaration;
+ expect(node.name!.name, 'named');
expect(
- node.name.offset,
- this.result.content.indexOf('named(); // 1'),
+ node.name!.offset,
+ this.result.content!.indexOf('named(); // 1'),
);
}
{
- var element = findNode.constructor('A.named(); // 2').declaredElement;
+ var element = findNode.constructor('A.named(); // 2').declaredElement!;
var result = await getElementDeclaration(element);
- ConstructorDeclaration node = result.node;
- expect(node.name.name, 'named');
+ var node = result!.node as ConstructorDeclaration;
+ expect(node.name!.name, 'named');
expect(
- node.name.offset,
- this.result.content.indexOf('named(); // 2'),
+ node.name!.offset,
+ this.result.content!.indexOf('named(); // 2'),
);
}
}
@@ -157,24 +164,24 @@
}
''');
{
- var element = findNode.constructor('A(); // 1').declaredElement;
+ var element = findNode.constructor('A(); // 1').declaredElement!;
var result = await getElementDeclaration(element);
- ConstructorDeclaration node = result.node;
+ var node = result!.node as ConstructorDeclaration;
expect(node.name, isNull);
expect(
node.returnType.offset,
- this.result.content.indexOf('A(); // 1'),
+ this.result.content!.indexOf('A(); // 1'),
);
}
{
- var element = findNode.constructor('A(); // 2').declaredElement;
+ var element = findNode.constructor('A(); // 2').declaredElement!;
var result = await getElementDeclaration(element);
- ConstructorDeclaration node = result.node;
+ var node = result!.node as ConstructorDeclaration;
expect(node.name, isNull);
expect(
node.returnType.offset,
- this.result.content.indexOf('A(); // 2'),
+ this.result.content!.indexOf('A(); // 2'),
);
}
}
@@ -183,7 +190,7 @@
await resolveTestCode(r'''
class A {}
''');
- var element = findElement.class_('A').unnamedConstructor;
+ var element = findElement.class_('A').unnamedConstructor!;
expect(element.isSynthetic, isTrue);
var result = await getElementDeclaration(element);
@@ -196,7 +203,7 @@
''');
var element = findElement.enum_('MyEnum');
var result = await getElementDeclaration(element);
- EnumDeclaration node = result.node;
+ var node = result!.node as EnumDeclaration;
expect(node.name.name, 'MyEnum');
}
@@ -206,7 +213,7 @@
''');
var element = findElement.field('a');
var result = await getElementDeclaration(element);
- EnumConstantDeclaration node = result.node;
+ var node = result!.node as EnumConstantDeclaration;
expect(node.name.name, 'a');
}
@@ -214,10 +221,10 @@
await resolveTestCode(r'''
extension E on int {}
''');
- var element = findNode.extensionDeclaration('E').declaredElement;
+ var element = findNode.extensionDeclaration('E').declaredElement!;
var result = await getElementDeclaration(element);
- ExtensionDeclaration node = result.node;
- expect(node.name.name, 'E');
+ var node = result!.node as ExtensionDeclaration;
+ expect(node.name!.name, 'E');
}
test_field() async {
@@ -229,7 +236,7 @@
var element = findElement.field('foo');
var result = await getElementDeclaration(element);
- VariableDeclaration node = result.node;
+ var node = result!.node as VariableDeclaration;
expect(node.name.name, 'foo');
}
@@ -242,7 +249,7 @@
var element = findElement.localFunction('foo');
var result = await getElementDeclaration(element);
- FunctionDeclaration node = result.node;
+ var node = result!.node as FunctionDeclaration;
expect(node.name.name, 'foo');
}
@@ -253,10 +260,19 @@
var element = findElement.topFunction('foo');
var result = await getElementDeclaration(element);
- FunctionDeclaration node = result.node;
+ var node = result!.node as FunctionDeclaration;
expect(node.name.name, 'foo');
}
+ test_genericFunctionTypeElement() async {
+ await resolveTestCode(r'''
+typedef F = void Function();
+''');
+ var element = findElement.typeAlias('F').aliasedElement!;
+ var result = await getElementDeclaration(element);
+ expect(result, isNull);
+ }
+
test_getter_class() async {
await resolveTestCode(r'''
class A {
@@ -265,7 +281,7 @@
''');
var element = findElement.getter('x');
var result = await getElementDeclaration(element);
- MethodDeclaration node = result.node;
+ var node = result!.node as MethodDeclaration;
expect(node.name.name, 'x');
expect(node.isGetter, isTrue);
}
@@ -276,11 +292,20 @@
''');
var element = findElement.topGet('x');
var result = await getElementDeclaration(element);
- FunctionDeclaration node = result.node;
+ var node = result!.node as FunctionDeclaration;
expect(node.name.name, 'x');
expect(node.isGetter, isTrue);
}
+ test_library() async {
+ await resolveTestCode(r'''
+library foo;
+''');
+ var element = findElement.unitElement.enclosingElement;
+ var result = await getElementDeclaration(element);
+ expect(result, isNull);
+ }
+
test_localVariable() async {
await resolveTestCode(r'''
main() {
@@ -290,7 +315,7 @@
var element = findElement.localVar('foo');
var result = await getElementDeclaration(element);
- VariableDeclaration node = result.node;
+ var node = result!.node as VariableDeclaration;
expect(node.name.name, 'foo');
}
@@ -303,7 +328,7 @@
var element = findElement.method('foo');
var result = await getElementDeclaration(element);
- MethodDeclaration node = result.node;
+ var node = result!.node as MethodDeclaration;
expect(node.name.name, 'foo');
}
@@ -313,7 +338,7 @@
''');
var element = findElement.mixin('M');
var result = await getElementDeclaration(element);
- MixinDeclaration node = result.node;
+ var node = result!.node as MixinDeclaration;
expect(node.name.name, 'M');
}
@@ -324,8 +349,8 @@
var element = findElement.parameter('a');
var result = await getElementDeclaration(element);
- SimpleFormalParameter node = result.node;
- expect(node.identifier.name, 'a');
+ var node = result!.node as SimpleFormalParameter;
+ expect(node.identifier!.name, 'a');
}
test_parameter_missingName_named() async {
@@ -338,8 +363,8 @@
expect(element.isNamed, isTrue);
var result = await getElementDeclaration(element);
- DefaultFormalParameter node = result.node;
- expect(node.identifier.name, '');
+ var node = result!.node as DefaultFormalParameter;
+ expect(node.identifier!.name, '');
}
test_parameter_missingName_required() async {
@@ -352,8 +377,8 @@
expect(element.isPositional, isTrue);
var result = await getElementDeclaration(element);
- SimpleFormalParameter node = result.node;
- expect(node.identifier.name, '');
+ var node = result!.node as SimpleFormalParameter;
+ expect(node.identifier!.name, '');
}
test_setter_class() async {
@@ -364,7 +389,7 @@
''');
var element = findElement.setter('x');
var result = await getElementDeclaration(element);
- MethodDeclaration node = result.node;
+ var node = result!.node as MethodDeclaration;
expect(node.name.name, 'x');
expect(node.isSetter, isTrue);
}
@@ -375,7 +400,7 @@
''');
var element = findElement.topSet('x');
var result = await getElementDeclaration(element);
- FunctionDeclaration node = result.node;
+ var node = result!.node as FunctionDeclaration;
expect(node.name.name, 'x');
expect(node.isSetter, isTrue);
}
@@ -387,7 +412,7 @@
var element = findElement.topVar('foo');
var result = await getElementDeclaration(element);
- VariableDeclaration node = result.node;
+ var node = result!.node as VariableDeclaration;
expect(node.name.name, 'foo');
}
@@ -406,16 +431,16 @@
class GetElementDeclarationParsedTest extends PubPackageResolutionTest
with GetElementDeclarationMixin {
@override
- Future<ElementDeclarationResult> getElementDeclaration(
+ Future<ElementDeclarationResult?> getElementDeclaration(
Element element) async {
- var libraryPath = element.library.source.fullName;
+ var libraryPath = element.library!.source.fullName;
var library = _getParsedLibrary(libraryPath);
return library.getElementDeclaration(element);
}
ParsedLibraryResultImpl _getParsedLibrary(String path) {
var session = contextFor(path).currentSession;
- return session.getParsedLibrary(path);
+ return session.getParsedLibrary(path) as ParsedLibraryResultImpl;
}
}
@@ -423,9 +448,9 @@
class GetElementDeclarationResolvedTest extends PubPackageResolutionTest
with GetElementDeclarationMixin {
@override
- Future<ElementDeclarationResult> getElementDeclaration(
+ Future<ElementDeclarationResult?> getElementDeclaration(
Element element) async {
- var libraryPath = element.library.source.fullName;
+ var libraryPath = element.library!.source.fullName;
var library = await _getResolvedLibrary(libraryPath);
return library.getElementDeclaration(element);
}
diff --git a/pkg/analyzer/test/src/dart/analysis/search_test.dart b/pkg/analyzer/test/src/dart/analysis/search_test.dart
index c788f13..6a0844c 100644
--- a/pkg/analyzer/test/src/dart/analysis/search_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/search_test.dart
@@ -64,7 +64,7 @@
with WithNonFunctionTypeAliasesMixin {
AnalysisDriver get driver => driverFor(testFilePath);
- CompilationUnitElement get resultUnitElement => result.unit.declaredElement;
+ CompilationUnitElement get resultUnitElement => result.unit!.declaredElement!;
String get testUriStr => 'package:test/test.dart';
@@ -258,7 +258,7 @@
A v;
}
''');
- var element = findNode.simple('A p').staticElement;
+ var element = findNode.simple('A p').staticElement!;
var p = findElement.parameter('p');
var main = findElement.function('main');
var expected = [
@@ -358,8 +358,8 @@
''');
var element = findElement.unnamedConstructor('A');
- CompilationUnit otherUnit = (await driver.getResult(other)).unit;
- Element main = otherUnit.declaredElement.functions[0];
+ CompilationUnit otherUnit = (await driver.getResult(other))!.unit!;
+ Element main = otherUnit.declaredElement!.functions[0];
var expected = [
ExpectedResult(main, SearchResultKind.REFERENCE,
otherCode.indexOf('(); // in other'), 0,
@@ -492,15 +492,15 @@
''');
var enumElement = findElement.enum_('MyEnum');
var main = findElement.function('main');
- await _verifyReferences(enumElement.getField('index'),
+ await _verifyReferences(enumElement.getField('index')!,
[_expectIdQ(main, SearchResultKind.READ, 'index);')]);
- await _verifyReferences(enumElement.getField('values'),
+ await _verifyReferences(enumElement.getField('values')!,
[_expectIdQ(main, SearchResultKind.READ, 'values);')]);
- await _verifyReferences(enumElement.getField('A'), [
+ await _verifyReferences(enumElement.getField('A')!, [
_expectIdQ(main, SearchResultKind.READ, 'A.index);'),
_expectIdQ(main, SearchResultKind.READ, 'A);')
]);
- await _verifyReferences(enumElement.getField('B'),
+ await _verifyReferences(enumElement.getField('B')!,
[_expectIdQ(main, SearchResultKind.READ, 'B);')]);
}
@@ -1516,9 +1516,9 @@
V(); // nq
}
''');
- ImportElement importElement = findNode.import('show V').element;
+ ImportElement importElement = findNode.import('show V').element!;
CompilationUnitElement impUnit =
- importElement.importedLibrary.definingCompilationUnit;
+ importElement.importedLibrary!.definingCompilationUnit;
TopLevelVariableElement variable = impUnit.topLevelVariables[0];
var main = findElement.function('main');
var expected = [
@@ -1804,7 +1804,7 @@
''');
var aLibrary = await driver.getLibraryByUri(aUri);
- ClassElement aClass = aLibrary.getType('A');
+ ClassElement aClass = aLibrary.getType('A')!;
// Search by 'type'.
List<SubtypeResult> subtypes =
@@ -1849,7 +1849,7 @@
newFile(cccFilePath, content: 'class C implements List {}');
LibraryElement coreLib = await driver.getLibraryByUri('dart:core');
- ClassElement listElement = coreLib.getType('List');
+ ClassElement listElement = coreLib.getType('List')!;
var searchedFiles = SearchedFiles();
var results = await driver.search.subTypes(listElement, searchedFiles);
@@ -1857,7 +1857,7 @@
void assertHasResult(String path, String name, {bool not = false}) {
var matcher = contains(predicate((SearchResult r) {
var element = r.enclosingElement;
- return element.name == name && element.source.fullName == path;
+ return element.name == name && element.source!.fullName == path;
}));
expect(results, not ? isNot(matcher) : matcher);
}
@@ -1977,7 +1977,7 @@
ExpectedResult _expectId(
Element enclosingElement, SearchResultKind kind, String search,
- {int length, bool isResolved = true, bool isQualified = false}) {
+ {int? length, bool isResolved = true, bool isQualified = false}) {
int offset = findNode.offset(search);
length ??= findNode.simple(search).length;
return ExpectedResult(enclosingElement, kind, offset, length,
@@ -1987,14 +1987,14 @@
/// Create [ExpectedResult] for a qualified and resolved match.
ExpectedResult _expectIdQ(
Element element, SearchResultKind kind, String search,
- {int length}) {
+ {int? length}) {
return _expectId(element, kind, search, isQualified: true, length: length);
}
/// Create [ExpectedResult] for a qualified and unresolved match.
ExpectedResult _expectIdQU(
Element element, SearchResultKind kind, String search,
- {int length}) {
+ {int? length}) {
return _expectId(element, kind, search,
isQualified: true, isResolved: false, length: length);
}
@@ -2002,7 +2002,7 @@
/// Create [ExpectedResult] for a unqualified and unresolved match.
ExpectedResult _expectIdU(
Element element, SearchResultKind kind, String search,
- {int length}) {
+ {int? length}) {
return _expectId(element, kind, search,
isQualified: false, isResolved: false, length: length);
}
diff --git a/pkg/analyzer/test/src/dart/analysis/session_helper_test.dart b/pkg/analyzer/test/src/dart/analysis/session_helper_test.dart
index c9d188a..6e96379 100644
--- a/pkg/analyzer/test/src/dart/analysis/session_helper_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/session_helper_test.dart
@@ -18,7 +18,7 @@
@reflectiveTest
class AnalysisSessionHelperTest extends PubPackageResolutionTest {
- AnalysisSessionHelper helper;
+ late final AnalysisSessionHelper helper;
@override
void setUp() {
@@ -34,8 +34,7 @@
''');
String uri = file.toUri().toString();
- var element = await helper.getClass(uri, 'C');
- expect(element, isNotNull);
+ var element = (await helper.getClass(uri, 'C'))!;
expect(element.displayName, 'C');
}
@@ -58,8 +57,7 @@
''');
String bUri = bFile.toUri().toString();
- var element = await helper.getClass(bUri, 'A');
- expect(element, isNotNull);
+ var element = (await helper.getClass(bUri, 'A'))!;
expect(element.displayName, 'A');
}
@@ -81,8 +79,8 @@
class A {}
''');
var element = findElement.class_('A');
- var result = await helper.getElementDeclaration(element);
- ClassDeclaration node = result.node;
+ var result = (await helper.getElementDeclaration(element))!;
+ var node = result.node as ClassDeclaration;
expect(node.name.name, 'A');
}
@@ -91,9 +89,9 @@
class A {}
class B {}
''');
- var element = findNode.classDeclaration('A').declaredElement;
- var resolvedUnit = await helper.getResolvedUnitByElement(element);
- expect(resolvedUnit.unit.declarations, hasLength(2));
+ var element = findNode.classDeclaration('A').declaredElement!;
+ var resolvedUnit = (await helper.getResolvedUnitByElement(element))!;
+ expect(resolvedUnit.unit!.declarations, hasLength(2));
}
test_getTopLevelPropertyAccessor_defined_getter() async {
@@ -102,8 +100,7 @@
''');
String uri = file.toUri().toString();
- var element = await helper.getTopLevelPropertyAccessor(uri, 'a');
- expect(element, isNotNull);
+ var element = (await helper.getTopLevelPropertyAccessor(uri, 'a'))!;
expect(element.kind, ElementKind.GETTER);
expect(element.displayName, 'a');
}
@@ -114,8 +111,7 @@
''');
String uri = file.toUri().toString();
- var element = await helper.getTopLevelPropertyAccessor(uri, 'a=');
- expect(element, isNotNull);
+ var element = (await helper.getTopLevelPropertyAccessor(uri, 'a='))!;
expect(element.kind, ElementKind.SETTER);
expect(element.displayName, 'a');
}
@@ -126,8 +122,7 @@
''');
String uri = file.toUri().toString();
- var element = await helper.getTopLevelPropertyAccessor(uri, 'a');
- expect(element, isNotNull);
+ var element = (await helper.getTopLevelPropertyAccessor(uri, 'a'))!;
expect(element.kind, ElementKind.GETTER);
expect(element.displayName, 'a');
}
@@ -141,8 +136,7 @@
''');
String bUri = bFile.toUri().toString();
- var element = await helper.getTopLevelPropertyAccessor(bUri, 'a');
- expect(element, isNotNull);
+ var element = (await helper.getTopLevelPropertyAccessor(bUri, 'a'))!;
expect(element.kind, ElementKind.GETTER);
expect(element.displayName, 'a');
}
diff --git a/pkg/analyzer/test/src/dart/analysis/session_test.dart b/pkg/analyzer/test/src/dart/analysis/session_test.dart
index 733f92f..a1c0131 100644
--- a/pkg/analyzer/test/src/dart/analysis/session_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/session_test.dart
@@ -21,15 +21,15 @@
@reflectiveTest
class AnalysisSessionImplTest with ResourceProviderMixin {
- /*late final*/ AnalysisContextCollection contextCollection;
- /*late final*/ AnalysisContext context;
- /*late final*/ AnalysisSessionImpl session;
+ late final AnalysisContextCollection contextCollection;
+ late final AnalysisContext context;
+ late final AnalysisSessionImpl session;
- /*late final*/ String testContextPath;
- /*late final*/ String aaaContextPath;
- /*late final*/ String bbbContextPath;
+ late final String testContextPath;
+ late final String aaaContextPath;
+ late final String bbbContextPath;
- /*late final*/ String testPath;
+ late final String testPath;
void setUp() {
MockSdk(resourceProvider: resourceProvider);
@@ -48,14 +48,14 @@
sdkPath: convertPath(sdkRoot),
);
context = contextCollection.contextFor(testContextPath);
- session = context.currentSession;
+ session = context.currentSession as AnalysisSessionImpl;
testPath = convertPath('/home/test/lib/test.dart');
}
test_getErrors() async {
newFile(testPath, content: 'class C {');
- var errorsResult = await session.getErrors(testPath);
+ var errorsResult = (await session.getErrors(testPath))!;
expect(errorsResult.session, session);
expect(errorsResult.path, testPath);
expect(errorsResult.errors, isNotEmpty);
@@ -92,7 +92,7 @@
expect(parsedLibrary.units, hasLength(1));
{
- var parsedUnit = parsedLibrary.units[0];
+ var parsedUnit = parsedLibrary.units![0];
expect(parsedUnit.session, session);
expect(parsedUnit.path, testPath);
expect(parsedUnit.uri, Uri.parse('package:test/test.dart'));
@@ -109,9 +109,9 @@
var library = await session.getLibraryByUri('package:test/test.dart');
var parsedLibrary = session.getParsedLibrary(testPath);
- var element = library.getType('A');
- var declaration = parsedLibrary.getElementDeclaration(element);
- ClassDeclaration node = declaration.node;
+ var element = library.getType('A')!;
+ var declaration = parsedLibrary.getElementDeclaration(element)!;
+ var node = declaration.node as ClassDeclaration;
expect(node.name.name, 'A');
expect(node.offset, 0);
expect(node.length, 10);
@@ -120,7 +120,7 @@
test_getParsedLibrary_getElementDeclaration_notThisLibrary() async {
newFile(testPath, content: '');
- var resolvedUnit = await session.getResolvedUnit(testPath);
+ var resolvedUnit = (await session.getResolvedUnit(testPath))!;
var typeProvider = resolvedUnit.typeProvider;
var intClass = typeProvider.intType.element;
@@ -138,21 +138,21 @@
var parsedLibrary = session.getParsedLibrary(testPath);
- var unitElement = (await session.getUnitElement(testPath)).element;
+ var unitElement = (await session.getUnitElement(testPath))!.element;
var fooElement = unitElement.topLevelVariables[0];
expect(fooElement.name, 'foo');
// We can get the variable element declaration.
- var fooDeclaration = parsedLibrary.getElementDeclaration(fooElement);
- VariableDeclaration fooNode = fooDeclaration.node;
+ var fooDeclaration = parsedLibrary.getElementDeclaration(fooElement)!;
+ var fooNode = fooDeclaration.node as VariableDeclaration;
expect(fooNode.name.name, 'foo');
expect(fooNode.offset, 4);
expect(fooNode.length, 7);
expect(fooNode.name.staticElement, isNull);
// Synthetic elements don't have nodes.
- expect(parsedLibrary.getElementDeclaration(fooElement.getter), isNull);
- expect(parsedLibrary.getElementDeclaration(fooElement.setter), isNull);
+ expect(parsedLibrary.getElementDeclaration(fooElement.getter!), isNull);
+ expect(parsedLibrary.getElementDeclaration(fooElement.setter!), isNull);
}
test_getParsedLibrary_invalidPartUri() async {
@@ -166,15 +166,15 @@
expect(parsedLibrary.units, hasLength(3));
expect(
- parsedLibrary.units[0].path,
+ parsedLibrary.units![0].path,
convertPath('/home/test/lib/test.dart'),
);
expect(
- parsedLibrary.units[1].path,
+ parsedLibrary.units![1].path,
convertPath('/home/test/lib/a.dart'),
);
expect(
- parsedLibrary.units[2].path,
+ parsedLibrary.units![2].path,
convertPath('/home/test/lib/c.dart'),
);
}
@@ -224,21 +224,21 @@
expect(parsedLibrary.units, hasLength(3));
{
- var aUnit = parsedLibrary.units[0];
+ var aUnit = parsedLibrary.units![0];
expect(aUnit.path, a);
expect(aUnit.uri, Uri.parse('package:test/a.dart'));
expect(aUnit.unit.declarations, hasLength(1));
}
{
- var bUnit = parsedLibrary.units[1];
+ var bUnit = parsedLibrary.units![1];
expect(bUnit.path, b);
expect(bUnit.uri, Uri.parse('package:test/b.dart'));
expect(bUnit.unit.declarations, hasLength(2));
}
{
- var cUnit = parsedLibrary.units[2];
+ var cUnit = parsedLibrary.units![2];
expect(cUnit.path, c);
expect(cUnit.uri, Uri.parse('package:test/c.dart'));
expect(cUnit.unit.declarations, hasLength(3));
@@ -310,46 +310,43 @@
var typeProvider = resolvedLibrary.typeProvider;
expect(typeProvider.intType.element.name, 'int');
- var libraryElement = resolvedLibrary.element;
- expect(libraryElement, isNotNull);
+ var libraryElement = resolvedLibrary.element!;
- var aClass = libraryElement.getType('A');
- expect(aClass, isNotNull);
+ var aClass = libraryElement.getType('A')!;
- var bClass = libraryElement.getType('B');
- expect(bClass, isNotNull);
+ var bClass = libraryElement.getType('B')!;
- var aUnitResult = resolvedLibrary.units[0];
+ var aUnitResult = resolvedLibrary.units![0];
expect(aUnitResult.path, a);
expect(aUnitResult.uri, Uri.parse('package:test/a.dart'));
expect(aUnitResult.content, aContent);
expect(aUnitResult.unit, isNotNull);
- expect(aUnitResult.unit.directives, hasLength(1));
- expect(aUnitResult.unit.declarations, hasLength(1));
+ expect(aUnitResult.unit!.directives, hasLength(1));
+ expect(aUnitResult.unit!.declarations, hasLength(1));
expect(aUnitResult.errors, isEmpty);
- var bUnitResult = resolvedLibrary.units[1];
+ var bUnitResult = resolvedLibrary.units![1];
expect(bUnitResult.path, b);
expect(bUnitResult.uri, Uri.parse('package:test/b.dart'));
expect(bUnitResult.content, bContent);
expect(bUnitResult.unit, isNotNull);
- expect(bUnitResult.unit.directives, hasLength(1));
- expect(bUnitResult.unit.declarations, hasLength(2));
+ expect(bUnitResult.unit!.directives, hasLength(1));
+ expect(bUnitResult.unit!.declarations, hasLength(2));
expect(bUnitResult.errors, isNotEmpty);
- var aDeclaration = resolvedLibrary.getElementDeclaration(aClass);
- ClassDeclaration aNode = aDeclaration.node;
+ var aDeclaration = resolvedLibrary.getElementDeclaration(aClass)!;
+ var aNode = aDeclaration.node as ClassDeclaration;
expect(aNode.name.name, 'A');
expect(aNode.offset, 16);
expect(aNode.length, 16);
- expect(aNode.name.staticElement.name, 'A');
+ expect(aNode.declaredElement!.name, 'A');
- var bDeclaration = resolvedLibrary.getElementDeclaration(bClass);
- ClassDeclaration bNode = bDeclaration.node;
+ var bDeclaration = resolvedLibrary.getElementDeclaration(bClass)!;
+ var bNode = bDeclaration.node as ClassDeclaration;
expect(bNode.name.name, 'B');
expect(bNode.offset, 19);
expect(bNode.length, 16);
- expect(bNode.name.staticElement.name, 'B');
+ expect(bNode.declaredElement!.name, 'B');
}
test_getResolvedLibrary_getElementDeclaration_notThisLibrary() async {
@@ -369,22 +366,22 @@
''');
var resolvedLibrary = await session.getResolvedLibrary(testPath);
- var unitElement = resolvedLibrary.element.definingCompilationUnit;
+ var unitElement = resolvedLibrary.element!.definingCompilationUnit;
var fooElement = unitElement.topLevelVariables[0];
expect(fooElement.name, 'foo');
// We can get the variable element declaration.
- var fooDeclaration = resolvedLibrary.getElementDeclaration(fooElement);
- VariableDeclaration fooNode = fooDeclaration.node;
+ var fooDeclaration = resolvedLibrary.getElementDeclaration(fooElement)!;
+ var fooNode = fooDeclaration.node as VariableDeclaration;
expect(fooNode.name.name, 'foo');
expect(fooNode.offset, 4);
expect(fooNode.length, 7);
- expect(fooNode.name.staticElement.name, 'foo');
+ expect(fooNode.declaredElement!.name, 'foo');
// Synthetic elements don't have nodes.
- expect(resolvedLibrary.getElementDeclaration(fooElement.getter), isNull);
- expect(resolvedLibrary.getElementDeclaration(fooElement.setter), isNull);
+ expect(resolvedLibrary.getElementDeclaration(fooElement.getter!), isNull);
+ expect(resolvedLibrary.getElementDeclaration(fooElement.setter!), isNull);
}
test_getResolvedLibrary_invalidPartUri() async {
@@ -398,15 +395,15 @@
expect(resolvedLibrary.units, hasLength(3));
expect(
- resolvedLibrary.units[0].path,
+ resolvedLibrary.units![0].path,
convertPath('/home/test/lib/test.dart'),
);
expect(
- resolvedLibrary.units[1].path,
+ resolvedLibrary.units![1].path,
convertPath('/home/test/lib/a.dart'),
);
expect(
- resolvedLibrary.units[2].path,
+ resolvedLibrary.units![2].path,
convertPath('/home/test/lib/c.dart'),
);
}
@@ -429,7 +426,7 @@
expect(resolvedLibrary.path, testPath);
expect(resolvedLibrary.uri, Uri.parse('package:test/test.dart'));
expect(resolvedLibrary.units, hasLength(1));
- expect(resolvedLibrary.units[0].unit.declaredElement, isNotNull);
+ expect(resolvedLibrary.units![0].unit!.declaredElement, isNotNull);
}
test_getResolvedLibraryByElement_differentSession() async {
@@ -451,11 +448,11 @@
class B {}
''');
- var unitResult = await session.getResolvedUnit(testPath);
+ var unitResult = (await session.getResolvedUnit(testPath))!;
expect(unitResult.session, session);
expect(unitResult.path, testPath);
expect(unitResult.uri, Uri.parse('package:test/test.dart'));
- expect(unitResult.unit.declarations, hasLength(2));
+ expect(unitResult.unit!.declarations, hasLength(2));
expect(unitResult.typeProvider, isNotNull);
expect(unitResult.libraryElement, isNotNull);
}
@@ -480,7 +477,7 @@
class B {}
''');
- var unitResult = await session.getUnitElement(testPath);
+ var unitResult = (await session.getUnitElement(testPath))!;
expect(unitResult.session, session);
expect(unitResult.path, testPath);
expect(unitResult.uri, Uri.parse('package:test/test.dart'));
diff --git a/pkg/analyzer/test/src/dart/analysis/unlinked_api_signature_test.dart b/pkg/analyzer/test/src/dart/analysis/unlinked_api_signature_test.dart
index 83e8192..6fdda84 100644
--- a/pkg/analyzer/test/src/dart/analysis/unlinked_api_signature_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/unlinked_api_signature_test.dart
@@ -27,7 +27,7 @@
assertSignature(oldCode, newCode, same: true);
}
- void assertSignature(String oldCode, String newCode, {bool same}) {
+ void assertSignature(String oldCode, String newCode, {required bool same}) {
var path = convertPath('/test.dart');
newFile(path, content: oldCode);
diff --git a/pkg/analyzer/test/src/dart/analysis/uri_converter_test.dart b/pkg/analyzer/test/src/dart/analysis/uri_converter_test.dart
index 55af8a5..069a4ca 100644
--- a/pkg/analyzer/test/src/dart/analysis/uri_converter_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/uri_converter_test.dart
@@ -21,7 +21,7 @@
@reflectiveTest
class DriverBasedUriConverterTest with ResourceProviderMixin {
- DriverBasedUriConverter uriConverter;
+ late final DriverBasedUriConverter uriConverter;
void setUp() {
Folder barFolder = newFolder('/packages/bar/lib');
@@ -84,13 +84,13 @@
class MockAnalysisDriver implements AnalysisDriver {
@override
- ResourceProvider resourceProvider;
+ late final ResourceProvider resourceProvider;
@override
- SourceFactory sourceFactory;
+ late final SourceFactory sourceFactory;
@override
- ContextRoot contextRoot;
+ late final ContextRoot contextRoot;
@override
dynamic noSuchMethod(Invocation invocation) {
diff --git a/pkg/analyzer/test/src/dart/ast/ast_test.dart b/pkg/analyzer/test/src/dart/ast/ast_test.dart
index d054121..36a1ab1 100644
--- a/pkg/analyzer/test/src/dart/ast/ast_test.dart
+++ b/pkg/analyzer/test/src/dart/ast/ast_test.dart
@@ -21,12 +21,12 @@
@reflectiveTest
class CompilationUnitImplTest extends ParserTestCase {
- /*late*/ String testSource;
- /*late*/ CompilationUnitImpl testUnit;
+ late final String testSource;
+ late final CompilationUnitImpl testUnit;
parse(String source) {
testSource = source;
- testUnit = parseCompilationUnit(source);
+ testUnit = parseCompilationUnit(source) as CompilationUnitImpl;
}
test_languageVersionComment_firstComment() {
@@ -60,7 +60,7 @@
void main() {}
''');
expect(testUnit.languageVersionToken,
- testUnit.beginToken.precedingComments.next);
+ testUnit.beginToken.precedingComments!.next);
}
test_languageVersionComment_thirdComment() {
@@ -71,14 +71,14 @@
void main() {}
''');
expect(testUnit.languageVersionToken,
- testUnit.beginToken.precedingComments.next.next);
+ testUnit.beginToken.precedingComments!.next!.next);
}
}
@reflectiveTest
class ExpressionImplTest extends ParserTestCase {
- String testSource;
- CompilationUnitImpl testUnit;
+ late final String testSource;
+ late final CompilationUnitImpl testUnit;
assertInContext(String snippet, bool isInContext) {
int index = testSource.indexOf(snippet);
@@ -92,7 +92,7 @@
parse(String source) {
testSource = source;
- testUnit = parseCompilationUnit(source);
+ testUnit = parseCompilationUnit(source) as CompilationUnitImpl;
}
test_inConstantContext_instanceCreation_annotation_true() {
diff --git a/pkg/analyzer/test/src/dart/ast/constant_evaluator_test.dart b/pkg/analyzer/test/src/dart/ast/constant_evaluator_test.dart
index dfa42c6..d491c73 100644
--- a/pkg/analyzer/test/src/dart/ast/constant_evaluator_test.dart
+++ b/pkg/analyzer/test/src/dart/ast/constant_evaluator_test.dart
@@ -33,47 +33,47 @@
}
void test_binary_divide_double() {
- Object value = _getConstantValue("3.2 / 2.3");
+ var value = _getConstantValue("3.2 / 2.3");
expect(value, 3.2 / 2.3);
}
void test_binary_divide_integer() {
- Object value = _getConstantValue("3 / 2");
+ var value = _getConstantValue("3 / 2");
expect(value, 1.5);
}
void test_binary_equal_boolean() {
- Object value = _getConstantValue("true == false");
+ var value = _getConstantValue("true == false");
expect(value, false);
}
void test_binary_equal_integer() {
- Object value = _getConstantValue("2 == 3");
+ var value = _getConstantValue("2 == 3");
expect(value, false);
}
void test_binary_equal_invalidLeft() {
- Object value = _getConstantValue("a == 3");
+ var value = _getConstantValue("a == 3");
expect(value, ConstantEvaluator.NOT_A_CONSTANT);
}
void test_binary_equal_invalidRight() {
- Object value = _getConstantValue("2 == a");
+ var value = _getConstantValue("2 == a");
expect(value, ConstantEvaluator.NOT_A_CONSTANT);
}
void test_binary_equal_string() {
- Object value = _getConstantValue("'a' == 'b'");
+ var value = _getConstantValue("'a' == 'b'");
expect(value, false);
}
void test_binary_greaterThan() {
- Object value = _getConstantValue("2 > 3");
+ var value = _getConstantValue("2 > 3");
expect(value, false);
}
void test_binary_greaterThanOrEqual() {
- Object value = _getConstantValue("2 >= 3");
+ var value = _getConstantValue("2 >= 3");
expect(value, false);
}
@@ -83,102 +83,102 @@
}
void test_binary_lessThan() {
- Object value = _getConstantValue("2 < 3");
+ var value = _getConstantValue("2 < 3");
expect(value, true);
}
void test_binary_lessThanOrEqual() {
- Object value = _getConstantValue("2 <= 3");
+ var value = _getConstantValue("2 <= 3");
expect(value, true);
}
void test_binary_logicalAnd() {
- Object value = _getConstantValue("true && false");
+ var value = _getConstantValue("true && false");
expect(value, false);
}
void test_binary_logicalOr() {
- Object value = _getConstantValue("true || false");
+ var value = _getConstantValue("true || false");
expect(value, true);
}
void test_binary_minus_double() {
- Object value = _getConstantValue("3.2 - 2.3");
+ var value = _getConstantValue("3.2 - 2.3");
expect(value, 3.2 - 2.3);
}
void test_binary_minus_integer() {
- Object value = _getConstantValue("3 - 2");
+ var value = _getConstantValue("3 - 2");
expect(value, 1);
}
void test_binary_notEqual_boolean() {
- Object value = _getConstantValue("true != false");
+ var value = _getConstantValue("true != false");
expect(value, true);
}
void test_binary_notEqual_integer() {
- Object value = _getConstantValue("2 != 3");
+ var value = _getConstantValue("2 != 3");
expect(value, true);
}
void test_binary_notEqual_invalidLeft() {
- Object value = _getConstantValue("a != 3");
+ var value = _getConstantValue("a != 3");
expect(value, ConstantEvaluator.NOT_A_CONSTANT);
}
void test_binary_notEqual_invalidRight() {
- Object value = _getConstantValue("2 != a");
+ var value = _getConstantValue("2 != a");
expect(value, ConstantEvaluator.NOT_A_CONSTANT);
}
void test_binary_notEqual_string() {
- Object value = _getConstantValue("'a' != 'b'");
+ var value = _getConstantValue("'a' != 'b'");
expect(value, true);
}
void test_binary_plus_double() {
- Object value = _getConstantValue("2.3 + 3.2");
+ var value = _getConstantValue("2.3 + 3.2");
expect(value, 2.3 + 3.2);
}
void test_binary_plus_double_string() {
- Object value = _getConstantValue("'world' + 5.5");
+ var value = _getConstantValue("'world' + 5.5");
expect(value, ConstantEvaluator.NOT_A_CONSTANT);
}
void test_binary_plus_int_string() {
- Object value = _getConstantValue("'world' + 5");
+ var value = _getConstantValue("'world' + 5");
expect(value, ConstantEvaluator.NOT_A_CONSTANT);
}
void test_binary_plus_integer() {
- Object value = _getConstantValue("2 + 3");
+ var value = _getConstantValue("2 + 3");
expect(value, 5);
}
void test_binary_plus_string() {
- Object value = _getConstantValue("'hello ' + 'world'");
+ var value = _getConstantValue("'hello ' + 'world'");
expect(value, 'hello world');
}
void test_binary_plus_string_double() {
- Object value = _getConstantValue("5.5 + 'world'");
+ var value = _getConstantValue("5.5 + 'world'");
expect(value, ConstantEvaluator.NOT_A_CONSTANT);
}
void test_binary_plus_string_int() {
- Object value = _getConstantValue("5 + 'world'");
+ var value = _getConstantValue("5 + 'world'");
expect(value, ConstantEvaluator.NOT_A_CONSTANT);
}
void test_binary_remainder_double() {
- Object value = _getConstantValue("3.2 % 2.3");
+ var value = _getConstantValue("3.2 % 2.3");
expect(value, 3.2 % 2.3);
}
void test_binary_remainder_integer() {
- Object value = _getConstantValue("8 % 3");
+ var value = _getConstantValue("8 % 3");
expect(value, 2);
}
@@ -188,12 +188,12 @@
}
void test_binary_times_double() {
- Object value = _getConstantValue("2.3 * 3.2");
+ var value = _getConstantValue("2.3 * 3.2");
expect(value, 2.3 * 3.2);
}
void test_binary_times_integer() {
- Object value = _getConstantValue("2 * 3");
+ var value = _getConstantValue("2 * 3");
expect(value, 6);
}
@@ -209,53 +209,53 @@
@failingTest
void test_constructor() {
- Object value = _getConstantValue("?");
+ var value = _getConstantValue("?");
expect(value, null);
}
@failingTest
void test_identifier_class() {
- Object value = _getConstantValue("?");
+ var value = _getConstantValue("?");
expect(value, null);
}
@failingTest
void test_identifier_function() {
- Object value = _getConstantValue("?");
+ var value = _getConstantValue("?");
expect(value, null);
}
@failingTest
void test_identifier_static() {
- Object value = _getConstantValue("?");
+ var value = _getConstantValue("?");
expect(value, null);
}
@failingTest
void test_identifier_staticMethod() {
- Object value = _getConstantValue("?");
+ var value = _getConstantValue("?");
expect(value, null);
}
@failingTest
void test_identifier_topLevel() {
- Object value = _getConstantValue("?");
+ var value = _getConstantValue("?");
expect(value, null);
}
@failingTest
void test_identifier_typeParameter() {
- Object value = _getConstantValue("?");
+ var value = _getConstantValue("?");
expect(value, null);
}
void test_literal_boolean_false() {
- Object value = _getConstantValue("false");
+ var value = _getConstantValue("false");
expect(value, false);
}
void test_literal_boolean_true() {
- Object value = _getConstantValue("true");
+ var value = _getConstantValue("true");
expect(value, true);
}
@@ -277,42 +277,42 @@
}
void test_literal_null() {
- Object value = _getConstantValue("null");
+ var value = _getConstantValue("null");
expect(value, null);
}
void test_literal_number_double() {
- Object value = _getConstantValue("3.45");
+ var value = _getConstantValue("3.45");
expect(value, 3.45);
}
void test_literal_number_integer() {
- Object value = _getConstantValue("42");
+ var value = _getConstantValue("42");
expect(value, 42);
}
void test_literal_string_adjacent() {
- Object value = _getConstantValue("'abc' 'def'");
+ var value = _getConstantValue("'abc' 'def'");
expect(value, "abcdef");
}
void test_literal_string_interpolation_invalid() {
- Object value = _getConstantValue("'a\${f()}c'");
+ var value = _getConstantValue("'a\${f()}c'");
expect(value, ConstantEvaluator.NOT_A_CONSTANT);
}
void test_literal_string_interpolation_valid() {
- Object value = _getConstantValue("'a\${3}c'");
+ var value = _getConstantValue("'a\${3}c'");
expect(value, "a3c");
}
void test_literal_string_simple() {
- Object value = _getConstantValue("'abc'");
+ var value = _getConstantValue("'abc'");
expect(value, "abc");
}
void test_parenthesizedExpression() {
- Object value = _getConstantValue("('a')");
+ var value = _getConstantValue("('a')");
expect(value, "a");
}
@@ -322,21 +322,21 @@
}
void test_unary_logicalNot() {
- Object value = _getConstantValue("!true");
+ var value = _getConstantValue("!true");
expect(value, false);
}
void test_unary_negated_double() {
- Object value = _getConstantValue("-42.3");
+ var value = _getConstantValue("-42.3");
expect(value, -42.3);
}
void test_unary_negated_integer() {
- Object value = _getConstantValue("-42");
+ var value = _getConstantValue("-42");
expect(value, -42);
}
- Object _getConstantValue(String expressionCode) {
+ Object? _getConstantValue(String expressionCode) {
var path = convertPath('/test/lib/test.dart');
newFile(path, content: '''
diff --git a/pkg/analyzer/test/src/dart/ast/element_locator_test.dart b/pkg/analyzer/test/src/dart/ast/element_locator_test.dart
index 1f5e0cb..b6f51e2 100644
--- a/pkg/analyzer/test/src/dart/ast/element_locator_test.dart
+++ b/pkg/analyzer/test/src/dart/ast/element_locator_test.dart
@@ -46,8 +46,7 @@
test_locate_CompilationUnit() async {
await resolveTestCode('// only comment');
- var unitElement = result.unit.declaredElement;
- expect(unitElement, isNotNull);
+ var unitElement = result.unit!.declaredElement!;
var element = ElementLocator.locate(result.unit);
expect(element, same(unitElement));
diff --git a/pkg/analyzer/test/src/dart/ast/parse_base.dart b/pkg/analyzer/test/src/dart/ast/parse_base.dart
index eb662b2..4e8f64e 100644
--- a/pkg/analyzer/test/src/dart/ast/parse_base.dart
+++ b/pkg/analyzer/test/src/dart/ast/parse_base.dart
@@ -49,7 +49,7 @@
return ParseResult(
path,
content,
- unit.lineInfo,
+ unit.lineInfo!,
unit,
errorListener.errors,
);
diff --git a/pkg/analyzer/test/src/dart/ast/to_source_visitor_test.dart b/pkg/analyzer/test/src/dart/ast/to_source_visitor_test.dart
index 2898bae..4251d35 100644
--- a/pkg/analyzer/test/src/dart/ast/to_source_visitor_test.dart
+++ b/pkg/analyzer/test/src/dart/ast/to_source_visitor_test.dart
@@ -9,6 +9,7 @@
import 'package:analyzer/src/dart/ast/to_source_visitor.dart';
import 'package:analyzer/src/generated/testing/ast_test_factory.dart';
import 'package:analyzer/src/generated/testing/token_factory.dart';
+import 'package:analyzer/src/summary2/ast_binary_tokens.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -555,7 +556,7 @@
AstTestFactory.identifier3("C"),
null,
AstTestFactory.formalParameterList(),
- null,
+ [],
AstTestFactory.blockFunctionBody2()));
}
@@ -563,7 +564,7 @@
_assertSource(
"external C();",
AstTestFactory.constructorDeclaration(AstTestFactory.identifier3("C"),
- null, AstTestFactory.formalParameterList(), null));
+ null, AstTestFactory.formalParameterList(), []));
}
void test_visitConstructorDeclaration_minimal() {
@@ -575,7 +576,7 @@
AstTestFactory.identifier3("C"),
null,
AstTestFactory.formalParameterList(),
- null,
+ [],
AstTestFactory.blockFunctionBody2()));
}
@@ -609,7 +610,7 @@
AstTestFactory.simpleFormalParameter(Keyword.VAR, "a"),
AstTestFactory.simpleFormalParameter(Keyword.VAR, "b")
]),
- null,
+ [],
AstTestFactory.blockFunctionBody2()));
}
@@ -622,7 +623,7 @@
AstTestFactory.identifier3("C"),
"m",
AstTestFactory.formalParameterList(),
- null,
+ [],
AstTestFactory.blockFunctionBody2()));
}
@@ -649,7 +650,7 @@
AstTestFactory.identifier3("C"),
null,
AstTestFactory.formalParameterList(),
- null,
+ [],
AstTestFactory.blockFunctionBody2());
declaration.metadata.add(
AstTestFactory.annotation(AstTestFactory.identifier3("deprecated")));
@@ -999,6 +1000,7 @@
'var e in l',
astFactory.forEachPartsWithDeclaration(
loopVariable: AstTestFactory.declaredIdentifier3('e'),
+ inKeyword: Tokens.IN,
iterable: AstTestFactory.identifier3('l')));
}
@@ -1007,6 +1009,7 @@
'e in l',
astFactory.forEachPartsWithIdentifier(
identifier: AstTestFactory.identifier3('e'),
+ inKeyword: Tokens.IN,
iterable: AstTestFactory.identifier3('l')));
}
@@ -1051,12 +1054,17 @@
void test_visitForElement() {
_assertSource(
- 'for (e in l) 0',
- astFactory.forElement(
- forLoopParts: astFactory.forEachPartsWithIdentifier(
- identifier: AstTestFactory.identifier3('e'),
- iterable: AstTestFactory.identifier3('l')),
- body: AstTestFactory.integer(0)));
+ 'for (e in l) 0',
+ astFactory.forElement(
+ forKeyword: Tokens.FOR,
+ leftParenthesis: Tokens.OPEN_PAREN,
+ forLoopParts: astFactory.forEachPartsWithIdentifier(
+ identifier: AstTestFactory.identifier3('e'),
+ inKeyword: Tokens.IN,
+ iterable: AstTestFactory.identifier3('l')),
+ rightParenthesis: Tokens.CLOSE_PAREN,
+ body: AstTestFactory.integer(0)),
+ );
}
void test_visitFormalParameterList_empty() {
@@ -1235,7 +1243,9 @@
astFactory.forPartsWithDeclarations(
variables: AstTestFactory.variableDeclarationList2(
Keyword.VAR, [AstTestFactory.variableDeclaration('v')]),
+ leftSeparator: Tokens.SEMICOLON,
condition: AstTestFactory.identifier3('b'),
+ rightSeparator: Tokens.SEMICOLON,
updaters: [AstTestFactory.identifier3('u')]));
}
@@ -1244,19 +1254,26 @@
'v; b; u',
astFactory.forPartsWithExpression(
initialization: AstTestFactory.identifier3('v'),
+ leftSeparator: Tokens.SEMICOLON,
condition: AstTestFactory.identifier3('b'),
+ rightSeparator: Tokens.SEMICOLON,
updaters: [AstTestFactory.identifier3('u')]));
}
void test_visitForStatement() {
_assertSource(
- 'for (e in l) s;',
- astFactory.forStatement(
- forLoopParts: astFactory.forEachPartsWithIdentifier(
- identifier: AstTestFactory.identifier3('e'),
- iterable: AstTestFactory.identifier3('l')),
- body: AstTestFactory.expressionStatement(
- AstTestFactory.identifier3('s'))));
+ 'for (e in l) s;',
+ astFactory.forStatement(
+ forKeyword: Tokens.FOR,
+ leftParenthesis: Tokens.OPEN_PAREN,
+ forLoopParts: astFactory.forEachPartsWithIdentifier(
+ identifier: AstTestFactory.identifier3('e'),
+ inKeyword: Tokens.IN,
+ iterable: AstTestFactory.identifier3('l')),
+ rightParenthesis: Tokens.CLOSE_PAREN,
+ body: AstTestFactory.expressionStatement(
+ AstTestFactory.identifier3('s'))),
+ );
}
void test_visitForStatement_c() {
@@ -1463,7 +1480,7 @@
null,
"f",
AstTestFactory.functionExpression3(
- AstTestFactory.typeParameterList(['E']),
+ AstTestFactory.typeParameterList2(['E']),
AstTestFactory.formalParameterList(),
AstTestFactory.blockFunctionBody2())));
}
@@ -1491,7 +1508,7 @@
_assertSource(
"<E>() {}",
AstTestFactory.functionExpression3(
- AstTestFactory.typeParameterList(['E']),
+ AstTestFactory.typeParameterList2(['E']),
AstTestFactory.formalParameterList(),
AstTestFactory.blockFunctionBody2()));
}
@@ -1592,7 +1609,7 @@
"int Function<T>(T)",
AstTestFactory.genericFunctionType(
AstTestFactory.typeName4("int"),
- AstTestFactory.typeParameterList(['T']),
+ AstTestFactory.typeParameterList2(['T']),
AstTestFactory.formalParameterList([
AstTestFactory.simpleFormalParameter4(
AstTestFactory.typeName4("T"), null)
@@ -1604,7 +1621,7 @@
"int Function<T>(T)?",
AstTestFactory.genericFunctionType(
AstTestFactory.typeName4("int"),
- AstTestFactory.typeParameterList(['T']),
+ AstTestFactory.typeParameterList2(['T']),
AstTestFactory.formalParameterList([
AstTestFactory.simpleFormalParameter4(
AstTestFactory.typeName4("T"), null)
@@ -1617,10 +1634,10 @@
"typedef X<S> = S Function<T>(T)",
AstTestFactory.genericTypeAlias(
'X',
- AstTestFactory.typeParameterList(['S']),
+ AstTestFactory.typeParameterList2(['S']),
AstTestFactory.genericFunctionType(
AstTestFactory.typeName4("S"),
- AstTestFactory.typeParameterList(['T']),
+ AstTestFactory.typeParameterList2(['T']),
AstTestFactory.formalParameterList([
AstTestFactory.simpleFormalParameter4(
AstTestFactory.typeName4("T"), null)
@@ -1631,8 +1648,12 @@
_assertSource(
'if (b) 1 else 0',
astFactory.ifElement(
+ ifKeyword: Tokens.IF,
+ leftParenthesis: Tokens.OPEN_PAREN,
condition: AstTestFactory.identifier3('b'),
+ rightParenthesis: Tokens.CLOSE_PAREN,
thenElement: AstTestFactory.integer(1),
+ elseKeyword: Tokens.ELSE,
elseElement: AstTestFactory.integer(0)));
}
@@ -1640,7 +1661,10 @@
_assertSource(
'if (b) 1',
astFactory.ifElement(
+ ifKeyword: Tokens.IF,
+ leftParenthesis: Tokens.OPEN_PAREN,
condition: AstTestFactory.identifier3('b'),
+ rightParenthesis: Tokens.CLOSE_PAREN,
thenElement: AstTestFactory.integer(1)));
}
@@ -1869,24 +1893,35 @@
astFactory.listLiteral(
null,
AstTestFactory.typeArgumentList([AstTestFactory.typeName4('int')]),
- null,
+ Tokens.OPEN_SQUARE_BRACKET,
[
AstTestFactory.integer(0),
astFactory.forElement(
+ forKeyword: Tokens.FOR,
+ leftParenthesis: Tokens.OPEN_PAREN,
forLoopParts: astFactory.forEachPartsWithIdentifier(
identifier: AstTestFactory.identifier3('e'),
+ inKeyword: Tokens.IN,
iterable: AstTestFactory.identifier3('l')),
+ rightParenthesis: Tokens.CLOSE_PAREN,
body: AstTestFactory.integer(0)),
astFactory.ifElement(
+ ifKeyword: Tokens.IF,
+ leftParenthesis: Tokens.OPEN_PAREN,
condition: AstTestFactory.identifier3('b'),
+ rightParenthesis: Tokens.CLOSE_PAREN,
thenElement: AstTestFactory.integer(1)),
astFactory.spreadElement(
spreadOperator: TokenFactory.tokenFromType(
TokenType.PERIOD_PERIOD_PERIOD),
expression: astFactory.listLiteral(
- null, null, null, [AstTestFactory.integer(0)], null))
+ null,
+ null,
+ Tokens.OPEN_SQUARE_BRACKET,
+ [AstTestFactory.integer(0)],
+ Tokens.CLOSE_SQUARE_BRACKET))
],
- null));
+ Tokens.CLOSE_SQUARE_BRACKET));
}
void test_visitListLiteral_const() {
@@ -1910,8 +1945,12 @@
void test_visitListLiteral_withConst_withoutTypeArgs() {
_assertSource(
'const [0]',
- astFactory.listLiteral(TokenFactory.tokenFromKeyword(Keyword.CONST),
- null, null, [AstTestFactory.integer(0)], null));
+ astFactory.listLiteral(
+ TokenFactory.tokenFromKeyword(Keyword.CONST),
+ null,
+ Tokens.OPEN_SQUARE_BRACKET,
+ [AstTestFactory.integer(0)],
+ Tokens.CLOSE_SQUARE_BRACKET));
}
void test_visitListLiteral_withConst_withTypeArgs() {
@@ -1920,16 +1959,16 @@
astFactory.listLiteral(
TokenFactory.tokenFromKeyword(Keyword.CONST),
AstTestFactory.typeArgumentList([AstTestFactory.typeName4('int')]),
- null,
+ Tokens.OPEN_SQUARE_BRACKET,
[AstTestFactory.integer(0)],
- null));
+ Tokens.CLOSE_SQUARE_BRACKET));
}
void test_visitListLiteral_withoutConst_withoutTypeArgs() {
_assertSource(
'[0]',
- astFactory.listLiteral(
- null, null, null, [AstTestFactory.integer(0)], null));
+ astFactory.listLiteral(null, null, Tokens.OPEN_SQUARE_BRACKET,
+ [AstTestFactory.integer(0)], Tokens.CLOSE_SQUARE_BRACKET));
}
void test_visitListLiteral_withoutConst_withTypeArgs() {
@@ -1938,9 +1977,9 @@
astFactory.listLiteral(
null,
AstTestFactory.typeArgumentList([AstTestFactory.typeName4('int')]),
- null,
+ Tokens.OPEN_SQUARE_BRACKET,
[AstTestFactory.integer(0)],
- null));
+ Tokens.CLOSE_SQUARE_BRACKET));
}
void test_visitMapLiteral_const() {
@@ -2171,7 +2210,7 @@
_assertSource(
"t?.m()",
AstTestFactory.methodInvocation(AstTestFactory.identifier3("t"), "m",
- null, TokenType.QUESTION_PERIOD));
+ [], TokenType.QUESTION_PERIOD));
}
void test_visitMethodInvocation_noTarget() {
@@ -2324,122 +2363,192 @@
void test_visitSetOrMapLiteral_map_complex() {
_assertSource(
- "<String, String>{'a' : 'b', for (c in d) 'e' : 'f', if (g) 'h' : 'i', ...{'j' : 'k'}}",
- astFactory.setOrMapLiteral(
- typeArguments: AstTestFactory.typeArgumentList([
- AstTestFactory.typeName4('String'),
- AstTestFactory.typeName4('String')
- ]),
- elements: [
- AstTestFactory.mapLiteralEntry3('a', 'b'),
- astFactory.forElement(
- forLoopParts: astFactory.forEachPartsWithIdentifier(
- identifier: AstTestFactory.identifier3('c'),
- iterable: AstTestFactory.identifier3('d')),
- body: AstTestFactory.mapLiteralEntry3('e', 'f')),
- astFactory.ifElement(
- condition: AstTestFactory.identifier3('g'),
- thenElement: AstTestFactory.mapLiteralEntry3('h', 'i')),
- astFactory.spreadElement(
- spreadOperator: TokenFactory.tokenFromType(
- TokenType.PERIOD_PERIOD_PERIOD),
- expression: astFactory.setOrMapLiteral(
- elements: [AstTestFactory.mapLiteralEntry3('j', 'k')]))
- ]));
+ "<String, String>{'a' : 'b', for (c in d) 'e' : 'f', if (g) 'h' : 'i', ...{'j' : 'k'}}",
+ astFactory.setOrMapLiteral(
+ leftBracket: Tokens.OPEN_CURLY_BRACKET,
+ typeArguments: AstTestFactory.typeArgumentList([
+ AstTestFactory.typeName4('String'),
+ AstTestFactory.typeName4('String')
+ ]),
+ elements: [
+ AstTestFactory.mapLiteralEntry3('a', 'b'),
+ astFactory.forElement(
+ forKeyword: Tokens.FOR,
+ leftParenthesis: Tokens.OPEN_PAREN,
+ forLoopParts: astFactory.forEachPartsWithIdentifier(
+ identifier: AstTestFactory.identifier3('c'),
+ inKeyword: Tokens.IN,
+ iterable: AstTestFactory.identifier3('d'),
+ ),
+ rightParenthesis: Tokens.CLOSE_PAREN,
+ body: AstTestFactory.mapLiteralEntry3('e', 'f')),
+ astFactory.ifElement(
+ ifKeyword: Tokens.IF,
+ leftParenthesis: Tokens.OPEN_PAREN,
+ condition: AstTestFactory.identifier3('g'),
+ rightParenthesis: Tokens.CLOSE_PAREN,
+ thenElement: AstTestFactory.mapLiteralEntry3('h', 'i'),
+ ),
+ astFactory.spreadElement(
+ spreadOperator:
+ TokenFactory.tokenFromType(TokenType.PERIOD_PERIOD_PERIOD),
+ expression: astFactory.setOrMapLiteral(
+ leftBracket: Tokens.OPEN_CURLY_BRACKET,
+ elements: [AstTestFactory.mapLiteralEntry3('j', 'k')],
+ rightBracket: Tokens.CLOSE_CURLY_BRACKET,
+ ),
+ )
+ ],
+ rightBracket: Tokens.CLOSE_CURLY_BRACKET,
+ ),
+ );
}
void test_visitSetOrMapLiteral_map_withConst_withoutTypeArgs() {
_assertSource(
- "const {'a' : 'b'}",
- astFactory.setOrMapLiteral(
- constKeyword: TokenFactory.tokenFromKeyword(Keyword.CONST),
- elements: [AstTestFactory.mapLiteralEntry3('a', 'b')]));
+ "const {'a' : 'b'}",
+ astFactory.setOrMapLiteral(
+ leftBracket: Tokens.OPEN_CURLY_BRACKET,
+ constKeyword: TokenFactory.tokenFromKeyword(Keyword.CONST),
+ elements: [AstTestFactory.mapLiteralEntry3('a', 'b')],
+ rightBracket: Tokens.CLOSE_CURLY_BRACKET,
+ ),
+ );
}
void test_visitSetOrMapLiteral_map_withConst_withTypeArgs() {
_assertSource(
- "const <String, String>{'a' : 'b'}",
- astFactory.setOrMapLiteral(
- constKeyword: TokenFactory.tokenFromKeyword(Keyword.CONST),
- typeArguments: AstTestFactory.typeArgumentList([
- AstTestFactory.typeName4('String'),
- AstTestFactory.typeName4('String')
- ]),
- elements: [AstTestFactory.mapLiteralEntry3('a', 'b')]));
+ "const <String, String>{'a' : 'b'}",
+ astFactory.setOrMapLiteral(
+ constKeyword: TokenFactory.tokenFromKeyword(Keyword.CONST),
+ typeArguments: AstTestFactory.typeArgumentList([
+ AstTestFactory.typeName4('String'),
+ AstTestFactory.typeName4('String')
+ ]),
+ leftBracket: Tokens.OPEN_CURLY_BRACKET,
+ elements: [AstTestFactory.mapLiteralEntry3('a', 'b')],
+ rightBracket: Tokens.CLOSE_CURLY_BRACKET,
+ ),
+ );
}
void test_visitSetOrMapLiteral_map_withoutConst_withoutTypeArgs() {
_assertSource(
- "{'a' : 'b'}",
- astFactory.setOrMapLiteral(
- elements: [AstTestFactory.mapLiteralEntry3('a', 'b')]));
+ "{'a' : 'b'}",
+ astFactory.setOrMapLiteral(
+ leftBracket: Tokens.OPEN_CURLY_BRACKET,
+ elements: [AstTestFactory.mapLiteralEntry3('a', 'b')],
+ rightBracket: Tokens.CLOSE_CURLY_BRACKET,
+ ),
+ );
}
void test_visitSetOrMapLiteral_map_withoutConst_withTypeArgs() {
_assertSource(
- "<String, String>{'a' : 'b'}",
- astFactory.setOrMapLiteral(
- typeArguments: AstTestFactory.typeArgumentList([
- AstTestFactory.typeName4('String'),
- AstTestFactory.typeName4('String')
- ]),
- elements: [AstTestFactory.mapLiteralEntry3('a', 'b')]));
+ "<String, String>{'a' : 'b'}",
+ astFactory.setOrMapLiteral(
+ typeArguments: AstTestFactory.typeArgumentList([
+ AstTestFactory.typeName4('String'),
+ AstTestFactory.typeName4('String')
+ ]),
+ leftBracket: Tokens.OPEN_CURLY_BRACKET,
+ elements: [AstTestFactory.mapLiteralEntry3('a', 'b')],
+ rightBracket: Tokens.CLOSE_CURLY_BRACKET,
+ ),
+ );
}
void test_visitSetOrMapLiteral_set_complex() {
_assertSource(
- '<int>{0, for (e in l) 0, if (b) 1, ...[0]}',
- astFactory.setOrMapLiteral(
- typeArguments: AstTestFactory.typeArgumentList(
- [AstTestFactory.typeName4('int')]),
- elements: [
- AstTestFactory.integer(0),
- astFactory.forElement(
- forLoopParts: astFactory.forEachPartsWithIdentifier(
- identifier: AstTestFactory.identifier3('e'),
- iterable: AstTestFactory.identifier3('l')),
- body: AstTestFactory.integer(0)),
- astFactory.ifElement(
- condition: AstTestFactory.identifier3('b'),
- thenElement: AstTestFactory.integer(1)),
- astFactory.spreadElement(
- spreadOperator: TokenFactory.tokenFromType(
- TokenType.PERIOD_PERIOD_PERIOD),
- expression: astFactory.listLiteral(
- null, null, null, [AstTestFactory.integer(0)], null))
- ]));
+ '<int>{0, for (e in l) 0, if (b) 1, ...[0]}',
+ astFactory.setOrMapLiteral(
+ typeArguments:
+ AstTestFactory.typeArgumentList([AstTestFactory.typeName4('int')]),
+ leftBracket: Tokens.OPEN_CURLY_BRACKET,
+ elements: [
+ AstTestFactory.integer(0),
+ astFactory.forElement(
+ forKeyword: Tokens.FOR,
+ leftParenthesis: Tokens.OPEN_PAREN,
+ forLoopParts: astFactory.forEachPartsWithIdentifier(
+ identifier: AstTestFactory.identifier3('e'),
+ inKeyword: Tokens.IN,
+ iterable: AstTestFactory.identifier3('l'),
+ ),
+ rightParenthesis: Tokens.CLOSE_PAREN,
+ body: AstTestFactory.integer(0)),
+ astFactory.ifElement(
+ ifKeyword: Tokens.IF,
+ leftParenthesis: Tokens.OPEN_PAREN,
+ condition: AstTestFactory.identifier3('b'),
+ rightParenthesis: Tokens.CLOSE_PAREN,
+ thenElement: AstTestFactory.integer(1),
+ ),
+ astFactory.spreadElement(
+ spreadOperator:
+ TokenFactory.tokenFromType(TokenType.PERIOD_PERIOD_PERIOD),
+ expression: astFactory.listLiteral(
+ null,
+ null,
+ Tokens.OPEN_SQUARE_BRACKET,
+ [AstTestFactory.integer(0)],
+ Tokens.CLOSE_SQUARE_BRACKET,
+ ),
+ )
+ ],
+ rightBracket: Tokens.CLOSE_CURLY_BRACKET,
+ ),
+ );
}
void test_visitSetOrMapLiteral_set_withConst_withoutTypeArgs() {
_assertSource(
- 'const {0}',
- astFactory.setOrMapLiteral(
- constKeyword: TokenFactory.tokenFromKeyword(Keyword.CONST),
- elements: [AstTestFactory.integer(0)]));
+ 'const {0}',
+ astFactory.setOrMapLiteral(
+ constKeyword: TokenFactory.tokenFromKeyword(Keyword.CONST),
+ leftBracket: Tokens.OPEN_CURLY_BRACKET,
+ elements: [AstTestFactory.integer(0)],
+ rightBracket: Tokens.CLOSE_CURLY_BRACKET,
+ ),
+ );
}
void test_visitSetOrMapLiteral_set_withConst_withTypeArgs() {
_assertSource(
- 'const <int>{0}',
- astFactory.setOrMapLiteral(
- constKeyword: TokenFactory.tokenFromKeyword(Keyword.CONST),
- typeArguments: AstTestFactory.typeArgumentList(
- [AstTestFactory.typeName4('int')]),
- elements: [AstTestFactory.integer(0)]));
+ 'const <int>{0}',
+ astFactory.setOrMapLiteral(
+ constKeyword: TokenFactory.tokenFromKeyword(Keyword.CONST),
+ typeArguments:
+ AstTestFactory.typeArgumentList([AstTestFactory.typeName4('int')]),
+ leftBracket: Tokens.OPEN_CURLY_BRACKET,
+ elements: [AstTestFactory.integer(0)],
+ rightBracket: Tokens.CLOSE_CURLY_BRACKET,
+ ),
+ );
}
void test_visitSetOrMapLiteral_set_withoutConst_withoutTypeArgs() {
- _assertSource('{0}',
- astFactory.setOrMapLiteral(elements: [AstTestFactory.integer(0)]));
+ _assertSource(
+ '{0}',
+ astFactory.setOrMapLiteral(
+ leftBracket: Tokens.OPEN_CURLY_BRACKET,
+ elements: [AstTestFactory.integer(0)],
+ rightBracket: Tokens.CLOSE_CURLY_BRACKET,
+ ),
+ );
}
void test_visitSetOrMapLiteral_set_withoutConst_withTypeArgs() {
_assertSource(
- '<int>{0}',
- astFactory.setOrMapLiteral(
- typeArguments: AstTestFactory.typeArgumentList(
- [AstTestFactory.typeName4('int')]),
- elements: [AstTestFactory.integer(0)]));
+ '<int>{0}',
+ astFactory.setOrMapLiteral(
+ typeArguments:
+ AstTestFactory.typeArgumentList([AstTestFactory.typeName4('int')]),
+ leftBracket: Tokens.OPEN_CURLY_BRACKET,
+ elements: [AstTestFactory.integer(0)],
+ rightBracket: Tokens.CLOSE_CURLY_BRACKET,
+ ),
+ );
}
void test_visitSimpleFormalParameter_annotation() {
@@ -2492,7 +2601,11 @@
spreadOperator:
TokenFactory.tokenFromType(TokenType.PERIOD_PERIOD_PERIOD),
expression: astFactory.listLiteral(
- null, null, null, [AstTestFactory.integer(0)], null)));
+ null,
+ null,
+ Tokens.OPEN_SQUARE_BRACKET,
+ [AstTestFactory.integer(0)],
+ Tokens.CLOSE_SQUARE_BRACKET)));
}
@failingTest
@@ -2505,7 +2618,11 @@
spreadOperator:
TokenFactory.tokenFromType(TokenType.PERIOD_PERIOD_PERIOD),
expression: astFactory.listLiteral(
- null, null, null, [AstTestFactory.integer(0)], null)));
+ null,
+ null,
+ Tokens.OPEN_SQUARE_BRACKET,
+ [AstTestFactory.integer(0)],
+ Tokens.CLOSE_SQUARE_BRACKET)));
}
void test_visitStringInterpolation() {
@@ -2674,13 +2791,13 @@
void test_visitTypeArgumentList_multiple() {
_assertSource(
"<E, F>",
- AstTestFactory.typeArgumentList(
+ AstTestFactory.typeArgumentList2(
[AstTestFactory.typeName4("E"), AstTestFactory.typeName4("F")]));
}
void test_visitTypeArgumentList_single() {
_assertSource("<E>",
- AstTestFactory.typeArgumentList([AstTestFactory.typeName4("E")]));
+ AstTestFactory.typeArgumentList2([AstTestFactory.typeName4("E")]));
}
void test_visitTypeName_multipleArgs() {
@@ -2745,11 +2862,11 @@
}
void test_visitTypeParameterList_multiple() {
- _assertSource("<E, F>", AstTestFactory.typeParameterList(["E", "F"]));
+ _assertSource("<E, F>", AstTestFactory.typeParameterList2(["E", "F"]));
}
void test_visitTypeParameterList_single() {
- _assertSource("<E>", AstTestFactory.typeParameterList(["E"]));
+ _assertSource("<E>", AstTestFactory.typeParameterList2(["E"]));
}
void test_visitVariableDeclaration_initialized() {
diff --git a/pkg/analyzer/test/src/dart/ast/utilities_test.dart b/pkg/analyzer/test/src/dart/ast/utilities_test.dart
index b274c98..acca07b 100644
--- a/pkg/analyzer/test/src/dart/ast/utilities_test.dart
+++ b/pkg/analyzer/test/src/dart/ast/utilities_test.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/analysis/features.dart';
+import 'package:analyzer/dart/analysis/session.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/standard_ast_factory.dart';
import 'package:analyzer/dart/ast/token.dart';
@@ -12,6 +13,7 @@
import 'package:analyzer/src/dart/ast/ast.dart';
import 'package:analyzer/src/dart/ast/utilities.dart';
import 'package:analyzer/src/dart/element/element.dart';
+import 'package:analyzer/src/generated/engine.dart';
import 'package:analyzer/src/generated/testing/ast_test_factory.dart';
import 'package:analyzer/src/generated/testing/element_factory.dart';
import 'package:analyzer/src/generated/testing/test_type_provider.dart';
@@ -99,7 +101,7 @@
class A {}
class B {}''');
NodeLocator locator = NodeLocator(1024, 1024);
- AstNode node = locator.searchWithin(unit.declarations[0]);
+ var node = locator.searchWithin(unit.declarations[0]);
expect(node, isNull);
}
@@ -108,7 +110,7 @@
class A {}
class B {}''');
NodeLocator locator = NodeLocator(0, 0);
- AstNode node = locator.searchWithin(unit.declarations[1]);
+ var node = locator.searchWithin(unit.declarations[1]);
expect(node, isNull);
}
@@ -118,8 +120,7 @@
int end,
) {
NodeLocator locator = NodeLocator(start, end);
- AstNode node = locator.searchWithin(unit);
- expect(node, isNotNull);
+ var node = locator.searchWithin(unit)!;
expect(locator.foundNode, same(node));
expect(node.offset <= start, isTrue, reason: "Node starts after range");
expect(node.offset + node.length > end, isTrue,
@@ -158,8 +159,14 @@
void test_visitAdjacentStrings() {
AdjacentStrings createNode() => astFactory.adjacentStrings([
- astFactory.simpleStringLiteral(null, 'hello'),
- astFactory.simpleStringLiteral(null, 'world')
+ astFactory.simpleStringLiteral(
+ TokenFactory.tokenFromString('hello'),
+ 'hello',
+ ),
+ astFactory.simpleStringLiteral(
+ TokenFactory.tokenFromString('world'),
+ 'world',
+ )
]);
AdjacentStrings fromNode = createNode();
@@ -280,16 +287,14 @@
var fromNode = AstTestFactory.constructorDeclaration(
AstTestFactory.identifier3(className),
constructorName,
- AstTestFactory.formalParameterList(),
- null) as ConstructorDeclarationImpl;
+ AstTestFactory.formalParameterList(), []) as ConstructorDeclarationImpl;
ConstructorElement element = ElementFactory.constructorElement2(
ElementFactory.classElement2(className), constructorName);
fromNode.declaredElement = element;
ConstructorDeclaration toNode = AstTestFactory.constructorDeclaration(
AstTestFactory.identifier3(className),
constructorName,
- AstTestFactory.formalParameterList(),
- null);
+ AstTestFactory.formalParameterList(), []);
ResolutionCopier.copyResolutionData(fromNode, toNode);
expect(toNode.declaredElement, same(element));
}
@@ -368,6 +373,7 @@
ForEachPartsWithDeclaration createNode() =>
astFactory.forEachPartsWithDeclaration(
loopVariable: AstTestFactory.declaredIdentifier3('a'),
+ inKeyword: TokenFactory.tokenFromKeyword(Keyword.IN),
iterable: AstTestFactory.identifier3('b'));
DartType typeB = interfaceTypeStar(ElementFactory.classElement2('B'));
@@ -384,6 +390,7 @@
ForEachPartsWithIdentifier createNode() =>
astFactory.forEachPartsWithIdentifier(
identifier: AstTestFactory.identifier3('a'),
+ inKeyword: TokenFactory.tokenFromKeyword(Keyword.IN),
iterable: AstTestFactory.identifier3('b'));
DartType typeA = interfaceTypeStar(ElementFactory.classElement2('A'));
@@ -401,9 +408,13 @@
void test_visitForElement() {
ForElement createNode() => astFactory.forElement(
+ forKeyword: TokenFactory.tokenFromKeyword(Keyword.FOR),
+ leftParenthesis: TokenFactory.tokenFromType(TokenType.OPEN_PAREN),
forLoopParts: astFactory.forEachPartsWithIdentifier(
identifier: AstTestFactory.identifier3('a'),
+ inKeyword: TokenFactory.tokenFromKeyword(Keyword.IN),
iterable: AstTestFactory.identifier3('b')),
+ rightParenthesis: TokenFactory.tokenFromType(TokenType.CLOSE_PAREN),
body: AstTestFactory.identifier3('c'));
DartType typeC = interfaceTypeStar(ElementFactory.classElement2('C'));
@@ -421,7 +432,9 @@
astFactory.forPartsWithDeclarations(
variables: AstTestFactory.variableDeclarationList2(
Keyword.VAR, [AstTestFactory.variableDeclaration('a')]),
+ leftSeparator: TokenFactory.tokenFromType(TokenType.SEMICOLON),
condition: AstTestFactory.identifier3('b'),
+ rightSeparator: TokenFactory.tokenFromType(TokenType.SEMICOLON),
updaters: [AstTestFactory.identifier3('c')]);
DartType typeB = interfaceTypeStar(ElementFactory.classElement2('B'));
@@ -440,7 +453,9 @@
void test_visitForPartsWithExpression() {
ForPartsWithExpression createNode() => astFactory.forPartsWithExpression(
initialization: AstTestFactory.identifier3('a'),
+ leftSeparator: TokenFactory.tokenFromType(TokenType.SEMICOLON),
condition: AstTestFactory.identifier3('b'),
+ rightSeparator: TokenFactory.tokenFromType(TokenType.SEMICOLON),
updaters: [AstTestFactory.identifier3('c')]);
DartType typeA = interfaceTypeStar(ElementFactory.classElement2('A'));
@@ -461,9 +476,13 @@
void test_visitForStatement() {
ForStatement createNode() => astFactory.forStatement(
+ forKeyword: TokenFactory.tokenFromKeyword(Keyword.FOR),
+ leftParenthesis: TokenFactory.tokenFromType(TokenType.OPEN_PAREN),
forLoopParts: astFactory.forEachPartsWithIdentifier(
identifier: AstTestFactory.identifier3('a'),
+ inKeyword: TokenFactory.tokenFromKeyword(Keyword.IN),
iterable: AstTestFactory.identifier3('b')),
+ rightParenthesis: TokenFactory.tokenFromType(TokenType.CLOSE_PAREN),
body: AstTestFactory.expressionStatement(
AstTestFactory.identifier3('c')));
@@ -530,7 +549,10 @@
void test_visitIfElement() {
IfElement createNode() => astFactory.ifElement(
+ ifKeyword: TokenFactory.tokenFromKeyword(Keyword.IF),
+ leftParenthesis: TokenFactory.tokenFromType(TokenType.OPEN_PAREN),
condition: AstTestFactory.identifier3('a'),
+ rightParenthesis: TokenFactory.tokenFromType(TokenType.CLOSE_PAREN),
thenElement: AstTestFactory.identifier3('b'),
elseElement: AstTestFactory.identifier3('c'));
@@ -629,24 +651,25 @@
void test_visitListLiteral() {
ListLiteral createNode() => astFactory.listLiteral(
- null,
- AstTestFactory.typeArgumentList([AstTestFactory.typeName4('A')]),
- null,
- [AstTestFactory.identifier3('b')],
- null);
+ null,
+ AstTestFactory.typeArgumentList([AstTestFactory.typeName4('A')]),
+ TokenFactory.tokenFromType(TokenType.OPEN_SQUARE_BRACKET),
+ [AstTestFactory.identifier3('b')],
+ TokenFactory.tokenFromType(TokenType.CLOSE_SQUARE_BRACKET),
+ );
DartType typeA = interfaceTypeStar(ElementFactory.classElement2('A'));
DartType typeB = interfaceTypeStar(ElementFactory.classElement2('B'));
DartType typeC = interfaceTypeStar(ElementFactory.classElement2('C'));
ListLiteral fromNode = createNode();
- (fromNode.typeArguments.arguments[0] as TypeName).type = typeA;
+ (fromNode.typeArguments!.arguments[0] as TypeName).type = typeA;
(fromNode.elements[0] as SimpleIdentifier).staticType = typeB;
fromNode.staticType = typeC;
ListLiteral toNode = createNode();
ResolutionCopier.copyResolutionData(fromNode, toNode);
- expect((toNode.typeArguments.arguments[0] as TypeName).type, same(typeA));
+ expect((toNode.typeArguments!.arguments[0] as TypeName).type, same(typeA));
expect((toNode.elements[0] as SimpleIdentifier).staticType, same(typeB));
expect(fromNode.staticType, same(typeC));
}
@@ -705,7 +728,12 @@
void test_visitPartDirective() {
PartDirective fromNode = AstTestFactory.partDirective2("part.dart");
LibraryElement element = LibraryElementImpl(
- null, null, 'lib', -1, 0, FeatureSet.latestLanguageVersion());
+ _AnalysisContextMock(),
+ _AnalysisSessionMock(),
+ 'lib',
+ -1,
+ 0,
+ FeatureSet.latestLanguageVersion());
fromNode.element = element;
PartDirective toNode = AstTestFactory.partDirective2("part.dart");
ResolutionCopier.copyResolutionData(fromNode, toNode);
@@ -716,7 +744,12 @@
PartOfDirective fromNode = AstTestFactory.partOfDirective(
AstTestFactory.libraryIdentifier2(["lib"]));
LibraryElement element = LibraryElementImpl(
- null, null, 'lib', -1, 0, FeatureSet.latestLanguageVersion());
+ _AnalysisContextMock(),
+ _AnalysisSessionMock(),
+ 'lib',
+ -1,
+ 0,
+ FeatureSet.latestLanguageVersion());
fromNode.element = element;
PartOfDirective toNode = AstTestFactory.partOfDirective(
AstTestFactory.libraryIdentifier2(["lib"]));
@@ -798,9 +831,13 @@
void test_visitSetOrMapLiteral_map() {
SetOrMapLiteral createNode() => astFactory.setOrMapLiteral(
- typeArguments: AstTestFactory.typeArgumentList(
- [AstTestFactory.typeName4('A'), AstTestFactory.typeName4('B')]),
- elements: [AstTestFactory.mapLiteralEntry3('c', 'd')]);
+ typeArguments: AstTestFactory.typeArgumentList(
+ [AstTestFactory.typeName4('A'), AstTestFactory.typeName4('B')]),
+ leftBracket: TokenFactory.tokenFromType(TokenType.OPEN_CURLY_BRACKET),
+ elements: [AstTestFactory.mapLiteralEntry3('c', 'd')],
+ rightBracket:
+ TokenFactory.tokenFromType(TokenType.CLOSE_CURLY_BRACKET),
+ );
DartType typeA = interfaceTypeStar(ElementFactory.classElement2('A'));
DartType typeB = interfaceTypeStar(ElementFactory.classElement2('B'));
@@ -808,16 +845,16 @@
DartType typeD = interfaceTypeStar(ElementFactory.classElement2('D'));
SetOrMapLiteral fromNode = createNode();
- (fromNode.typeArguments.arguments[0] as TypeName).type = typeA;
- (fromNode.typeArguments.arguments[1] as TypeName).type = typeB;
+ (fromNode.typeArguments!.arguments[0] as TypeName).type = typeA;
+ (fromNode.typeArguments!.arguments[1] as TypeName).type = typeB;
MapLiteralEntry fromEntry = fromNode.elements[0] as MapLiteralEntry;
(fromEntry.key as SimpleStringLiteral).staticType = typeC;
(fromEntry.value as SimpleStringLiteral).staticType = typeD;
SetOrMapLiteral toNode = createNode();
ResolutionCopier.copyResolutionData(fromNode, toNode);
- expect((toNode.typeArguments.arguments[0] as TypeName).type, same(typeA));
- expect((toNode.typeArguments.arguments[1] as TypeName).type, same(typeB));
+ expect((toNode.typeArguments!.arguments[0] as TypeName).type, same(typeA));
+ expect((toNode.typeArguments!.arguments[1] as TypeName).type, same(typeB));
MapLiteralEntry toEntry = fromNode.elements[0] as MapLiteralEntry;
expect((toEntry.key as SimpleStringLiteral).staticType, same(typeC));
expect((toEntry.value as SimpleStringLiteral).staticType, same(typeD));
@@ -825,20 +862,24 @@
void test_visitSetOrMapLiteral_set() {
SetOrMapLiteral createNode() => astFactory.setOrMapLiteral(
- typeArguments:
- AstTestFactory.typeArgumentList([AstTestFactory.typeName4('A')]),
- elements: [AstTestFactory.identifier3('b')]);
+ typeArguments:
+ AstTestFactory.typeArgumentList([AstTestFactory.typeName4('A')]),
+ leftBracket: TokenFactory.tokenFromType(TokenType.OPEN_CURLY_BRACKET),
+ elements: [AstTestFactory.identifier3('b')],
+ rightBracket:
+ TokenFactory.tokenFromType(TokenType.CLOSE_CURLY_BRACKET),
+ );
DartType typeA = interfaceTypeStar(ElementFactory.classElement2('A'));
DartType typeB = interfaceTypeStar(ElementFactory.classElement2('B'));
SetOrMapLiteral fromNode = createNode();
- (fromNode.typeArguments.arguments[0] as TypeName).type = typeA;
+ (fromNode.typeArguments!.arguments[0] as TypeName).type = typeA;
(fromNode.elements[0] as SimpleIdentifier).staticType = typeB;
SetOrMapLiteral toNode = createNode();
ResolutionCopier.copyResolutionData(fromNode, toNode);
- expect((toNode.typeArguments.arguments[0] as TypeName).type, same(typeA));
+ expect((toNode.typeArguments!.arguments[0] as TypeName).type, same(typeA));
expect((toNode.elements[0] as SimpleIdentifier).staticType, same(typeB));
}
@@ -869,7 +910,11 @@
spreadOperator:
TokenFactory.tokenFromType(TokenType.PERIOD_PERIOD_PERIOD),
expression: astFactory.listLiteral(
- null, null, null, [AstTestFactory.identifier3('a')], null));
+ null,
+ null,
+ TokenFactory.tokenFromType(TokenType.OPEN_SQUARE_BRACKET),
+ [AstTestFactory.identifier3('a')],
+ TokenFactory.tokenFromType(TokenType.CLOSE_SQUARE_BRACKET)));
DartType typeA = interfaceTypeStar(ElementFactory.classElement2('A'));
@@ -936,10 +981,14 @@
}
void test_visitThrowExpression() {
- ThrowExpression fromNode = AstTestFactory.throwExpression();
+ ThrowExpression fromNode = AstTestFactory.throwExpression2(
+ AstTestFactory.integer(0),
+ );
DartType staticType = interfaceTypeStar(ElementFactory.classElement2('C'));
fromNode.staticType = staticType;
- ThrowExpression toNode = AstTestFactory.throwExpression();
+ ThrowExpression toNode = AstTestFactory.throwExpression2(
+ AstTestFactory.integer(0),
+ );
ResolutionCopier.copyResolutionData(fromNode, toNode);
expect(toNode.staticType, same(staticType));
}
@@ -965,14 +1014,22 @@
ResolutionCopier.copyResolutionData(fromNode, toNode);
expect(toNode.staticType, same(staticType));
expect(toNode.staticInvokeType, same(staticInvokeType));
- List<TypeAnnotation> fromTypeArguments = toNode.typeArguments.arguments;
- List<TypeAnnotation> toTypeArguments = fromNode.typeArguments.arguments;
- if (fromTypeArguments != null) {
- for (int i = 0; i < fromTypeArguments.length; i++) {
- TypeAnnotation toArgument = fromTypeArguments[i];
- TypeAnnotation fromArgument = toTypeArguments[i];
- expect(toArgument.type, same(fromArgument.type));
- }
+ List<TypeAnnotation> fromTypeArguments = toNode.typeArguments!.arguments;
+ List<TypeAnnotation> toTypeArguments = fromNode.typeArguments!.arguments;
+ for (int i = 0; i < fromTypeArguments.length; i++) {
+ TypeAnnotation toArgument = fromTypeArguments[i];
+ TypeAnnotation fromArgument = toTypeArguments[i];
+ expect(toArgument.type, same(fromArgument.type));
}
}
}
+
+class _AnalysisContextMock implements AnalysisContext {
+ @override
+ noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
+}
+
+class _AnalysisSessionMock implements AnalysisSession {
+ @override
+ noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
+}
diff --git a/pkg/analyzer/test/src/dart/constant/evaluation_test.dart b/pkg/analyzer/test/src/dart/constant/evaluation_test.dart
index 30e51fb..4cfa035 100644
--- a/pkg/analyzer/test/src/dart/constant/evaluation_test.dart
+++ b/pkg/analyzer/test/src/dart/constant/evaluation_test.dart
@@ -6,6 +6,7 @@
import 'package:analyzer/error/error.dart';
import 'package:analyzer/error/listener.dart';
import 'package:analyzer/src/dart/analysis/experiments.dart';
+import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/error/codes.dart';
import 'package:analyzer/src/generated/constant.dart';
import 'package:test/test.dart';
@@ -34,7 +35,7 @@
''');
DartObjectImpl result = _evaluateConstant('c');
expect(result.type, typeProvider.listType2(typeProvider.intType));
- expect(result.toListValue().map((e) => e.toIntValue()), [1, 3, 4]);
+ expect(result.toListValue()!.map((e) => e.toIntValue()), [1, 3, 4]);
}
test_listLiteral_ifElement_false_withoutElse() async {
@@ -43,7 +44,7 @@
''');
DartObjectImpl result = _evaluateConstant('c');
expect(result.type, typeProvider.listType2(typeProvider.intType));
- expect(result.toListValue().map((e) => e.toIntValue()), [1, 3]);
+ expect(result.toListValue()!.map((e) => e.toIntValue()), [1, 3]);
}
test_listLiteral_ifElement_true_withElse() async {
@@ -52,7 +53,7 @@
''');
DartObjectImpl result = _evaluateConstant('c');
expect(result.type, typeProvider.listType2(typeProvider.intType));
- expect(result.toListValue().map((e) => e.toIntValue()), [1, 2, 4]);
+ expect(result.toListValue()!.map((e) => e.toIntValue()), [1, 2, 4]);
}
test_listLiteral_ifElement_true_withoutElse() async {
@@ -61,7 +62,7 @@
''');
DartObjectImpl result = _evaluateConstant('c');
expect(result.type, typeProvider.listType2(typeProvider.intType));
- expect(result.toListValue().map((e) => e.toIntValue()), [1, 2, 3]);
+ expect(result.toListValue()!.map((e) => e.toIntValue()), [1, 2, 3]);
}
test_listLiteral_nested() async {
@@ -72,7 +73,7 @@
// The expected type ought to be `List<int>`, but type inference isn't yet
// implemented.
expect(result.type, typeProvider.listType2(typeProvider.intType));
- expect(result.toListValue().map((e) => e.toIntValue()), [1, 2, 3]);
+ expect(result.toListValue()!.map((e) => e.toIntValue()), [1, 2, 3]);
}
test_listLiteral_spreadElement() async {
@@ -81,7 +82,7 @@
''');
DartObjectImpl result = _evaluateConstant('c');
expect(result.type, typeProvider.listType2(typeProvider.intType));
- expect(result.toListValue().map((e) => e.toIntValue()), [1, 2, 3, 4]);
+ expect(result.toListValue()!.map((e) => e.toIntValue()), [1, 2, 3, 4]);
}
test_mapLiteral_ifElement_false_withElse() async {
@@ -91,7 +92,7 @@
DartObjectImpl result = _evaluateConstant('c');
expect(result.type,
typeProvider.mapType2(typeProvider.stringType, typeProvider.intType));
- Map<DartObject, DartObject> value = result.toMapValue();
+ Map<DartObject, DartObject> value = result.toMapValue()!;
expect(value.keys.map((e) => e.toStringValue()),
unorderedEquals(['a', 'c', 'd']));
expect(value.values.map((e) => e.toIntValue()), unorderedEquals([1, 3, 4]));
@@ -104,7 +105,7 @@
DartObjectImpl result = _evaluateConstant('c');
expect(result.type,
typeProvider.mapType2(typeProvider.stringType, typeProvider.intType));
- Map<DartObject, DartObject> value = result.toMapValue();
+ Map<DartObject, DartObject> value = result.toMapValue()!;
expect(
value.keys.map((e) => e.toStringValue()), unorderedEquals(['a', 'c']));
expect(value.values.map((e) => e.toIntValue()), unorderedEquals([1, 3]));
@@ -117,7 +118,7 @@
DartObjectImpl result = _evaluateConstant('c');
expect(result.type,
typeProvider.mapType2(typeProvider.stringType, typeProvider.intType));
- Map<DartObject, DartObject> value = result.toMapValue();
+ Map<DartObject, DartObject> value = result.toMapValue()!;
expect(value.keys.map((e) => e.toStringValue()),
unorderedEquals(['a', 'b', 'd']));
expect(value.values.map((e) => e.toIntValue()), unorderedEquals([1, 2, 4]));
@@ -130,7 +131,7 @@
DartObjectImpl result = _evaluateConstant('c');
expect(result.type,
typeProvider.mapType2(typeProvider.stringType, typeProvider.intType));
- Map<DartObject, DartObject> value = result.toMapValue();
+ Map<DartObject, DartObject> value = result.toMapValue()!;
expect(value.keys.map((e) => e.toStringValue()),
unorderedEquals(['a', 'b', 'c']));
expect(value.values.map((e) => e.toIntValue()), unorderedEquals([1, 2, 3]));
@@ -145,7 +146,7 @@
DartObjectImpl result = _evaluateConstant('c');
expect(result.type,
typeProvider.mapType2(typeProvider.intType, typeProvider.intType));
- Map<DartObject, DartObject> value = result.toMapValue();
+ Map<DartObject, DartObject> value = result.toMapValue()!;
expect(value.keys.map((e) => e.toStringValue()),
unorderedEquals(['a', 'b', 'c']));
expect(value.values.map((e) => e.toIntValue()), unorderedEquals([1, 2, 3]));
@@ -158,7 +159,7 @@
DartObjectImpl result = _evaluateConstant('c');
expect(result.type,
typeProvider.mapType2(typeProvider.stringType, typeProvider.intType));
- Map<DartObject, DartObject> value = result.toMapValue();
+ Map<DartObject, DartObject> value = result.toMapValue()!;
expect(value.keys.map((e) => e.toStringValue()),
unorderedEquals(['a', 'b', 'c', 'd']));
expect(
@@ -171,7 +172,7 @@
''');
DartObjectImpl result = _evaluateConstant('c');
expect(result.type, typeProvider.setType2(typeProvider.intType));
- expect(result.toSetValue().map((e) => e.toIntValue()), [1, 3, 4]);
+ expect(result.toSetValue()!.map((e) => e.toIntValue()), [1, 3, 4]);
}
test_setLiteral_ifElement_false_withoutElse() async {
@@ -180,7 +181,7 @@
''');
DartObjectImpl result = _evaluateConstant('c');
expect(result.type, typeProvider.setType2(typeProvider.intType));
- expect(result.toSetValue().map((e) => e.toIntValue()), [1, 3]);
+ expect(result.toSetValue()!.map((e) => e.toIntValue()), [1, 3]);
}
test_setLiteral_ifElement_true_withElse() async {
@@ -189,7 +190,7 @@
''');
DartObjectImpl result = _evaluateConstant('c');
expect(result.type, typeProvider.setType2(typeProvider.intType));
- expect(result.toSetValue().map((e) => e.toIntValue()), [1, 2, 4]);
+ expect(result.toSetValue()!.map((e) => e.toIntValue()), [1, 2, 4]);
}
test_setLiteral_ifElement_true_withoutElse() async {
@@ -198,7 +199,7 @@
''');
DartObjectImpl result = _evaluateConstant('c');
expect(result.type, typeProvider.setType2(typeProvider.intType));
- expect(result.toSetValue().map((e) => e.toIntValue()), [1, 2, 3]);
+ expect(result.toSetValue()!.map((e) => e.toIntValue()), [1, 2, 3]);
}
test_setLiteral_nested() async {
@@ -207,7 +208,7 @@
''');
DartObjectImpl result = _evaluateConstant('c');
expect(result.type, typeProvider.setType2(typeProvider.intType));
- expect(result.toSetValue().map((e) => e.toIntValue()), [1, 2, 3]);
+ expect(result.toSetValue()!.map((e) => e.toIntValue()), [1, 2, 3]);
}
test_setLiteral_spreadElement() async {
@@ -216,7 +217,7 @@
''');
DartObjectImpl result = _evaluateConstant('c');
expect(result.type, typeProvider.setType2(typeProvider.intType));
- expect(result.toSetValue().map((e) => e.toIntValue()), [1, 2, 3, 4]);
+ expect(result.toSetValue()!.map((e) => e.toIntValue()), [1, 2, 3, 4]);
}
test_visitAsExpression_instanceOfSameClass() async {
@@ -259,7 +260,7 @@
const B();
}
''');
- DartObjectImpl result = _evaluateConstant('b',
+ var result = _evaluateConstantOrNull('b',
errorCodes: [CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION]);
expect(result, isNull);
}
@@ -275,7 +276,7 @@
const B();
}
''');
- DartObjectImpl result = _evaluateConstant('b',
+ var result = _evaluateConstantOrNull('b',
errorCodes: [CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION]);
expect(result, isNull);
}
@@ -351,7 +352,7 @@
await resolveTestCode('''
const c = 3 & false;
''');
- _evaluateConstant('c',
+ _evaluateConstantOrNull('c',
errorCodes: [CompileTimeErrorCode.CONST_EVAL_TYPE_BOOL_INT]);
}
@@ -403,7 +404,7 @@
await resolveTestCode('''
const c = 3 | false;
''');
- _evaluateConstant('c',
+ _evaluateConstantOrNull('c',
errorCodes: [CompileTimeErrorCode.CONST_EVAL_TYPE_BOOL_INT]);
}
@@ -457,7 +458,8 @@
const c = null ?? new C();
class C {}
''');
- _evaluateConstant('c', errorCodes: [CompileTimeErrorCode.INVALID_CONSTANT]);
+ _evaluateConstantOrNull('c',
+ errorCodes: [CompileTimeErrorCode.INVALID_CONSTANT]);
}
test_visitBinaryExpression_questionQuestion_lazy_null_notNull() async {
@@ -525,7 +527,7 @@
await resolveTestCode('''
const c = 3 ^ false;
''');
- _evaluateConstant('c',
+ _evaluateConstantOrNull('c',
errorCodes: [CompileTimeErrorCode.CONST_EVAL_TYPE_BOOL_INT]);
}
@@ -542,7 +544,7 @@
await resolveTestCode('''
const c = null ? 1 : 0;
''');
- DartObjectImpl result = _evaluateConstant(
+ var result = _evaluateConstantOrNull(
'c',
errorCodes: [CompileTimeErrorCode.CONST_EVAL_TYPE_BOOL],
);
@@ -577,7 +579,7 @@
await resolveTestCode('''
const c = true ? x : 0;
''');
- DartObjectImpl result = _evaluateConstant(
+ var result = _evaluateConstantOrNull(
'c',
errorCodes: [CompileTimeErrorCode.INVALID_CONSTANT],
);
@@ -597,7 +599,8 @@
await resolveTestCode('''
const c = false ? 1 : new C();
''');
- _evaluateConstant('c', errorCodes: [CompileTimeErrorCode.INVALID_CONSTANT]);
+ _evaluateConstantOrNull('c',
+ errorCodes: [CompileTimeErrorCode.INVALID_CONSTANT]);
}
test_visitConditionalExpression_lazy_false_invalid_int() async {
@@ -614,7 +617,7 @@
await resolveTestCode('''
const c = 3 ? 1 : 0;
''');
- _evaluateConstant('c',
+ _evaluateConstantOrNull('c',
errorCodes: [CompileTimeErrorCode.CONST_EVAL_TYPE_BOOL]);
}
@@ -642,7 +645,8 @@
const c = true ? new C() : 0;
class C {}
''');
- _evaluateConstant('c', errorCodes: [CompileTimeErrorCode.INVALID_CONSTANT]);
+ _evaluateConstantOrNull('c',
+ errorCodes: [CompileTimeErrorCode.INVALID_CONSTANT]);
}
test_visitInstanceCreationExpression_bool_fromEnvironment() async {
@@ -1016,13 +1020,27 @@
class ConstantVisitorTestSupport extends PubPackageResolutionTest {
DartObjectImpl _evaluateConstant(
String name, {
- List<ErrorCode> errorCodes,
+ List<ErrorCode>? errorCodes,
Map<String, String> declaredVariables = const {},
- Map<String, DartObjectImpl> lexicalEnvironment,
+ Map<String, DartObjectImpl>? lexicalEnvironment,
}) {
- var expression = findNode.topVariableDeclarationByName(name).initializer;
+ return _evaluateConstantOrNull(
+ name,
+ errorCodes: errorCodes,
+ declaredVariables: declaredVariables,
+ lexicalEnvironment: lexicalEnvironment,
+ )!;
+ }
- var source = this.result.unit.declaredElement.source;
+ DartObjectImpl? _evaluateConstantOrNull(
+ String name, {
+ List<ErrorCode>? errorCodes,
+ Map<String, String> declaredVariables = const {},
+ Map<String, DartObjectImpl>? lexicalEnvironment,
+ }) {
+ var expression = findNode.topVariableDeclarationByName(name).initializer!;
+
+ var source = this.result.unit!.declaredElement!.source;
var errorListener = GatheringErrorListener();
var errorReporter = ErrorReporter(
errorListener,
@@ -1030,12 +1048,12 @@
isNonNullableByDefault: false,
);
- DartObjectImpl result = expression.accept(
+ DartObjectImpl? result = expression.accept(
ConstantVisitor(
ConstantEvaluationEngine(
DeclaredVariables.fromMap(declaredVariables),
),
- this.result.libraryElement,
+ this.result.libraryElement as LibraryElementImpl,
errorReporter,
lexicalEnvironment: lexicalEnvironment,
),
@@ -1120,7 +1138,7 @@
await resolveTestCode('''
const c = 0xFFFFFFFF >>> -2;
''');
- _evaluateConstant('c',
+ _evaluateConstantOrNull('c',
errorCodes: [CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION]);
}
@@ -1164,7 +1182,7 @@
await resolveTestCode('''
const c = 0xFF >>> -2;
''');
- _evaluateConstant('c',
+ _evaluateConstantOrNull('c',
errorCodes: [CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION]);
}
diff --git a/pkg/analyzer/test/src/dart/constant/potentially_constant_test.dart b/pkg/analyzer/test/src/dart/constant/potentially_constant_test.dart
index 97a88b3..9951612 100644
--- a/pkg/analyzer/test/src/dart/constant/potentially_constant_test.dart
+++ b/pkg/analyzer/test/src/dart/constant/potentially_constant_test.dart
@@ -122,19 +122,19 @@
Future<void> _assertConst(String code) async {
await resolveTestCode(code);
- var type = findNode.variableDeclarationList('x;').type;
+ var type = findNode.variableDeclarationList('x;').type!;
expect(isConstantTypeExpression(type), isTrue);
}
Future<void> _assertNeverConst(String code) async {
await resolveTestCode(code);
- var type = findNode.variableDeclarationList('x;').type;
+ var type = findNode.variableDeclarationList('x;').type!;
expect(isConstantTypeExpression(type), isFalse);
}
Future<void> _assertPotentiallyConst(String code) async {
await resolveTestCode(code);
- var type = findNode.variableDeclarationList('x;').type;
+ var type = findNode.variableDeclarationList('x;').type!;
expect(isConstantTypeExpression(type), isFalse);
}
}
@@ -166,14 +166,14 @@
@override
Future<void> _assertConst(String code) async {
await resolveTestCode(code);
- var type = findNode.variableDeclarationList('x;').type;
+ var type = findNode.variableDeclarationList('x;').type!;
expect(isPotentiallyConstantTypeExpression(type), isTrue);
}
@override
Future<void> _assertPotentiallyConst(String code) async {
await resolveTestCode(code);
- var type = findNode.variableDeclarationList('x;').type;
+ var type = findNode.variableDeclarationList('x;').type!;
expect(isPotentiallyConstantTypeExpression(type), isTrue);
}
}
@@ -920,7 +920,7 @@
}
Expression _xInitializer() {
- return findNode.variableDeclaration('x = ').initializer;
+ return findNode.variableDeclaration('x = ').initializer!;
}
}
diff --git a/pkg/analyzer/test/src/dart/constant/utilities_test.dart b/pkg/analyzer/test/src/dart/constant/utilities_test.dart
index cc8199f..c8c64b8 100644
--- a/pkg/analyzer/test/src/dart/constant/utilities_test.dart
+++ b/pkg/analyzer/test/src/dart/constant/utilities_test.dart
@@ -12,6 +12,7 @@
import 'package:analyzer/src/dart/constant/evaluation.dart';
import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/generated/constant.dart';
+import 'package:analyzer/src/generated/engine.dart';
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/generated/source_io.dart';
import 'package:analyzer/src/generated/testing/ast_test_factory.dart';
@@ -31,9 +32,9 @@
@reflectiveTest
class ConstantFinderTest {
- AstNode _node;
- TypeProvider _typeProvider;
- Source _source;
+ late final AstNode _node;
+ late final TypeProvider _typeProvider;
+ late final Source _source;
void setUp() {
_typeProvider = TestTypeProvider();
@@ -43,10 +44,10 @@
/// Test an annotation that consists solely of an identifier (and hence
/// represents a reference to a compile-time constant variable).
void test_visitAnnotation_constantVariable() {
- CompilationUnitElement compilationUnitElement =
+ var compilationUnitElement =
ElementFactory.compilationUnit('/test.dart', _source)..source = _source;
- ElementFactory.library(null, 'L').definingCompilationUnit =
- compilationUnitElement;
+ ElementFactory.library(_AnalysisContextMock(), 'L')
+ .definingCompilationUnit = compilationUnitElement;
ElementAnnotationImpl elementAnnotation =
ElementAnnotationImpl(compilationUnitElement);
_node = elementAnnotation.annotationAst =
@@ -67,10 +68,10 @@
/// Test an annotation that represents the invocation of a constant
/// constructor.
void test_visitAnnotation_invocation() {
- CompilationUnitElement compilationUnitElement =
+ var compilationUnitElement =
ElementFactory.compilationUnit('/test.dart', _source)..source = _source;
- ElementFactory.library(null, 'L').definingCompilationUnit =
- compilationUnitElement;
+ ElementFactory.library(_AnalysisContextMock(), 'L')
+ .definingCompilationUnit = compilationUnitElement;
ElementAnnotationImpl elementAnnotation =
ElementAnnotationImpl(compilationUnitElement);
_node = elementAnnotation.annotationAst = AstTestFactory.annotation2(
@@ -182,16 +183,15 @@
}
ConstructorElement _setupConstructorDeclaration(String name, bool isConst) {
- Keyword constKeyword = isConst ? Keyword.CONST : null;
- ConstructorDeclarationImpl constructorDeclaration =
- AstTestFactory.constructorDeclaration2(
- constKeyword,
- null,
- null,
- name,
- AstTestFactory.formalParameterList(),
- null,
- AstTestFactory.blockFunctionBody2());
+ var constKeyword = isConst ? Keyword.CONST : null;
+ var constructorDeclaration = AstTestFactory.constructorDeclaration2(
+ constKeyword,
+ null,
+ AstTestFactory.identifier3(name),
+ null,
+ AstTestFactory.formalParameterList(),
+ [],
+ AstTestFactory.blockFunctionBody2()) as ConstructorDeclarationImpl;
ClassElement classElement = ElementFactory.classElement2(name);
ConstructorElement element =
ElementFactory.constructorElement(classElement, name, isConst);
@@ -209,7 +209,7 @@
? AstTestFactory.variableDeclaration2(
fieldName, AstTestFactory.integer(0))
: AstTestFactory.variableDeclaration(fieldName);
- VariableElement fieldElement = ElementFactory.fieldElement(
+ var fieldElement = ElementFactory.fieldElement(
fieldName,
isStatic,
keyword == Keyword.FINAL,
@@ -226,15 +226,14 @@
classElement.fields = <FieldElement>[fieldElement];
classDeclaration.name.staticElement = classElement;
if (hasConstConstructor) {
- ConstructorDeclarationImpl constructorDeclaration =
- AstTestFactory.constructorDeclaration2(
- Keyword.CONST,
- null,
- AstTestFactory.identifier3(className),
- null,
- AstTestFactory.formalParameterList(),
- null,
- AstTestFactory.blockFunctionBody2());
+ var constructorDeclaration = AstTestFactory.constructorDeclaration2(
+ Keyword.CONST,
+ null,
+ AstTestFactory.identifier3(className),
+ null,
+ AstTestFactory.formalParameterList(),
+ [],
+ AstTestFactory.blockFunctionBody2()) as ConstructorDeclarationImpl;
classDeclaration.members.add(constructorDeclaration);
ConstructorElement constructorElement =
ElementFactory.constructorElement(classElement, '', true);
@@ -255,7 +254,11 @@
SimpleIdentifier identifier = variableDeclaration.name;
VariableElement element = ElementFactory.localVariableElement(identifier);
identifier.staticElement = element;
- Keyword keyword = isConst ? Keyword.CONST : isFinal ? Keyword.FINAL : null;
+ var keyword = isConst
+ ? Keyword.CONST
+ : isFinal
+ ? Keyword.FINAL
+ : null;
AstTestFactory.variableDeclarationList2(keyword, [variableDeclaration]);
_node = variableDeclaration;
return element;
@@ -264,7 +267,7 @@
@reflectiveTest
class ReferenceFinderTest {
- Element _tail;
+ late final Element _tail;
final List<ConstantEvaluationTarget> _dependencies = [];
void test_visitSimpleIdentifier_const() {
@@ -338,3 +341,8 @@
node.accept(referenceFinder);
}
}
+
+class _AnalysisContextMock implements AnalysisContext {
+ @override
+ noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
+}
diff --git a/pkg/analyzer/test/src/dart/constant/value_test.dart b/pkg/analyzer/test/src/dart/constant/value_test.dart
index df77b25..160770d 100644
--- a/pkg/analyzer/test/src/dart/constant/value_test.dart
+++ b/pkg/analyzer/test/src/dart/constant/value_test.dart
@@ -25,8 +25,8 @@
@reflectiveTest
class DartObjectImplTest {
- TypeProvider _typeProvider;
- TypeSystemImpl _typeSystem;
+ late final TypeProvider _typeProvider;
+ late final TypeSystemImpl _typeSystem;
void setUp() {
var analysisContext = TestAnalysisContext();
@@ -504,14 +504,14 @@
}
void test_getValue_list_empty() {
- Object result = _listValue(_typeProvider.intType, []).toListValue();
+ var result = _listValue(_typeProvider.intType, []).toListValue();
_assertInstanceOfObjectArray(result);
List<Object> array = result as List<Object>;
expect(array, hasLength(0));
}
void test_getValue_list_valid() {
- Object result =
+ var result =
_listValue(_typeProvider.intType, [_intValue(23)]).toListValue();
_assertInstanceOfObjectArray(result);
List<Object> array = result as List<Object>;
@@ -519,13 +519,13 @@
}
void test_getValue_map_empty() {
- Map result = _mapValue(_typeProvider.intType, _typeProvider.stringType, [])
+ var result = _mapValue(_typeProvider.intType, _typeProvider.stringType, [])
.toMapValue();
expect(result, hasLength(0));
}
void test_getValue_map_valid() {
- Map result = _mapValue(_typeProvider.stringType, _typeProvider.stringType,
+ var result = _mapValue(_typeProvider.stringType, _typeProvider.stringType,
[_stringValue("key"), _stringValue("value")]).toMapValue();
expect(result, hasLength(1));
}
@@ -536,13 +536,13 @@
void test_getValue_set_empty() {
DartObjectImpl object = _setValue(_typeProvider.intType, null);
- Set<DartObject> set = object.toSetValue();
+ var set = object.toSetValue();
expect(set, hasLength(0));
}
void test_getValue_set_valid() {
DartObjectImpl object = _setValue(_typeProvider.intType, {_intValue(23)});
- Set<DartObject> set = object.toSetValue();
+ var set = object.toSetValue();
expect(set, hasLength(1));
}
@@ -1732,7 +1732,7 @@
/// [expected] value, or that the operation throws an exception if the
/// expected value is `null`.
void _assertAdd(
- DartObjectImpl expected, DartObjectImpl left, DartObjectImpl right) {
+ DartObjectImpl? expected, DartObjectImpl left, DartObjectImpl right) {
if (expected == null) {
expect(() {
left.add(_typeSystem, right);
@@ -1746,7 +1746,7 @@
/// Assert that the bit-not of the [operand] is the [expected] value, or that
/// the operation throws an exception if the expected value is `null`.
- void _assertBitNot(DartObjectImpl expected, DartObjectImpl operand) {
+ void _assertBitNot(DartObjectImpl? expected, DartObjectImpl operand) {
if (expected == null) {
expect(() {
operand.bitNot(_typeSystem);
@@ -1762,7 +1762,7 @@
/// the [expected] value, or that the operation throws an exception if the
/// expected value is `null`.
void _assertConcatenate(
- DartObjectImpl expected, DartObjectImpl left, DartObjectImpl right) {
+ DartObjectImpl? expected, DartObjectImpl left, DartObjectImpl right) {
if (expected == null) {
expect(() {
left.concatenate(_typeSystem, right);
@@ -1778,7 +1778,7 @@
/// [expected] value, or that the operation throws an exception if the
/// expected value is `null`.
void _assertDivide(
- DartObjectImpl expected, DartObjectImpl left, DartObjectImpl right) {
+ DartObjectImpl? expected, DartObjectImpl left, DartObjectImpl right) {
if (expected == null) {
expect(() {
left.divide(_typeSystem, right);
@@ -1794,7 +1794,7 @@
/// the [expected] value, or that the operation throws an exception if the
/// expected value is `null`.
void _assertEagerAnd(
- DartObjectImpl expected, DartObjectImpl left, DartObjectImpl right) {
+ DartObjectImpl? expected, DartObjectImpl left, DartObjectImpl right) {
if (expected == null) {
expect(() {
left.eagerAnd(_typeSystem, right);
@@ -1810,7 +1810,7 @@
/// [expected] value, or that the operation throws an exception if the
/// expected value is `null`.
void _assertEagerOr(
- DartObjectImpl expected, DartObjectImpl left, DartObjectImpl right) {
+ DartObjectImpl? expected, DartObjectImpl left, DartObjectImpl right) {
if (expected == null) {
expect(() {
left.eagerOr(_typeSystem, right);
@@ -1826,7 +1826,7 @@
/// the [expected] value, or that the operation throws an exception if the
/// expected value is `null`.
void _assertEagerXor(
- DartObjectImpl expected, DartObjectImpl left, DartObjectImpl right) {
+ DartObjectImpl? expected, DartObjectImpl left, DartObjectImpl right) {
if (expected == null) {
expect(() {
left.eagerXor(_typeSystem, right);
@@ -1842,7 +1842,7 @@
/// equality is the [expected] value, or that the operation throws an
/// exception if the expected value is `null`.
void _assertEqualEqual(
- DartObjectImpl expected, DartObjectImpl left, DartObjectImpl right) {
+ DartObjectImpl? expected, DartObjectImpl left, DartObjectImpl right) {
if (expected == null) {
expect(() {
left.equalEqual(_typeSystem, right);
@@ -1858,7 +1858,7 @@
/// [expected] value, or that the operation throws an exception if the
/// expected value is `null`.
void _assertGreaterThan(
- DartObjectImpl expected, DartObjectImpl left, DartObjectImpl right) {
+ DartObjectImpl? expected, DartObjectImpl left, DartObjectImpl right) {
if (expected == null) {
expect(() {
left.greaterThan(_typeSystem, right);
@@ -1874,7 +1874,7 @@
/// [expected] value, or that the operation throws an exception if the
/// expected value is `null`.
void _assertGreaterThanOrEqual(
- DartObjectImpl expected, DartObjectImpl left, DartObjectImpl right) {
+ DartObjectImpl? expected, DartObjectImpl left, DartObjectImpl right) {
if (expected == null) {
expect(() {
left.greaterThanOrEqual(_typeSystem, right);
@@ -1895,7 +1895,7 @@
expect(result, expected);
}
- void _assertInstanceOfObjectArray(Object result) {
+ void _assertInstanceOfObjectArray(Object? result) {
// TODO(scheglov) implement
}
@@ -1903,7 +1903,7 @@
/// integers is the [expected] value, or that the operation throws an
/// exception if the expected value is `null`.
void _assertIntegerDivide(
- DartObjectImpl expected, DartObjectImpl left, DartObjectImpl right) {
+ DartObjectImpl? expected, DartObjectImpl left, DartObjectImpl right) {
if (expected == null) {
expect(() {
left.integerDivide(_typeSystem, right);
@@ -1919,7 +1919,7 @@
/// is the [expected] value, or that the operation throws an exception if the
/// expected value is `null`.
void _assertLazyAnd(
- DartObjectImpl expected, DartObjectImpl left, DartObjectImpl right) {
+ DartObjectImpl? expected, DartObjectImpl left, DartObjectImpl right) {
if (expected == null) {
expect(() {
left.lazyAnd(_typeSystem, () => right);
@@ -1935,7 +1935,7 @@
/// the [expected] value, or that the operation throws an exception if the
/// expected value is `null`.
void _assertLazyOr(
- DartObjectImpl expected, DartObjectImpl left, DartObjectImpl right) {
+ DartObjectImpl? expected, DartObjectImpl left, DartObjectImpl right) {
if (expected == null) {
expect(() {
left.lazyOr(_typeSystem, () => right);
@@ -1951,7 +1951,7 @@
/// [expected] value, or that the operation throws an exception if the
/// expected value is `null`.
void _assertLessThan(
- DartObjectImpl expected, DartObjectImpl left, DartObjectImpl right) {
+ DartObjectImpl? expected, DartObjectImpl left, DartObjectImpl right) {
if (expected == null) {
expect(() {
left.lessThan(_typeSystem, right);
@@ -1967,7 +1967,7 @@
/// [expected] value, or that the operation throws an exception if the
/// expected value is `null`.
void _assertLessThanOrEqual(
- DartObjectImpl expected, DartObjectImpl left, DartObjectImpl right) {
+ DartObjectImpl? expected, DartObjectImpl left, DartObjectImpl right) {
if (expected == null) {
expect(() {
left.lessThanOrEqual(_typeSystem, right);
@@ -1981,7 +1981,7 @@
/// Assert that the logical-not of the [operand] is the [expected] value, or
/// that the operation throws an exception if the expected value is `null`.
- void _assertLogicalNot(DartObjectImpl expected, DartObjectImpl operand) {
+ void _assertLogicalNot(DartObjectImpl? expected, DartObjectImpl operand) {
if (expected == null) {
expect(() {
operand.logicalNot(_typeSystem);
@@ -1997,7 +1997,7 @@
/// the [expected] value, or that the operation throws an exception if the
/// expected value is `null`.
void _assertMinus(
- DartObjectImpl expected, DartObjectImpl left, DartObjectImpl right) {
+ DartObjectImpl? expected, DartObjectImpl left, DartObjectImpl right) {
if (expected == null) {
expect(() {
left.minus(_typeSystem, right);
@@ -2011,7 +2011,7 @@
/// Assert that the negation of the [operand] is the [expected] value, or that
/// the operation throws an exception if the expected value is `null`.
- void _assertNegated(DartObjectImpl expected, DartObjectImpl operand) {
+ void _assertNegated(DartObjectImpl? expected, DartObjectImpl operand) {
if (expected == null) {
expect(() {
operand.negated(_typeSystem);
@@ -2027,7 +2027,7 @@
/// inequality is the [expected] value, or that the operation throws an
/// exception if the expected value is `null`.
void _assertNotEqual(
- DartObjectImpl expected, DartObjectImpl left, DartObjectImpl right) {
+ DartObjectImpl? expected, DartObjectImpl left, DartObjectImpl right) {
if (expected == null) {
expect(() {
left.notEqual(_typeSystem, right);
@@ -2041,7 +2041,8 @@
/// Assert that converting the [operand] to a string is the [expected] value,
/// or that the operation throws an exception if the expected value is `null`.
- void _assertPerformToString(DartObjectImpl expected, DartObjectImpl operand) {
+ void _assertPerformToString(
+ DartObjectImpl? expected, DartObjectImpl operand) {
if (expected == null) {
expect(() {
operand.performToString(_typeSystem);
@@ -2057,7 +2058,7 @@
/// operands is the [expected] value, or that the operation throws an
/// exception if the expected value is `null`.
void _assertRemainder(
- DartObjectImpl expected, DartObjectImpl left, DartObjectImpl right) {
+ DartObjectImpl? expected, DartObjectImpl left, DartObjectImpl right) {
if (expected == null) {
expect(() {
left.remainder(_typeSystem, right);
@@ -2073,7 +2074,7 @@
/// the [expected] value, or that the operation throws an exception if the
/// expected value is `null`.
void _assertShiftLeft(
- DartObjectImpl expected, DartObjectImpl left, DartObjectImpl right) {
+ DartObjectImpl? expected, DartObjectImpl left, DartObjectImpl right) {
if (expected == null) {
expect(() {
left.shiftLeft(_typeSystem, right);
@@ -2089,7 +2090,7 @@
/// the [expected] value, or that the operation throws an exception if the
/// expected value is `null`.
void _assertShiftRight(
- DartObjectImpl expected, DartObjectImpl left, DartObjectImpl right) {
+ DartObjectImpl? expected, DartObjectImpl left, DartObjectImpl right) {
if (expected == null) {
expect(() {
left.shiftRight(_typeSystem, right);
@@ -2103,7 +2104,7 @@
/// Assert that the length of the [operand] is the [expected] value, or that
/// the operation throws an exception if the expected value is `null`.
- void _assertStringLength(DartObjectImpl expected, DartObjectImpl operand) {
+ void _assertStringLength(DartObjectImpl? expected, DartObjectImpl operand) {
if (expected == null) {
expect(() {
operand.stringLength(_typeSystem);
@@ -2119,7 +2120,7 @@
/// the [expected] value, or that the operation throws an exception if the
/// expected value is `null`.
void _assertTimes(
- DartObjectImpl expected, DartObjectImpl left, DartObjectImpl right) {
+ DartObjectImpl? expected, DartObjectImpl left, DartObjectImpl right) {
if (expected == null) {
expect(() {
left.times(_typeSystem, right);
@@ -2131,7 +2132,7 @@
}
}
- DartObjectImpl _boolValue(bool value) {
+ DartObjectImpl _boolValue(bool? value) {
if (value == null) {
return DartObjectImpl(
_typeSystem,
@@ -2154,7 +2155,7 @@
fail("Invalid boolean value used in test");
}
- DartObjectImpl _doubleValue(double value) {
+ DartObjectImpl _doubleValue(double? value) {
if (value == null) {
return DartObjectImpl(
_typeSystem,
@@ -2170,7 +2171,7 @@
}
}
- DartObjectImpl _intValue(int value) {
+ DartObjectImpl _intValue(int? value) {
if (value == null) {
return DartObjectImpl(
_typeSystem,
@@ -2220,7 +2221,8 @@
);
}
- DartObjectImpl _setValue(DartType type, Set<DartObjectImpl> elements) {
+ DartObjectImpl _setValue(
+ ParameterizedType type, Set<DartObjectImpl>? elements) {
return DartObjectImpl(
_typeSystem,
type,
@@ -2228,7 +2230,7 @@
);
}
- DartObjectImpl _stringValue(String value) {
+ DartObjectImpl _stringValue(String? value) {
if (value == null) {
return DartObjectImpl(
_typeSystem,
diff --git a/pkg/analyzer/test/src/dart/element/class_hierarchy_test.dart b/pkg/analyzer/test/src/dart/element/class_hierarchy_test.dart
index 08ec4f4..2dd1c49 100644
--- a/pkg/analyzer/test/src/dart/element/class_hierarchy_test.dart
+++ b/pkg/analyzer/test/src/dart/element/class_hierarchy_test.dart
@@ -7,7 +7,6 @@
import 'package:analyzer/src/dart/element/class_hierarchy.dart';
import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/dart/element/type.dart';
-import 'package:meta/meta.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -86,7 +85,7 @@
}
mixin _AbstractClassHierarchyMixin on ElementsTypesMixin {
- ClassElementImpl A;
+ late ClassElementImpl A;
void _assertErrors(List<ClassHierarchyError> errors, List<String> expected) {
expect(
@@ -112,8 +111,8 @@
}
void _checkA({
- @required List<DartType> typeArguments,
- @required List<String> interfaces,
+ required List<DartType> typeArguments,
+ required List<String> interfaces,
List<String> errors = const [],
}) {
var specifiedInterfaces = typeArguments
diff --git a/pkg/analyzer/test/src/dart/element/element_test.dart b/pkg/analyzer/test/src/dart/element/element_test.dart
index 167c6d5..66aa3e5 100644
--- a/pkg/analyzer/test/src/dart/element/element_test.dart
+++ b/pkg/analyzer/test/src/dart/element/element_test.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/analysis/features.dart';
+import 'package:analyzer/dart/analysis/session.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/constant/value.dart';
import 'package:analyzer/dart/element/element.dart';
@@ -41,15 +42,15 @@
}
class AbstractTypeTest with ElementsTypesMixin {
- TestAnalysisContext _analysisContext;
+ late final TestAnalysisContext _analysisContext;
@override
- LibraryElementImpl testLibrary;
+ late final LibraryElementImpl testLibrary;
@override
- TypeProvider typeProvider;
+ late final TypeProvider typeProvider;
- TypeSystemImpl typeSystem;
+ late final TypeSystemImpl typeSystem;
void setUp() {
_analysisContext = TestAnalysisContext();
@@ -71,7 +72,7 @@
var classA = class_(name: 'A');
String fieldName = "f";
FieldElementImpl field =
- ElementFactory.fieldElement(fieldName, false, false, false, null);
+ ElementFactory.fieldElement(fieldName, false, false, false, intNone);
classA.fields = <FieldElement>[field];
expect(classA.getField(fieldName), same(field));
expect(field.isEnumConstant, false);
@@ -82,7 +83,7 @@
void test_getMethod_declared() {
var classA = class_(name: 'A');
String methodName = "m";
- MethodElement method = ElementFactory.methodElement(methodName, null);
+ MethodElement method = ElementFactory.methodElement(methodName, intNone);
classA.methods = <MethodElement>[method];
expect(classA.getMethod(methodName), same(method));
}
@@ -90,7 +91,7 @@
void test_getMethod_undeclared() {
var classA = class_(name: 'A');
String methodName = "m";
- MethodElement method = ElementFactory.methodElement(methodName, null);
+ MethodElement method = ElementFactory.methodElement(methodName, intNone);
classA.methods = <MethodElement>[method];
expect(classA.getMethod("${methodName}x"), isNull);
}
@@ -115,8 +116,10 @@
void test_hasNonFinalField_false_recursive() {
var classA = class_(name: 'A');
- ClassElementImpl classB =
- ElementFactory.classElement("B", interfaceTypeStar(classA));
+ ClassElementImpl classB = class_(
+ name: 'B',
+ superType: interfaceTypeStar(classA),
+ );
classA.supertype = interfaceTypeStar(classB);
expect(classA.hasNonFinalField, isFalse);
}
@@ -130,6 +133,7 @@
expect(classA.hasNonFinalField, isTrue);
}
+ @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/44522')
void test_hasNonFinalField_true_inherited() {
var classA = class_(name: 'A');
ClassElementImpl classB =
@@ -149,7 +153,7 @@
void test_hasStaticMember_false_instanceMethod() {
var classA = class_(name: 'A');
- MethodElement method = ElementFactory.methodElement("foo", null);
+ MethodElement method = ElementFactory.methodElement("foo", intNone);
classA.methods = <MethodElement>[method];
expect(classA.hasStaticMember, isFalse);
}
@@ -157,7 +161,7 @@
void test_hasStaticMember_instanceGetter() {
var classA = class_(name: 'A');
PropertyAccessorElement getter =
- ElementFactory.getterElement("foo", false, null);
+ ElementFactory.getterElement("foo", false, intNone);
classA.accessors = <PropertyAccessorElement>[getter];
expect(classA.hasStaticMember, isFalse);
}
@@ -165,7 +169,7 @@
void test_hasStaticMember_true_getter() {
var classA = class_(name: 'A');
PropertyAccessorElementImpl getter =
- ElementFactory.getterElement("foo", false, null);
+ ElementFactory.getterElement("foo", false, intNone);
classA.accessors = <PropertyAccessorElement>[getter];
// "foo" is static
getter.isStatic = true;
@@ -174,7 +178,7 @@
void test_hasStaticMember_true_method() {
var classA = class_(name: 'A');
- MethodElementImpl method = ElementFactory.methodElement("foo", null);
+ MethodElementImpl method = ElementFactory.methodElement("foo", intNone);
classA.methods = <MethodElement>[method];
// "foo" is static
method.isStatic = true;
@@ -184,7 +188,7 @@
void test_hasStaticMember_true_setter() {
var classA = class_(name: 'A');
PropertyAccessorElementImpl setter =
- ElementFactory.setterElement("foo", false, null);
+ ElementFactory.setterElement("foo", false, intNone);
classA.accessors = <PropertyAccessorElement>[setter];
// "foo" is static
setter.isStatic = true;
@@ -198,7 +202,7 @@
LibraryElementImpl library = _newLibrary();
var classA = class_(name: 'A');
String methodName = "m";
- MethodElement method = ElementFactory.methodElement(methodName, null);
+ MethodElement method = ElementFactory.methodElement(methodName, intNone);
classA.methods = <MethodElement>[method];
(library.definingCompilationUnit as CompilationUnitElementImpl).types =
<ClassElement>[classA];
@@ -212,7 +216,8 @@
LibraryElementImpl library = _newLibrary();
var classA = class_(name: 'A');
String methodName = "m";
- MethodElementImpl method = ElementFactory.methodElement(methodName, null);
+ MethodElementImpl method =
+ ElementFactory.methodElement(methodName, intNone);
method.isAbstract = true;
classA.methods = <MethodElement>[method];
(library.definingCompilationUnit as CompilationUnitElementImpl).types =
@@ -231,11 +236,12 @@
var classA = class_(name: 'A');
String methodName = "m";
MethodElement inheritedMethod =
- ElementFactory.methodElement(methodName, null);
+ ElementFactory.methodElement(methodName, intNone);
classA.methods = <MethodElement>[inheritedMethod];
ClassElementImpl classB =
ElementFactory.classElement("B", interfaceTypeStar(classA));
- MethodElementImpl method = ElementFactory.methodElement(methodName, null);
+ MethodElementImpl method =
+ ElementFactory.methodElement(methodName, intNone);
method.isAbstract = true;
classB.methods = <MethodElement>[method];
(library.definingCompilationUnit as CompilationUnitElementImpl).types =
@@ -255,11 +261,11 @@
var classA = class_(name: 'A');
String methodName = "m";
MethodElement inheritedMethod =
- ElementFactory.methodElement(methodName, null);
+ ElementFactory.methodElement(methodName, intNone);
classA.methods = <MethodElement>[inheritedMethod];
ClassElementImpl classB =
ElementFactory.classElement("B", interfaceTypeStar(classA));
- MethodElement method = ElementFactory.methodElement(methodName, null);
+ MethodElement method = ElementFactory.methodElement(methodName, intNone);
classB.methods = <MethodElement>[method];
(library.definingCompilationUnit as CompilationUnitElementImpl).types =
<ClassElement>[classA, classB];
@@ -278,12 +284,12 @@
classA.isAbstract = true;
String methodName = "m";
MethodElementImpl inheritedMethod =
- ElementFactory.methodElement(methodName, null);
+ ElementFactory.methodElement(methodName, intNone);
inheritedMethod.isAbstract = true;
classA.methods = <MethodElement>[inheritedMethod];
ClassElementImpl classB =
ElementFactory.classElement("B", interfaceTypeStar(classA));
- MethodElement method = ElementFactory.methodElement(methodName, null);
+ MethodElement method = ElementFactory.methodElement(methodName, intNone);
classB.methods = <MethodElement>[method];
(library.definingCompilationUnit as CompilationUnitElementImpl).types =
<ClassElement>[classA, classB];
@@ -300,7 +306,7 @@
var classA = class_(name: 'A');
String methodName = "m";
MethodElement inheritedMethod =
- ElementFactory.methodElement(methodName, null);
+ ElementFactory.methodElement(methodName, intNone);
classA.methods = <MethodElement>[inheritedMethod];
ClassElementImpl classB =
ElementFactory.classElement("B", interfaceTypeStar(classA));
@@ -328,7 +334,7 @@
var classA = class_(name: 'A');
String getterName = "g";
PropertyAccessorElement getter =
- ElementFactory.getterElement(getterName, false, null);
+ ElementFactory.getterElement(getterName, false, intNone);
classA.accessors = <PropertyAccessorElement>[getter];
(library.definingCompilationUnit as CompilationUnitElementImpl).types =
<ClassElement>[classA];
@@ -345,7 +351,7 @@
var classA = class_(name: 'A');
String getterName = "g";
PropertyAccessorElement getter =
- ElementFactory.getterElement(getterName, false, null);
+ ElementFactory.getterElement(getterName, false, intNone);
classA.accessors = <PropertyAccessorElement>[getter];
ClassElementImpl classB =
ElementFactory.classElement("B", interfaceTypeStar(classA));
@@ -387,7 +393,7 @@
var classA = class_(name: 'A');
String getterName = "g";
PropertyAccessorElement getter =
- ElementFactory.getterElement(getterName, false, null);
+ ElementFactory.getterElement(getterName, false, intNone);
classA.accessors = <PropertyAccessorElement>[getter];
(library.definingCompilationUnit as CompilationUnitElementImpl).types =
<ClassElement>[classA];
@@ -404,7 +410,7 @@
var classA = class_(name: 'A');
String getterName = "g";
PropertyAccessorElement inheritedGetter =
- ElementFactory.getterElement(getterName, false, null);
+ ElementFactory.getterElement(getterName, false, intNone);
classA.accessors = <PropertyAccessorElement>[inheritedGetter];
ClassElementImpl classB =
ElementFactory.classElement("B", interfaceTypeStar(classA));
@@ -446,7 +452,7 @@
LibraryElementImpl library = _newLibrary();
var classA = class_(name: 'A');
String methodName = "m";
- MethodElement method = ElementFactory.methodElement(methodName, null);
+ MethodElement method = ElementFactory.methodElement(methodName, intNone);
classA.methods = <MethodElement>[method];
(library.definingCompilationUnit as CompilationUnitElementImpl).types =
<ClassElement>[classA];
@@ -464,11 +470,12 @@
var classA = class_(name: 'A');
String methodName = "m";
MethodElement inheritedMethod =
- ElementFactory.methodElement(methodName, null);
+ ElementFactory.methodElement(methodName, intNone);
classA.methods = <MethodElement>[inheritedMethod];
ClassElementImpl classB =
ElementFactory.classElement("B", interfaceTypeStar(classA));
- MethodElementImpl method = ElementFactory.methodElement(methodName, null);
+ MethodElementImpl method =
+ ElementFactory.methodElement(methodName, intNone);
method.isAbstract = true;
classB.methods = <MethodElement>[method];
(library.definingCompilationUnit as CompilationUnitElementImpl).types =
@@ -488,11 +495,11 @@
var classA = class_(name: 'A');
String methodName = "m";
MethodElement inheritedMethod =
- ElementFactory.methodElement(methodName, null);
+ ElementFactory.methodElement(methodName, intNone);
classA.methods = <MethodElement>[inheritedMethod];
ClassElementImpl classB =
ElementFactory.classElement("B", interfaceTypeStar(classA));
- MethodElement method = ElementFactory.methodElement(methodName, null);
+ MethodElement method = ElementFactory.methodElement(methodName, intNone);
classB.methods = <MethodElement>[method];
(library.definingCompilationUnit as CompilationUnitElementImpl).types =
<ClassElement>[classA, classB];
@@ -512,12 +519,12 @@
classA.isAbstract = true;
String methodName = "m";
MethodElementImpl inheritedMethod =
- ElementFactory.methodElement(methodName, null);
+ ElementFactory.methodElement(methodName, intNone);
inheritedMethod.isAbstract = true;
classA.methods = <MethodElement>[inheritedMethod];
ClassElementImpl classB =
ElementFactory.classElement("B", interfaceTypeStar(classA));
- MethodElement method = ElementFactory.methodElement(methodName, null);
+ MethodElement method = ElementFactory.methodElement(methodName, intNone);
classB.methods = <MethodElement>[method];
(library.definingCompilationUnit as CompilationUnitElementImpl).types =
<ClassElement>[classA, classB];
@@ -539,17 +546,18 @@
var classA = class_(name: 'A');
String methodName = "m";
MethodElement inheritedMethod =
- ElementFactory.methodElement(methodName, null);
+ ElementFactory.methodElement(methodName, intNone);
classA.methods = <MethodElement>[inheritedMethod];
ClassElementImpl classB =
ElementFactory.classElement("B", interfaceTypeStar(classA));
MethodElementImpl abstractMethod =
- ElementFactory.methodElement(methodName, null);
+ ElementFactory.methodElement(methodName, intNone);
abstractMethod.isAbstract = true;
classB.methods = <MethodElement>[abstractMethod];
ClassElementImpl classC =
ElementFactory.classElement("C", interfaceTypeStar(classB));
- MethodElementImpl method = ElementFactory.methodElement(methodName, null);
+ MethodElementImpl method =
+ ElementFactory.methodElement(methodName, intNone);
classC.methods = <MethodElement>[method];
(library.definingCompilationUnit as CompilationUnitElementImpl).types =
<ClassElement>[classA, classB, classC];
@@ -567,7 +575,7 @@
var classA = class_(name: 'A');
String methodName = "m";
MethodElement inheritedMethod =
- ElementFactory.methodElement(methodName, null);
+ ElementFactory.methodElement(methodName, intNone);
classA.methods = <MethodElement>[inheritedMethod];
ClassElementImpl classB =
ElementFactory.classElement("B", interfaceTypeStar(classA));
@@ -595,7 +603,7 @@
var classA = class_(name: 'A');
String setterName = "s";
PropertyAccessorElement setter =
- ElementFactory.setterElement(setterName, false, null);
+ ElementFactory.setterElement(setterName, false, intNone);
classA.accessors = <PropertyAccessorElement>[setter];
(library.definingCompilationUnit as CompilationUnitElementImpl).types =
<ClassElement>[classA];
@@ -612,7 +620,7 @@
var classA = class_(name: 'A');
String setterName = "s";
PropertyAccessorElement setter =
- ElementFactory.setterElement(setterName, false, null);
+ ElementFactory.setterElement(setterName, false, intNone);
classA.accessors = <PropertyAccessorElement>[setter];
ClassElementImpl classB =
ElementFactory.classElement("B", interfaceTypeStar(classA));
@@ -654,7 +662,7 @@
LibraryElementImpl library = _newLibrary();
var classA = class_(name: 'A');
String methodName = "m";
- MethodElement method = ElementFactory.methodElement(methodName, null);
+ MethodElement method = ElementFactory.methodElement(methodName, intNone);
classA.methods = <MethodElement>[method];
(library.definingCompilationUnit as CompilationUnitElementImpl).types =
<ClassElement>[classA];
@@ -672,11 +680,11 @@
var classA = class_(name: 'A');
String methodName = "m";
MethodElement inheritedMethod =
- ElementFactory.methodElement(methodName, null);
+ ElementFactory.methodElement(methodName, intNone);
classA.methods = <MethodElement>[inheritedMethod];
ClassElementImpl classB =
ElementFactory.classElement("B", interfaceTypeStar(classA));
- MethodElement method = ElementFactory.methodElement(methodName, null);
+ MethodElement method = ElementFactory.methodElement(methodName, intNone);
classB.methods = <MethodElement>[method];
(library.definingCompilationUnit as CompilationUnitElementImpl).types =
<ClassElement>[classA, classB];
@@ -694,7 +702,7 @@
var classA = class_(name: 'A');
String methodName = "m";
MethodElement inheritedMethod =
- ElementFactory.methodElement(methodName, null);
+ ElementFactory.methodElement(methodName, intNone);
classA.methods = <MethodElement>[inheritedMethod];
ClassElementImpl classB =
ElementFactory.classElement("B", interfaceTypeStar(classA));
@@ -718,7 +726,7 @@
LibraryElementImpl library = _newLibrary();
var classA = class_(name: 'A');
String methodName = "m";
- MethodElement method = ElementFactory.methodElement(methodName, null);
+ MethodElement method = ElementFactory.methodElement(methodName, intNone);
classA.methods = <MethodElement>[method];
(library.definingCompilationUnit as CompilationUnitElementImpl).types =
<ClassElement>[classA];
@@ -729,7 +737,7 @@
LibraryElementImpl library = _newLibrary();
var classA = class_(name: 'A');
String methodName = "m";
- MethodElement method = ElementFactory.methodElement(methodName, null);
+ MethodElement method = ElementFactory.methodElement(methodName, intNone);
classA.methods = <MethodElement>[method];
ClassElementImpl classB =
ElementFactory.classElement("B", interfaceTypeStar(classA));
@@ -765,7 +773,7 @@
var classA = class_(name: 'A');
String setterName = "s";
PropertyAccessorElement setter =
- ElementFactory.setterElement(setterName, false, null);
+ ElementFactory.setterElement(setterName, false, intNone);
classA.accessors = <PropertyAccessorElement>[setter];
(library.definingCompilationUnit as CompilationUnitElementImpl).types =
<ClassElement>[classA];
@@ -782,7 +790,7 @@
var classA = class_(name: 'A');
String setterName = "s";
PropertyAccessorElement setter =
- ElementFactory.setterElement(setterName, false, null);
+ ElementFactory.setterElement(setterName, false, intNone);
classA.accessors = <PropertyAccessorElement>[setter];
ClassElementImpl classB =
ElementFactory.classElement("B", interfaceTypeStar(classA));
@@ -816,7 +824,8 @@
expect(classA.lookUpSetter("s", library), isNull);
}
- LibraryElementImpl _newLibrary() => ElementFactory.library(null, 'lib');
+ LibraryElementImpl _newLibrary() =>
+ ElementFactory.library(_analysisContext, 'lib');
}
@reflectiveTest
@@ -857,13 +866,12 @@
}
''');
var argument = findNode.integerLiteral('3');
- ParameterElement parameter = argument.staticParameterElement;
+ ParameterElement parameter = argument.staticParameterElement!;
ElementAnnotation annotation = parameter.metadata[0];
- DartObject value = annotation.computeConstantValue();
- expect(value, isNotNull);
- expect(value.getField('f').toStringValue(), 'x');
+ DartObject value = annotation.computeConstantValue()!;
+ expect(value.getField('f')!.toStringValue(), 'x');
}
}
@@ -939,8 +947,9 @@
expect(element.isPrivate, isFalse);
}
+ @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/44522')
void test_isPrivate_null() {
- Element element = ElementFactory.classElement2(null);
+ Element element = ElementFactory.classElement2('A');
expect(element.isPrivate, isTrue);
}
@@ -954,8 +963,9 @@
expect(element.isPublic, isFalse);
}
+ @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/44522')
void test_isPublic_null() {
- Element element = ElementFactory.classElement2(null);
+ Element element = ElementFactory.classElement2('A');
expect(element.isPublic, isFalse);
}
@@ -1047,10 +1057,10 @@
''');
var B = findElement.enum_('B');
- FieldElement b2Element = B.getField('B2');
+ FieldElement b2Element = B.getField('B2')!;
expect(b2Element.isEnumConstant, isTrue);
- FieldElement indexElement = B.getField('index');
+ FieldElement indexElement = B.getField('index')!;
expect(indexElement.isEnumConstant, isFalse);
}
}
@@ -1188,7 +1198,7 @@
);
// Returns this.
- expect(type.resolveToBound(null), same(type));
+ expect(type.resolveToBound(objectNone), same(type));
}
}
@@ -1230,8 +1240,8 @@
B.interfaces = <InterfaceType>[AofC];
- InterfaceTypeImpl targetType = interfaceTypeStar(B);
- InterfaceType result = targetType.asInstanceOf(A);
+ var targetType = interfaceTypeStar(B);
+ var result = targetType.asInstanceOf(A);
expect(result, AofC);
}
@@ -1256,11 +1266,11 @@
var C = class_(name: 'C');
- InterfaceTypeImpl targetType = B.instantiate(
+ var targetType = B.instantiate(
typeArguments: [interfaceTypeStar(C)],
nullabilitySuffix: NullabilitySuffix.star,
);
- InterfaceType result = targetType.asInstanceOf(A);
+ var result = targetType.asInstanceOf(A);
expect(
result,
A.instantiate(
@@ -1277,17 +1287,17 @@
void test_getAccessors() {
ClassElementImpl typeElement = class_(name: 'A');
PropertyAccessorElement getterG =
- ElementFactory.getterElement("g", false, null);
+ ElementFactory.getterElement("g", false, intNone);
PropertyAccessorElement getterH =
- ElementFactory.getterElement("h", false, null);
+ ElementFactory.getterElement("h", false, intNone);
typeElement.accessors = <PropertyAccessorElement>[getterG, getterH];
- InterfaceTypeImpl type = interfaceTypeStar(typeElement);
+ InterfaceType type = interfaceTypeStar(typeElement);
expect(type.accessors.length, 2);
}
void test_getAccessors_empty() {
ClassElementImpl typeElement = class_(name: 'A');
- InterfaceTypeImpl type = interfaceTypeStar(typeElement);
+ InterfaceType type = interfaceTypeStar(typeElement);
expect(type.accessors.length, 0);
}
@@ -1301,20 +1311,20 @@
constructorOne,
constructorTwo
];
- InterfaceTypeImpl type = interfaceTypeStar(typeElement);
+ InterfaceType type = interfaceTypeStar(typeElement);
expect(type.constructors, hasLength(2));
}
void test_getConstructors_empty() {
ClassElementImpl typeElement = class_(name: 'A');
typeElement.constructors = const <ConstructorElement>[];
- InterfaceTypeImpl type = interfaceTypeStar(typeElement);
+ InterfaceType type = interfaceTypeStar(typeElement);
expect(type.constructors, isEmpty);
}
void test_getElement() {
ClassElementImpl typeElement = class_(name: 'A');
- InterfaceTypeImpl type = interfaceTypeStar(typeElement);
+ InterfaceType type = interfaceTypeStar(typeElement);
expect(type.element, typeElement);
}
@@ -1325,7 +1335,7 @@
var classA = class_(name: 'A');
String getterName = "g";
PropertyAccessorElement getterG =
- ElementFactory.getterElement(getterName, false, null);
+ ElementFactory.getterElement(getterName, false, intNone);
classA.accessors = <PropertyAccessorElement>[getterG];
InterfaceType typeA = interfaceTypeStar(classA);
expect(typeA.getGetter(getterName), same(getterG));
@@ -1346,13 +1356,13 @@
//
// A<I>
//
- InterfaceType I = interfaceTypeStar(class_(name: 'I'));
- InterfaceTypeImpl AofI = A.instantiate(
+ var I = interfaceTypeStar(class_(name: 'I'));
+ var AofI = A.instantiate(
typeArguments: [I],
nullabilitySuffix: NullabilitySuffix.star,
);
- PropertyAccessorElement getter = AofI.getGetter(getterName);
+ PropertyAccessorElement getter = AofI.getGetter(getterName)!;
expect(getter, isNotNull);
FunctionType getterType = getter.type;
expect(getterType.returnType, same(I));
@@ -1408,8 +1418,8 @@
//
// B<I>
//
- InterfaceType typeI = interfaceTypeStar(class_(name: 'I'));
- InterfaceTypeImpl typeBI = interfaceTypeStar(B, typeArguments: [typeI]);
+ var typeI = interfaceTypeStar(class_(name: 'I'));
+ var typeBI = interfaceTypeStar(B, typeArguments: [typeI]);
List<InterfaceType> interfaces = typeBI.interfaces;
expect(interfaces, hasLength(1));
@@ -1424,7 +1434,8 @@
//
var classA = class_(name: 'A');
String methodName = "m";
- MethodElementImpl methodM = ElementFactory.methodElement(methodName, null);
+ MethodElementImpl methodM =
+ ElementFactory.methodElement(methodName, intNone);
classA.methods = <MethodElement>[methodM];
InterfaceType typeA = interfaceTypeStar(classA);
expect(typeA.getMethod(methodName), same(methodM));
@@ -1444,10 +1455,9 @@
//
// A<I>
//
- InterfaceType typeI = interfaceTypeStar(class_(name: 'I'));
- InterfaceTypeImpl typeAI =
- interfaceTypeStar(A, typeArguments: <DartType>[typeI]);
- MethodElement method = typeAI.getMethod(methodName);
+ var typeI = interfaceTypeStar(class_(name: 'I'));
+ var typeAI = interfaceTypeStar(A, typeArguments: <DartType>[typeI]);
+ MethodElement method = typeAI.getMethod(methodName)!;
expect(method, isNotNull);
FunctionType methodType = method.type;
expect(methodType.typeArguments, isEmpty);
@@ -1468,16 +1478,16 @@
void test_getMethods() {
ClassElementImpl typeElement = class_(name: 'A');
- MethodElementImpl methodOne = ElementFactory.methodElement("one", null);
- MethodElementImpl methodTwo = ElementFactory.methodElement("two", null);
+ MethodElementImpl methodOne = ElementFactory.methodElement("one", intNone);
+ MethodElementImpl methodTwo = ElementFactory.methodElement("two", intNone);
typeElement.methods = <MethodElement>[methodOne, methodTwo];
- InterfaceTypeImpl type = interfaceTypeStar(typeElement);
+ InterfaceType type = interfaceTypeStar(typeElement);
expect(type.methods.length, 2);
}
void test_getMethods_empty() {
ClassElementImpl typeElement = class_(name: 'A');
- InterfaceTypeImpl type = interfaceTypeStar(typeElement);
+ InterfaceType type = interfaceTypeStar(typeElement);
expect(type.methods.length, 0);
}
@@ -1523,8 +1533,7 @@
// B<I>
//
InterfaceType typeI = interfaceTypeStar(class_(name: 'I'));
- InterfaceTypeImpl typeBI =
- interfaceTypeStar(B, typeArguments: <DartType>[typeI]);
+ var typeBI = interfaceTypeStar(B, typeArguments: <DartType>[typeI]);
List<InterfaceType> interfaces = typeBI.mixins;
expect(interfaces, hasLength(1));
InterfaceType result = interfaces[0];
@@ -1539,7 +1548,7 @@
var classA = class_(name: 'A');
String setterName = "s";
PropertyAccessorElement setterS =
- ElementFactory.setterElement(setterName, false, null);
+ ElementFactory.setterElement(setterName, false, intNone);
classA.accessors = <PropertyAccessorElement>[setterS];
InterfaceType typeA = interfaceTypeStar(classA);
expect(typeA.getSetter(setterName), same(setterS));
@@ -1559,10 +1568,9 @@
//
// A<I>
//
- InterfaceType typeI = interfaceTypeStar(class_(name: 'I'));
- InterfaceTypeImpl typeAI =
- interfaceTypeStar(A, typeArguments: <DartType>[typeI]);
- PropertyAccessorElement setter = typeAI.getSetter(setterName);
+ var typeI = interfaceTypeStar(class_(name: 'I'));
+ var typeAI = interfaceTypeStar(A, typeArguments: <DartType>[typeI]);
+ PropertyAccessorElement setter = typeAI.getSetter(setterName)!;
expect(setter, isNotNull);
FunctionType setterType = setter.type;
List<DartType> parameterTypes = setterType.normalParameterTypes;
@@ -1611,10 +1619,9 @@
//
// B<I>
//
- InterfaceType typeI = interfaceTypeStar(class_(name: 'I'));
- InterfaceTypeImpl typeBI =
- interfaceTypeStar(classB, typeArguments: <DartType>[typeI]);
- InterfaceType superclass = typeBI.superclass;
+ var typeI = interfaceTypeStar(class_(name: 'I'));
+ var typeBI = interfaceTypeStar(classB, typeArguments: <DartType>[typeI]);
+ InterfaceType superclass = typeBI.superclass!;
expect(superclass.element, same(A));
expect(superclass.typeArguments[0], same(typeI));
}
@@ -1638,7 +1645,7 @@
var classA = class_(name: 'A');
String getterName = "g";
PropertyAccessorElement getterG =
- ElementFactory.getterElement(getterName, false, null);
+ ElementFactory.getterElement(getterName, false, intNone);
classA.accessors = <PropertyAccessorElement>[getterG];
InterfaceType typeA = interfaceTypeStar(classA);
LibraryElementImpl library =
@@ -1657,7 +1664,7 @@
var classA = class_(name: 'A');
String getterName = "g";
PropertyAccessorElement getterG =
- ElementFactory.getterElement(getterName, false, null);
+ ElementFactory.getterElement(getterName, false, intNone);
classA.accessors = <PropertyAccessorElement>[getterG];
ClassElementImpl classB =
ElementFactory.classElement("B", interfaceTypeStar(classA));
@@ -1696,7 +1703,7 @@
];
LibraryElementImpl library =
ElementFactory.library(_analysisContext, "lib");
- CompilationUnitElementImpl unit = library.definingCompilationUnit;
+ var unit = library.definingCompilationUnit as CompilationUnitElementImpl;
unit.types = <ClassElement>[classB, classM1, classM2, classC];
expect(
interfaceTypeStar(classC).lookUpGetter(getterName, library), getterM2g);
@@ -1740,7 +1747,8 @@
//
var classA = class_(name: 'A');
String methodName = "m";
- MethodElementImpl methodM = ElementFactory.methodElement(methodName, null);
+ MethodElementImpl methodM =
+ ElementFactory.methodElement(methodName, intNone);
classA.methods = <MethodElement>[methodM];
InterfaceType typeA = interfaceTypeStar(classA);
LibraryElementImpl library =
@@ -1758,7 +1766,8 @@
//
var classA = class_(name: 'A');
String methodName = "m";
- MethodElementImpl methodM = ElementFactory.methodElement(methodName, null);
+ MethodElementImpl methodM =
+ ElementFactory.methodElement(methodName, intNone);
classA.methods = <MethodElement>[methodM];
ClassElementImpl classB =
ElementFactory.classElement("B", interfaceTypeStar(classA));
@@ -1782,11 +1791,11 @@
var classB = class_(name: 'B');
ClassElementImpl classM1 = ElementFactory.classElement2('M1');
MethodElementImpl methodM1m =
- ElementFactory.methodElement(methodName, null);
+ ElementFactory.methodElement(methodName, intNone);
classM1.methods = <MethodElement>[methodM1m];
ClassElementImpl classM2 = ElementFactory.classElement2('M2');
MethodElementImpl methodM2m =
- ElementFactory.methodElement(methodName, null);
+ ElementFactory.methodElement(methodName, intNone);
classM2.methods = <MethodElement>[methodM2m];
ClassElementImpl classC =
ElementFactory.classElement('C', interfaceTypeStar(classB));
@@ -1796,12 +1805,13 @@
];
LibraryElementImpl library =
ElementFactory.library(_analysisContext, "lib");
- CompilationUnitElementImpl unit = library.definingCompilationUnit;
+ var unit = library.definingCompilationUnit as CompilationUnitElementImpl;
unit.types = <ClassElement>[classB, classM1, classM2, classC];
expect(
interfaceTypeStar(classC).lookUpMethod(methodName, library), methodM2m);
}
+ @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/44522')
@deprecated
void test_lookUpMethod_parameterized() {
//
@@ -1831,10 +1841,9 @@
//
// B<I>
//
- InterfaceType typeI = interfaceTypeStar(class_(name: 'I'));
- InterfaceTypeImpl typeBI =
- interfaceTypeStar(B, typeArguments: <DartType>[typeI]);
- MethodElement method = typeBI.lookUpMethod(methodName, library);
+ var typeI = interfaceTypeStar(class_(name: 'I'));
+ var typeBI = interfaceTypeStar(B, typeArguments: <DartType>[typeI]);
+ MethodElement method = typeBI.lookUpMethod(methodName, library)!;
expect(method, isNotNull);
FunctionType methodType = method.type;
expect(methodType.returnType, same(typeI));
@@ -1882,7 +1891,7 @@
var classA = class_(name: 'A');
String setterName = "s";
PropertyAccessorElement setterS =
- ElementFactory.setterElement(setterName, false, null);
+ ElementFactory.setterElement(setterName, false, intNone);
classA.accessors = <PropertyAccessorElement>[setterS];
InterfaceType typeA = interfaceTypeStar(classA);
LibraryElementImpl library =
@@ -1901,7 +1910,7 @@
var classA = class_(name: 'A');
String setterName = "g";
PropertyAccessorElement setterS =
- ElementFactory.setterElement(setterName, false, null);
+ ElementFactory.setterElement(setterName, false, intNone);
classA.accessors = <PropertyAccessorElement>[setterS];
ClassElementImpl classB =
ElementFactory.classElement("B", interfaceTypeStar(classA));
@@ -1940,7 +1949,7 @@
];
LibraryElementImpl library =
ElementFactory.library(_analysisContext, "lib");
- CompilationUnitElementImpl unit = library.definingCompilationUnit;
+ var unit = library.definingCompilationUnit as CompilationUnitElementImpl;
unit.types = <ClassElement>[classB, classM1, classM2, classC];
expect(
interfaceTypeStar(classC).lookUpGetter(setterName, library), setterM2g);
@@ -1978,11 +1987,10 @@
}
void test_resolveToBound() {
- InterfaceTypeImpl type =
- interfaceTypeStar(ElementFactory.classElement2('A'));
+ var type = interfaceTypeStar(ElementFactory.classElement2('A'));
// Returns this.
- expect(type.resolveToBound(null), same(type));
+ expect(type.resolveToBound(objectNone), same(type));
}
}
@@ -2049,7 +2057,12 @@
void test_setImports() {
AnalysisContext context = TestAnalysisContext();
LibraryElementImpl library = LibraryElementImpl(
- context, null, 'l1', -1, 0, FeatureSet.latestLanguageVersion());
+ context,
+ _AnalysisSessionMock(),
+ 'l1',
+ -1,
+ 0,
+ FeatureSet.latestLanguageVersion());
List<ImportElementImpl> expectedImports = [
ElementFactory.importFor(ElementFactory.library(context, "l2"), null),
ElementFactory.importFor(ElementFactory.library(context, "l3"), null)
@@ -2076,10 +2089,10 @@
}
''');
SimpleIdentifier argument = findNode.simple('C);');
- PropertyAccessorElementImpl getter = argument.staticElement;
- TopLevelVariableElement constant = getter.variable;
+ var getter = argument.staticElement as PropertyAccessorElementImpl;
+ var constant = getter.variable as TopLevelVariableElement;
- DartObject value = constant.computeConstantValue();
+ DartObject value = constant.computeConstantValue()!;
expect(value, isNotNull);
expect(value.toIntValue(), 42);
}
@@ -2153,7 +2166,7 @@
TypeParameterElementImpl element = TypeParameterElementImpl('E', -1);
element.bound = interfaceTypeStar(classS);
TypeParameterTypeImpl type = typeParameterTypeStar(element);
- expect(type.resolveToBound(null), interfaceTypeStar(classS));
+ expect(type.resolveToBound(objectNone), interfaceTypeStar(classS));
}
void test_resolveToBound_bound_nullableInner() {
@@ -2161,60 +2174,62 @@
TypeParameterElementImpl element = TypeParameterElementImpl('E', -1);
element.bound = interfaceTypeQuestion(classS);
TypeParameterTypeImpl type = typeParameterTypeStar(element);
- expect(type.resolveToBound(null), same(element.bound));
+ expect(type.resolveToBound(objectNone), same(element.bound));
}
void test_resolveToBound_bound_nullableInnerOuter() {
ClassElementImpl classS = class_(name: 'A');
TypeParameterElementImpl element = TypeParameterElementImpl('E', -1);
element.bound = interfaceTypeQuestion(classS);
- TypeParameterTypeImpl type = typeParameterTypeStar(element)
+ var type = typeParameterTypeStar(element)
.withNullability(NullabilitySuffix.question);
- expect(type.resolveToBound(null), same(element.bound));
+ expect(type.resolveToBound(objectNone), same(element.bound));
}
void test_resolveToBound_bound_nullableInnerStarOuter() {
ClassElementImpl classS = class_(name: 'A');
TypeParameterElementImpl element = TypeParameterElementImpl('E', -1);
element.bound = interfaceTypeQuestion(classS);
- TypeParameterTypeImpl type = typeParameterTypeStar(element)
+ var type = typeParameterTypeStar(element)
.withNullability(NullabilitySuffix.question);
- expect(type.resolveToBound(null), equals(interfaceTypeQuestion(classS)));
+ expect(
+ type.resolveToBound(objectNone), equals(interfaceTypeQuestion(classS)));
}
void test_resolveToBound_bound_nullableOuter() {
ClassElementImpl classS = class_(name: 'A');
TypeParameterElementImpl element = TypeParameterElementImpl('E', -1);
element.bound = interfaceTypeStar(classS);
- TypeParameterTypeImpl type = typeParameterTypeStar(element)
+ var type = typeParameterTypeStar(element)
.withNullability(NullabilitySuffix.question);
- expect(type.resolveToBound(null), equals(interfaceTypeQuestion(classS)));
+ expect(
+ type.resolveToBound(objectNone), equals(interfaceTypeQuestion(classS)));
}
void test_resolveToBound_bound_starInner() {
ClassElementImpl classS = class_(name: 'A');
TypeParameterElementImpl element = TypeParameterElementImpl('E', -1);
element.bound = interfaceTypeStar(classS);
- TypeParameterTypeImpl type = typeParameterTypeStar(element);
- expect(type.resolveToBound(null), same(element.bound));
+ var type = typeParameterTypeStar(element);
+ expect(type.resolveToBound(objectNone), same(element.bound));
}
void test_resolveToBound_bound_starInnerNullableOuter() {
ClassElementImpl classS = class_(name: 'A');
TypeParameterElementImpl element = TypeParameterElementImpl('E', -1);
element.bound = interfaceTypeQuestion(classS);
- TypeParameterTypeImpl type =
+ var type =
typeParameterTypeStar(element).withNullability(NullabilitySuffix.star);
- expect(type.resolveToBound(null), same(element.bound));
+ expect(type.resolveToBound(objectNone), same(element.bound));
}
void test_resolveToBound_bound_starOuter() {
ClassElementImpl classS = class_(name: 'A');
TypeParameterElementImpl element = TypeParameterElementImpl('E', -1);
element.bound = interfaceTypeStar(classS);
- TypeParameterTypeImpl type =
+ var type =
typeParameterTypeStar(element).withNullability(NullabilitySuffix.star);
- expect(type.resolveToBound(null), interfaceTypeStar(classS));
+ expect(type.resolveToBound(objectNone), interfaceTypeStar(classS));
}
void test_resolveToBound_nestedBound() {
@@ -2225,7 +2240,7 @@
TypeParameterElementImpl elementF = TypeParameterElementImpl('F', -1);
elementF.bound = typeE;
TypeParameterTypeImpl typeF = typeParameterTypeStar(elementE);
- expect(typeF.resolveToBound(null), interfaceTypeStar(classS));
+ expect(typeF.resolveToBound(objectNone), interfaceTypeStar(classS));
}
void test_resolveToBound_unbound() {
@@ -2239,7 +2254,7 @@
void _assert_asInstanceOf(
DartType type,
ClassElement element,
- String expected,
+ String? expected,
) {
var result = (type as TypeImpl).asInstanceOf(element);
expect(
@@ -2255,8 +2270,10 @@
await resolveTestCode('''
void f() => [() => 0, () => 1];
''');
- expect(findNode.functionExpression('() => 0').declaredElement.location,
- isNot(findNode.functionExpression('() => 1').declaredElement.location));
+ expect(
+ findNode.functionExpression('() => 0').declaredElement!.location,
+ isNot(
+ findNode.functionExpression('() => 1').declaredElement!.location));
}
test_ambiguous_closure_in_local_variable() async {
@@ -2265,16 +2282,20 @@
var x = [() => 0, () => 1];
}
''');
- expect(findNode.functionExpression('() => 0').declaredElement.location,
- isNot(findNode.functionExpression('() => 1').declaredElement.location));
+ expect(
+ findNode.functionExpression('() => 0').declaredElement!.location,
+ isNot(
+ findNode.functionExpression('() => 1').declaredElement!.location));
}
test_ambiguous_closure_in_top_level_variable() async {
await resolveTestCode('''
var x = [() => 0, () => 1];
''');
- expect(findNode.functionExpression('() => 0').declaredElement.location,
- isNot(findNode.functionExpression('() => 1').declaredElement.location));
+ expect(
+ findNode.functionExpression('() => 0').declaredElement!.location,
+ isNot(
+ findNode.functionExpression('() => 1').declaredElement!.location));
}
test_ambiguous_local_variable_in_executable() async {
@@ -2288,8 +2309,8 @@
}
}
''');
- expect(findNode.variableDeclaration('x = 0').declaredElement.location,
- isNot(findNode.variableDeclaration('x = 1').declaredElement.location));
+ expect(findNode.variableDeclaration('x = 0').declaredElement!.location,
+ isNot(findNode.variableDeclaration('x = 1').declaredElement!.location));
}
}
@@ -2304,6 +2325,11 @@
void test_resolveToBound() {
// Returns this.
- expect(_voidType.resolveToBound(null), same(_voidType));
+ expect(_voidType.resolveToBound(objectNone), same(_voidType));
}
}
+
+class _AnalysisSessionMock implements AnalysisSession {
+ @override
+ noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
+}
diff --git a/pkg/analyzer/test/src/dart/element/factor_type_test.dart b/pkg/analyzer/test/src/dart/element/factor_type_test.dart
index cfd1420..240c5bf 100644
--- a/pkg/analyzer/test/src/dart/element/factor_type_test.dart
+++ b/pkg/analyzer/test/src/dart/element/factor_type_test.dart
@@ -23,9 +23,9 @@
@reflectiveTest
class FactorTypeTest with FactorTypeTestMixin<DartType>, ElementsTypesMixin {
@override
- TypeProvider typeProvider;
+ late final TypeProvider typeProvider;
- TypeSystemImpl typeSystem;
+ late final TypeSystemImpl typeSystem;
FeatureSet get testFeatureSet {
return FeatureSet.forTesting(
diff --git a/pkg/analyzer/test/src/dart/element/flatten_type_test.dart b/pkg/analyzer/test/src/dart/element/flatten_type_test.dart
index 878bcb0..105e799 100644
--- a/pkg/analyzer/test/src/dart/element/flatten_type_test.dart
+++ b/pkg/analyzer/test/src/dart/element/flatten_type_test.dart
@@ -22,9 +22,9 @@
@reflectiveTest
class FlattenTypeTest with ElementsTypesMixin {
@override
- TypeProvider typeProvider;
+ late final TypeProvider typeProvider;
- TypeSystemImpl typeSystem;
+ late final TypeSystemImpl typeSystem;
FeatureSet get testFeatureSet {
return FeatureSet.forTesting(
diff --git a/pkg/analyzer/test/src/dart/element/function_type_test.dart b/pkg/analyzer/test/src/dart/element/function_type_test.dart
index 609d293..7fffdbf 100644
--- a/pkg/analyzer/test/src/dart/element/function_type_test.dart
+++ b/pkg/analyzer/test/src/dart/element/function_type_test.dart
@@ -416,38 +416,6 @@
}
}
-class MockFunctionTypedElement implements FunctionTypedElement {
- @override
- final List<ParameterElement> parameters;
-
- @override
- final DartType returnType;
-
- @override
- final List<TypeParameterElement> typeParameters;
-
- @override
- final Element enclosingElement;
-
- MockFunctionTypedElement(
- {this.parameters = const [],
- DartType returnType,
- this.typeParameters = const [],
- this.enclosingElement = const MockCompilationUnitElement()})
- : returnType = returnType ?? dynamicType;
-
- MockFunctionTypedElement.withNullReturn(
- {this.parameters = const [],
- this.typeParameters = const [],
- this.enclosingElement = const MockCompilationUnitElement()})
- : returnType = null;
-
- @override
- noSuchMethod(Invocation invocation) {
- return super.noSuchMethod(invocation);
- }
-}
-
class MockLibraryElement implements LibraryElement {
const MockLibraryElement();
diff --git a/pkg/analyzer/test/src/dart/element/generic_inferrer_test.dart b/pkg/analyzer/test/src/dart/element/generic_inferrer_test.dart
index 428784d..00ab99f 100644
--- a/pkg/analyzer/test/src/dart/element/generic_inferrer_test.dart
+++ b/pkg/analyzer/test/src/dart/element/generic_inferrer_test.dart
@@ -88,13 +88,13 @@
// B b;
// cOfB.m(b); // infer <B>
_assertType(
- _inferCall2(cOfB.getMethod('m').type, [typeB]), 'B Function(B)');
+ _inferCall2(cOfB.getMethod('m')!.type, [typeB]), 'B Function(B)');
// cOfA.m(b); // infer <B>
_assertType(
- _inferCall2(cOfA.getMethod('m').type, [typeB]), 'B Function(B)');
+ _inferCall2(cOfA.getMethod('m')!.type, [typeB]), 'B Function(B)');
// cOfObject.m(b); // infer <B>
_assertType(
- _inferCall2(cOfObject.getMethod('m').type, [typeB]), 'B Function(B)');
+ _inferCall2(cOfObject.getMethod('m')!.type, [typeB]), 'B Function(B)');
}
void test_boundedByOuterClassSubstituted() {
@@ -141,13 +141,13 @@
// List<B> b;
var listOfB = listNone(typeB);
// cOfB.m(b); // infer <B>
- _assertType(_inferCall2(cOfB.getMethod('m').type, [listOfB]),
+ _assertType(_inferCall2(cOfB.getMethod('m')!.type, [listOfB]),
'List<B> Function(List<B>)');
// cOfA.m(b); // infer <B>
- _assertType(_inferCall2(cOfA.getMethod('m').type, [listOfB]),
+ _assertType(_inferCall2(cOfA.getMethod('m')!.type, [listOfB]),
'List<B> Function(List<B>)');
// cOfObject.m(b); // infer <B>
- _assertType(_inferCall2(cOfObject.getMethod('m').type, [listOfB]),
+ _assertType(_inferCall2(cOfObject.getMethod('m')!.type, [listOfB]),
'List<B> Function(List<B>)');
}
@@ -636,8 +636,8 @@
expect(actualStr, expectedStr);
}
- List<DartType> _inferCall(FunctionTypeImpl ft, List<DartType> arguments,
- {DartType returnType, bool expectError = false}) {
+ List<DartType> _inferCall(FunctionType ft, List<DartType> arguments,
+ {DartType? returnType, bool expectError = false}) {
var listener = RecordingErrorListener();
var reporter = ErrorReporter(
@@ -663,11 +663,11 @@
} else {
expect(listener.errors, isEmpty, reason: 'did not expect any errors.');
}
- return typeArguments;
+ return typeArguments!;
}
- FunctionType _inferCall2(FunctionTypeImpl ft, List<DartType> arguments,
- {DartType returnType, bool expectError = false}) {
+ FunctionType _inferCall2(FunctionType ft, List<DartType> arguments,
+ {DartType? returnType, bool expectError = false}) {
var typeArguments = _inferCall(
ft,
arguments,
diff --git a/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart b/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart
index 562224c..f1f5973 100644
--- a/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart
+++ b/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart
@@ -5,7 +5,6 @@
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/null_safety_understanding_flag.dart';
import 'package:analyzer/src/dart/element/inheritance_manager3.dart';
-import 'package:meta/meta.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -1284,7 +1283,7 @@
}
class _InheritanceManager3Base extends PubPackageResolutionTest {
- InheritanceManager3 manager;
+ late final InheritanceManager3 manager;
@override
Future<void> resolveTestFile() async {
@@ -1292,8 +1291,8 @@
manager = InheritanceManager3();
}
- void _assertExecutable(ExecutableElement element, String expected) {
- if (expected != null) {
+ void _assertExecutable(ExecutableElement? element, String? expected) {
+ if (expected != null && element != null) {
var enclosingElement = element.enclosingElement;
var type = element.type;
@@ -1307,9 +1306,9 @@
}
void _assertGetInherited({
- @required String className,
- @required String name,
- String expected,
+ required String className,
+ required String name,
+ String? expected,
}) {
var member = manager.getInherited2(
findElement.classOrMixin(className),
@@ -1320,13 +1319,13 @@
}
void _assertGetMember({
- @required String className,
- @required String name,
- String expected,
+ required String className,
+ required String name,
+ String? expected,
bool concrete = false,
bool forSuper = false,
}) {
- ExecutableElement member;
+ ExecutableElement? member;
NullSafetyUnderstandingFlag.enableNullSafetyTypes(() {
member = manager.getMember2(
findElement.classOrMixin(className),
@@ -1340,9 +1339,9 @@
}
void _assertGetMember2({
- @required String className,
- @required String name,
- String expected,
+ required String className,
+ required String name,
+ String? expected,
}) {
_assertGetMember(
className: className,
@@ -1374,8 +1373,8 @@
void _assertNameToExecutableMap(
Map<Name, ExecutableElement> map, String expected) {
var lines = <String>[];
- for (var name in map.keys) {
- var element = map[name];
+ for (var entry in map.entries) {
+ var element = entry.value;
var type = element.type;
var enclosingElement = element.enclosingElement;
diff --git a/pkg/analyzer/test/src/dart/element/least_greatest_closure_test.dart b/pkg/analyzer/test/src/dart/element/least_greatest_closure_test.dart
index 2d92505..8c1a570 100644
--- a/pkg/analyzer/test/src/dart/element/least_greatest_closure_test.dart
+++ b/pkg/analyzer/test/src/dart/element/least_greatest_closure_test.dart
@@ -4,7 +4,6 @@
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/type.dart';
-import 'package:meta/meta.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -19,10 +18,10 @@
@reflectiveTest
class GreatestClosureLegacyTest extends AbstractTypeSystemTest {
- TypeParameterElement T;
- TypeParameterType T_none;
- TypeParameterType T_question;
- TypeParameterType T_star;
+ late final TypeParameterElement T;
+ late final TypeParameterType T_none;
+ late final TypeParameterType T_question;
+ late final TypeParameterType T_star;
@override
void setUp() {
@@ -120,8 +119,8 @@
void _check(
DartType type, {
- @required String greatest,
- @required String least,
+ required String greatest,
+ required String least,
}) {
var greatestResult = typeSystem.greatestClosure(type, [T]);
expect(
@@ -143,10 +142,10 @@
@reflectiveTest
class GreatestClosureNullSafetyTest extends AbstractTypeSystemNullSafetyTest {
- TypeParameterElement T;
- TypeParameterType T_none;
- TypeParameterType T_question;
- TypeParameterType T_star;
+ late final TypeParameterElement T;
+ late final TypeParameterType T_none;
+ late final TypeParameterType T_question;
+ late final TypeParameterType T_star;
@override
void setUp() {
@@ -253,8 +252,8 @@
void _check(
DartType type, {
- @required String greatest,
- @required String least,
+ required String greatest,
+ required String least,
}) {
var greatestResult = typeSystem.greatestClosure(type, [T]);
expect(
diff --git a/pkg/analyzer/test/src/dart/element/least_upper_bound_helper_test.dart b/pkg/analyzer/test/src/dart/element/least_upper_bound_helper_test.dart
index d99c0e8..c5e85ce 100644
--- a/pkg/analyzer/test/src/dart/element/least_upper_bound_helper_test.dart
+++ b/pkg/analyzer/test/src/dart/element/least_upper_bound_helper_test.dart
@@ -124,11 +124,11 @@
// \ /
// E
//
- ClassElementImpl classA = ElementFactory.classElement2("A");
- ClassElementImpl classB = ElementFactory.classElement2("B");
- ClassElementImpl classC = ElementFactory.classElement2("C");
- ClassElementImpl classD = ElementFactory.classElement2("D");
- ClassElementImpl classE = ElementFactory.classElement2("E");
+ ClassElementImpl classA = class_(name: "A");
+ ClassElementImpl classB = class_(name: "B");
+ ClassElementImpl classC = class_(name: "C");
+ ClassElementImpl classD = class_(name: "D");
+ ClassElementImpl classE = class_(name: "E");
classB.interfaces = <InterfaceType>[interfaceTypeStar(classA)];
classC.interfaces = <InterfaceType>[interfaceTypeStar(classA)];
classD.interfaces = <InterfaceType>[interfaceTypeStar(classC)];
@@ -155,15 +155,15 @@
// \ /
// E
//
- ClassElement classA = ElementFactory.classElement2("A");
+ ClassElement classA = class_(name: "A");
ClassElement classB =
- ElementFactory.classElement("B", interfaceTypeStar(classA));
+ class_(name: "B", superType: interfaceTypeStar(classA));
ClassElement classC =
- ElementFactory.classElement("C", interfaceTypeStar(classA));
+ class_(name: "C", superType: interfaceTypeStar(classA));
ClassElement classD =
- ElementFactory.classElement("D", interfaceTypeStar(classC));
+ class_(name: "D", superType: interfaceTypeStar(classC));
ClassElementImpl classE =
- ElementFactory.classElement("E", interfaceTypeStar(classB));
+ class_(name: "E", superType: interfaceTypeStar(classB));
classE.interfaces = <InterfaceType>[interfaceTypeStar(classD)];
// assertion: even though the longest path to Object for typeB is 2, and
// typeE extends typeB, the longest path for typeE is 4 since it also
@@ -177,9 +177,9 @@
}
void test_class_recursion() {
- ClassElementImpl classA = ElementFactory.classElement2("A");
+ ClassElementImpl classA = class_(name: "A");
ClassElementImpl classB =
- ElementFactory.classElement("B", interfaceTypeStar(classA));
+ class_(name: "B", superType: interfaceTypeStar(classA));
classA.supertype = interfaceTypeStar(classB);
expect(_longestPathToObject(classA), 2);
}
@@ -194,9 +194,9 @@
// |
// C
//
- ClassElementImpl classA = ElementFactory.classElement2("A");
- ClassElementImpl classB = ElementFactory.classElement2("B");
- ClassElementImpl classC = ElementFactory.classElement2("C");
+ ClassElementImpl classA = class_(name: "A");
+ ClassElementImpl classB = class_(name: "B");
+ ClassElementImpl classC = class_(name: "C");
classB.interfaces = <InterfaceType>[interfaceTypeStar(classA)];
classC.interfaces = <InterfaceType>[interfaceTypeStar(classB)];
expect(_longestPathToObject(classA), 1);
@@ -214,11 +214,11 @@
// |
// C
//
- ClassElement classA = ElementFactory.classElement2("A");
+ ClassElement classA = class_(name: "A");
ClassElement classB =
- ElementFactory.classElement("B", interfaceTypeStar(classA));
+ class_(name: "B", superType: interfaceTypeStar(classA));
ClassElement classC =
- ElementFactory.classElement("C", interfaceTypeStar(classB));
+ class_(name: "C", superType: interfaceTypeStar(classB));
expect(_longestPathToObject(classA), 1);
expect(_longestPathToObject(classB), 2);
expect(_longestPathToObject(classC), 3);
@@ -432,26 +432,26 @@
var instObject = InstantiatedClass.of(typeProvider.objectType);
- ClassElementImpl classA = ElementFactory.classElement2('A');
+ ClassElementImpl classA = class_(name: 'A');
var instA = InstantiatedClass(classA, const []);
- var classB = ElementFactory.classElement3(
+ var classB = class_(
name: 'B',
- typeParameterNames: ['T'],
- supertype: instA.withNullabilitySuffixNone,
+ typeParameters: [typeParameter('T')],
+ superType: instA.withNullabilitySuffixNone,
);
var typeParametersC = ElementFactory.typeParameters(['T']);
- var classC = ElementFactory.classElement3(
+ var classC = class_(
name: 'B',
typeParameters: typeParametersC,
- supertype: InstantiatedClass(
+ superType: InstantiatedClass(
classB,
[typeParameterTypeStar(typeParametersC[0])],
).withNullabilitySuffixNone,
);
- var classD = ElementFactory.classElement2('D');
+ var classD = class_(name: 'D');
// A
expect(
@@ -483,16 +483,16 @@
void test_mixin_constraints() {
var instObject = InstantiatedClass.of(typeProvider.objectType);
- var classA = ElementFactory.classElement3(name: 'A');
+ var classA = class_(name: 'A');
var instA = InstantiatedClass(classA, const []);
- var classB = ElementFactory.classElement3(
+ var classB = class_(
name: 'B',
interfaces: [instA.withNullabilitySuffixNone],
);
var instB = InstantiatedClass(classB, const []);
- var classC = ElementFactory.classElement3(name: 'C');
+ var classC = class_(name: 'C');
var instC = InstantiatedClass(classC, const []);
var mixinM = mixin_(
@@ -525,16 +525,16 @@
void test_mixin_interfaces() {
var instObject = InstantiatedClass.of(typeProvider.objectType);
- var classA = ElementFactory.classElement3(name: 'A');
+ var classA = class_(name: 'A');
var instA = InstantiatedClass(classA, const []);
- var classB = ElementFactory.classElement3(
+ var classB = class_(
name: 'B',
interfaces: [instA.withNullabilitySuffixNone],
);
var instB = InstantiatedClass(classB, const []);
- var classC = ElementFactory.classElement3(name: 'C');
+ var classC = class_(name: 'C');
var instC = InstantiatedClass(classC, const []);
var mixinM = mixin_(
@@ -555,28 +555,28 @@
void test_multipleInterfacePaths() {
var instObject = InstantiatedClass.of(typeProvider.objectType);
- var classA = ElementFactory.classElement3(name: 'A');
+ var classA = class_(name: 'A');
var instA = InstantiatedClass(classA, const []);
- var classB = ElementFactory.classElement3(
+ var classB = class_(
name: 'B',
interfaces: [instA.withNullabilitySuffixNone],
);
var instB = InstantiatedClass(classB, const []);
- var classC = ElementFactory.classElement3(
+ var classC = class_(
name: 'C',
interfaces: [instA.withNullabilitySuffixNone],
);
var instC = InstantiatedClass(classC, const []);
- var classD = ElementFactory.classElement3(
+ var classD = class_(
name: 'D',
interfaces: [instC.withNullabilitySuffixNone],
);
var instD = InstantiatedClass(classD, const []);
- var classE = ElementFactory.classElement3(
+ var classE = class_(
name: 'E',
interfaces: [
instB.withNullabilitySuffixNone,
@@ -601,30 +601,30 @@
void test_multipleSuperclassPaths() {
var instObject = InstantiatedClass.of(typeProvider.objectType);
- var classA = ElementFactory.classElement3(name: 'A');
+ var classA = class_(name: 'A');
var instA = InstantiatedClass(classA, const []);
- var classB = ElementFactory.classElement3(
+ var classB = class_(
name: 'B',
- supertype: instA.withNullabilitySuffixNone,
+ superType: instA.withNullabilitySuffixNone,
);
var instB = InstantiatedClass(classB, const []);
- var classC = ElementFactory.classElement3(
+ var classC = class_(
name: 'C',
- supertype: instA.withNullabilitySuffixNone,
+ superType: instA.withNullabilitySuffixNone,
);
var instC = InstantiatedClass(classC, const []);
- var classD = ElementFactory.classElement3(
+ var classD = class_(
name: 'D',
- supertype: instC.withNullabilitySuffixNone,
+ superType: instC.withNullabilitySuffixNone,
);
var instD = InstantiatedClass(classD, const []);
- var classE = ElementFactory.classElement3(
+ var classE = class_(
name: 'E',
- supertype: instB.withNullabilitySuffixNone,
+ superType: instB.withNullabilitySuffixNone,
interfaces: [
instD.withNullabilitySuffixNone,
],
@@ -645,12 +645,12 @@
}
void test_recursion() {
- var classA = ElementFactory.classElement3(name: 'A');
+ var classA = class_(name: 'A');
var instA = InstantiatedClass(classA, const []);
- var classB = ElementFactory.classElement3(
+ var classB = class_(
name: 'B',
- supertype: instA.withNullabilitySuffixNone,
+ superType: instA.withNullabilitySuffixNone,
);
var instB = InstantiatedClass(classB, const []);
@@ -670,16 +670,16 @@
void test_singleInterfacePath() {
var instObject = InstantiatedClass.of(typeProvider.objectType);
- var classA = ElementFactory.classElement3(name: 'A');
+ var classA = class_(name: 'A');
var instA = InstantiatedClass(classA, const []);
- var classB = ElementFactory.classElement3(
+ var classB = class_(
name: 'B',
interfaces: [instA.withNullabilitySuffixNone],
);
var instB = InstantiatedClass(classB, const []);
- var classC = ElementFactory.classElement3(
+ var classC = class_(
name: 'C',
interfaces: [instB.withNullabilitySuffixNone],
);
@@ -714,18 +714,18 @@
//
var instObject = InstantiatedClass.of(typeProvider.objectType);
- var classA = ElementFactory.classElement3(name: 'A');
+ var classA = class_(name: 'A');
var instA = InstantiatedClass(classA, const []);
- var classB = ElementFactory.classElement3(
+ var classB = class_(
name: 'B',
- supertype: instA.withNullabilitySuffixNone,
+ superType: instA.withNullabilitySuffixNone,
);
var instB = InstantiatedClass(classB, const []);
- var classC = ElementFactory.classElement3(
+ var classC = class_(
name: 'C',
- supertype: instB.withNullabilitySuffixNone,
+ superType: instB.withNullabilitySuffixNone,
);
var instC = InstantiatedClass(classC, const []);
diff --git a/pkg/analyzer/test/src/dart/element/normalize_type_test.dart b/pkg/analyzer/test/src/dart/element/normalize_type_test.dart
index 9309834..f99b5a0 100644
--- a/pkg/analyzer/test/src/dart/element/normalize_type_test.dart
+++ b/pkg/analyzer/test/src/dart/element/normalize_type_test.dart
@@ -25,9 +25,9 @@
@reflectiveTest
class NormalizeTypeTest with ElementsTypesMixin {
@override
- TypeProvider typeProvider;
+ late final TypeProvider typeProvider;
- TypeSystemImpl typeSystem;
+ late final TypeSystemImpl typeSystem;
FeatureSet get testFeatureSet {
return FeatureSet.forTesting(
@@ -504,7 +504,7 @@
}
}
- String _typeParametersStr(TypeImpl type) {
+ String _typeParametersStr(DartType type) {
var typeStr = '';
var typeParameterCollector = _TypeParameterCollector();
@@ -515,8 +515,7 @@
return typeStr;
}
- String _typeString(TypeImpl type) {
- if (type == null) return null;
+ String _typeString(DartType type) {
return type.getDisplayString(withNullability: true) +
_typeParametersStr(type);
}
diff --git a/pkg/analyzer/test/src/dart/element/nullability_eliminator_test.dart b/pkg/analyzer/test/src/dart/element/nullability_eliminator_test.dart
index 227d2cf..632677a 100644
--- a/pkg/analyzer/test/src/dart/element/nullability_eliminator_test.dart
+++ b/pkg/analyzer/test/src/dart/element/nullability_eliminator_test.dart
@@ -2,16 +2,13 @@
// 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.
-import 'package:analyzer/dart/analysis/features.dart';
import 'package:analyzer/dart/element/nullability_suffix.dart';
import 'package:analyzer/dart/element/type.dart';
-import 'package:analyzer/dart/element/type_provider.dart';
import 'package:analyzer/src/dart/element/nullability_eliminator.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
-import '../../../generated/elements_types_mixin.dart';
-import '../../../generated/test_analysis_context.dart';
+import '../../../generated/type_system_test.dart';
main() {
defineReflectiveSuite(() {
@@ -20,20 +17,7 @@
}
@reflectiveTest
-class NullabilityEliminatorTest with ElementsTypesMixin {
- @override
- TypeProvider typeProvider;
-
- void setUp() {
- var analysisContext = TestAnalysisContext(
- featureSet: FeatureSet.forTesting(
- sdkVersion: '2.6.0',
- additionalFeatures: [Feature.non_nullable],
- ),
- );
- typeProvider = analysisContext.typeProviderNonNullableByDefault;
- }
-
+class NullabilityEliminatorTest extends AbstractTypeSystemNullSafetyTest {
test_dynamicType() {
_verifySame(typeProvider.dynamicType);
}
@@ -172,12 +156,12 @@
);
expect(_typeToString(input), 'int Function()');
expect(input.aliasElement, same(A));
- expect(input.aliasArguments.map(_typeToString).join(', '), 'int');
+ expect(input.aliasArguments!.map(_typeToString).join(', '), 'int');
var result = NullabilityEliminator.perform(typeProvider, input);
expect(_typeToString(result), 'int* Function()*');
expect(result.aliasElement, same(A));
- expect(result.aliasArguments.map(_typeToString).join(', '), 'int*');
+ expect(result.aliasArguments!.map(_typeToString).join(', '), 'int*');
}
test_functionType_typeParameters() {
@@ -295,7 +279,7 @@
var result = NullabilityEliminator.perform(typeProvider, input);
expect(_typeToString(result), 'List<int*>*');
expect(result.aliasElement, same(A));
- expect(result.aliasArguments.map(_typeToString).join(', '), 'int*');
+ expect(result.aliasArguments!.map(_typeToString).join(', '), 'int*');
}
test_interfaceType_int() {
diff --git a/pkg/analyzer/test/src/dart/element/nullable_test.dart b/pkg/analyzer/test/src/dart/element/nullable_test.dart
index a2a8c54..1bfb595 100644
--- a/pkg/analyzer/test/src/dart/element/nullable_test.dart
+++ b/pkg/analyzer/test/src/dart/element/nullable_test.dart
@@ -6,7 +6,6 @@
import 'package:analyzer/dart/element/nullability_suffix.dart';
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/src/dart/element/type.dart';
-import 'package:meta/meta.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -784,8 +783,8 @@
void _checkTypeParameter(
TypeParameterType type, {
- @required TypeParameterElement element,
- @required DartType promotedBound,
+ required TypeParameterElement element,
+ required DartType? promotedBound,
}) {
var actual = typeSystem.promoteToNonNull(type) as TypeParameterTypeImpl;
expect(actual.element, same(element));
diff --git a/pkg/analyzer/test/src/dart/element/replace_top_bottom_test.dart b/pkg/analyzer/test/src/dart/element/replace_top_bottom_test.dart
index ea0ffef..8a6db58 100644
--- a/pkg/analyzer/test/src/dart/element/replace_top_bottom_test.dart
+++ b/pkg/analyzer/test/src/dart/element/replace_top_bottom_test.dart
@@ -5,7 +5,6 @@
import 'package:analyzer/dart/element/null_safety_understanding_flag.dart';
import 'package:analyzer/dart/element/nullability_suffix.dart';
import 'package:analyzer/dart/element/type.dart';
-import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/dart/resolver/variance.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -63,7 +62,7 @@
_check(listStar(intStar), 'List<int*>*');
}
- void _check(DartType type, String expectedStr, {String typeStr}) {
+ void _check(DartType type, String expectedStr, {String? typeStr}) {
NullSafetyUnderstandingFlag.enableNullSafetyTypes(() {
if (typeStr != null) {
expect(_typeString(type), typeStr);
@@ -75,7 +74,7 @@
});
}
- String _typeString(TypeImpl type) {
+ String _typeString(DartType type) {
return type.getDisplayString(withNullability: true);
}
}
@@ -163,7 +162,7 @@
_check(F_dynamic, 'Never Function(Never)');
}
- void _check(DartType type, String expectedStr, {String typeStr}) {
+ void _check(DartType type, String expectedStr, {String? typeStr}) {
NullSafetyUnderstandingFlag.enableNullSafetyTypes(() {
if (typeStr != null) {
expect(_typeString(type), typeStr);
@@ -175,7 +174,7 @@
});
}
- String _typeString(TypeImpl type) {
+ String _typeString(DartType type) {
return type.getDisplayString(withNullability: true);
}
}
diff --git a/pkg/analyzer/test/src/dart/element/runtime_type_equality_test.dart b/pkg/analyzer/test/src/dart/element/runtime_type_equality_test.dart
index 600019f..f7aee23 100644
--- a/pkg/analyzer/test/src/dart/element/runtime_type_equality_test.dart
+++ b/pkg/analyzer/test/src/dart/element/runtime_type_equality_test.dart
@@ -6,7 +6,6 @@
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/dart/element/type_provider.dart';
-import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/dart/element/type_system.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -23,9 +22,9 @@
@reflectiveTest
class RuntimeTypeEqualityTypeTest with ElementsTypesMixin {
@override
- TypeProvider typeProvider;
+ late final TypeProvider typeProvider;
- TypeSystemImpl typeSystem;
+ late final TypeSystemImpl typeSystem;
FeatureSet get testFeatureSet {
return FeatureSet.forTesting(
@@ -353,8 +352,7 @@
_check(T1, T2, false);
}
- String _typeString(TypeImpl type) {
- if (type == null) return null;
+ String _typeString(DartType type) {
return type.getDisplayString(withNullability: true);
}
}
diff --git a/pkg/analyzer/test/src/dart/element/subtype_test.dart b/pkg/analyzer/test/src/dart/element/subtype_test.dart
index 18b28e1..2a22d03 100644
--- a/pkg/analyzer/test/src/dart/element/subtype_test.dart
+++ b/pkg/analyzer/test/src/dart/element/subtype_test.dart
@@ -7,7 +7,6 @@
import 'package:analyzer/dart/element/nullability_suffix.dart';
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/dart/element/type_visitor.dart';
-import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/dart/resolver/variance.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -270,7 +269,7 @@
class SubtypeTest extends _SubtypingTestBase {
final Map<String, DartType> _types = {};
- void assertExpectedString(TypeImpl type, String expectedString) {
+ void assertExpectedString(DartType type, String? expectedString) {
if (expectedString != null) {
var typeStr = _typeStr(type);
@@ -283,8 +282,8 @@
void isNotSubtype(
DartType T0,
DartType T1, {
- String strT0,
- String strT1,
+ required String strT0,
+ required String strT1,
}) {
assertExpectedString(T0, strT0);
assertExpectedString(T1, strT1);
@@ -301,8 +300,8 @@
}
void isNotSubtype3({
- String strT0,
- String strT1,
+ required String strT0,
+ required String strT1,
}) {
isNotSubtype2(strT0, strT1);
}
@@ -310,8 +309,8 @@
void isSubtype(
DartType T0,
DartType T1, {
- String strT0,
- String strT1,
+ String? strT0,
+ String? strT1,
}) {
assertExpectedString(T0, strT0);
assertExpectedString(T1, strT1);
@@ -5426,11 +5425,12 @@
}
void _defineType(String str, DartType type) {
- for (var key in _types.keys) {
+ for (var entry in _types.entries) {
+ var key = entry.key;
if (key == 'Never' || _typeStr(type) == 'Never') {
// We have aliases for Never.
} else {
- var value = _types[key];
+ var value = entry.value;
if (key == str) {
fail('Duplicate type: $str; existing: $value; new: $type');
}
@@ -5799,11 +5799,13 @@
DartType _getTypeByStr(String str) {
var type = _types[str];
- expect(type, isNotNull, reason: 'No DartType for: $str');
+ if (type == null) {
+ fail('No DartType for: $str');
+ }
return type;
}
- String _typeParametersStr(TypeImpl type) {
+ String _typeParametersStr(DartType type) {
var typeStr = '';
var typeParameterCollector = _TypeParameterCollector();
@@ -5933,10 +5935,10 @@
}
void _checkGroups(DartType t1,
- {List<DartType> equivalents,
- List<DartType> unrelated,
- List<DartType> subtypes,
- List<DartType> supertypes}) {
+ {List<DartType>? equivalents,
+ List<DartType>? unrelated,
+ List<DartType>? subtypes,
+ List<DartType>? supertypes}) {
if (equivalents != null) {
for (DartType t2 in equivalents) {
_checkEquivalent(t1, t2);
@@ -6037,10 +6039,8 @@
var str = '';
- if (bound != null) {
- var boundStr = bound.getDisplayString(withNullability: true);
- str += '${type.element.name} extends ' + boundStr;
- }
+ var boundStr = bound.getDisplayString(withNullability: true);
+ str += '${type.element.name} extends ' + boundStr;
typeParameters.add(str);
}
diff --git a/pkg/analyzer/test/src/dart/element/top_merge_test.dart b/pkg/analyzer/test/src/dart/element/top_merge_test.dart
index 8dec084..44ec079 100644
--- a/pkg/analyzer/test/src/dart/element/top_merge_test.dart
+++ b/pkg/analyzer/test/src/dart/element/top_merge_test.dart
@@ -344,9 +344,9 @@
abstract class _Base with ElementsTypesMixin {
@override
- TypeProvider typeProvider;
+ late final TypeProvider typeProvider;
- TypeSystemImpl typeSystem;
+ late final TypeSystemImpl typeSystem;
FeatureSet get testFeatureSet {
return FeatureSet.forTesting();
diff --git a/pkg/analyzer/test/src/dart/element/type_algebra_test.dart b/pkg/analyzer/test/src/dart/element/type_algebra_test.dart
index 298138f..15bf4c5 100644
--- a/pkg/analyzer/test/src/dart/element/type_algebra_test.dart
+++ b/pkg/analyzer/test/src/dart/element/type_algebra_test.dart
@@ -8,11 +8,10 @@
import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/dart/element/type_algebra.dart';
import 'package:analyzer/src/dart/element/type_schema.dart';
-import 'package:analyzer/src/generated/testing/test_type_provider.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
-import '../../../generated/elements_types_mixin.dart';
+import '../../../generated/type_system_test.dart';
main() {
defineReflectiveSuite(() {
@@ -32,7 +31,7 @@
var T = typeParameter('T');
var A = class_(name: 'A', typeParameters: [T]);
- var type = interfaceTypeStar(A, typeArguments: [intType]);
+ var type = interfaceTypeNone(A, typeArguments: [intNone]);
var result = Substitution.empty.substituteType(type);
expect(result, same(type));
@@ -50,11 +49,11 @@
var U = typeParameter('U');
var B = class_(name: 'B', typeParameters: [U]);
- var BofInt = interfaceTypeStar(B, typeArguments: [intType]);
+ var BofInt = interfaceTypeNone(B, typeArguments: [intNone]);
var substitution = Substitution.fromInterfaceType(BofInt);
// A<U>
- var type = interfaceTypeStar(A, typeArguments: [typeParameterTypeStar(U)]);
+ var type = interfaceTypeNone(A, typeArguments: [typeParameterTypeNone(U)]);
assertType(type, 'A<U>');
var result = substitution.substituteType(type);
@@ -70,17 +69,17 @@
var U = typeParameter('U');
var A = class_(name: 'A', typeParameters: [T, U]);
- var type = interfaceTypeStar(
+ var type = interfaceTypeNone(
A,
typeArguments: [
- typeParameterTypeStar(T),
- typeParameterTypeStar(U),
+ typeParameterTypeNone(T),
+ typeParameterTypeNone(U),
],
);
var result = Substitution.fromPairs(
[T, U],
- [intType, doubleType],
+ [intNone, doubleNone],
).substituteType(type);
assertType(result, 'A<int, double>');
}
@@ -91,16 +90,16 @@
test_function() async {
// T Function(T)
var T = typeParameter('T');
- var type = functionTypeStar(
+ var type = functionTypeNone(
parameters: [
- requiredParameter(type: typeParameterTypeStar(T)),
+ requiredParameter(type: typeParameterTypeNone(T)),
],
- returnType: typeParameterTypeStar(T),
+ returnType: typeParameterTypeNone(T),
);
var result = Substitution.fromUpperAndLowerBounds(
{T: typeProvider.intType},
- {T: NeverTypeImpl.instance},
+ {T: neverNone},
).substituteType(type);
assertType(result, 'int Function(Never)');
}
@@ -110,47 +109,47 @@
class SubstituteTest extends _Base {
test_bottom() async {
var T = typeParameter('T');
- _assertIdenticalType(typeProvider.bottomType, {T: intType});
+ _assertIdenticalType(typeProvider.bottomType, {T: intNone});
}
test_dynamic() async {
var T = typeParameter('T');
- _assertIdenticalType(typeProvider.dynamicType, {T: intType});
+ _assertIdenticalType(typeProvider.dynamicType, {T: intNone});
}
test_function_noSubstitutions() async {
- var type = functionTypeStar(
+ var type = functionTypeNone(
parameters: [
- requiredParameter(type: intType),
+ requiredParameter(type: intNone),
],
- returnType: boolType,
+ returnType: boolNone,
);
var T = typeParameter('T');
- _assertIdenticalType(type, {T: intType});
+ _assertIdenticalType(type, {T: intNone});
}
test_function_parameters_returnType() async {
// typedef F<T, U> = T Function(U u, bool);
var T = typeParameter('T');
var U = typeParameter('U');
- var type = functionTypeStar(
+ var type = functionTypeNone(
parameters: [
- requiredParameter(type: typeParameterTypeStar(U)),
- requiredParameter(type: boolType),
+ requiredParameter(type: typeParameterTypeNone(U)),
+ requiredParameter(type: boolNone),
],
- returnType: typeParameterTypeStar(T),
+ returnType: typeParameterTypeNone(T),
);
assertType(type, 'T Function(U, bool)');
_assertSubstitution(
type,
- {T: intType},
+ {T: intNone},
'int Function(U, bool)',
);
_assertSubstitution(
type,
- {T: intType, U: doubleType},
+ {T: intNone, U: doubleNone},
'int Function(double, bool)',
);
}
@@ -158,19 +157,19 @@
test_function_typeFormals() async {
// typedef F<T> = T Function<U extends T>(U);
var T = typeParameter('T');
- var U = typeParameter('U', bound: typeParameterTypeStar(T));
- var type = functionTypeStar(
+ var U = typeParameter('U', bound: typeParameterTypeNone(T));
+ var type = functionTypeNone(
typeFormals: [U],
parameters: [
- requiredParameter(type: typeParameterTypeStar(U)),
+ requiredParameter(type: typeParameterTypeNone(U)),
],
- returnType: typeParameterTypeStar(T),
+ returnType: typeParameterTypeNone(T),
);
assertType(type, 'T Function<U extends T>(U)');
_assertSubstitution(
type,
- {T: intType},
+ {T: intNone},
'int Function<U extends int>(U)',
);
}
@@ -187,14 +186,14 @@
var T = typeParameter('T');
var U = typeParameter('U');
var V = typeParameter('V');
- T.bound = interfaceTypeStar(classTriplet, typeArguments: [
- typeParameterTypeStar(T),
- typeParameterTypeStar(U),
- typeParameterTypeStar(V),
+ T.bound = interfaceTypeNone(classTriplet, typeArguments: [
+ typeParameterTypeNone(T),
+ typeParameterTypeNone(U),
+ typeParameterTypeNone(V),
]);
- var type = functionTypeStar(
+ var type = functionTypeNone(
typeFormals: [T, U],
- returnType: boolType,
+ returnType: boolNone,
);
assertType(
@@ -202,7 +201,7 @@
'bool Function<T extends Triple<T, U, V>, U>()',
);
- var result = substitute(type, {V: intType}) as FunctionType;
+ var result = substitute(type, {V: intNone}) as FunctionType;
assertType(
result,
'bool Function<T extends Triple<T, U, int>, U>()',
@@ -220,12 +219,12 @@
var A = class_(name: 'A', typeParameters: [T]);
var U = typeParameter('U');
- var type = interfaceTypeStar(A, typeArguments: [
- typeParameterTypeStar(U),
+ var type = interfaceTypeNone(A, typeArguments: [
+ typeParameterTypeNone(U),
]);
assertType(type, 'A<U>');
- _assertSubstitution(type, {U: intType}, 'A<int>');
+ _assertSubstitution(type, {U: intNone}, 'A<int>');
}
test_interface_arguments_deep() async {
@@ -233,26 +232,26 @@
var A = class_(name: 'A', typeParameters: [T]);
var U = typeParameter('U');
- var type = interfaceTypeStar(A, typeArguments: [
- interfaceTypeStar(
+ var type = interfaceTypeNone(A, typeArguments: [
+ interfaceTypeNone(
typeProvider.listElement,
typeArguments: [
- typeParameterTypeStar(U),
+ typeParameterTypeNone(U),
],
)
]);
assertType(type, 'A<List<U>>');
- _assertSubstitution(type, {U: intType}, 'A<List<int>>');
+ _assertSubstitution(type, {U: intNone}, 'A<List<int>>');
}
test_interface_noArguments() async {
// class A {}
var A = class_(name: 'A');
- var type = interfaceTypeStar(A);
+ var type = interfaceTypeNone(A);
var T = typeParameter('T');
- _assertIdenticalType(type, {T: intType});
+ _assertIdenticalType(type, {T: intNone});
}
test_interface_noArguments_inArguments() async {
@@ -260,10 +259,10 @@
var T = typeParameter('T');
var A = class_(name: 'A', typeParameters: [T]);
- var type = interfaceTypeStar(A, typeArguments: [intType]);
+ var type = interfaceTypeNone(A, typeArguments: [intNone]);
var U = typeParameter('U');
- _assertIdenticalType(type, {U: doubleType});
+ _assertIdenticalType(type, {U: doubleNone});
}
test_typeParameter_nullability() async {
@@ -271,8 +270,8 @@
void check(
NullabilitySuffix typeParameterNullability,
- InterfaceTypeImpl typeArgument,
- InterfaceTypeImpl expectedType,
+ InterfaceType typeArgument,
+ InterfaceType expectedType,
) {
var result = Substitution.fromMap(
{tElement: typeArgument},
@@ -300,16 +299,16 @@
test_unknownInferredType() async {
var T = typeParameter('T');
- _assertIdenticalType(UnknownInferredType.instance, {T: intType});
+ _assertIdenticalType(UnknownInferredType.instance, {T: intNone});
}
test_void() async {
var T = typeParameter('T');
- _assertIdenticalType(typeProvider.voidType, {T: intType});
+ _assertIdenticalType(typeProvider.voidType, {T: intNone});
}
test_void_emptyMap() async {
- _assertIdenticalType(intType, {});
+ _assertIdenticalType(intNone, {});
}
void _assertIdenticalType(
@@ -321,7 +320,7 @@
@reflectiveTest
class SubstituteWithNullabilityTest extends _Base {
- SubstituteWithNullabilityTest() : super(useNnbd: true);
+ SubstituteWithNullabilityTest();
test_interface_none() async {
// class A<T> {}
@@ -335,7 +334,7 @@
],
nullabilitySuffix: NullabilitySuffix.none,
);
- _assertSubstitution(type, {U: intType}, 'A<int>');
+ _assertSubstitution(type, {U: intNone}, 'A<int>');
}
test_interface_question() async {
@@ -350,7 +349,7 @@
],
nullabilitySuffix: NullabilitySuffix.question,
);
- _assertSubstitution(type, {U: intType}, 'A<int>?');
+ _assertSubstitution(type, {U: intNone}, 'A<int>?');
}
test_interface_star() async {
@@ -365,31 +364,14 @@
],
nullabilitySuffix: NullabilitySuffix.star,
);
- _assertSubstitution(type, {U: intType}, 'A<int>*');
+ _assertSubstitution(type, {U: intNone}, 'A<int>*');
}
}
-class _Base with ElementsTypesMixin {
- @override
- final TestTypeProvider typeProvider = TestTypeProvider();
-
- /// TODO(scheglov) remove it
- final bool useNnbd;
-
- _Base({this.useNnbd = false});
-
- InterfaceType get boolType => typeProvider.boolType;
-
- InterfaceType get doubleType => typeProvider.doubleType;
-
- InterfaceType get intType => typeProvider.intType;
-
- /// Whether `DartType.toString()` with nullability should be asked.
- bool get typeToStringWithNullability => useNnbd;
-
+class _Base extends AbstractTypeSystemNullSafetyTest {
void assertType(DartType type, String expected) {
var typeStr = type.getDisplayString(
- withNullability: typeToStringWithNullability,
+ withNullability: true,
);
expect(typeStr, expected);
}
diff --git a/pkg/analyzer/test/src/dart/element/type_constraint_gatherer_test.dart b/pkg/analyzer/test/src/dart/element/type_constraint_gatherer_test.dart
index 94d6e21..bed7bd4 100644
--- a/pkg/analyzer/test/src/dart/element/type_constraint_gatherer_test.dart
+++ b/pkg/analyzer/test/src/dart/element/type_constraint_gatherer_test.dart
@@ -6,7 +6,6 @@
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/src/dart/element/type_constraint_gatherer.dart';
import 'package:analyzer/src/dart/element/type_schema.dart';
-import 'package:meta/meta.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -20,10 +19,10 @@
@reflectiveTest
class TypeConstraintGathererTest extends AbstractTypeSystemNullSafetyTest {
- /*late*/ TypeParameterElement T;
- /*late*/ TypeParameterType T_none;
- /*late*/ TypeParameterType T_question;
- /*late*/ TypeParameterType T_star;
+ late final TypeParameterElement T;
+ late final TypeParameterType T_none;
+ late final TypeParameterType T_question;
+ late final TypeParameterType T_star;
UnknownInferredType get unknownType => UnknownInferredType.instance;
@@ -442,10 +441,10 @@
test_functionType_noTypeFormals_parameters_leftOptionalPositional() {
void check({
- @required DartType left,
- @required ParameterElement right,
- @required bool leftSchema,
- @required String expected,
+ required DartType left,
+ required ParameterElement right,
+ required bool leftSchema,
+ required String? expected,
}) {
var P = functionTypeNone(
returnType: voidNone,
@@ -520,10 +519,10 @@
test_functionType_noTypeFormals_parameters_leftRequiredPositional() {
void check({
- @required DartType left,
- @required ParameterElement right,
- @required bool leftSchema,
- @required String expected,
+ required DartType left,
+ required ParameterElement right,
+ required bool leftSchema,
+ required String? expected,
}) {
var P = functionTypeNone(
returnType: voidNone,
diff --git a/pkg/analyzer/test/src/dart/element/type_parameter_element_test.dart b/pkg/analyzer/test/src/dart/element/type_parameter_element_test.dart
index c6928f3..c809a6f 100644
--- a/pkg/analyzer/test/src/dart/element/type_parameter_element_test.dart
+++ b/pkg/analyzer/test/src/dart/element/type_parameter_element_test.dart
@@ -4,11 +4,10 @@
import 'package:analyzer/dart/element/null_safety_understanding_flag.dart';
import 'package:analyzer/dart/element/type.dart';
-import 'package:analyzer/src/dart/element/element.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
-import 'element_test.dart';
+import '../../../generated/type_system_test.dart';
main() {
defineReflectiveSuite(() {
@@ -18,15 +17,12 @@
}
@reflectiveTest
-class TypeParameterElementTest extends _TypeParameterElementBase {
+class TypeParameterElementTest extends AbstractTypeSystemNullSafetyTest {
test_equal_elementElement_sameLocation() {
var T1 = typeParameter('T');
var T2 = typeParameter('T');
var U = typeParameter('U');
-
- _setEnclosingElement(T1);
- _setEnclosingElement(T2);
- _setEnclosingElement(U);
+ class_(name: 'A', typeParameters: [T1, T2, U]);
expect(T1 == T1, isTrue);
expect(T2 == T2, isTrue);
@@ -50,13 +46,11 @@
}
@reflectiveTest
-class TypeParameterTypeTest extends _TypeParameterElementBase {
+class TypeParameterTypeTest extends AbstractTypeSystemNullSafetyTest {
test_equal_equalElements() {
var T1 = typeParameter('T');
var T2 = typeParameter('T');
-
- _setEnclosingElement(T1);
- _setEnclosingElement(T2);
+ class_(name: 'A', typeParameters: [T1, T2]);
_assertEqual(typeParameterTypeNone(T1), typeParameterTypeNone(T2), isTrue);
_assertEqual(typeParameterTypeNone(T2), typeParameterTypeNone(T1), isTrue);
@@ -78,8 +72,7 @@
typeParameterTypeStar(T2),
]);
- _setEnclosingElement(T1);
- _setEnclosingElement(T2);
+ class_(name: 'B', typeParameters: [T1, T2]);
_assertEqual(typeParameterTypeNone(T1), typeParameterTypeNone(T2), isTrue);
_assertEqual(typeParameterTypeNone(T2), typeParameterTypeNone(T1), isTrue);
@@ -90,7 +83,7 @@
test_equal_sameElement_promotedBounds() {
var T = typeParameter('T');
- _setEnclosingElement(T);
+ class_(name: 'A', typeParameters: [T]);
_assertEqual(
promotedTypeParameterTypeNone(T, intNone),
@@ -159,10 +152,3 @@
});
}
}
-
-class _TypeParameterElementBase extends AbstractTypeTest {
- /// Ensure that the [element] has a location.
- void _setEnclosingElement(TypeParameterElementImpl element) {
- element.enclosingElement = method('foo', typeProvider.voidType);
- }
-}
diff --git a/pkg/analyzer/test/src/dart/element/type_references_any_test.dart b/pkg/analyzer/test/src/dart/element/type_references_any_test.dart
index 60b8192..6a45016 100644
--- a/pkg/analyzer/test/src/dart/element/type_references_any_test.dart
+++ b/pkg/analyzer/test/src/dart/element/type_references_any_test.dart
@@ -18,8 +18,8 @@
@reflectiveTest
class TypeReferencesAnyTest extends AbstractTypeSystemNullSafetyTest {
- TypeParameterElement T;
- TypeParameterType T_none;
+ late TypeParameterElement T;
+ late TypeParameterType T_none;
@override
void setUp() {
diff --git a/pkg/analyzer/test/src/dart/element/type_visitor_test.dart b/pkg/analyzer/test/src/dart/element/type_visitor_test.dart
index 2989a22..b0bed4f 100644
--- a/pkg/analyzer/test/src/dart/element/type_visitor_test.dart
+++ b/pkg/analyzer/test/src/dart/element/type_visitor_test.dart
@@ -18,7 +18,7 @@
@reflectiveTest
class RecursiveTypeVisitorTest extends AbstractTypeTest {
- _MockRecursiveVisitor visitor;
+ late final _MockRecursiveVisitor visitor;
@override
void setUp() {
@@ -179,8 +179,8 @@
}
class _MockRecursiveVisitor extends RecursiveTypeVisitor {
- final visitedTypes = <DartType>{};
- DartType stopOnType;
+ final Set<DartType> visitedTypes = {};
+ DartType? stopOnType;
void assertNotVisitedType(DartType type) {
expect(visitedTypes, isNot(contains(type)));
diff --git a/pkg/analyzer/test/src/dart/element/upper_lower_bound_test.dart b/pkg/analyzer/test/src/dart/element/upper_lower_bound_test.dart
index 6e4b9fe..2c3a877 100644
--- a/pkg/analyzer/test/src/dart/element/upper_lower_bound_test.dart
+++ b/pkg/analyzer/test/src/dart/element/upper_lower_bound_test.dart
@@ -1407,7 +1407,7 @@
}
test_typeParameter() {
- void check({DartType bound, DartType T2}) {
+ void check({DartType? bound, required DartType T2}) {
var T1 = typeParameterTypeNone(
typeParameter('T', bound: bound),
);
@@ -2094,14 +2094,14 @@
var bElementStar = class_(name: 'B', superType: aStar);
var bElementNone = class_(name: 'B', superType: aNone);
- InterfaceTypeImpl _bTypeStarElement(NullabilitySuffix nullability) {
+ InterfaceType _bTypeStarElement(NullabilitySuffix nullability) {
return interfaceType(
bElementStar,
nullabilitySuffix: nullability,
);
}
- InterfaceTypeImpl _bTypeNoneElement(NullabilitySuffix nullability) {
+ InterfaceType _bTypeNoneElement(NullabilitySuffix nullability) {
return interfaceType(
bElementNone,
nullabilitySuffix: nullability,
@@ -2310,14 +2310,14 @@
var cElementNone = class_(name: 'C', superType: aNone);
var cElementStar = class_(name: 'C', superType: aStar);
- InterfaceTypeImpl bTypeElementNone(NullabilitySuffix nullability) {
+ InterfaceType bTypeElementNone(NullabilitySuffix nullability) {
return interfaceType(
bElementNone,
nullabilitySuffix: nullability,
);
}
- InterfaceTypeImpl bTypeElementStar(NullabilitySuffix nullability) {
+ InterfaceType bTypeElementStar(NullabilitySuffix nullability) {
return interfaceType(
bElementStar,
nullabilitySuffix: nullability,
@@ -2332,14 +2332,14 @@
var bStarStar = bTypeElementStar(NullabilitySuffix.star);
var bStarNone = bTypeElementStar(NullabilitySuffix.none);
- InterfaceTypeImpl cTypeElementNone(NullabilitySuffix nullability) {
+ InterfaceType cTypeElementNone(NullabilitySuffix nullability) {
return interfaceType(
cElementNone,
nullabilitySuffix: nullability,
);
}
- InterfaceTypeImpl cTypeElementStar(NullabilitySuffix nullability) {
+ InterfaceType cTypeElementStar(NullabilitySuffix nullability) {
return interfaceType(
cElementStar,
nullabilitySuffix: nullability,
@@ -3260,8 +3260,8 @@
void test_typeParameters_multi_basic() {
// class A<out T, inout U, in V>
var T = typeParameter('T', variance: Variance.covariant);
- var U = typeParameter('T', variance: Variance.invariant);
- var V = typeParameter('T', variance: Variance.contravariant);
+ var U = typeParameter('U', variance: Variance.invariant);
+ var V = typeParameter('V', variance: Variance.contravariant);
var A = class_(name: 'A', typeParameters: [T, U, V]);
// A<num, num, num>
@@ -3270,7 +3270,7 @@
A,
typeArguments: [numNone, numNone, numNone],
);
- var A_num_int_num = interfaceTypeNone(
+ var A_int_num_int = interfaceTypeNone(
A,
typeArguments: [intNone, numNone, intNone],
);
@@ -3281,7 +3281,7 @@
typeArguments: [numNone, numNone, intNone],
);
- _checkLeastUpperBound(A_num_num_num, A_num_int_num, A_num_num_int);
+ _checkLeastUpperBound(A_num_num_num, A_int_num_int, A_num_num_int);
}
void test_typeParameters_multi_objectInterface() {
@@ -3447,7 +3447,7 @@
});
}
- String _typeParametersStr(TypeImpl type) {
+ String _typeParametersStr(DartType type) {
var typeStr = '';
var typeParameterCollector = _TypeParameterCollector();
@@ -3458,8 +3458,7 @@
return typeStr;
}
- String _typeString(TypeImpl type) {
- if (type == null) return null;
+ String _typeString(DartType type) {
return type.getDisplayString(withNullability: true) +
_typeParametersStr(type);
}
diff --git a/pkg/analyzer/test/src/dart/micro/file_resolution.dart b/pkg/analyzer/test/src/dart/micro/file_resolution.dart
index 1cf1d10..d2c3eaf 100644
--- a/pkg/analyzer/test/src/dart/micro/file_resolution.dart
+++ b/pkg/analyzer/test/src/dart/micro/file_resolution.dart
@@ -14,7 +14,8 @@
import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart';
import 'package:analyzer/src/workspace/bazel.dart';
import 'package:crypto/crypto.dart';
-import 'package:linter/src/rules.dart';
+
+// import 'package:linter/src/rules.dart';
import '../resolution/resolution.dart';
@@ -26,10 +27,10 @@
CiderCachedByteStore(20 * 1024 * 1024 /* 20 MB */);
final StringBuffer logBuffer = StringBuffer();
- PerformanceLog logger;
- MockSdk sdk;
+ late PerformanceLog logger;
+ late MockSdk sdk;
- FileResolver fileResolver;
+ late FileResolver fileResolver;
@override
void addTestFile(String content) {
@@ -43,7 +44,7 @@
var workspace = BazelWorkspace.find(
resourceProvider,
convertPath(_testFile),
- );
+ )!;
byteStore.testView = CiderByteStoreTestView();
fileResolver = FileResolver.from(
@@ -72,12 +73,12 @@
Future<void> resolveTestFile() async {
var path = convertPath(_testFile);
result = await resolveFile(path);
- findNode = FindNode(result.content, result.unit);
- findElement = FindElement(result.unit);
+ findNode = FindNode(result.content!, result.unit!);
+ findElement = FindElement(result.unit!);
}
void setUp() {
- registerLintRules();
+ // registerLintRules();
logger = PerformanceLog(logBuffer);
sdk = MockSdk(resourceProvider: resourceProvider);
diff --git a/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart b/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart
index 2f77d87..65c8cdf 100644
--- a/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart
+++ b/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart
@@ -21,9 +21,9 @@
@reflectiveTest
class FileResolver_changeFile_Test extends FileResolutionTest {
- String aPath;
- String bPath;
- String cPath;
+ late final String aPath;
+ late final String bPath;
+ late final String cPath;
@override
void setUp() {
@@ -207,7 +207,7 @@
..add(convertPath('/sdk/lib/math/math.dart'));
}
- var refreshedFiles = fileResolver.fsState.testView.refreshedFiles;
+ var refreshedFiles = fileResolver.fsState!.testView.refreshedFiles;
expect(refreshedFiles, unorderedEquals(expectedPlusSdk));
refreshedFiles.clear();
@@ -297,6 +297,7 @@
]);
}
+ @FailingTest(issue: 'https://github.com/dart-lang/linter/issues/2399')
test_analysisOptions_lints() async {
newFile('/workspace/dart/analysis_options/lib/default.yaml', content: r'''
linter:
@@ -304,7 +305,7 @@
- omit_local_variable_types
''');
- var rule = Registry.ruleRegistry.getRule('omit_local_variable_types');
+ var rule = Registry.ruleRegistry.getRule('omit_local_variable_types')!;
await assertErrorsInCode(r'''
main() {
@@ -344,7 +345,7 @@
await resolveFile(aPath);
fileResolver.collectSharedDataIdentifiers();
expect(fileResolver.removedCacheIds.length,
- (fileResolver.byteStore as CiderCachedByteStore).testView.length);
+ (fileResolver.byteStore as CiderCachedByteStore).testView!.length);
}
test_getErrors() {
@@ -368,34 +369,34 @@
var path = convertPath('/workspace/dart/test/lib/test.dart');
// No resolved files yet.
- expect(fileResolver.testView.resolvedFiles, isEmpty);
+ expect(fileResolver.testView!.resolvedFiles, isEmpty);
// No cached, will resolve once.
expect(getTestErrors().errors, hasLength(1));
- expect(fileResolver.testView.resolvedFiles, [path]);
+ expect(fileResolver.testView!.resolvedFiles, [path]);
// Has cached, will be not resolved again.
expect(getTestErrors().errors, hasLength(1));
- expect(fileResolver.testView.resolvedFiles, [path]);
+ expect(fileResolver.testView!.resolvedFiles, [path]);
// New resolver.
// Still has cached, will be not resolved.
createFileResolver();
expect(getTestErrors().errors, hasLength(1));
- expect(fileResolver.testView.resolvedFiles, <Object>[]);
+ expect(fileResolver.testView!.resolvedFiles, <Object>[]);
// Change the file, new resolver.
// With changed file the previously cached result cannot be used.
addTestFile('var a = c;');
createFileResolver();
expect(getTestErrors().errors, hasLength(1));
- expect(fileResolver.testView.resolvedFiles, [path]);
+ expect(fileResolver.testView!.resolvedFiles, [path]);
// New resolver.
// Still has cached, will be not resolved.
createFileResolver();
expect(getTestErrors().errors, hasLength(1));
- expect(fileResolver.testView.resolvedFiles, <Object>[]);
+ expect(fileResolver.testView!.resolvedFiles, <Object>[]);
}
test_getErrors_reuse_changeDependency() {
@@ -411,15 +412,15 @@
var path = convertPath('/workspace/dart/test/lib/test.dart');
// No resolved files yet.
- expect(fileResolver.testView.resolvedFiles, isEmpty);
+ expect(fileResolver.testView!.resolvedFiles, isEmpty);
// No cached, will resolve once.
expect(getTestErrors().errors, hasLength(1));
- expect(fileResolver.testView.resolvedFiles, [path]);
+ expect(fileResolver.testView!.resolvedFiles, [path]);
// Has cached, will be not resolved again.
expect(getTestErrors().errors, hasLength(1));
- expect(fileResolver.testView.resolvedFiles, [path]);
+ expect(fileResolver.testView!.resolvedFiles, [path]);
// Change the dependency, new resolver.
// The signature of the result is different.
@@ -429,13 +430,13 @@
''');
createFileResolver();
expect(getTestErrors().errors, hasLength(1));
- expect(fileResolver.testView.resolvedFiles, [path]);
+ expect(fileResolver.testView!.resolvedFiles, [path]);
// New resolver.
// Still has cached, will be not resolved.
createFileResolver();
expect(getTestErrors().errors, hasLength(1));
- expect(fileResolver.testView.resolvedFiles, <Object>[]);
+ expect(fileResolver.testView!.resolvedFiles, <Object>[]);
}
test_hint() async {
@@ -627,8 +628,8 @@
await resolveFile(bPath);
await resolveFile(cPath);
fileResolver.removeFilesNotNecessaryForAnalysisOf([cPath]);
- expect(fileResolver.fsState.testView.unusedFiles.contains(bPath), true);
- expect(fileResolver.fsState.testView.unusedFiles.length, 1);
+ expect(fileResolver.fsState!.testView.unusedFiles.contains(bPath), true);
+ expect(fileResolver.fsState!.testView.unusedFiles.length, 1);
}
test_unusedFiles_mutilple() async {
@@ -665,7 +666,7 @@
await resolveFile(ePath);
await resolveFile(fPath);
fileResolver.removeFilesNotNecessaryForAnalysisOf([dPath, fPath]);
- expect(fileResolver.fsState.testView.unusedFiles.contains(ePath), true);
- expect(fileResolver.fsState.testView.unusedFiles.length, 2);
+ expect(fileResolver.fsState!.testView.unusedFiles.contains(ePath), true);
+ expect(fileResolver.fsState!.testView.unusedFiles.length, 2);
}
}
diff --git a/pkg/analyzer/test/src/dart/resolution/ast_rewrite_test.dart b/pkg/analyzer/test/src/dart/resolution/ast_rewrite_test.dart
index 4225019..ab1f6c6 100644
--- a/pkg/analyzer/test/src/dart/resolution/ast_rewrite_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/ast_rewrite_test.dart
@@ -6,7 +6,6 @@
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/src/dart/ast/ast.dart';
import 'package:analyzer/src/error/codes.dart';
-import 'package:meta/meta.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -352,16 +351,16 @@
List<String> expectedArguments,
) {
var argumentStrings = argumentList.arguments
- .map((e) => result.content.substring(e.offset, e.end))
+ .map((e) => result.content!.substring(e.offset, e.end))
.toList();
expect(argumentStrings, expectedArguments);
}
void _assertExtensionOverride(
ExtensionOverride override, {
- @required ExtensionElement expectedElement,
- @required List<String> expectedTypeArguments,
- @required String expectedExtendedType,
+ required ExtensionElement expectedElement,
+ required List<String> expectedTypeArguments,
+ required String expectedExtendedType,
}) {
expect(override.staticElement, expectedElement);
@@ -376,11 +375,15 @@
}
void _assertTypeArgumentList(
- TypeArgumentList argumentList,
+ TypeArgumentList? argumentList,
List<String> expectedArguments,
) {
+ if (argumentList == null) {
+ fail('Expected TypeArgumentList, actually null.');
+ }
+
var argumentStrings = argumentList.arguments
- .map((e) => result.content.substring(e.offset, e.end))
+ .map((e) => result.content!.substring(e.offset, e.end))
.toList();
expect(argumentStrings, expectedArguments);
}
diff --git a/pkg/analyzer/test/src/dart/resolution/constant_test.dart b/pkg/analyzer/test/src/dart/resolution/constant_test.dart
index 87260dc..7d9f46b 100644
--- a/pkg/analyzer/test/src/dart/resolution/constant_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/constant_test.dart
@@ -33,14 +33,14 @@
const a = const A();
''');
- var aLib = findElement.import('package:test/a.dart').importedLibrary;
- var aConstructor = aLib.getType('A').constructors.single;
- DefaultParameterElementImpl p = aConstructor.parameters.single;
+ var aLib = findElement.import('package:test/a.dart').importedLibrary!;
+ var aConstructor = aLib.getType('A')!.constructors.single;
+ var p = aConstructor.parameters.single as DefaultParameterElementImpl;
// To evaluate `const A()` we have to evaluate `{int p}`.
// Even if its value is `null`.
expect(p.isConstantEvaluated, isTrue);
- expect(p.computeConstantValue().isNull, isTrue);
+ expect(p.computeConstantValue()!.isNull, isTrue);
}
test_constFactoryRedirection_super() async {
@@ -64,8 +64,8 @@
''');
var node = findNode.annotation('@I');
- var value = node.elementAnnotation.computeConstantValue();
- expect(value.getField('(super)').getField('f').toIntValue(), 42);
+ var value = node.elementAnnotation!.computeConstantValue()!;
+ expect(value.getField('(super)')!.getField('f')!.toIntValue(), 42);
}
test_constNotInitialized() async {
@@ -120,7 +120,7 @@
''');
var v = findElement.topVar('v') as ConstVariableElement;
- var value = v.computeConstantValue();
+ var value = v.computeConstantValue()!;
var type = value.type as InterfaceType;
assertType(type, 'C<double Function(int)>');
@@ -137,7 +137,7 @@
// TODO(scheglov) https://github.com/dart-lang/sdk/issues/44629
expect(typeArgument.element, alias.aliasedElement);
- expect(typeArgument.element.enclosingElement, alias);
+ expect(typeArgument.element!.enclosingElement, alias);
assertElementTypeStrings(typeArgument.typeArguments, ['double']);
}
@@ -155,7 +155,7 @@
var import_ = findElement.importFind('package:test/a.dart');
var a = import_.topVar('a') as ConstVariableElement;
- expect(a.computeConstantValue().toIntValue(), 42);
+ expect(a.computeConstantValue()!.toIntValue(), 42);
}
test_imported_prefixedIdentifier_staticField_extension() async {
@@ -172,7 +172,7 @@
var import_ = findElement.importFind('package:test/a.dart');
var a = import_.topVar('a') as ConstVariableElement;
- expect(a.computeConstantValue().toIntValue(), 42);
+ expect(a.computeConstantValue()!.toIntValue(), 42);
}
test_imported_prefixedIdentifier_staticField_mixin() async {
@@ -191,7 +191,7 @@
var import_ = findElement.importFind('package:test/a.dart');
var a = import_.topVar('a') as ConstVariableElement;
- expect(a.computeConstantValue().toIntValue(), 42);
+ expect(a.computeConstantValue()!.toIntValue(), 42);
}
test_imported_super_defaultFieldFormalParameter() async {
@@ -219,10 +219,10 @@
result = await resolveFile(convertPath('$testPackageLibPath/a.dart'));
assertErrorsInResolvedUnit(result, []);
- var bElement = FindElement(result.unit).field('b') as ConstVariableElement;
- var bValue = bElement.evaluationResult.value;
+ var bElement = FindElement(result.unit!).field('b') as ConstVariableElement;
+ var bValue = bElement.evaluationResult!.value!;
var superFields = bValue.getField(GenericState.SUPERCLASS_FIELD);
- expect(superFields.getField('f1').toBoolValue(), false);
+ expect(superFields!.getField('f1')!.toBoolValue(), false);
}
test_local_prefixedIdentifier_staticField_extension() async {
@@ -234,7 +234,7 @@
}
''');
var a = findElement.topVar('a') as ConstVariableElement;
- expect(a.computeConstantValue().toIntValue(), 42);
+ expect(a.computeConstantValue()!.toIntValue(), 42);
}
/// See https://github.com/dart-lang/sdk/issues/43462
@@ -280,7 +280,7 @@
''');
var b = findElement.topVar('b');
- assertType(b.computeConstantValue().type, 'B*');
+ assertType(b.computeConstantValue()!.type, 'B*');
}
test_constructor_nullSafe_fromLegacy_this() async {
@@ -300,7 +300,7 @@
''');
var b = findElement.topVar('b');
- assertType(b.computeConstantValue().type, 'A*');
+ assertType(b.computeConstantValue()!.type, 'A*');
}
test_context_eliminateTypeVariables() async {
@@ -362,7 +362,7 @@
]);
DartObjectImpl evaluate(String name) {
- return findElement.topVar(name).computeConstantValue();
+ return findElement.topVar(name).computeConstantValue() as DartObjectImpl;
}
expect(evaluate('vBool').toBoolValue(), false);
@@ -429,6 +429,6 @@
}
void _assertIntValue(VariableElement element, int value) {
- expect(element.computeConstantValue().toIntValue(), value);
+ expect(element.computeConstantValue()!.toIntValue(), value);
}
}
diff --git a/pkg/analyzer/test/src/dart/resolution/constructor_test.dart b/pkg/analyzer/test/src/dart/resolution/constructor_test.dart
index fac300f..cb88920 100644
--- a/pkg/analyzer/test/src/dart/resolution/constructor_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/constructor_test.dart
@@ -26,16 +26,16 @@
B<int> b;
''');
- var classB_constructor = findElement.class_('B').unnamedConstructor;
+ var classB_constructor = findElement.class_('B').unnamedConstructor!;
assertMember(
classB_constructor.redirectedConstructor,
findElement.unnamedConstructor('A'),
{'T': 'U'},
);
- InterfaceType B_int = findElement.topVar('b').type;
+ var B_int = findElement.topVar('b').type as InterfaceType;
var B_int_constructor = B_int.constructors.single;
- var B_int_redirect = B_int_constructor.redirectedConstructor;
+ var B_int_redirect = B_int_constructor.redirectedConstructor!;
assertMember(
B_int_redirect,
findElement.unnamedConstructor('A'),
diff --git a/pkg/analyzer/test/src/dart/resolution/context_collection_resolution.dart b/pkg/analyzer/test/src/dart/resolution/context_collection_resolution.dart
index 8f9f2df..a0be018 100644
--- a/pkg/analyzer/test/src/dart/resolution/context_collection_resolution.dart
+++ b/pkg/analyzer/test/src/dart/resolution/context_collection_resolution.dart
@@ -21,7 +21,7 @@
import 'package:analyzer/src/workspace/gn.dart';
import 'package:analyzer/src/workspace/package_build.dart';
import 'package:analyzer/src/workspace/pub.dart';
-import 'package:linter/src/rules.dart';
+// import 'package:linter/src/rules.dart';
import 'package:meta/meta.dart';
import 'package:test/test.dart';
@@ -50,45 +50,22 @@
String toContent() {
var buffer = StringBuffer();
- if (experiments != null ||
- implicitCasts != null ||
- implicitDynamic != null ||
- strictRawTypes != null ||
- strictInference != null) {
- buffer.writeln('analyzer:');
-
- if (experiments != null) {
- buffer.writeln(' enable-experiment:');
- for (var experiment in experiments) {
- buffer.writeln(' - $experiment');
- }
- }
-
- buffer.writeln(' language:');
- if (strictRawTypes != null) {
- buffer.writeln(' strict-raw-types: $strictRawTypes');
- }
- if (strictInference != null) {
- buffer.writeln(' strict-inference: $strictInference');
- }
-
- if (implicitCasts != null || implicitDynamic != null) {
- buffer.writeln(' strong-mode:');
- if (implicitCasts != null) {
- buffer.writeln(' implicit-casts: $implicitCasts');
- }
- if (implicitDynamic != null) {
- buffer.writeln(' implicit-dynamic: $implicitDynamic');
- }
- }
+ buffer.writeln('analyzer:');
+ buffer.writeln(' enable-experiment:');
+ for (var experiment in experiments) {
+ buffer.writeln(' - $experiment');
}
+ buffer.writeln(' language:');
+ buffer.writeln(' strict-raw-types: $strictRawTypes');
+ buffer.writeln(' strict-inference: $strictInference');
+ buffer.writeln(' strong-mode:');
+ buffer.writeln(' implicit-casts: $implicitCasts');
+ buffer.writeln(' implicit-dynamic: $implicitDynamic');
- if (lints != null) {
- buffer.writeln('linter:');
- buffer.writeln(' rules:');
- for (var lint in lints) {
- buffer.writeln(' - $lint');
- }
+ buffer.writeln('linter:');
+ buffer.writeln(' rules:');
+ for (var lint in lints) {
+ buffer.writeln(' - $lint');
}
return buffer.toString();
@@ -134,11 +111,11 @@
ByteStore _byteStore = getContextResolutionTestByteStore();
Map<String, String> _declaredVariables = {};
- AnalysisContextCollection _analysisContextCollection;
+ AnalysisContextCollection? _analysisContextCollection;
/// If not `null`, [resolveFile] will use the context that corresponds
/// to this path, instead of the given path.
- String pathForContextSelection;
+ String? pathForContextSelection;
List<MockSdkLibrary> get additionalMockSdkLibraries => [];
@@ -183,7 +160,7 @@
_createAnalysisContexts();
path = convertPath(path);
- return _analysisContextCollection.contextFor(path);
+ return _analysisContextCollection!.contextFor(path);
}
void disposeAnalysisContextCollection() {
@@ -207,16 +184,16 @@
}
@override
- Future<ResolvedUnitResult> resolveFile(String path) {
+ Future<ResolvedUnitResult> resolveFile(String path) async {
var analysisContext = contextFor(pathForContextSelection ?? path);
var session = analysisContext.currentSession;
- return session.getResolvedUnit(path);
+ return (await session.getResolvedUnit(path))!;
}
@mustCallSuper
void setUp() {
if (!_lintRulesAreRegistered) {
- registerLintRules();
+ // registerLintRules();
_lintRulesAreRegistered = true;
}
@@ -257,7 +234,7 @@
class PubPackageResolutionTest extends ContextResolutionTest {
AnalysisOptionsImpl get analysisOptions {
var path = convertPath(testPackageRootPath);
- return contextFor(path).analysisOptions;
+ return contextFor(path).analysisOptions as AnalysisOptionsImpl;
}
@override
@@ -270,7 +247,7 @@
String get testFilePath => '$testPackageLibPath/test.dart';
/// The language version to use by default for `package:test`.
- String get testPackageLanguageVersion => '2.9';
+ String? get testPackageLanguageVersion => '2.9';
String get testPackageLibPath => '$testPackageRootPath/lib';
@@ -304,7 +281,7 @@
void writeTestPackageConfig(
PackageConfigFileBuilder config, {
- String languageVersion,
+ String? languageVersion,
bool js = false,
bool meta = false,
}) {
@@ -349,7 +326,7 @@
}
class PubspecYamlFileConfig {
- final String sdkVersion;
+ final String? sdkVersion;
PubspecYamlFileConfig({this.sdkVersion});
@@ -367,7 +344,7 @@
mixin WithNonFunctionTypeAliasesMixin on PubPackageResolutionTest {
@override
- String get testPackageLanguageVersion => null;
+ String? get testPackageLanguageVersion => null;
@override
bool get typeToStringWithNullability => true;
@@ -387,7 +364,7 @@
mixin WithNullSafetyMixin on PubPackageResolutionTest {
@override
- String get testPackageLanguageVersion => null;
+ String? get testPackageLanguageVersion => null;
@override
bool get typeToStringWithNullability => true;
diff --git a/pkg/analyzer/test/src/dart/resolution/extension_override_test.dart b/pkg/analyzer/test/src/dart/resolution/extension_override_test.dart
index 806ada7..7946260 100644
--- a/pkg/analyzer/test/src/dart/resolution/extension_override_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/extension_override_test.dart
@@ -6,7 +6,6 @@
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/src/error/codes.dart';
-import 'package:meta/meta.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -21,17 +20,17 @@
@reflectiveTest
class ExtensionOverrideTest extends PubPackageResolutionTest {
- ExtensionElement extension;
- ExtensionOverride extensionOverride;
+ late ExtensionElement extension;
+ late ExtensionOverride extensionOverride;
void findDeclarationAndOverride(
- {@required String declarationName,
- @required String overrideSearch,
- String declarationUri}) {
+ {required String declarationName,
+ required String overrideSearch,
+ String? declarationUri}) {
if (declarationUri == null) {
ExtensionDeclaration declaration =
findNode.extensionDeclaration('extension $declarationName');
- extension = declaration?.declaredElement;
+ extension = declaration.declaredElement as ExtensionElement;
} else {
extension =
findElement.importFind(declarationUri).extension_(declarationName);
@@ -670,14 +669,14 @@
void validateBinaryExpression() {
BinaryExpression binary = extensionOverride.parent as BinaryExpression;
- Element resolvedElement = binary.staticElement;
+ Element? resolvedElement = binary.staticElement;
expect(resolvedElement, extension.getMethod('+'));
}
void validateCall() {
FunctionExpressionInvocation invocation =
extensionOverride.parent as FunctionExpressionInvocation;
- Element resolvedElement = invocation.staticElement;
+ Element? resolvedElement = invocation.staticElement;
expect(resolvedElement, extension.getMethod('call'));
NodeList<Expression> arguments = invocation.argumentList.arguments;
@@ -701,7 +700,7 @@
}
}
- void validateOverride({List<DartType> typeArguments}) {
+ void validateOverride({List<DartType>? typeArguments}) {
expect(extensionOverride.extensionName.staticElement, extension);
expect(extensionOverride.staticType, isNull);
@@ -711,7 +710,7 @@
expect(extensionOverride.typeArguments, isNull);
} else {
expect(
- extensionOverride.typeArguments.arguments
+ extensionOverride.typeArguments!.arguments
.map((annotation) => annotation.type),
unorderedEquals(typeArguments));
}
diff --git a/pkg/analyzer/test/src/dart/resolution/function_type_alias_test.dart b/pkg/analyzer/test/src/dart/resolution/function_type_alias_test.dart
index 08c8f37..38d3b3d 100644
--- a/pkg/analyzer/test/src/dart/resolution/function_type_alias_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/function_type_alias_test.dart
@@ -23,7 +23,7 @@
typedef T G<T>();
''');
- FunctionType type = findElement.topVar('g').type;
+ var type = findElement.topVar('g').type as FunctionType;
assertType(type, 'int Function()');
var typedefG = findElement.typeAlias('G');
diff --git a/pkg/analyzer/test/src/dart/resolution/generic_function_type_test.dart b/pkg/analyzer/test/src/dart/resolution/generic_function_type_test.dart
index 3332d08..a717dea 100644
--- a/pkg/analyzer/test/src/dart/resolution/generic_function_type_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/generic_function_type_test.dart
@@ -55,7 +55,7 @@
Function<@a T>() x;
''');
var T = findNode.typeParameter('T');
- var annotation = T.declaredElement.metadata[0];
+ var annotation = T.declaredElement!.metadata[0];
expect(annotation.element, findElement.topGet('a'));
}
diff --git a/pkg/analyzer/test/src/dart/resolution/index_expression_test.dart b/pkg/analyzer/test/src/dart/resolution/index_expression_test.dart
index 7558067..e3e0404 100644
--- a/pkg/analyzer/test/src/dart/resolution/index_expression_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/index_expression_test.dart
@@ -111,7 +111,7 @@
var indexElement = findElement.method('[]');
var indexEqElement = findElement.method('[]=');
- var numPlusElement = numElement.getMethod('+');
+ var numPlusElement = numElement.getMethod('+')!;
var indexExpression = findNode.index('a[0]');
if (hasAssignmentLeftResolution) {
@@ -160,7 +160,7 @@
var indexElement = findElement.method('[]');
var indexEqElement = findElement.method('[]=');
- var doublePlusElement = doubleElement.getMethod('+');
+ var doublePlusElement = doubleElement.getMethod('+')!;
var indexExpression = findNode.index('a[0]');
if (hasAssignmentLeftResolution) {
@@ -369,7 +369,7 @@
var indexElement = findElement.method('[]');
var indexEqElement = findElement.method('[]=');
- var numPlusElement = numElement.getMethod('+');
+ var numPlusElement = numElement.getMethod('+')!;
var indexExpression = findNode.index('a?[0]');
if (hasAssignmentLeftResolution) {
diff --git a/pkg/analyzer/test/src/dart/resolution/instance_creation_test.dart b/pkg/analyzer/test/src/dart/resolution/instance_creation_test.dart
index a51df3a..b37c4cb 100644
--- a/pkg/analyzer/test/src/dart/resolution/instance_creation_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/instance_creation_test.dart
@@ -162,7 +162,7 @@
var creation = findNode.instanceCreation('Foo.bar<int>');
assertInstanceCreation(
creation,
- import.importedLibrary.getType('Foo'),
+ import.importedLibrary!.getType('Foo')!,
'Foo<int>',
constructorName: 'bar',
expectedConstructorMember: true,
diff --git a/pkg/analyzer/test/src/dart/resolution/instance_member_inference_class_test.dart b/pkg/analyzer/test/src/dart/resolution/instance_member_inference_class_test.dart
index ad8a1e9..0516a3a 100644
--- a/pkg/analyzer/test/src/dart/resolution/instance_member_inference_class_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/instance_member_inference_class_test.dart
@@ -907,17 +907,19 @@
}
}
- void _assertGetterType(PropertyAccessorElement accessor, String expected) {
+ void _assertGetterType(PropertyAccessorElement? accessor, String expected) {
+ accessor!;
assertType(accessor.returnType, expected);
}
- void _assertGetterTypeDynamic(PropertyAccessorElement accessor) {
+ void _assertGetterTypeDynamic(PropertyAccessorElement? accessor) {
+ accessor!;
assertTypeDynamic(accessor.returnType);
}
void _assertParameter(
ParameterElement element, {
- String type,
+ String? type,
bool isCovariant = false,
}) {
assertType(element.type, type);
@@ -934,7 +936,8 @@
expect(parameter.isCovariant, isCovariant);
}
- void _assertSetterTypeDynamic(PropertyAccessorElement accessor) {
+ void _assertSetterTypeDynamic(PropertyAccessorElement? accessor) {
+ accessor!;
assertTypeDynamic(accessor.parameters.single.type);
}
}
diff --git a/pkg/analyzer/test/src/dart/resolution/library_element_test.dart b/pkg/analyzer/test/src/dart/resolution/library_element_test.dart
index c5edca5..9ab142f 100644
--- a/pkg/analyzer/test/src/dart/resolution/library_element_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/library_element_test.dart
@@ -4,7 +4,6 @@
import 'package:analyzer/dart/analysis/features.dart';
import 'package:analyzer/src/dart/analysis/experiments.dart';
-import 'package:meta/meta.dart';
import 'package:pub_semver/pub_semver.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -279,8 +278,8 @@
}
void _assertLanguageVersion({
- @required Version package,
- @required Version override,
+ required Version package,
+ required Version? override,
}) async {
var element = result.libraryElement;
expect(element.languageVersion.package, package);
diff --git a/pkg/analyzer/test/src/dart/resolution/local_function_test.dart b/pkg/analyzer/test/src/dart/resolution/local_function_test.dart
index d1de9b1..a8c2186 100644
--- a/pkg/analyzer/test/src/dart/resolution/local_function_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/local_function_test.dart
@@ -40,7 +40,7 @@
error(HintCode.UNUSED_ELEMENT, 23, 1),
]);
var node = findNode.functionDeclaration('g() {}');
- var element = node.declaredElement;
+ var element = node.declaredElement!;
expect(element.name, 'g');
expect(element.nameOffset, 23);
}
diff --git a/pkg/analyzer/test/src/dart/resolution/metadata_test.dart b/pkg/analyzer/test/src/dart/resolution/metadata_test.dart
index c325cf2..2f5b4ba 100644
--- a/pkg/analyzer/test/src/dart/resolution/metadata_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/metadata_test.dart
@@ -6,7 +6,6 @@
import 'package:analyzer/dart/constant/value.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/src/test_utilities/find_element.dart';
-import 'package:meta/meta.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -195,11 +194,11 @@
B b;
''');
- var classB = findNode.typeName('B b;').name.staticElement;
+ var classB = findNode.typeName('B b;').name.staticElement!;
var annotation = classB.metadata.single;
- var value = annotation.computeConstantValue();
+ var value = annotation.computeConstantValue()!;
assertType(value.type, 'A');
- expect(value.getField('f').toIntValue(), 42);
+ expect(value.getField('f')!.toIntValue(), 42);
}
test_otherLibrary_constructor_unnamed() async {
@@ -223,11 +222,11 @@
B b;
''');
- var classB = findNode.typeName('B b;').name.staticElement;
+ var classB = findNode.typeName('B b;').name.staticElement!;
var annotation = classB.metadata.single;
- var value = annotation.computeConstantValue();
+ var value = annotation.computeConstantValue()!;
assertType(value.type, 'A');
- expect(value.getField('f').toIntValue(), 42);
+ expect(value.getField('f')!.toIntValue(), 42);
}
test_otherLibrary_implicitConst() async {
@@ -252,11 +251,11 @@
C c;
''');
- var classC = findNode.typeName('C c;').name.staticElement;
+ var classC = findNode.typeName('C c;').name.staticElement!;
var annotation = classC.metadata.single;
- var value = annotation.computeConstantValue();
+ var value = annotation.computeConstantValue()!;
assertType(value.type, 'B');
- expect(value.getField('a').getField('f').toIntValue(), 42);
+ expect(value.getField('a')!.getField('f')!.toIntValue(), 42);
}
@FailingTest(reason: 'Reverted because of dartbug.com/38565')
@@ -271,9 +270,9 @@
class B {}
''');
var annotation = findElement.class_('B').metadata.single;
- var value = annotation.computeConstantValue();
+ var value = annotation.computeConstantValue()!;
assertType(value.type, 'A<int>');
- expect(value.getField('f').toIntValue(), 42);
+ expect(value.getField('f')!.toIntValue(), 42);
}
void _assertResolvedNodeText(AstNode node, String expected) {
@@ -356,7 +355,7 @@
);
_assertConstantValue(
- findElement.function('f').metadata[0].computeConstantValue(),
+ findElement.function('f').metadata[0].computeConstantValue()!,
type: 'A*',
fieldMap: {'a': 42},
);
@@ -390,7 +389,7 @@
);
_assertConstantValue(
- findElement.function('f').metadata[0].computeConstantValue(),
+ findElement.function('f').metadata[0].computeConstantValue()!,
type: 'A*',
fieldMap: {'a': 42},
);
@@ -550,9 +549,9 @@
void _assertConstantValue(
DartObject object, {
- @required String type,
- Map<String, Object> fieldMap,
- int intValue,
+ required String type,
+ Map<String, Object>? fieldMap,
+ int? intValue,
}) {
assertType(object.type, type);
if (fieldMap != null) {
@@ -560,7 +559,7 @@
var actual = object.getField(entry.key);
var expected = entry.value;
if (expected is int) {
- expect(actual.toIntValue(), expected);
+ expect(actual!.toIntValue(), expected);
} else {
fail('Unsupported expected type: ${expected.runtimeType} $expected');
}
@@ -574,7 +573,7 @@
void _assertIntValue(ElementAnnotation annotation, int intValue) {
_assertConstantValue(
- annotation.computeConstantValue(),
+ annotation.computeConstantValue()!,
type: 'int',
intValue: intValue,
);
diff --git a/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart b/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart
index bf3ee80..9393416 100644
--- a/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart
@@ -1501,6 +1501,31 @@
assertType(foo.propertyName, 'double Function(int)');
}
+ test_hasReceiver_instance_getter_switchStatementExpression() async {
+ await assertNoErrorsInCode(r'''
+class C {
+ int Function() get foo => throw Error();
+}
+
+void f(C c) {
+ switch ( c.foo() ) {
+ default:
+ break;
+ }
+}
+''');
+
+ var invocation = findNode.functionExpressionInvocation('foo()');
+ assertElementNull(invocation);
+ assertInvokeType(invocation, 'int Function()');
+ assertType(invocation, 'int');
+
+ var foo = invocation.function as PropertyAccess;
+ assertType(foo, 'int Function()');
+ assertElement(foo.propertyName, findElement.getter('foo'));
+ assertType(foo.propertyName, 'int Function()');
+ }
+
test_hasReceiver_instance_method() async {
await assertNoErrorsInCode(r'''
class C {
@@ -2318,9 +2343,9 @@
assertTypeArgumentTypes(invocation, []);
}
- void _assertInvalidInvocation(String search, Element expectedElement,
- {String expectedMethodNameType,
- String expectedNameType,
+ void _assertInvalidInvocation(String search, Element? expectedElement,
+ {String? expectedMethodNameType,
+ String? expectedNameType,
List<String> expectedTypeArguments = const <String>[],
bool dynamicNameType = false}) {
var invocation = findNode.methodInvocation(search);
diff --git a/pkg/analyzer/test/src/dart/resolution/mixin_test.dart b/pkg/analyzer/test/src/dart/resolution/mixin_test.dart
index bd227a0..a95d9f4 100644
--- a/pkg/analyzer/test/src/dart/resolution/mixin_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/mixin_test.dart
@@ -320,7 +320,7 @@
error(CompileTimeErrorCode.IMPLEMENTS_DEFERRED_CLASS, 56, 11),
]);
var mathImport = findElement.import('dart:math');
- var randomElement = mathImport.importedLibrary.getType('Random');
+ var randomElement = mathImport.importedLibrary!.getType('Random')!;
var element = findElement.mixin('M');
assertElementTypes(element.interfaces, [interfaceTypeStar(randomElement)]);
@@ -852,7 +852,7 @@
48, 11),
]);
var mathImport = findElement.import('dart:math');
- var randomElement = mathImport.importedLibrary.getType('Random');
+ var randomElement = mathImport.importedLibrary!.getType('Random')!;
var element = findElement.mixin('M');
assertElementTypes(element.superclassConstraints, [
diff --git a/pkg/analyzer/test/src/dart/resolution/optional_const_test.dart b/pkg/analyzer/test/src/dart/resolution/optional_const_test.dart
index cd08b22..e32e7e8 100644
--- a/pkg/analyzer/test/src/dart/resolution/optional_const_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/optional_const_test.dart
@@ -19,13 +19,13 @@
class OptionalConstDriverResolutionTest extends PubPackageResolutionTest {
Map<String, LibraryElement> libraries = {};
- LibraryElement get libraryA => libraries['package:test/a.dart'];
+ LibraryElement get libraryA => libraries['package:test/a.dart']!;
test_instantiateToBounds_notPrefixed_named() async {
var creation = await _resolveImplicitConst('B.named()');
assertInstanceCreation(
creation,
- libraryA.getType('B'),
+ libraryA.getType('B')!,
'B<num>',
constructorName: 'named',
expectedConstructorMember: true,
@@ -37,7 +37,7 @@
var creation = await _resolveImplicitConst('B()');
assertInstanceCreation(
creation,
- libraryA.getType('B'),
+ libraryA.getType('B')!,
'B<num>',
expectedConstructorMember: true,
expectedSubstitution: {'T': 'num'},
@@ -48,12 +48,12 @@
var creation = await _resolveImplicitConst('p.B.named()', prefix: 'p');
assertInstanceCreation(
creation,
- libraryA.getType('B'),
+ libraryA.getType('B')!,
'B<num>',
constructorName: 'named',
expectedConstructorMember: true,
expectedSubstitution: {'T': 'num'},
- expectedPrefix: _importOfA()?.prefix,
+ expectedPrefix: _importOfA().prefix,
);
}
@@ -61,11 +61,11 @@
var creation = await _resolveImplicitConst('p.B()', prefix: 'p');
assertInstanceCreation(
creation,
- libraryA.getType('B'),
+ libraryA.getType('B')!,
'B<num>',
expectedConstructorMember: true,
expectedSubstitution: {'T': 'num'},
- expectedPrefix: _importOfA()?.prefix,
+ expectedPrefix: _importOfA().prefix,
);
}
@@ -73,7 +73,7 @@
var creation = await _resolveImplicitConst('A.named()');
assertInstanceCreation(
creation,
- libraryA.getType('A'),
+ libraryA.getType('A')!,
'A',
constructorName: 'named',
);
@@ -83,7 +83,7 @@
var creation = await _resolveImplicitConst('A()');
assertInstanceCreation(
creation,
- libraryA.getType('A'),
+ libraryA.getType('A')!,
'A',
);
}
@@ -93,10 +93,10 @@
// Note, that we don't resynthesize the import prefix.
assertInstanceCreation(
creation,
- libraryA.getType('A'),
+ libraryA.getType('A')!,
'A',
constructorName: 'named',
- expectedPrefix: _importOfA()?.prefix,
+ expectedPrefix: _importOfA().prefix,
);
}
@@ -105,9 +105,9 @@
// Note, that we don't resynthesize the import prefix.
assertInstanceCreation(
creation,
- libraryA.getType('A'),
+ libraryA.getType('A')!,
'A',
- expectedPrefix: _importOfA()?.prefix,
+ expectedPrefix: _importOfA().prefix,
);
}
@@ -148,11 +148,11 @@
assertElement(ref_C, element_C);
assertTypeNull(ref_C);
- assertType(typeName.typeArguments.arguments[0], 'int');
+ assertType(typeName.typeArguments!.arguments[0], 'int');
}
- void _fillLibraries([LibraryElement library]) {
- library ??= result.unit.declaredElement.library;
+ void _fillLibraries([LibraryElement? library]) {
+ library ??= result.unit!.declaredElement!.library;
var uriStr = library.source.uri.toString();
if (!libraries.containsKey(uriStr)) {
libraries[uriStr] = library;
@@ -162,11 +162,11 @@
ImportElement _importOfA() {
var importOfB = findElement.import('package:test/b.dart');
- return importOfB.importedLibrary.imports[0];
+ return importOfB.importedLibrary!.imports[0];
}
Future<InstanceCreationExpression> _resolveImplicitConst(String expr,
- {String prefix}) async {
+ {String? prefix}) async {
newFile('$testPackageLibPath/a.dart', content: '''
class A {
const A();
@@ -199,7 +199,7 @@
var vg = findNode.simple('a;').staticElement as PropertyAccessorElement;
var v = vg.variable as ConstVariableElement;
- InstanceCreationExpression /*!*/ creation = v.constantInitializer;
+ var creation = v.constantInitializer as InstanceCreationExpression;
return creation;
}
}
diff --git a/pkg/analyzer/test/src/dart/resolution/prefix_element_test.dart b/pkg/analyzer/test/src/dart/resolution/prefix_element_test.dart
index dfdc7a4..a87e051 100644
--- a/pkg/analyzer/test/src/dart/resolution/prefix_element_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/prefix_element_test.dart
@@ -252,9 +252,10 @@
}
void _assertMultiplyDefinedElement(
- MultiplyDefinedElementImpl element,
+ Element? element,
List<Element> expected,
) {
+ element as MultiplyDefinedElementImpl;
expect(element.conflictingElements, unorderedEquals(expected));
}
}
diff --git a/pkg/analyzer/test/src/dart/resolution/resolution.dart b/pkg/analyzer/test/src/dart/resolution/resolution.dart
index 458981d..78d48cf 100644
--- a/pkg/analyzer/test/src/dart/resolution/resolution.dart
+++ b/pkg/analyzer/test/src/dart/resolution/resolution.dart
@@ -19,7 +19,6 @@
import 'package:analyzer/src/test_utilities/find_element.dart';
import 'package:analyzer/src/test_utilities/find_node.dart';
import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart';
-import 'package:meta/meta.dart';
import 'package:test/test.dart';
import '../../../generated/test_support.dart';
@@ -32,9 +31,9 @@
/// Base for resolution tests.
mixin ResolutionTest implements ResourceProviderMixin {
- ResolvedUnitResult result;
- FindNode findNode;
- FindElement findElement;
+ late ResolvedUnitResult result;
+ late FindNode findNode;
+ late FindElement findElement;
ClassElement get boolElement => typeProvider.boolElement;
@@ -42,7 +41,7 @@
InterfaceType get doubleType => typeProvider.doubleType;
- Element get dynamicElement => typeProvider.dynamicType.element;
+ Element get dynamicElement => typeProvider.dynamicType.element!;
bool get enableUnusedElement => false;
@@ -84,7 +83,7 @@
TypeProvider get typeProvider => result.typeProvider;
- TypeSystemImpl get typeSystem => result.typeSystem;
+ TypeSystemImpl get typeSystem => result.typeSystem as TypeSystemImpl;
/// Whether `DartType.toString()` with nullability should be asked.
bool get typeToStringWithNullability => false;
@@ -97,12 +96,12 @@
void assertAssignment(
AssignmentExpression node, {
- @required Object readElement,
- @required String readType,
- @required Object writeElement,
- @required String writeType,
- @required Object operatorElement,
- @required String type,
+ required Object? readElement,
+ required String? readType,
+ required Object? writeElement,
+ required String writeType,
+ required Object? operatorElement,
+ required String type,
}) {
assertCompoundAssignment(
node,
@@ -117,8 +116,8 @@
void assertBinaryExpression(
BinaryExpression node, {
- @required Object element,
- @required String type,
+ required Object? element,
+ required String type,
}) {
assertElement(node.staticElement, element);
assertType(node, type);
@@ -127,18 +126,18 @@
/// Assert that the given [identifier] is a reference to a class, in the
/// form that is not a separate expression, e.g. in a static method
/// invocation like `C.staticMethod()`, or a type annotation `C c = null`.
- void assertClassRef(
- SimpleIdentifier identifier, ClassElement expectedElement) {
+ void assertClassRef(Expression? identifier, ClassElement expectedElement) {
+ identifier as SimpleIdentifier;
assertElement(identifier, expectedElement);
assertTypeNull(identifier);
}
void assertCompoundAssignment(
CompoundAssignmentExpression node, {
- @required Object readElement,
- @required String readType,
- @required Object writeElement,
- @required String writeType,
+ required Object? readElement,
+ required String? readType,
+ required Object? writeElement,
+ required String? writeType,
}) {
assertElement(node.readElement, readElement);
if (readType == null) {
@@ -156,7 +155,7 @@
}
void assertConstructorElement(
- ConstructorElement expected, ConstructorElement actual) {
+ ConstructorElement? expected, ConstructorElement? actual) {
if (expected is ConstructorMember && actual is ConstructorMember) {
expect(expected.declaration, same(actual.declaration));
// TODO(brianwilkerson) Compare the type arguments of the two members.
@@ -174,28 +173,28 @@
);
}
- void assertElement(Object nodeOrElement, Object elementOrMatcher) {
- Element element;
+ void assertElement(Object? nodeOrElement, Object? elementOrMatcher) {
+ Element? element;
if (nodeOrElement is AstNode) {
element = getNodeElement(nodeOrElement);
} else {
- element = nodeOrElement as Element;
+ element = nodeOrElement as Element?;
}
expect(element, _elementMatcher(elementOrMatcher));
}
void assertElement2(
- Object nodeOrElement, {
- @required Element declaration,
+ Object? nodeOrElement, {
+ required Element declaration,
bool isLegacy = false,
Map<String, String> substitution = const {},
}) {
- Element element;
+ Element? element;
if (nodeOrElement is AstNode) {
element = getNodeElement(nodeOrElement);
} else {
- element = nodeOrElement as Element;
+ element = nodeOrElement as Element?;
}
var actualDeclaration = element?.declaration;
@@ -211,13 +210,13 @@
}
}
- void assertElementLibraryUri(Element element, String expected) {
- var uri = element.library.source.uri;
+ void assertElementLibraryUri(Element? element, String expected) {
+ var uri = element!.library!.source.uri;
expect('$uri', expected);
}
void assertElementName(Element element, String name,
- {bool isSynthetic = false, int offset}) {
+ {bool isSynthetic = false, int? offset}) {
expect(element.name, name);
expect(element.isSynthetic, isSynthetic);
if (offset != null) {
@@ -225,12 +224,12 @@
}
}
- void assertElementNull(Object nodeOrElement) {
- Element element;
+ void assertElementNull(Object? nodeOrElement) {
+ Element? element;
if (nodeOrElement is AstNode) {
element = getNodeElement(nodeOrElement);
} else {
- element = nodeOrElement as Element;
+ element = nodeOrElement as Element?;
}
expect(element, isNull);
@@ -252,7 +251,11 @@
}
}
- void assertElementTypeStrings(List<DartType> types, List<String> expected) {
+ void assertElementTypeStrings(List<DartType>? types, List<String> expected) {
+ if (types == null) {
+ fail('Expected types, actually null.');
+ }
+
expect(types.map(typeString).toList(), expected);
}
@@ -314,21 +317,21 @@
void assertExtensionOverride(
ExtensionOverride node, {
- @required Object element,
- @required String extendedType,
- @required List<String> typeArgumentTypes,
+ required Object element,
+ required String extendedType,
+ required List<String> typeArgumentTypes,
}) {
assertElement(node, element);
assertType(node.extendedType, extendedType);
- assertElementTypeStrings(node.typeArgumentTypes, typeArgumentTypes);
+ assertElementTypeStrings(node.typeArgumentTypes!, typeArgumentTypes);
}
void assertFunctionExpressionInvocation(
FunctionExpressionInvocation node, {
- @required ExecutableElement element,
- @required List<String> typeArgumentTypes,
- @required String invokeType,
- @required String type,
+ required ExecutableElement? element,
+ required List<String> typeArgumentTypes,
+ required String invokeType,
+ required String type,
}) {
assertElement(node, element);
assertTypeArgumentTypes(node, typeArgumentTypes);
@@ -340,8 +343,8 @@
/// typedefs carry the element of the typedef, and the type arguments.
void assertFunctionTypeTypedef(
FunctionType type, {
- @required FunctionTypeAliasElement element,
- @required List<String> typeArguments,
+ required FunctionTypeAliasElement element,
+ required List<String> typeArguments,
}) {
assertElement2(type.aliasElement, declaration: element);
assertElementTypeStrings(type.aliasArguments, typeArguments);
@@ -376,16 +379,17 @@
/// In valid code [element] must be a [PrefixElement], but for invalid code
/// like `int.double v;` we want to resolve `int` somehow. Still not type.
- void assertImportPrefix(SimpleIdentifier identifier, Element element) {
+ void assertImportPrefix(Expression? identifier, Element? element) {
+ identifier as SimpleIdentifier;
assertElement(identifier, element);
assertTypeNull(identifier);
}
void assertIndexExpression(
IndexExpression node, {
- @required Object readElement,
- @required Object writeElement,
- @required String type,
+ required Object? readElement,
+ required Object? writeElement,
+ required String? type,
}) {
var isRead = node.inGetterContext();
var isWrite = node.inSetterContext();
@@ -411,15 +415,15 @@
InstanceCreationExpression creation,
ClassElement expectedClassElement,
String expectedType, {
- String constructorName,
+ String? constructorName,
bool expectedConstructorMember = false,
- Map<String, String> expectedSubstitution,
- PrefixElement expectedPrefix,
- Element expectedTypeNameElement,
+ Map<String, String>? expectedSubstitution,
+ PrefixElement? expectedPrefix,
+ Element? expectedTypeNameElement,
}) {
String expectedClassName = expectedClassElement.name;
- ConstructorElement expectedConstructorElement;
+ ConstructorElement? expectedConstructorElement;
if (constructorName != null) {
expectedConstructorElement =
expectedClassElement.getNamedConstructor(constructorName);
@@ -434,20 +438,26 @@
}
}
- var actualConstructorElement = getNodeElement(creation);
- if (creation.constructorName.name != null) {
+ var actualConstructorElement =
+ getNodeElement(creation) as ConstructorElement?;
+ var constructorName2 = creation.constructorName.name;
+ if (constructorName2 != null) {
// TODO(brianwilkerson) This used to enforce that the two elements were
// the same object, but the changes to the AstRewriteVisitor broke that.
// We should explore re-establishing this restriction for performance.
assertConstructorElement(
- creation.constructorName.name.staticElement,
+ constructorName2.staticElement as ConstructorElement?,
actualConstructorElement,
);
}
if (expectedConstructorMember) {
expect(actualConstructorElement, const TypeMatcher<Member>());
- assertMember(creation, expectedConstructorElement, expectedSubstitution);
+ assertMember(
+ creation,
+ expectedConstructorElement,
+ expectedSubstitution!,
+ );
} else {
assertElement(creation, expectedConstructorElement);
}
@@ -468,7 +478,7 @@
}
void assertInvokeType(Expression node, String expected) {
- DartType actual;
+ DartType? actual;
if (node is BinaryExpression) {
actual = node.staticInvokeType;
} else if (node is InvocationExpression) {
@@ -476,29 +486,29 @@
} else {
fail('Unsupported node: (${node.runtimeType}) $node');
}
- expect(typeString(actual), expected);
+ expect(typeString(actual!), expected);
}
void assertInvokeTypeDynamic(InvocationExpression node) {
- DartType actual = node.staticInvokeType;
+ var actual = node.staticInvokeType;
expect(actual, isDynamicType);
}
void assertInvokeTypeNull(BinaryExpression node) {
- DartType actual = node.staticInvokeType;
+ var actual = node.staticInvokeType;
expect(actual, isNull);
}
void assertMember(
- Object elementOrNode,
+ Object? elementOrNode,
Element expectedBase,
Map<String, String> expectedSubstitution,
) {
- Member actual;
+ Member? actual;
if (elementOrNode is Member) {
actual = elementOrNode;
} else {
- actual = getNodeElement(elementOrNode as AstNode);
+ actual = getNodeElement(elementOrNode as AstNode) as Member;
}
expect(actual.declaration, same(expectedBase));
@@ -508,14 +518,14 @@
void assertMethodInvocation(
MethodInvocation invocation,
- Object expectedElement,
+ Object? expectedElement,
String expectedInvokeType, {
- String expectedMethodNameType,
- String expectedNameType,
- String expectedType,
+ String? expectedMethodNameType,
+ String? expectedNameType,
+ String? expectedType,
List<String> expectedTypeArguments = const <String>[],
}) {
- MethodInvocationImpl invocationImpl = invocation;
+ var invocationImpl = invocation as MethodInvocationImpl;
// TODO(scheglov) Check for Member.
var element = invocation.methodName.staticElement;
@@ -548,10 +558,10 @@
void assertMethodInvocation2(
MethodInvocation node, {
- @required Object element,
- @required List<String> typeArgumentTypes,
- @required String invokeType,
- @required String type,
+ required Object? element,
+ required List<String> typeArgumentTypes,
+ required String invokeType,
+ required String type,
}) {
assertElement(node.methodName, element);
assertTypeArgumentTypes(node, typeArgumentTypes);
@@ -567,11 +577,11 @@
void assertNamespaceDirectiveSelected(
NamespaceDirective directive, {
- @required String expectedRelativeUri,
- @required String expectedUri,
+ required String expectedRelativeUri,
+ required String expectedUri,
}) {
expect(directive.selectedUriContent, expectedRelativeUri);
- expect('${directive.selectedSource.uri}', expectedUri);
+ expect('${directive.selectedSource!.uri}', expectedUri);
}
Future<void> assertNoErrorsInCode(String code) async {
@@ -593,18 +603,18 @@
}
void assertParameterElementType(FormalParameter node, String expected) {
- var parameterElement = node.declaredElement;
+ var parameterElement = node.declaredElement!;
assertType(parameterElement.type, expected);
}
void assertPostfixExpression(
PostfixExpression node, {
- @required Object readElement,
- @required String readType,
- @required Object writeElement,
- @required String writeType,
- @required Object element,
- @required String type,
+ required Object? readElement,
+ required String? readType,
+ required Object? writeElement,
+ required String? writeType,
+ required Object? element,
+ required String type,
}) {
assertCompoundAssignment(
node,
@@ -619,8 +629,8 @@
void assertPrefixedIdentifier(
PrefixedIdentifier node, {
- @required Object element,
- @required String type,
+ required Object? element,
+ required String type,
}) {
assertElement(node.staticElement, element);
assertType(node, type);
@@ -628,12 +638,12 @@
void assertPrefixExpression(
PrefixExpression node, {
- @required Object readElement,
- @required String readType,
- @required Object writeElement,
- @required String writeType,
- @required Object element,
- @required String type,
+ required Object? readElement,
+ required String? readType,
+ required Object? writeElement,
+ required String? writeType,
+ required Object? element,
+ required String type,
}) {
assertCompoundAssignment(
node,
@@ -657,18 +667,22 @@
void assertPropertyAccess2(
PropertyAccess node, {
- @required Object element,
- @required String type,
+ required Object? element,
+ required String type,
}) {
assertElement(node.propertyName.staticElement, element);
assertType(node.staticType, type);
}
void assertSimpleIdentifier(
- SimpleIdentifier node, {
- @required Object element,
- @required String type,
+ Expression node, {
+ required Object? element,
+ required String? type,
}) {
+ if (node is! SimpleIdentifier) {
+ _failNotSimpleIdentifier(node);
+ }
+
var isRead = node.inGetterContext();
expect(isRead, isTrue);
@@ -677,7 +691,11 @@
}
/// TODO(scheglov) https://github.com/dart-lang/sdk/issues/43608
- void assertSimpleIdentifierAssignmentTarget(SimpleIdentifier node) {
+ void assertSimpleIdentifierAssignmentTarget(Expression node) {
+ if (node is! SimpleIdentifier) {
+ _failNotSimpleIdentifier(node);
+ }
+
// TODO(scheglov) Enforce maybe?
// Currently VariableResolverVisitor sets it.
// expect(node.staticElement, isNull);
@@ -701,7 +719,11 @@
expect(actualMapString, expected);
}
- void assertSuperExpression(SuperExpression superExpression) {
+ void assertSuperExpression(Expression? node) {
+ if (node is! SuperExpression) {
+ fail('Expected SuperExpression: (${node.runtimeType}) $node');
+ }
+
// TODO(scheglov) I think `super` does not have type itself.
// It is just a signal to look for implemented method in the supertype.
// With mixins there isn't a type anyway.
@@ -713,11 +735,9 @@
assertIdentifierTopGetRef(ref, name);
}
- void assertType(Object typeOrNode, String expected) {
- DartType actual;
- if (typeOrNode == null) {
- actual = typeOrNode;
- } else if (typeOrNode is DartType) {
+ void assertType(Object? typeOrNode, String? expected) {
+ DartType? actual;
+ if (typeOrNode is DartType) {
actual = typeOrNode;
} else if (typeOrNode is Expression) {
actual = typeOrNode.staticType;
@@ -731,6 +751,8 @@
if (expected == null) {
expect(actual, isNull);
+ } else if (actual == null) {
+ fail('Null, expected: $expected');
} else {
expect(typeString(actual), expected);
}
@@ -749,13 +771,13 @@
InvocationExpression node,
List<String> expected,
) {
- var actual = node.typeArgumentTypes.map((t) => typeString(t)).toList();
+ var actual = node.typeArgumentTypes!.map((t) => typeString(t)).toList();
expect(actual, expected);
}
- void assertTypeDynamic(Object typeOrExpression) {
- DartType actual;
- if (typeOrExpression is DartType) {
+ void assertTypeDynamic(Object? typeOrExpression) {
+ DartType? actual;
+ if (typeOrExpression is DartType?) {
actual = typeOrExpression;
var type = typeOrExpression;
expect(type, isDynamicType);
@@ -765,14 +787,15 @@
expect(actual, isDynamicType);
}
- void assertTypeLegacy(Expression expression) {
- NullabilitySuffix actual = expression.staticType.nullabilitySuffix;
+ void assertTypeLegacy(Expression? expression) {
+ expression!;
+ NullabilitySuffix actual = expression.staticType!.nullabilitySuffix;
expect(actual, NullabilitySuffix.star);
}
void assertTypeName(
- TypeName node, Element expectedElement, String expectedType,
- {Element expectedPrefix}) {
+ TypeName node, Element? expectedElement, String expectedType,
+ {Element? expectedPrefix}) {
assertType(node, expectedType);
if (expectedPrefix == null) {
@@ -797,22 +820,23 @@
expect(node.staticType, isNull);
}
+ /// TODO(scheglov) Remove `?` from [declaration].
Matcher elementMatcher(
- Element declaration, {
+ Element? declaration, {
bool isLegacy = false,
Map<String, String> substitution = const {},
}) {
return _ElementMatcher(
this,
- declaration: declaration,
+ declaration: declaration!,
isLegacy: isLegacy,
substitution: substitution,
);
}
ExpectedError error(ErrorCode code, int offset, int length,
- {String text,
- Pattern messageContains,
+ {String? text,
+ Pattern? messageContains,
List<ExpectedContextMessage> contextMessages =
const <ExpectedContextMessage>[]}) =>
ExpectedError(code, offset, length,
@@ -821,8 +845,8 @@
expectedContextMessages: contextMessages);
List<ExpectedError> expectedErrorsByNullability({
- @required List<ExpectedError> nullable,
- @required List<ExpectedError> legacy,
+ required List<ExpectedError> nullable,
+ required List<ExpectedError> legacy,
}) {
if (typeToStringWithNullability) {
return nullable;
@@ -831,7 +855,7 @@
}
}
- Element getNodeElement(AstNode node) {
+ Element? getNodeElement(AstNode node) {
if (node is Annotation) {
return node.element;
} else if (node is AssignmentExpression) {
@@ -883,8 +907,8 @@
result = await resolveFile(path);
expect(result.state, ResultState.VALID);
- findNode = FindNode(result.content, result.unit);
- findElement = FindElement(result.unit);
+ findNode = FindNode(result.content!, result.unit!);
+ findElement = FindElement(result.unit!);
}
/// Create a new file with the [path] and [content], resolve it into [result].
@@ -919,8 +943,8 @@
type.getDisplayString(withNullability: typeToStringWithNullability);
String typeStringByNullability({
- @required String nullable,
- @required String legacy,
+ required String nullable,
+ required String legacy,
}) {
if (typeToStringWithNullability) {
return nullable;
@@ -929,7 +953,7 @@
}
}
- Matcher _elementMatcher(Object elementOrMatcher) {
+ Matcher _elementMatcher(Object? elementOrMatcher) {
if (elementOrMatcher is Element) {
return _ElementMatcher(this, declaration: elementOrMatcher);
} else {
@@ -937,6 +961,10 @@
}
}
+ Never _failNotSimpleIdentifier(AstNode node) {
+ fail('Expected SimpleIdentifier: (${node.runtimeType}) $node');
+ }
+
static String _extractReturnType(String invokeType) {
int functionIndex = invokeType.indexOf(' Function');
expect(functionIndex, isNonNegative);
@@ -952,7 +980,7 @@
_ElementMatcher(
this.test, {
- this.declaration,
+ required this.declaration,
this.isLegacy = false,
this.substitution = const {},
});
diff --git a/pkg/analyzer/test/src/dart/resolution/try_statement_test.dart b/pkg/analyzer/test/src/dart/resolution/try_statement_test.dart
index d3f8c6b..d5d60964 100644
--- a/pkg/analyzer/test/src/dart/resolution/try_statement_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/try_statement_test.dart
@@ -37,8 +37,8 @@
assertType(st.type, 'StackTrace');
var node = findNode.catchClause('catch');
- expect(node.exceptionParameter.staticElement, e);
- expect(node.stackTraceParameter.staticElement, st);
+ expect(node.exceptionParameter!.staticElement, e);
+ expect(node.stackTraceParameter!.staticElement, st);
}
test_catch_withType() async {
@@ -59,8 +59,8 @@
assertType(st.type, 'StackTrace');
var node = findNode.catchClause('catch');
- expect(node.exceptionParameter.staticElement, e);
- expect(node.stackTraceParameter.staticElement, st);
+ expect(node.exceptionParameter!.staticElement, e);
+ expect(node.stackTraceParameter!.staticElement, st);
}
}
diff --git a/pkg/analyzer/test/src/dart/resolution/type_inference/function_expression_test.dart b/pkg/analyzer/test/src/dart/resolution/type_inference/function_expression_test.dart
index d665880..7de1d06 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_inference/function_expression_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_inference/function_expression_test.dart
@@ -453,7 +453,7 @@
}
void _assertReturnType(String search, String expected) {
- var element = findNode.functionExpression(search).declaredElement;
+ var element = findNode.functionExpression(search).declaredElement!;
assertType(element.returnType, expected);
}
}
diff --git a/pkg/analyzer/test/src/dart/resolution/type_inference/tear_off_test.dart b/pkg/analyzer/test/src/dart/resolution/type_inference/tear_off_test.dart
index 5f939e3..27c24a5 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_inference/tear_off_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_inference/tear_off_test.dart
@@ -139,7 +139,7 @@
String search,
ExecutableElement element,
String type,
- List<String> typeArguments,
+ List<String>? typeArguments,
) {
var id = findNode.simple(search);
assertElement(id, element);
diff --git a/pkg/analyzer/test/src/dart/resolution/type_name_test.dart b/pkg/analyzer/test/src/dart/resolution/type_name_test.dart
index 91aa242..7587a08 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_name_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_name_test.dart
@@ -2,6 +2,8 @@
// 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.
+import 'package:analyzer/dart/element/element.dart';
+import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/src/error/codes.dart';
import 'package:analyzer/src/test_utilities/find_element.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -614,8 +616,8 @@
assertTypeName(typeName, element, 'int* Function(bool*)*');
assertFunctionTypeTypedef(
- typeName.type,
- element: element,
+ typeName.type as FunctionType,
+ element: element as FunctionTypeAliasElement,
typeArguments: [],
);
}
@@ -638,8 +640,8 @@
assertTypeName(typeName, element, 'dynamic Function(bool*)*');
assertFunctionTypeTypedef(
- typeName.type,
- element: element,
+ typeName.type as FunctionType,
+ element: element as FunctionTypeAliasElement,
typeArguments: ['dynamic'],
);
}
@@ -662,8 +664,8 @@
assertTypeName(typeName, element, 'num* Function(bool*)*');
assertFunctionTypeTypedef(
- typeName.type,
- element: element,
+ typeName.type as FunctionType,
+ element: element as FunctionTypeAliasElement,
typeArguments: ['num*'],
);
}
@@ -686,8 +688,8 @@
assertTypeName(typeName, element, 'int* Function(bool*)*');
assertFunctionTypeTypedef(
- typeName.type,
- element: element,
+ typeName.type as FunctionType,
+ element: element as FunctionTypeAliasElement,
typeArguments: ['int*'],
);
}
diff --git a/pkg/analyzer/test/src/dart/resolver/exit_detector_test.dart b/pkg/analyzer/test/src/dart/resolver/exit_detector_test.dart
index e60d05c..bb0999a 100644
--- a/pkg/analyzer/test/src/dart/resolver/exit_detector_test.dart
+++ b/pkg/analyzer/test/src/dart/resolver/exit_detector_test.dart
@@ -1083,8 +1083,8 @@
Future<void> _assertHasReturn(String code, int n, bool expected) async {
await resolveTestCode(code);
- FunctionDeclaration function = result.unit.declarations.last;
- BlockFunctionBody body = function.functionExpression.body;
+ var function = result.unit!.declarations.last as FunctionDeclaration;
+ var body = function.functionExpression.body as BlockFunctionBody;
Statement statement = body.block.statements[n];
expect(ExitDetector.exits(statement), expected);
}
diff --git a/pkg/analyzer/test/src/dart/resolver/legacy_type_asserter_test.dart b/pkg/analyzer/test/src/dart/resolver/legacy_type_asserter_test.dart
index 75d3b88..3f1f84e 100644
--- a/pkg/analyzer/test/src/dart/resolver/legacy_type_asserter_test.dart
+++ b/pkg/analyzer/test/src/dart/resolver/legacy_type_asserter_test.dart
@@ -24,7 +24,7 @@
@reflectiveTest
class LegacyTypeAsserterTest {
- TypeProvider typeProvider;
+ late final TypeProvider typeProvider;
void setUp() {
var analysisContext = TestAnalysisContext();
@@ -145,9 +145,10 @@
AstTestFactory.functionDeclaration(
null,
null,
- null,
+ 'f',
AstTestFactory.functionExpression2(
- null, AstTestFactory.expressionFunctionBody(e)))
+ AstTestFactory.formalParameterList(),
+ AstTestFactory.expressionFunctionBody(e)))
],
featureSet: nonNullable
? FeatureSet.latestLanguageVersion()
diff --git a/pkg/analyzer/test/src/dart/sdk/sdk_test.dart b/pkg/analyzer/test/src/dart/sdk/sdk_test.dart
index db9c3b4..6af1989 100644
--- a/pkg/analyzer/test/src/dart/sdk/sdk_test.dart
+++ b/pkg/analyzer/test/src/dart/sdk/sdk_test.dart
@@ -7,7 +7,6 @@
import 'package:analyzer/src/dart/sdk/sdk.dart';
import 'package:analyzer/src/generated/java_engine_io.dart';
import 'package:analyzer/src/generated/sdk.dart';
-import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart';
import 'package:pub_semver/pub_semver.dart';
import 'package:test/test.dart';
@@ -28,7 +27,7 @@
class EmbedderSdkTest extends EmbedderRelatedTest {
void test_allowedExperimentsJson() {
EmbedderYamlLocator locator = EmbedderYamlLocator({
- 'fox': <Folder>[pathTranslator.getResource(foxLib)]
+ 'fox': <Folder>[pathTranslator.getResource(foxLib) as Folder]
});
EmbedderSdk sdk = EmbedderSdk(
resourceProvider,
@@ -47,7 +46,7 @@
void test_creation() {
EmbedderYamlLocator locator = EmbedderYamlLocator({
- 'fox': <Folder>[pathTranslator.getResource(foxLib)]
+ 'fox': <Folder>[pathTranslator.getResource(foxLib) as Folder]
});
EmbedderSdk sdk = EmbedderSdk(
resourceProvider,
@@ -60,7 +59,7 @@
void test_fromFileUri() {
EmbedderYamlLocator locator = EmbedderYamlLocator({
- 'fox': <Folder>[pathTranslator.getResource(foxLib)]
+ 'fox': <Folder>[pathTranslator.getResource(foxLib) as Folder]
});
EmbedderSdk sdk = EmbedderSdk(
resourceProvider,
@@ -70,7 +69,7 @@
expectSource(String posixPath, String dartUri) {
Uri uri = Uri.parse(posixToOSFileUri(posixPath));
- Source source = sdk.fromFileUri(uri);
+ var source = sdk.fromFileUri(uri)!;
expect(source, isNotNull, reason: posixPath);
expect(source.uri.toString(), dartUri);
expect(source.fullName, posixToOSPath(posixPath));
@@ -83,7 +82,7 @@
void test_getSdkLibrary() {
EmbedderYamlLocator locator = EmbedderYamlLocator({
- 'fox': <Folder>[pathTranslator.getResource(foxLib)]
+ 'fox': <Folder>[pathTranslator.getResource(foxLib) as Folder]
});
EmbedderSdk sdk = EmbedderSdk(
resourceProvider,
@@ -91,7 +90,7 @@
languageVersion: Version.parse('2.10.0'),
);
- SdkLibrary lib = sdk.getSdkLibrary('dart:fox');
+ var lib = sdk.getSdkLibrary('dart:fox')!;
expect(lib, isNotNull);
expect(lib.path, posixToOSPath('$foxLib/slippy.dart'));
expect(lib.shortName, 'dart:fox');
@@ -99,7 +98,7 @@
void test_mapDartUri() {
EmbedderYamlLocator locator = EmbedderYamlLocator({
- 'fox': <Folder>[pathTranslator.getResource(foxLib)]
+ 'fox': <Folder>[pathTranslator.getResource(foxLib) as Folder]
});
EmbedderSdk sdk = EmbedderSdk(
resourceProvider,
@@ -108,7 +107,7 @@
);
void expectSource(String dartUri, String posixPath) {
- Source source = sdk.mapDartUri(dartUri);
+ var source = sdk.mapDartUri(dartUri)!;
expect(source, isNotNull, reason: posixPath);
expect(source.uri.toString(), dartUri);
expect(source.fullName, posixToOSPath(posixPath));
@@ -146,10 +145,10 @@
void test_fromFile_library() {
FolderBasedDartSdk sdk = _createDartSdk();
- Source source = sdk.fromFileUri(sdk.libraryDirectory
+ var source = sdk.fromFileUri(sdk.libraryDirectory
.getChildAssumingFolder("core")
.getChildAssumingFile("core.dart")
- .toUri());
+ .toUri())!;
expect(source, isNotNull);
expect(source.isInSystemLibrary, isTrue);
expect(source.uri.toString(), "dart:core");
@@ -160,7 +159,7 @@
Folder dirHtml = sdk.libraryDirectory.getChildAssumingFolder("html");
Folder dirDartium = dirHtml.getChildAssumingFolder("dart2js");
File file = dirDartium.getChildAssumingFile("html_dart2js.dart");
- Source source = sdk.fromFileUri(file.toUri());
+ var source = sdk.fromFileUri(file.toUri())!;
expect(source, isNotNull);
expect(source.isInSystemLibrary, isTrue);
expect(source.uri.toString(), "dart:html");
@@ -171,7 +170,7 @@
Folder dirHtml = sdk.libraryDirectory.getChildAssumingFolder("html");
Folder dirCommon = dirHtml.getChildAssumingFolder("html_common");
File file = dirCommon.getChildAssumingFile("html_common_dart2js.dart");
- Source source = sdk.fromFileUri(file.toUri());
+ var source = sdk.fromFileUri(file.toUri())!;
expect(source, isNotNull);
expect(source.isInSystemLibrary, isTrue);
expect(source.uri.toString(), "dart:html_common");
@@ -179,10 +178,10 @@
void test_fromFile_part() {
FolderBasedDartSdk sdk = _createDartSdk();
- Source source = sdk.fromFileUri(sdk.libraryDirectory
+ var source = sdk.fromFileUri(sdk.libraryDirectory
.getChildAssumingFolder("core")
.getChildAssumingFile("num.dart")
- .toUri());
+ .toUri())!;
expect(source, isNotNull);
expect(source.isInSystemLibrary, isTrue);
expect(source.uri.toString(), "dart:core/num.dart");
@@ -226,8 +225,8 @@
/// when the file is the library file.
void test_mapDartUri_partFormatForLibrary() {
FolderBasedDartSdk sdk = _createDartSdk();
- Source normalSource = sdk.mapDartUri('dart:core');
- Source partSource = sdk.mapDartUri('dart:core/core.dart');
+ var normalSource = sdk.mapDartUri('dart:core')!;
+ var partSource = sdk.mapDartUri('dart:core/core.dart')!;
expect(partSource, normalSource);
}
@@ -321,7 +320,7 @@
};''');
expect(libraryMap, isNotNull);
expect(libraryMap.size(), 2);
- SdkLibrary first = libraryMap.getLibrary("dart:first");
+ var first = libraryMap.getLibrary("dart:first")!;
expect(first, isNotNull);
expect(first.category, "Client");
expect(first.path, "first/first.dart");
@@ -330,7 +329,7 @@
expect(first.isDocumented, true);
expect(first.isImplementation, false);
expect(first.isVmLibrary, true);
- SdkLibrary second = libraryMap.getLibrary("dart:second");
+ var second = libraryMap.getLibrary("dart:second")!;
expect(second, isNotNull);
expect(second.category, "Server");
expect(second.path, "second/second.dart");
diff --git a/pkg/analyzer/test/src/diagnostics/analysis_options/analysis_options_test_support.dart b/pkg/analyzer/test/src/diagnostics/analysis_options/analysis_options_test_support.dart
index c510595..900fd85 100644
--- a/pkg/analyzer/test/src/diagnostics/analysis_options/analysis_options_test_support.dart
+++ b/pkg/analyzer/test/src/diagnostics/analysis_options/analysis_options_test_support.dart
@@ -19,8 +19,8 @@
}
ExpectedError error(ErrorCode code, int offset, int length,
- {String text,
- Pattern messageContains,
+ {String? text,
+ Pattern? messageContains,
List<ExpectedContextMessage> contextMessages =
const <ExpectedContextMessage>[]}) =>
ExpectedError(code, offset, length,
diff --git a/pkg/analyzer/test/src/diagnostics/argument_type_not_assignable_catch_error_on_error_test.dart b/pkg/analyzer/test/src/diagnostics/argument_type_not_assignable_catch_error_on_error_test.dart
index 704f988..d457687 100644
--- a/pkg/analyzer/test/src/diagnostics/argument_type_not_assignable_catch_error_on_error_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/argument_type_not_assignable_catch_error_on_error_test.dart
@@ -37,13 +37,11 @@
}
void test_firstParameterIsOptional() async {
- await assertErrorsInCode('''
+ await assertNoErrorsInCode('''
void f(Future<int> future, Future<int> Function([Object a]) callback) {
future.catchError(callback);
}
-''', [
- error(HintCode.ARGUMENT_TYPE_NOT_ASSIGNABLE_CATCH_ERROR_ON_ERROR, 92, 8),
- ]);
+''');
}
void test_functionExpression_firstParameterIsDynamic() async {
@@ -73,13 +71,11 @@
}
void test_functionExpression_firstParameterIsOptional() async {
- await assertErrorsInCode('''
+ await assertNoErrorsInCode('''
void f(Future<void> future) {
future.catchError(([Object a = 1]) {});
}
-''', [
- error(HintCode.ARGUMENT_TYPE_NOT_ASSIGNABLE_CATCH_ERROR_ON_ERROR, 50, 19),
- ]);
+''');
}
void test_functionExpression_firstParameterIsVar() async {
@@ -126,6 +122,14 @@
]);
}
+ void test_functionExpression_secondParameterIsOptional() async {
+ await assertNoErrorsInCode('''
+void f(Future<void> future) {
+ future.catchError((Object a, [StackTrace st]) {});
+}
+''');
+ }
+
void test_functionExpression_secondParameterIsVar() async {
await assertNoErrorsInCode('''
void f(Future<void> future) {
@@ -261,4 +265,13 @@
}
''');
}
+
+ @override
+ void test_functionExpression_secondParameterIsOptional() async {
+ await assertNoErrorsInCode('''
+void f(Future<void> future) {
+ future.catchError((Object a, [StackTrace? st]) {});
+}
+''');
+ }
}
diff --git a/pkg/analyzer/test/src/diagnostics/deprecated_member_use_test.dart b/pkg/analyzer/test/src/diagnostics/deprecated_member_use_test.dart
index 186c7a6..6a45253 100644
--- a/pkg/analyzer/test/src/diagnostics/deprecated_member_use_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/deprecated_member_use_test.dart
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/src/error/codes.dart';
-import 'package:meta/meta.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
import '../dart/resolution/context_collection_resolution.dart';
@@ -1522,9 +1521,9 @@
}
void _newTestPackageGeneratedFile({
- @required String packageName,
- @required String pathInLib,
- @required String content,
+ required String packageName,
+ required String pathInLib,
+ required String content,
}) {
newFile(
'$testPackageGeneratedPath/$packageName/lib/$pathInLib',
diff --git a/pkg/analyzer/test/src/diagnostics/extension_override_with_cascade_test.dart b/pkg/analyzer/test/src/diagnostics/extension_override_with_cascade_test.dart
index b1d34fe..7eed85a 100644
--- a/pkg/analyzer/test/src/diagnostics/extension_override_with_cascade_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/extension_override_with_cascade_test.dart
@@ -26,6 +26,7 @@
''', [
error(CompileTimeErrorCode.EXTENSION_OVERRIDE_WITH_CASCADE, 49, 1),
]);
+ assertTypeDynamic(findNode.extensionOverride('E('));
}
test_method() async {
@@ -39,6 +40,7 @@
''', [
error(CompileTimeErrorCode.EXTENSION_OVERRIDE_WITH_CASCADE, 45, 1),
]);
+ assertTypeDynamic(findNode.extensionOverride('E('));
}
test_setter() async {
@@ -52,5 +54,6 @@
''', [
error(CompileTimeErrorCode.EXTENSION_OVERRIDE_WITH_CASCADE, 49, 1),
]);
+ assertTypeDynamic(findNode.extensionOverride('E('));
}
}
diff --git a/pkg/analyzer/test/src/diagnostics/inconsistent_language_version_override_test.dart b/pkg/analyzer/test/src/diagnostics/inconsistent_language_version_override_test.dart
index 22eb5ae..66e52d0 100644
--- a/pkg/analyzer/test/src/diagnostics/inconsistent_language_version_override_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/inconsistent_language_version_override_test.dart
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/src/error/codes.dart';
-import 'package:meta/meta.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
import '../../generated/test_support.dart';
@@ -93,9 +92,9 @@
}
Future<void> _checkLibraryAndPart({
- @required String libraryContent,
- @required String partContent,
- @required List<ExpectedError> libraryErrors,
+ required String libraryContent,
+ required String partContent,
+ required List<ExpectedError> libraryErrors,
}) async {
var libraryPath = convertPath('$testPackageLibPath/a.dart');
var partPath = convertPath('$testPackageLibPath/b.dart');
diff --git a/pkg/analyzer/test/src/diagnostics/integer_literal_imprecise_as_double_test.dart b/pkg/analyzer/test/src/diagnostics/integer_literal_imprecise_as_double_test.dart
index 8c831b2..4384477 100644
--- a/pkg/analyzer/test/src/diagnostics/integer_literal_imprecise_as_double_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/integer_literal_imprecise_as_double_test.dart
@@ -32,7 +32,7 @@
// Check that we suggest the max double instead.
expect(
true,
- firstError.correction.contains(
+ firstError.correction!.contains(
'179769313486231570814527423731704356798070567525844996598917476803'
'157260780028538760589558632766878171540458953514382464234321326889'
'464182768467546703537516986049910576551282076245490090389328944075'
@@ -48,6 +48,6 @@
]);
AnalysisError firstError = result.errors[0];
// Check that we suggest a valid double instead.
- expect(true, firstError.correction.contains('9223372036854775808'));
+ expect(true, firstError.correction!.contains('9223372036854775808'));
}
}
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_language_override_greater_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_language_override_greater_test.dart
index dd1ee88..b70e7b3 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_language_override_greater_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_language_override_greater_test.dart
@@ -5,7 +5,6 @@
import 'package:analyzer/src/dart/analysis/experiments.dart';
import 'package:analyzer/src/dart/ast/ast.dart';
import 'package:analyzer/src/dart/error/hint_codes.dart';
-import 'package:meta/meta.dart';
import 'package:pub_semver/pub_semver.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -60,11 +59,11 @@
}
void _assertUnitLanguageVersion({
- @required Version package,
- @required Version override,
+ required Version package,
+ required Version? override,
}) {
var unitImpl = result.unit as CompilationUnitImpl;
- var languageVersion = unitImpl.languageVersion;
+ var languageVersion = unitImpl.languageVersion!;
expect(languageVersion.package, package);
expect(languageVersion.override, override);
}
diff --git a/pkg/analyzer/test/src/diagnostics/mixin_application_not_implemented_interface_test.dart b/pkg/analyzer/test/src/diagnostics/mixin_application_not_implemented_interface_test.dart
index 13fcb26..31546d9 100644
--- a/pkg/analyzer/test/src/diagnostics/mixin_application_not_implemented_interface_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/mixin_application_not_implemented_interface_test.dart
@@ -110,7 +110,8 @@
''', [
error(HintCode.UNUSED_ELEMENT, 96, 15),
]);
- var mixins = result.unit.declaredElement.getType('_LocalDirectory').mixins;
+ var mixins =
+ result.unit!.declaredElement!.getType('_LocalDirectory')!.mixins;
assertType(mixins[0], 'ForwardingDirectory<_LocalDirectory>');
}
}
diff --git a/pkg/analyzer/test/src/diagnostics/mixin_declares_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/mixin_declares_constructor_test.dart
index e171fde..654ef07 100644
--- a/pkg/analyzer/test/src/diagnostics/mixin_declares_constructor_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/mixin_declares_constructor_test.dart
@@ -36,7 +36,7 @@
var fpNode = findNode.fieldFormalParameter('f);');
assertElement(fpNode.identifier, constructorElement.parameters[0]);
- FieldFormalParameterElement fpElement = fpNode.declaredElement;
+ var fpElement = fpNode.declaredElement as FieldFormalParameterElement;
assertElement(fpElement.field, findElement.field('f'));
}
diff --git a/pkg/analyzer/test/src/diagnostics/non_null_opt_out_test.dart b/pkg/analyzer/test/src/diagnostics/non_null_opt_out_test.dart
index 25b5b05..9cd23cf 100644
--- a/pkg/analyzer/test/src/diagnostics/non_null_opt_out_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_null_opt_out_test.dart
@@ -352,7 +352,7 @@
assertInvokeType(binaryExpression, 'int* Function(int*)*');
assertType(binaryExpression, 'int*');
- MethodElement element = binaryExpression.staticElement;
+ var element = binaryExpression.staticElement as MethodElement;
_assertLegacyMember(element, _import_a.method('+'));
}
@@ -838,7 +838,7 @@
var prefixExpression = findNode.postfix('a++');
assertType(prefixExpression, 'A*');
- MethodElement element = prefixExpression.staticElement;
+ var element = prefixExpression.staticElement as MethodElement;
_assertLegacyMember(element, _import_a.method('+'));
}
@@ -859,7 +859,7 @@
var prefixExpression = findNode.prefix('-a');
assertType(prefixExpression, 'int*');
- MethodElement element = prefixExpression.staticElement;
+ var element = prefixExpression.staticElement as MethodElement;
_assertLegacyMember(element, _import_a.method('unary-'));
}
@@ -880,7 +880,7 @@
var indexExpression = findNode.index('a[');
assertType(indexExpression, 'int*');
- MethodElement element = indexExpression.staticElement;
+ var element = indexExpression.staticElement as MethodElement;
_assertLegacyMember(element, _import_a.method('[]'));
}
@@ -1286,7 +1286,7 @@
}
void _assertLegacyMember(
- Element actualElement,
+ Element? actualElement,
Element declaration, {
Map<String, String> expectedSubstitution = const {},
}) {
diff --git a/pkg/analyzer/test/src/diagnostics/null_safety_read_write_test.dart b/pkg/analyzer/test/src/diagnostics/null_safety_read_write_test.dart
index 2920519..c8fe983 100644
--- a/pkg/analyzer/test/src/diagnostics/null_safety_read_write_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/null_safety_read_write_test.dart
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/src/error/codes.dart';
-import 'package:meta/meta.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -1214,13 +1213,13 @@
void _assertAssigned(
String search, {
- @required bool assigned,
- @required bool unassigned,
+ required bool assigned,
+ required bool unassigned,
}) {
var node = findNode.simple(search);
- var testingData = driverFor(testFilePath).testingData;
- var unitData = testingData.uriToFlowAnalysisData[result.uri];
+ var testingData = driverFor(testFilePath).testingData!;
+ var unitData = testingData.uriToFlowAnalysisData[result.uri]!;
if (assigned) {
expect(unitData.definitelyAssigned, contains(node));
diff --git a/pkg/analyzer/test/src/diagnostics/receiver_of_type_never_test.dart b/pkg/analyzer/test/src/diagnostics/receiver_of_type_never_test.dart
index a5c4ffc..411e564 100644
--- a/pkg/analyzer/test/src/diagnostics/receiver_of_type_never_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/receiver_of_type_never_test.dart
@@ -569,7 +569,7 @@
assertBinaryExpression(
findNode.binary('=='),
element: elementMatcher(
- objectElement.getMethod('=='),
+ objectElement.getMethod('==')!,
isLegacy: isNullSafetySdkAndLegacyLibrary,
),
type: 'bool',
@@ -619,7 +619,7 @@
assertSimpleIdentifier(
findNode.simple('toString'),
element: elementMatcher(
- objectElement.getMethod('toString'),
+ objectElement.getMethod('toString')!,
isLegacy: isNullSafetySdkAndLegacyLibrary,
),
type: 'String Function()',
@@ -636,7 +636,7 @@
assertSimpleIdentifier(
findNode.simple('hashCode'),
element: elementMatcher(
- objectElement.getGetter('hashCode'),
+ objectElement.getGetter('hashCode')!,
isLegacy: isNullSafetySdkAndLegacyLibrary,
),
type: 'int',
diff --git a/pkg/analyzer/test/src/diagnostics/recursive_compile_time_constant_test.dart b/pkg/analyzer/test/src/diagnostics/recursive_compile_time_constant_test.dart
index 90d06b2..325c407 100644
--- a/pkg/analyzer/test/src/diagnostics/recursive_compile_time_constant_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/recursive_compile_time_constant_test.dart
@@ -45,12 +45,10 @@
''',
);
// No errors, because the cycle is not in this source.
- await assertErrorsInCode(r'''
+ await assertNoErrorsInCode(r'''
import 'constants.dart';
final z = {x: 0, y: 1};
-''', [
- error(HintCode.EQUAL_KEYS_IN_MAP, 42, 1),
- ]);
+''');
}
test_initializer_after_toplevel_var() async {
diff --git a/pkg/analyzer/test/src/diagnostics/sdk_constraint_verifier_support.dart b/pkg/analyzer/test/src/diagnostics/sdk_constraint_verifier_support.dart
index b196ff0..34dbac4 100644
--- a/pkg/analyzer/test/src/diagnostics/sdk_constraint_verifier_support.dart
+++ b/pkg/analyzer/test/src/diagnostics/sdk_constraint_verifier_support.dart
@@ -11,7 +11,7 @@
/// Verify that the [expectedErrors] are produced if the [source] is analyzed
/// in a context that specifies the minimum SDK version to be [version].
Future<void> verifyVersion(String version, String source,
- {List<ExpectedError> expectedErrors}) async {
+ {List<ExpectedError>? expectedErrors}) async {
writeTestPackagePubspecYamlFile(
PubspecYamlFileConfig(
sdkVersion: '>=$version',
diff --git a/pkg/analyzer/test/src/diagnostics/type_argument_not_matching_bounds_test.dart b/pkg/analyzer/test/src/diagnostics/type_argument_not_matching_bounds_test.dart
index c515d56..fba1fe4 100644
--- a/pkg/analyzer/test/src/diagnostics/type_argument_not_matching_bounds_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/type_argument_not_matching_bounds_test.dart
@@ -303,7 +303,7 @@
error(CompileTimeErrorCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS, 65, 3),
]);
// Instantiate-to-bounds should have instantiated "Bar" to "Bar<Foo>".
- assertType(result.unit.declaredElement.getType('Baz').supertype,
+ assertType(result.unit!.declaredElement!.getType('Baz')!.supertype,
'Bar<Foo<dynamic>>');
}
diff --git a/pkg/analyzer/test/src/diagnostics/use_of_nullable_value_test.dart b/pkg/analyzer/test/src/diagnostics/use_of_nullable_value_test.dart
index 5e0338c..4c97b99 100644
--- a/pkg/analyzer/test/src/diagnostics/use_of_nullable_value_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/use_of_nullable_value_test.dart
@@ -505,7 +505,7 @@
writeElement: findElement.setter('x'),
writeType: 'int',
operatorElement: elementMatcher(
- numElement.getMethod('+'),
+ numElement.getMethod('+')!,
isLegacy: isNullSafetySdkAndLegacyLibrary,
),
type: 'int',
@@ -518,7 +518,7 @@
writeElement: findElement.setter('y'),
writeType: 'int?',
operatorElement: elementMatcher(
- numElement.getMethod('+'),
+ numElement.getMethod('+')!,
isLegacy: isNullSafetySdkAndLegacyLibrary,
),
type: 'int',
@@ -560,7 +560,7 @@
writeElement: findElement.setter('x'),
writeType: 'int',
operatorElement: elementMatcher(
- numElement.getMethod('+'),
+ numElement.getMethod('+')!,
isLegacy: isNullSafetySdkAndLegacyLibrary,
),
type: 'int?',
@@ -573,7 +573,7 @@
writeElement: findElement.setter('x'),
writeType: 'int',
operatorElement: elementMatcher(
- numElement.getMethod('+'),
+ numElement.getMethod('+')!,
isLegacy: isNullSafetySdkAndLegacyLibrary,
),
type: 'int',
@@ -607,7 +607,7 @@
writeElement: findElement.parameter('x'),
writeType: 'int',
operatorElement: elementMatcher(
- numElement.getMethod('+'),
+ numElement.getMethod('+')!,
isLegacy: isNullSafetySdkAndLegacyLibrary,
),
type: 'int',
@@ -620,7 +620,7 @@
writeElement: findElement.parameter('y'),
writeType: 'int?',
operatorElement: elementMatcher(
- numElement.getMethod('+'),
+ numElement.getMethod('+')!,
isLegacy: isNullSafetySdkAndLegacyLibrary,
),
type: 'int',
@@ -1534,8 +1534,8 @@
]);
var propertyAccess1 = findNode.propertyAccess('x; // 1');
var propertyAccess2 = findNode.propertyAccess('x; // 2');
- PropertyAccess propertyAccess1t = propertyAccess1.target;
- PropertyAccess propertyAccess2t = propertyAccess1.target;
+ var propertyAccess1t = propertyAccess1.target as PropertyAccess;
+ var propertyAccess2t = propertyAccess1.target as PropertyAccess;
assertType(propertyAccess1t.target, 'B?');
assertType(propertyAccess2t.target, 'B?');
assertType(propertyAccess1t, 'A');
diff --git a/pkg/analyzer/test/src/fasta/ast_builder_test.dart b/pkg/analyzer/test/src/fasta/ast_builder_test.dart
index 356122e..be10148 100644
--- a/pkg/analyzer/test/src/fasta/ast_builder_test.dart
+++ b/pkg/analyzer/test/src/fasta/ast_builder_test.dart
@@ -25,10 +25,10 @@
''');
expect(unit, isNotNull);
expect(unit.declarations, hasLength(1));
- ClassDeclaration declaration = unit.declarations[0];
+ var declaration = unit.declarations[0] as ClassDeclaration;
expect(declaration, isNotNull);
expect(declaration.members, hasLength(1));
- ConstructorDeclaration member = declaration.members[0];
+ var member = declaration.members[0] as ConstructorDeclaration;
expect(member, isNotNull);
expect(member.factoryKeyword, isNotNull);
expect(member.name, isNull);
@@ -45,10 +45,10 @@
]);
expect(unit, isNotNull);
expect(unit.declarations, hasLength(1));
- ClassDeclaration declaration = unit.declarations[0];
+ var declaration = unit.declarations[0] as ClassDeclaration;
expect(declaration, isNotNull);
expect(declaration.members, hasLength(1));
- ConstructorDeclaration member = declaration.members[0];
+ var member = declaration.members[0] as ConstructorDeclaration;
expect(member, isNotNull);
expect(member.initializers, hasLength(1));
}
@@ -63,10 +63,10 @@
]);
expect(unit, isNotNull);
expect(unit.declarations, hasLength(1));
- ClassDeclaration declaration = unit.declarations[0];
+ var declaration = unit.declarations[0] as ClassDeclaration;
expect(declaration, isNotNull);
expect(declaration.members, hasLength(1));
- MethodDeclaration member = declaration.members[0];
+ var member = declaration.members[0] as MethodDeclaration;
expect(member, isNotNull);
expect(member.isGetter, isTrue);
expect(member.name.name, 'A');
diff --git a/pkg/analyzer/test/src/fasta/message_coverage_test.dart b/pkg/analyzer/test/src/fasta/message_coverage_test.dart
index 11f9a85..f21e632 100644
--- a/pkg/analyzer/test/src/fasta/message_coverage_test.dart
+++ b/pkg/analyzer/test/src/fasta/message_coverage_test.dart
@@ -68,7 +68,7 @@
for (String name in contents.keys) {
Object value = contents[name];
if (value is YamlMap) {
- String code = value['analyzerCode']?.toString();
+ var code = value['analyzerCode']?.toString();
if (code != null) {
codes.add(code);
}
@@ -83,21 +83,20 @@
List<String> getTranslatedCodes(String astBuilderPath) {
String content = io.File(astBuilderPath).readAsStringSync();
CompilationUnit unit = parseCompilationUnit(content);
- ClassDeclaration astBuilder = unit.declarations[0];
- expect(astBuilder, isNotNull);
- MethodDeclaration method = astBuilder.members.firstWhere(
- (x) => x is MethodDeclaration && x.name.name == 'reportMessage',
- orElse: () => null);
- expect(method, isNotNull);
+ var astBuilder = unit.declarations[0] as ClassDeclaration;
+ var method = astBuilder.members
+ .whereType<MethodDeclaration>()
+ .firstWhere((x) => x.name.name == 'reportMessage');
SwitchStatement statement = (method.body as BlockFunctionBody)
.block
.statements
- .firstWhere((x) => x is SwitchStatement, orElse: () => null);
+ .whereType<SwitchStatement>()
+ .first;
expect(statement, isNotNull);
List<String> codes = <String>[];
for (SwitchMember member in statement.members) {
if (member is SwitchCase) {
- codes.add((member.expression as StringLiteral).stringValue);
+ codes.add((member.expression as StringLiteral).stringValue!);
}
}
return codes;
diff --git a/pkg/analyzer/test/src/fasta/recovery/extra_code_test.dart b/pkg/analyzer/test/src/fasta/recovery/extra_code_test.dart
index 7130d73..9b95376 100644
--- a/pkg/analyzer/test/src/fasta/recovery/extra_code_test.dart
+++ b/pkg/analyzer/test/src/fasta/recovery/extra_code_test.dart
@@ -64,9 +64,8 @@
codes: [ParserErrorCode.GETTER_WITH_PARAMETERS]);
validateTokenStream(unit.beginToken);
- FunctionDeclaration g = unit.declarations.first;
- var parameters = g.functionExpression.parameters;
- expect(parameters, isNotNull);
+ var g = unit.declarations.first as FunctionDeclaration;
+ var parameters = g.functionExpression.parameters!;
expect(parameters.parameters, hasLength(1));
}
diff --git a/pkg/analyzer/test/src/fasta/recovery/partial_code/constructor_declaration_test.dart b/pkg/analyzer/test/src/fasta/recovery/partial_code/constructor_declaration_test.dart
index 8d7499d..cc830fb 100644
--- a/pkg/analyzer/test/src/fasta/recovery/partial_code/constructor_declaration_test.dart
+++ b/pkg/analyzer/test/src/fasta/recovery/partial_code/constructor_declaration_test.dart
@@ -114,8 +114,8 @@
}
CompilationUnit setSeparator(CompilationUnit unit) {
- ClassDeclaration declaration = unit.declarations[0];
- ConstructorDeclaration member = declaration.members[0];
+ var declaration = unit.declarations[0] as ClassDeclaration;
+ var member = declaration.members[0] as ConstructorDeclaration;
member.separator =
Token(TokenType.COLON, member.parameters.endToken.charOffset + 1);
return unit;
diff --git a/pkg/analyzer/test/src/fasta/recovery/partial_code/partial_code_support.dart b/pkg/analyzer/test/src/fasta/recovery/partial_code/partial_code_support.dart
index 9b357b4..8247907 100644
--- a/pkg/analyzer/test/src/fasta/recovery/partial_code/partial_code_support.dart
+++ b/pkg/analyzer/test/src/fasta/recovery/partial_code/partial_code_support.dart
@@ -98,10 +98,10 @@
/// `descriptors.length * (suffixes.length + 1)` tests generated.
buildTests(String groupName, List<TestDescriptor> descriptors,
List<TestSuffix> suffixes,
- {FeatureSet featureSet,
- String head,
+ {FeatureSet? featureSet,
+ String? head,
bool includeEof = true,
- String tail}) {
+ String? tail}) {
group(groupName, () {
for (TestDescriptor descriptor in descriptors) {
if (includeEof) {
@@ -116,7 +116,7 @@
}
if (descriptor.failing != null) {
test('${descriptor.name}_failingList', () {
- Set<String> failing = Set.from(descriptor.failing);
+ Set<String> failing = Set.from(descriptor.failing!);
if (includeEof) {
failing.remove('eof');
}
@@ -132,8 +132,8 @@
/// Build a single test based on the given [descriptor] and [suffix].
_buildTestForDescriptorAndSuffix(TestDescriptor descriptor, TestSuffix suffix,
- int suffixIndex, String head, String tail,
- {FeatureSet featureSet}) {
+ int suffixIndex, String? head, String? tail,
+ {FeatureSet? featureSet}) {
test('${descriptor.name}_${suffix.name}', () {
//
// Compose the invalid and valid pieces of code.
@@ -180,18 +180,18 @@
var expectedValidCodeErrors = <ErrorCode>[];
expectedValidCodeErrors.addAll(baseErrorCodes);
if (descriptor.expectedErrorsInValidCode != null) {
- expectedValidCodeErrors.addAll(descriptor.expectedErrorsInValidCode);
+ expectedValidCodeErrors.addAll(descriptor.expectedErrorsInValidCode!);
}
var expectedInvalidCodeErrors = <ErrorCode>[];
expectedInvalidCodeErrors.addAll(baseErrorCodes);
if (descriptor.errorCodes != null) {
- expectedInvalidCodeErrors.addAll(descriptor.errorCodes);
+ expectedInvalidCodeErrors.addAll(descriptor.errorCodes!);
}
//
// Run the test.
//
- List<String> failing = descriptor.failing;
+ var failing = descriptor.failing;
if (descriptor.allFailing ||
(failing != null && failing.contains(suffix.name))) {
bool failed = false;
@@ -229,25 +229,25 @@
final String invalid;
/// Error codes that the parser is expected to produce.
- final List<ErrorCode> errorCodes;
+ final List<ErrorCode>? errorCodes;
/// Valid code that is equivalent to what the parser should produce as part of
/// recovering from the invalid code.
final String valid;
/// Error codes that the parser is expected to produce in the valid code.
- final List<ErrorCode> expectedErrorsInValidCode;
+ final List<ErrorCode>? expectedErrorsInValidCode;
/// A flag indicating whether all of the tests are expected to fail.
final bool allFailing;
/// A list containing the names of the suffixes for which the test is expected
/// to fail.
- final List<String> failing;
+ final List<String>? failing;
/// A function that modifies the valid compilation unit before it is compared
/// with the invalid compilation unit, or `null` if no modification needed.
- AdjustValidUnitBeforeComparison adjustValidUnitBeforeComparison;
+ AdjustValidUnitBeforeComparison? adjustValidUnitBeforeComparison;
/// Initialize a newly created test descriptor.
TestDescriptor(this.name, this.invalid, this.errorCodes, this.valid,
diff --git a/pkg/analyzer/test/src/fasta/recovery/recovery_test_support.dart b/pkg/analyzer/test/src/fasta/recovery/recovery_test_support.dart
index a335ee4..61c070a 100644
--- a/pkg/analyzer/test/src/fasta/recovery/recovery_test_support.dart
+++ b/pkg/analyzer/test/src/fasta/recovery/recovery_test_support.dart
@@ -16,11 +16,11 @@
/// syntactic errors.
abstract class AbstractRecoveryTest extends FastaParserTestCase {
void testRecovery(
- String invalidCode, List<ErrorCode> errorCodes, String validCode,
- {CompilationUnit Function(CompilationUnit unit)
+ String invalidCode, List<ErrorCode>? errorCodes, String validCode,
+ {CompilationUnit Function(CompilationUnit unit)?
adjustValidUnitBeforeComparison,
- List<ErrorCode> expectedErrorsInValidCode,
- FeatureSet featureSet}) {
+ List<ErrorCode>? expectedErrorsInValidCode,
+ FeatureSet? featureSet}) {
CompilationUnit validUnit;
// Assert that the valid code is indeed valid.
@@ -57,7 +57,7 @@
void validateTokenStream(Token token) {
while (!token.isEof) {
- Token next = token.next;
+ Token next = token.next!;
expect(token.end, lessThanOrEqualTo(next.offset));
if (next.isSynthetic) {
if (const [')', ']', '}'].contains(next.lexeme)) {
@@ -86,7 +86,7 @@
}
@override
- bool failIfNotNull(Object first, Object second) {
+ bool failIfNotNull(Object? first, Object? second) {
if (second != null) {
StringBuffer buffer = StringBuffer();
buffer.write('Expected null; found a ');
@@ -100,7 +100,7 @@
}
@override
- bool failIsNull(Object first, Object second) {
+ bool failIsNull(Object first, Object? second) {
StringBuffer buffer = StringBuffer();
buffer.write('Expected a ');
buffer.write(first.runtimeType);
@@ -127,7 +127,7 @@
/// Overridden to allow the valid code to contain an explicit identifier where
/// a synthetic identifier is expected to be inserted by recovery.
@override
- bool isEqualNodes(AstNode first, AstNode second) {
+ bool isEqualNodes(AstNode? first, AstNode? second) {
if (first is SimpleIdentifier && second is SimpleIdentifier) {
if (first.isSynthetic && second.name == '_s_') {
return true;
@@ -143,7 +143,7 @@
(first.isSynthetic && first.type == second.type) ||
(first.length == second.length && first.lexeme == second.lexeme);
- void _safelyWriteNodePath(StringBuffer buffer, AstNode node) {
+ void _safelyWriteNodePath(StringBuffer buffer, AstNode? node) {
buffer.write(' path: ');
if (node == null) {
buffer.write(' null');
@@ -153,7 +153,7 @@
}
void _writeNodePath(StringBuffer buffer, AstNode node) {
- AstNode parent = node.parent;
+ var parent = node.parent;
if (parent != null) {
_writeNodePath(buffer, parent);
buffer.write(', ');
diff --git a/pkg/analyzer/test/src/fasta/token_utils_test.dart b/pkg/analyzer/test/src/fasta/token_utils_test.dart
index 8db705a..9fdc10e 100644
--- a/pkg/analyzer/test/src/fasta/token_utils_test.dart
+++ b/pkg/analyzer/test/src/fasta/token_utils_test.dart
@@ -18,15 +18,15 @@
void test_findPrevious() {
Token a =
scanString('a b c /* comment */ d e', includeComments: true).tokens;
- Token b = a.next;
- Token c = b.next;
- Token d = c.next;
- Token e = d.next;
+ Token b = a.next!;
+ Token c = b.next!;
+ Token d = c.next!;
+ Token e = d.next!;
expect(findPrevious(a, b), a);
expect(findPrevious(a, c), b);
expect(findPrevious(a, d), c);
- expect(findPrevious(d.precedingComments, e), d);
+ expect(findPrevious(d.precedingComments!, e), d);
Token x = scanString('x').tokens;
expect(findPrevious(a, x), null);
diff --git a/pkg/analyzer/test/src/lint/config_test.dart b/pkg/analyzer/test/src/lint/config_test.dart
index cf75cf2..793c42d 100644
--- a/pkg/analyzer/test/src/lint/config_test.dart
+++ b/pkg/analyzer/test/src/lint/config_test.dart
@@ -4,6 +4,7 @@
import 'package:analyzer/src/lint/config.dart';
import 'package:test/test.dart';
+import 'package:yaml/yaml.dart';
import '../util/yaml_test.dart';
@@ -80,7 +81,7 @@
unnecessary_getters: false #disable
camel_case_types: true #enable
''';
- var config = processAnalysisOptionsFile(src);
+ var config = processAnalysisOptionsFile(src)!;
var ruleNames = config.ruleConfigs.map((rc) => rc.name);
expect(ruleNames, hasLength(2));
expect(ruleNames, contains('unnecessary_getters'));
@@ -99,7 +100,7 @@
rules:
- camel_case_types
''';
- var config = processAnalysisOptionsFile(src);
+ var config = processAnalysisOptionsFile(src)!;
expect(config.ruleConfigs.length, 1);
// Verify that defaults are enabled.
expect(config.ruleConfigs[0].args['enabled'], isTrue);
@@ -116,10 +117,10 @@
camel_case_types: true #enable
unnecessary_getters: false #disable
''';
- var config = processAnalysisOptionsFile(src);
+ var config = processAnalysisOptionsFile(src)!;
var ruleConfigs = config.ruleConfigs.toList();
- ruleConfigs.sort(
- (RuleConfig rc1, RuleConfig rc2) => rc1.name.compareTo(rc2.name));
+ ruleConfigs.sort((RuleConfig rc1, RuleConfig rc2) =>
+ rc1.name!.compareTo(rc2.name!));
expect(ruleConfigs, hasLength(2));
expect(ruleConfigs[0].name, 'camel_case_types');
expect(ruleConfigs[0].args['enabled'], isTrue);
@@ -140,44 +141,48 @@
group('options processing', () {
group('raw maps', () {
+ LintConfig parseMap(Map<Object, Object?> map) {
+ return parseConfig(wrap(map) as YamlMap)!;
+ }
+
test('rule list', () {
- Map options = {};
+ var options = <Object, Object?>{};
var lintOptions = {
'rules': ['camel_case_types']
};
options['linter'] = lintOptions;
- var config = parseConfig(wrap(options));
+ var config = parseMap(options);
expect(config, isNotNull);
expect(config.ruleConfigs, hasLength(1));
});
test('rule map (bool)', () {
- Map options = {};
+ var options = <Object, Object?>{};
var lintOptions = {
'rules': {'camel_case_types': true}
};
options['linter'] = lintOptions;
- var config = parseConfig(wrap(options));
+ var config = parseMap(options);
expect(config, isNotNull);
expect(config.ruleConfigs, hasLength(1));
});
test('rule map (string)', () {
- Map options = {};
+ var options = <Object, Object?>{};
var lintOptions = {
'rules': {'camel_case_types': 'true'}
};
options['linter'] = lintOptions;
- var config = parseConfig(wrap(options));
+ var config = parseMap(options);
expect(config, isNotNull);
expect(config.ruleConfigs, hasLength(1));
});
test('nested rule map (bool)', () {
- Map options = {};
+ var options = <Object, Object?>{};
var lintOptions = {
'rules': {
'style_guide': {'camel_case_types': true}
@@ -185,13 +190,13 @@
};
options['linter'] = lintOptions;
- var config = parseConfig(wrap(options));
+ var config = parseMap(options);
expect(config, isNotNull);
expect(config.ruleConfigs, hasLength(1));
});
test('nested rule map (string)', () {
- Map options = {};
+ var options = <Object, Object?>{};
var lintOptions = {
'rules': {
'style_guide': {'camel_case_types': true}
@@ -199,7 +204,7 @@
};
options['linter'] = lintOptions;
- var config = parseConfig(wrap(options));
+ var config = parseMap(options);
expect(config, isNotNull);
expect(config.ruleConfigs, hasLength(1));
});
diff --git a/pkg/analyzer/test/src/lint/lint_rule_test.dart b/pkg/analyzer/test/src/lint/lint_rule_test.dart
index cca6a47..c6a04fb 100644
--- a/pkg/analyzer/test/src/lint/lint_rule_test.dart
+++ b/pkg/analyzer/test/src/lint/lint_rule_test.dart
@@ -67,26 +67,26 @@
correction: 'Implement `==`.');
class CollectingReporter extends ErrorReporter {
- ErrorCode code;
+ ErrorCode? code;
CollectingReporter(AnalysisErrorListener listener, Source source)
: super(listener, source, isNonNullableByDefault: false);
@override
void reportErrorForElement(ErrorCode errorCode, Element element,
- [List<Object> arguments]) {
+ [List<Object?>? arguments]) {
code = errorCode;
}
@override
void reportErrorForNode(ErrorCode errorCode, AstNode node,
- [List<Object> arguments]) {
+ [List<Object?>? arguments]) {
code = errorCode;
}
@override
void reportErrorForToken(ErrorCode errorCode, Token token,
- [List<Object> arguments]) {
+ [List<Object?>? arguments]) {
code = errorCode;
}
}
diff --git a/pkg/analyzer/test/src/lint/linter/linter_context_impl_test.dart b/pkg/analyzer/test/src/lint/linter/linter_context_impl_test.dart
index 003906c..d70792b 100644
--- a/pkg/analyzer/test/src/lint/linter/linter_context_impl_test.dart
+++ b/pkg/analyzer/test/src/lint/linter/linter_context_impl_test.dart
@@ -4,6 +4,7 @@
import 'package:analyzer/src/context/builder.dart';
import 'package:analyzer/src/dart/element/inheritance_manager3.dart';
+import 'package:analyzer/src/dart/element/type_system.dart';
import 'package:analyzer/src/lint/linter.dart';
import 'package:analyzer/src/workspace/pub.dart';
import 'package:test/test.dart';
@@ -23,11 +24,11 @@
@reflectiveTest
abstract class AbstractLinterContextTest extends PubPackageResolutionTest {
- LinterContextImpl context;
+ late final LinterContextImpl context;
Future<void> resolve(String content) async {
await resolveTestCode(content);
- var contextUnit = LinterContextUnit(result.content, result.unit);
+ var contextUnit = LinterContextUnit(result.content!, result.unit!);
final libraryPath = result.libraryElement.source.fullName;
final builder = ContextBuilder(
@@ -42,7 +43,7 @@
contextUnit,
result.session.declaredVariables,
result.typeProvider,
- result.typeSystem,
+ result.typeSystem as TypeSystemImpl,
InheritanceManager3(),
analysisOptions,
// todo (pq): test package or consider passing in null
@@ -54,7 +55,7 @@
@reflectiveTest
class CanBeConstConstructorTest extends AbstractLinterContextTest {
@override
- LinterContextImpl context;
+ late final LinterContextImpl context;
void assertCanBeConstConstructor(String search, bool expectedResult) {
var constructor = findNode.constructor(search);
@@ -440,7 +441,7 @@
''');
var result = _evaluateX();
expect(result.errors, isEmpty);
- expect(result.value.toIntValue(), 3);
+ expect(result.value!.toIntValue(), 3);
}
test_hasValue_intLiteral() async {
@@ -449,11 +450,11 @@
''');
var result = _evaluateX();
expect(result.errors, isEmpty);
- expect(result.value.toIntValue(), 42);
+ expect(result.value!.toIntValue(), 42);
}
LinterConstantEvaluationResult _evaluateX() {
- var node = findNode.topVariableDeclarationByName('x').initializer;
+ var node = findNode.topVariableDeclarationByName('x').initializer!;
return context.evaluateConstant(node);
}
}
@@ -475,14 +476,14 @@
expect(context.package, TypeMatcher<PubWorkspacePackage>());
final pubPackage = context.package as PubWorkspacePackage;
- final pubspec = pubPackage.pubspec;
+ final pubspec = pubPackage.pubspec!;
- final argsDep = pubspec.dependencies
- .singleWhere((element) => element.name.text == 'args');
- expect(argsDep.version.value.text, '>=0.12.1 <2.0.0');
+ final argsDep = pubspec.dependencies!
+ .singleWhere((element) => element.name!.text == 'args');
+ expect(argsDep.version!.value.text, '>=0.12.1 <2.0.0');
- final charCodeDep = pubspec.dependencies
- .singleWhere((element) => element.name.text == 'charcode');
- expect(charCodeDep.version.value.text, '^1.1.0');
+ final charCodeDep = pubspec.dependencies!
+ .singleWhere((element) => element.name!.text == 'charcode');
+ expect(charCodeDep.version!.value.text, '^1.1.0');
}
}
diff --git a/pkg/analyzer/test/src/lint/project_test.dart b/pkg/analyzer/test/src/lint/project_test.dart
index 1c67dfb..00e6361 100644
--- a/pkg/analyzer/test/src/lint/project_test.dart
+++ b/pkg/analyzer/test/src/lint/project_test.dart
@@ -4,6 +4,7 @@
import 'dart:io';
+import 'package:analyzer/src/dart/analysis/driver.dart';
import 'package:analyzer/src/lint/project.dart';
import 'package:test/test.dart';
@@ -17,7 +18,7 @@
// TODO(brianwilkerson) These tests fail on the bots because the cwd is
// not the same there as when we run tests locally.
group('cwd', () async {
- var project = await DartProject.create(null, null);
+ var project = await DartProject.create(_AnalysisDriverMock(), []);
test('name', () {
expect(project.name, 'analyzer');
});
@@ -59,3 +60,8 @@
});
});
}
+
+class _AnalysisDriverMock implements AnalysisDriver {
+ @override
+ noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
+}
diff --git a/pkg/analyzer/test/src/lint/pub_test.dart b/pkg/analyzer/test/src/lint/pub_test.dart
index da528d9..4e71879 100644
--- a/pkg/analyzer/test/src/lint/pub_test.dart
+++ b/pkg/analyzer/test/src/lint/pub_test.dart
@@ -60,7 +60,7 @@
testValueSpan('name', ps.name, startOffset: 6, endOffset: 12);
group('documentation', () {
test('no value', () {
- expect(ps.documentation.value.text, isNull);
+ expect(ps.documentation!.value.text, isNull);
});
});
testValue('homepage', ps.homepage,
@@ -71,7 +71,7 @@
testValue('author', ps.author, equals('Dart Team <misc@dartlang.org>'));
group('authors', () {
- PSNodeList authors = ps.authors;
+ PSNodeList authors = ps.authors!;
test('contents', () {
expect(authors, isNotNull);
expect(authors.any((PSNode n) => n.text == 'Bill'), isTrue);
@@ -94,14 +94,14 @@
group('path', () {
PSDependency dep =
findDependency(ps.dependencies, name: 'relative_path');
- PSEntry depPath = dep.path;
+ PSEntry depPath = dep.path!;
testValue('path', depPath, equals('../somewhere'));
});
group('hosted', () {
PSDependency dep =
findDependency(ps.dependencies, name: 'transmogrify');
- PSHost host = dep.host;
+ PSHost host = dep.host!;
testValue('name', host.name, equals('transmogrify'));
testValue('url', host.url, equals('http://your-package-server.com'));
testKeySpan('name', host.name, startOffset: 237, endOffset: 241);
@@ -110,7 +110,7 @@
group('git', () {
PSDependency dep = findDependency(ps.dependencies, name: 'kittens');
- PSGitRepo git = dep.git;
+ PSGitRepo git = dep.git!;
testValue('ref', git.ref, equals('some-branch'));
testValue(
'url', git.url, equals('git://github.com/munificent/kittens.git'));
@@ -155,17 +155,17 @@
});
}
-PSDependency findDependency(PSDependencyList deps, {String name}) =>
- deps.firstWhere((dep) => dep.name.text == name, orElse: () => null);
+PSDependency findDependency(PSDependencyList? deps, {String? name}) =>
+ deps!.firstWhere((dep) => dep.name!.text == name);
testDepListContains(
- String label, PSDependencyList list, List<Map<String, String>> exp) {
+ String label, PSDependencyList? list, List<Map<String, String>> exp) {
test(label, () {
exp.forEach((Map<String, String> entry) {
entry.forEach((k, v) {
PSDependency dep = findDependency(list, name: k);
expect(dep, isNotNull);
- expect(dep.version.value.text, equals(v));
+ expect(dep.version!.value.text, equals(v));
});
});
});
@@ -179,15 +179,15 @@
});
}
-testKeySpan(String label, PSEntry node, {int startOffset, int endOffset}) {
+testKeySpan(String label, PSEntry? node, {int? startOffset, int? endOffset}) {
group(label, () {
group('key', () {
- testSpan(node.key.span, startOffset: startOffset, endOffset: endOffset);
+ testSpan(node!.key!.span, startOffset: startOffset, endOffset: endOffset);
});
});
}
-testSpan(SourceSpan span, {int startOffset, int endOffset}) {
+testSpan(SourceSpan span, {int? startOffset, int? endOffset}) {
test('span', () {
var start = span.start;
expect(start, isNotNull);
@@ -198,18 +198,19 @@
});
}
-testValue(String label, PSEntry node, Matcher m) {
+testValue(String label, PSEntry? node, Matcher m) {
group(label, () {
test('value', () {
- expect(node.value.text, m);
+ expect(node!.value.text, m);
});
});
}
-testValueSpan(String label, PSEntry node, {int startOffset, int endOffset}) {
+testValueSpan(String label, PSEntry? node, {int? startOffset, int? endOffset}) {
group(label, () {
group('value', () {
- testSpan(node.value.span, startOffset: startOffset, endOffset: endOffset);
+ testSpan(node!.value.span,
+ startOffset: startOffset, endOffset: endOffset);
});
});
}
diff --git a/pkg/analyzer/test/src/manifest/manifest_validator_test.dart b/pkg/analyzer/test/src/manifest/manifest_validator_test.dart
index 4f2dce2..a3f0cc1 100644
--- a/pkg/analyzer/test/src/manifest/manifest_validator_test.dart
+++ b/pkg/analyzer/test/src/manifest/manifest_validator_test.dart
@@ -55,7 +55,7 @@
result = parser.parseXmlTag();
expect(result.parseResult, ParseResult.relevantElement);
- expect(result.element.name, MANIFEST_TAG);
+ expect(result.element!.name, MANIFEST_TAG);
}
void test_emptyFileDoesNotCrash() {
@@ -151,7 +151,7 @@
void test_manifestTag_attributeWithEmptyValue_emptyElement_isParsed() {
var parser = ManifestParser('<manifest xmlns:android=""/>', _manifestUri);
var result = parser.parseXmlTag();
- expect(result.element.name, MANIFEST_TAG);
+ expect(result.element!.name, MANIFEST_TAG);
}
void test_manifestTag_emptyElement_isParsed() {
@@ -160,21 +160,21 @@
''', _manifestUri);
var result = parser.parseXmlTag();
expect(result.parseResult, ParseResult.relevantElement);
- expect(result.element.name, MANIFEST_TAG);
+ expect(result.element!.name, MANIFEST_TAG);
}
void test_manifestTag_emptyElement_noAttributes_isParsed() {
var parser = ManifestParser('<manifest/>', _manifestUri);
var result = parser.parseXmlTag();
expect(result.parseResult, ParseResult.relevantElement);
- expect(result.element.name, MANIFEST_TAG);
+ expect(result.element!.name, MANIFEST_TAG);
}
void test_manifestTag_emptyElement_noAttributes_whitespace_isParsed() {
var parser = ManifestParser('<manifest />', _manifestUri);
var result = parser.parseXmlTag();
expect(result.parseResult, ParseResult.relevantElement);
- expect(result.element.name, MANIFEST_TAG);
+ expect(result.element!.name, MANIFEST_TAG);
}
void test_manifestTag_emptyElement_whitespace_isParsed() {
@@ -183,7 +183,7 @@
''', _manifestUri);
var result = parser.parseXmlTag();
expect(result.parseResult, ParseResult.relevantElement);
- expect(result.element.name, MANIFEST_TAG);
+ expect(result.element!.name, MANIFEST_TAG);
}
void test_manifestTag_isParsed() {
@@ -193,7 +193,7 @@
''', _manifestUri);
var result = parser.parseXmlTag();
expect(result.parseResult, ParseResult.relevantElement);
- expect(result.element.name, MANIFEST_TAG);
+ expect(result.element!.name, MANIFEST_TAG);
}
void test_manifestTag_uppercase_isParsed() {
@@ -203,7 +203,7 @@
''', _manifestUri);
var result = parser.parseXmlTag();
expect(result.parseResult, ParseResult.relevantElement);
- expect(result.element.name, MANIFEST_TAG);
+ expect(result.element!.name, MANIFEST_TAG);
}
void test_manifestTag_withDoctype_isParsed() {
@@ -218,7 +218,7 @@
result = parser.parseXmlTag();
expect(result.parseResult, ParseResult.relevantElement);
- expect(result.element.name, MANIFEST_TAG);
+ expect(result.element!.name, MANIFEST_TAG);
}
void test_manifestTag_withFeatures_isParsed() {
@@ -230,21 +230,21 @@
</manifest>
''', _manifestUri);
var result = parser.parseXmlTag();
- expect(result.element.name, MANIFEST_TAG);
- var children = result.element.children;
+ expect(result.element!.name, MANIFEST_TAG);
+ var children = result.element!.children;
expect(children, hasLength(2));
expect(children[0].name, equals(USES_FEATURE_TAG));
var touchscreenAttributes = children[0].attributes;
expect(touchscreenAttributes, hasLength(2));
- expect(touchscreenAttributes[ANDROID_NAME].value,
+ expect(touchscreenAttributes[ANDROID_NAME]!.value,
equals(HARDWARE_FEATURE_TOUCHSCREEN));
- expect(touchscreenAttributes[ANDROID_REQUIRED].value, equals('false'));
+ expect(touchscreenAttributes[ANDROID_REQUIRED]!.value, equals('false'));
expect(children[1].name, equals(USES_FEATURE_TAG));
var homeScreenAttributes = children[1].attributes;
expect(homeScreenAttributes, hasLength(1));
- expect(homeScreenAttributes[ANDROID_NAME].value,
+ expect(homeScreenAttributes[ANDROID_NAME]!.value,
equals('android.software.home_screen'));
}
@@ -256,7 +256,7 @@
''', _manifestUri);
var result = parser.parseXmlTag();
expect(result.parseResult, ParseResult.relevantElement);
- expect(result.element.name, MANIFEST_TAG);
+ expect(result.element!.name, MANIFEST_TAG);
}
void test_manifestTag_withSurroundingText_isParsed() {
@@ -268,7 +268,7 @@
''', _manifestUri);
var result = parser.parseXmlTag();
expect(result.parseResult, ParseResult.relevantElement);
- expect(result.element.name, MANIFEST_TAG);
+ expect(result.element!.name, MANIFEST_TAG);
}
void test_manifestTag_withXmlTag_isParsed() {
@@ -283,7 +283,7 @@
result = parser.parseXmlTag();
expect(result.parseResult, ParseResult.relevantElement);
- expect(result.element.name, MANIFEST_TAG);
+ expect(result.element!.name, MANIFEST_TAG);
}
void test_outsideTagClosedBeforeInside() {
@@ -297,10 +297,9 @@
var parser =
ManifestParser('<manifest aaa="bbb"></manifest>', _manifestUri);
var result = parser.parseXmlTag();
- expect(result.element.name, MANIFEST_TAG);
- expect(result.element.attributes, hasLength(1));
- var attribute = result.element.attributes['aaa'];
- expect(attribute, isNotNull);
+ expect(result.element!.name, MANIFEST_TAG);
+ expect(result.element!.attributes, hasLength(1));
+ var attribute = result.element!.attributes['aaa']!;
expect(attribute.name, equals('aaa'));
expect(attribute.value, equals('bbb'));
var sourceSpan = attribute.sourceSpan;
@@ -312,10 +311,9 @@
var parser =
ManifestParser('<manifest aaa="b\'b\'b"></manifest>', _manifestUri);
var result = parser.parseXmlTag();
- expect(result.element.name, MANIFEST_TAG);
- expect(result.element.attributes, hasLength(1));
- var attribute = result.element.attributes['aaa'];
- expect(attribute, isNotNull);
+ expect(result.element!.name, MANIFEST_TAG);
+ expect(result.element!.attributes, hasLength(1));
+ var attribute = result.element!.attributes['aaa']!;
expect(attribute.name, equals('aaa'));
expect(attribute.value, equals("b'b'b"));
var sourceSpan = attribute.sourceSpan;
@@ -326,10 +324,9 @@
void test_relevantTag_attributeIsParsed_emptyValue() {
var parser = ManifestParser('<manifest aaa=""></manifest>', _manifestUri);
var result = parser.parseXmlTag();
- expect(result.element.name, MANIFEST_TAG);
- expect(result.element.attributes, hasLength(1));
- var attribute = result.element.attributes['aaa'];
- expect(attribute, isNotNull);
+ expect(result.element!.name, MANIFEST_TAG);
+ expect(result.element!.attributes, hasLength(1));
+ var attribute = result.element!.attributes['aaa']!;
expect(attribute.name, equals('aaa'));
expect(attribute.value, equals(''));
var sourceSpan = attribute.sourceSpan;
@@ -341,10 +338,9 @@
var parser =
ManifestParser("<manifest aaa='bbb'></manifest>", _manifestUri);
var result = parser.parseXmlTag();
- expect(result.element.name, MANIFEST_TAG);
- expect(result.element.attributes, hasLength(1));
- var attribute = result.element.attributes['aaa'];
- expect(attribute, isNotNull);
+ expect(result.element!.name, MANIFEST_TAG);
+ expect(result.element!.attributes, hasLength(1));
+ var attribute = result.element!.attributes['aaa']!;
expect(attribute.name, equals('aaa'));
expect(attribute.value, equals('bbb'));
var sourceSpan = attribute.sourceSpan;
@@ -356,10 +352,9 @@
var parser =
ManifestParser('<manifest AAA="bbb"></manifest>', _manifestUri);
var result = parser.parseXmlTag();
- expect(result.element.name, MANIFEST_TAG);
- expect(result.element.attributes, hasLength(1));
- var attribute = result.element.attributes['aaa'];
- expect(attribute, isNotNull);
+ expect(result.element!.name, MANIFEST_TAG);
+ expect(result.element!.attributes, hasLength(1));
+ var attribute = result.element!.attributes['aaa']!;
expect(attribute.name, equals('aaa'));
expect(attribute.value, equals('bbb'));
}
@@ -368,18 +363,17 @@
var parser =
ManifestParser('<manifest xmlns:android=""></manifest>', _manifestUri);
var result = parser.parseXmlTag();
- expect(result.element.name, MANIFEST_TAG);
- expect(result.element.attributes, hasLength(1));
- var attribute = result.element.attributes['xmlns:android'];
- expect(attribute, isNotNull);
+ expect(result.element!.name, MANIFEST_TAG);
+ expect(result.element!.attributes, hasLength(1));
+ var attribute = result.element!.attributes['xmlns:android']!;
expect(attribute.value, equals(''));
}
void test_relevantTag_emptyElement_nameIsParsed() {
var parser = ManifestParser('<manifest/>', _manifestUri);
var result = parser.parseXmlTag();
- expect(result.element.name, MANIFEST_TAG);
- var sourceSpan = result.element.sourceSpan;
+ expect(result.element!.name, MANIFEST_TAG);
+ var sourceSpan = result.element!.sourceSpan!;
expect(sourceSpan.start.offset, equals(0));
expect(sourceSpan.end.offset, equals(10));
}
@@ -387,8 +381,8 @@
void test_relevantTag_emptyElement_whitespace_nameIsParsed() {
var parser = ManifestParser('<manifest />', _manifestUri);
var result = parser.parseXmlTag();
- expect(result.element.name, MANIFEST_TAG);
- var sourceSpan = result.element.sourceSpan;
+ expect(result.element!.name, MANIFEST_TAG);
+ var sourceSpan = result.element!.sourceSpan!;
expect(sourceSpan.start.offset, equals(0));
expect(sourceSpan.end.offset, equals(11));
}
@@ -396,8 +390,8 @@
void test_relevantTag_withAttributes_emptyElement_nameIsParsed() {
var parser = ManifestParser('<manifest aaa="bbb" />', _manifestUri);
var result = parser.parseXmlTag();
- expect(result.element.name, MANIFEST_TAG);
- var sourceSpan = result.element.sourceSpan;
+ expect(result.element!.name, MANIFEST_TAG);
+ var sourceSpan = result.element!.sourceSpan!;
expect(sourceSpan.start.offset, equals(0));
expect(sourceSpan.end.offset, equals(21));
}
@@ -406,8 +400,8 @@
var parser =
ManifestParser('<manifest aaa="bbb"></manifest>', _manifestUri);
var result = parser.parseXmlTag();
- expect(result.element.name, MANIFEST_TAG);
- var sourceSpan = result.element.sourceSpan;
+ expect(result.element!.name, MANIFEST_TAG);
+ var sourceSpan = result.element!.sourceSpan!;
expect(sourceSpan.start.offset, equals(0));
expect(sourceSpan.end.offset, equals(30));
}
@@ -421,7 +415,7 @@
@reflectiveTest
class ManifestValidatorTest with ResourceProviderMixin {
- ManifestValidator validator;
+ late final ManifestValidator validator;
/// Assert that when the validator is used on the given [content] the
/// [expectedErrorCodes] are produced.
diff --git a/pkg/analyzer/test/src/options/options_rule_validator_test.dart b/pkg/analyzer/test/src/options/options_rule_validator_test.dart
index 2c04a4e..506b2b6 100644
--- a/pkg/analyzer/test/src/options/options_rule_validator_test.dart
+++ b/pkg/analyzer/test/src/options/options_rule_validator_test.dart
@@ -22,9 +22,12 @@
class DeprecatedLint extends LintRule {
DeprecatedLint()
: super(
- name: 'deprecated_lint',
- group: Group.style,
- maturity: Maturity.deprecated);
+ name: 'deprecated_lint',
+ group: Group.style,
+ maturity: Maturity.deprecated,
+ description: '',
+ details: '',
+ );
}
@reflectiveTest
@@ -41,7 +44,7 @@
StringSource(content, 'analysis_options.yaml'),
isNonNullableByDefault: false,
);
- validator.validate(reporter, loadYamlNode(content));
+ validator.validate(reporter, loadYamlNode(content) as YamlMap);
listener.assertErrorsWithCodes(expectedErrorCodes);
}
@@ -89,13 +92,25 @@
}
class RuleNeg extends LintRule {
- RuleNeg() : super(name: 'rule_neg', group: Group.style);
+ RuleNeg()
+ : super(
+ name: 'rule_neg',
+ group: Group.style,
+ description: '',
+ details: '',
+ );
@override
List<String> get incompatibleRules => ['rule_pos'];
}
class RulePos extends LintRule {
- RulePos() : super(name: 'rule_pos', group: Group.style);
+ RulePos()
+ : super(
+ name: 'rule_pos',
+ group: Group.style,
+ description: '',
+ details: '',
+ );
@override
List<String> get incompatibleRules => ['rule_neg'];
}
@@ -103,5 +118,10 @@
class StableLint extends LintRule {
StableLint()
: super(
- name: 'stable_lint', group: Group.style, maturity: Maturity.stable);
+ name: 'stable_lint',
+ group: Group.style,
+ maturity: Maturity.stable,
+ description: '',
+ details: '',
+ );
}
diff --git a/pkg/analyzer/test/src/pubspec/pubspec_validator_test.dart b/pkg/analyzer/test/src/pubspec/pubspec_validator_test.dart
index e815d5e..7e2437f 100644
--- a/pkg/analyzer/test/src/pubspec/pubspec_validator_test.dart
+++ b/pkg/analyzer/test/src/pubspec/pubspec_validator_test.dart
@@ -21,7 +21,7 @@
@reflectiveTest
class PubspecValidatorTest with ResourceProviderMixin {
- PubspecValidator validator;
+ late final PubspecValidator validator;
/// Assert that when the validator is used on the given [content] the
/// [expectedErrorCodes] are produced.
@@ -31,7 +31,7 @@
// The file is empty.
node = YamlMap();
}
- List<AnalysisError> errors = validator.validate((node as YamlMap).nodes);
+ List<AnalysisError> errors = validator.validate(node.nodes);
GatheringErrorListener listener = GatheringErrorListener();
listener.addAll(errors);
listener.assertErrorsWithCodes(expectedErrorCodes);
diff --git a/pkg/analyzer/test/src/services/available_declarations_test.dart b/pkg/analyzer/test/src/services/available_declarations_test.dart
index 0b22124..752bf6d 100644
--- a/pkg/analyzer/test/src/services/available_declarations_test.dart
+++ b/pkg/analyzer/test/src/services/available_declarations_test.dart
@@ -7,12 +7,10 @@
import 'package:analyzer/file_system/file_system.dart';
import 'package:analyzer/src/dart/analysis/analysis_context_collection.dart';
import 'package:analyzer/src/dart/analysis/byte_store.dart';
-import 'package:analyzer/src/dart/analysis/driver_based_analysis_context.dart';
import 'package:analyzer/src/dart/analysis/experiments.dart';
import 'package:analyzer/src/services/available_declarations.dart';
import 'package:analyzer/src/test_utilities/mock_sdk.dart';
import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart';
-import 'package:meta/meta.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -30,9 +28,9 @@
class AbstractContextTest with ResourceProviderMixin {
final byteStore = MemoryByteStore();
- AnalysisContextCollection analysisContextCollection;
+ late AnalysisContextCollection analysisContextCollection;
- AnalysisContext testAnalysisContext;
+ late AnalysisContext testAnalysisContext;
/// The file system specific `/home/test/analysis_options.yaml` path.
String get analysisOptionsPath =>
@@ -78,7 +76,7 @@
}
/// Create an analysis options file based on the given arguments.
- void createAnalysisOptionsFile({List<String> experiments}) {
+ void createAnalysisOptionsFile({List<String>? experiments}) {
var buffer = StringBuffer();
if (experiments != null) {
buffer.writeln('analyzer:');
@@ -89,9 +87,7 @@
}
newFile(analysisOptionsPath, content: buffer.toString());
- if (analysisContextCollection != null) {
- createAnalysisContexts();
- }
+ createAnalysisContexts();
}
/// Return the existing analysis context that should be used to analyze the
@@ -195,8 +191,8 @@
await _doAllTrackerWork();
- var id = uriToLibrary['package:test/test.dart'].id;
- var library = tracker.getLibrary(id);
+ var id = uriToLibrary['package:test/test.dart']!.id;
+ var library = tracker.getLibrary(id)!;
expect(library.id, id);
expect(library.uriStr, 'package:test/test.dart');
}
@@ -210,8 +206,8 @@
await _doAllTrackerWork();
- var id = uriToLibrary['package:test/a.dart'].id;
- var library = tracker.getLibrary(id);
+ var id = uriToLibrary['package:test/a.dart']!.id;
+ var library = tracker.getLibrary(id)!;
expect(library.id, id);
}
@@ -229,8 +225,8 @@
await _doAllTrackerWork();
- var id = uriToLibrary['package:test/a.dart'].id;
- var library = tracker.getLibrary(id);
+ var id = uriToLibrary['package:test/a.dart']!.id;
+ var library = tracker.getLibrary(id)!;
expect(library.id, id);
}
@@ -1172,14 +1168,13 @@
createAnalysisContexts();
- DriverBasedAnalysisContext context =
- analysisContextCollection.contextFor(file.path);
+ var context = analysisContextCollection.contextFor(file.path);
tracker.addContext(context);
await _doAllTrackerWork();
- String result =
- tracker.getContext(context).dartdocDirectiveInfo.processDartdoc('''
+ var declarationsContext = tracker.getContext(context)!;
+ var result = declarationsContext.dartdocDirectiveInfo.processDartdoc('''
/// Before macro.
/// {@macro foo}
/// After macro.''');
@@ -2294,9 +2289,9 @@
await _doAllTrackerWork();
- expect(uriToLibrary['package:test/a.dart'].isDeprecated, isFalse);
- expect(uriToLibrary['package:test/b.dart'].isDeprecated, isTrue);
- expect(uriToLibrary['package:test/c.dart'].isDeprecated, isTrue);
+ expect(uriToLibrary['package:test/a.dart']!.isDeprecated, isFalse);
+ expect(uriToLibrary['package:test/b.dart']!.isDeprecated, isTrue);
+ expect(uriToLibrary['package:test/c.dart']!.isDeprecated, isTrue);
}
test_library_partDirective_empty() async {
@@ -3530,7 +3525,7 @@
}
static void _assertHasLibraries(List<Library> libraries,
- {@required List<String> uriList, bool only = false}) {
+ {required List<String> uriList, bool only = false}) {
var actualUriList = libraries.map((lib) => lib.uriStr).toList();
if (only) {
expect(actualUriList, unorderedEquals(uriList));
@@ -3548,7 +3543,7 @@
}
class _Base extends AbstractContextTest {
- DeclarationsTracker tracker;
+ late DeclarationsTracker tracker;
final List<LibraryChange> changes = [];
@@ -3565,26 +3560,26 @@
Declaration declaration,
String name,
DeclarationKind kind, {
- String defaultArgumentListString,
- List<int> defaultArgumentListTextRanges,
- String docComplete,
- String docSummary,
+ String? defaultArgumentListString,
+ List<int>? defaultArgumentListTextRanges,
+ String? docComplete,
+ String? docSummary,
bool isAbstract = false,
bool isConst = false,
bool isDeprecated = false,
bool isFinal = false,
bool isStatic = false,
- int locationOffset,
- String locationPath,
- int locationStartColumn,
- int locationStartLine,
- String parameters,
- List<String> parameterNames,
- List<String> parameterTypes,
- List<String> relevanceTags,
- int requiredParameterCount,
- String returnType,
- String typeParameters,
+ int? locationOffset,
+ String? locationPath,
+ int? locationStartColumn,
+ int? locationStartLine,
+ String? parameters,
+ List<String>? parameterNames,
+ List<String>? parameterTypes,
+ List<String>? relevanceTags,
+ int? requiredParameterCount,
+ String? returnType,
+ String? typeParameters,
}) {
expect(declaration.defaultArgumentListString, defaultArgumentListString);
expect(
@@ -3636,9 +3631,8 @@
/// If [declarations] provided, also checks that the library has exactly
/// these declarations.
void _assertHasLibrary(String uri,
- {List<_ExpectedDeclaration> declarations}) {
- var library = uriToLibrary[uri];
- expect(library, isNotNull);
+ {List<_ExpectedDeclaration>? declarations}) {
+ var library = uriToLibrary[uri]!;
if (declarations != null) {
expect(library.declarations, hasLength(declarations.length));
for (var expected in declarations) {
@@ -3690,9 +3684,7 @@
}
Library _getLibrary(String uriStr) {
- var library = uriToLibrary[uriStr];
- expect(library, isNotNull);
- return library;
+ return uriToLibrary[uriStr]!;
}
}
diff --git a/pkg/analyzer/test/src/source/source_resource_test.dart b/pkg/analyzer/test/src/source/source_resource_test.dart
index 5e6f3ec..0dc63d4 100644
--- a/pkg/analyzer/test/src/source/source_resource_test.dart
+++ b/pkg/analyzer/test/src/source/source_resource_test.dart
@@ -32,7 +32,7 @@
void test_equals_false_null() {
File file = getFile("/does/not/exist1.dart");
FileSource source1 = FileSource(file);
- expect(source1 == null, isFalse);
+ expect(source1, isNotNull);
}
void test_equals_true() {
@@ -87,12 +87,10 @@
UriResolver resolver = DartUriResolver(sdk);
SourceFactory factory = SourceFactory([resolver]);
// resolve dart:core
- Source result = resolver.resolveAbsolute(Uri.parse("dart:async"));
- expect(result, isNotNull);
+ Source result = resolver.resolveAbsolute(Uri.parse("dart:async"))!;
expect(result.isInSystemLibrary, isTrue);
// system libraries reference only other system libraries
- Source partSource = factory.resolveUri(result, "stream.dart");
- expect(partSource, isNotNull);
+ Source partSource = factory.resolveUri(result, "stream.dart")!;
expect(partSource.isInSystemLibrary, isTrue);
}
diff --git a/pkg/analyzer/test/src/summary/element_text.dart b/pkg/analyzer/test/src/summary/element_text.dart
index b4af040..69609aa 100644
--- a/pkg/analyzer/test/src/summary/element_text.dart
+++ b/pkg/analyzer/test/src/summary/element_text.dart
@@ -12,33 +12,32 @@
import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/task/inference_error.dart';
-import 'package:meta/meta.dart';
import 'package:test/test.dart';
import 'resolved_ast_printer.dart';
/// Set this path to automatically replace expectations in invocations of
/// [checkElementText] with the new actual texts.
-const String _testPath = null;
+const String? _testPath = null;
/// The list of replacements that update expectations.
final List<_Replacement> _replacements = [];
/// The cached content of the file with the [_testPath].
-String _testCode;
+String? _testCode;
/// The cache line information for the [_testPath] file.
-LineInfo _testCodeLines;
+LineInfo? _testCodeLines;
void applyCheckElementTextReplacements() {
if (_testPath != null && _replacements.isNotEmpty) {
_replacements.sort((a, b) => b.offset - a.offset);
- String newCode = _testCode;
+ String newCode = _testCode!;
_replacements.forEach((r) {
newCode =
newCode.substring(0, r.offset) + r.text + newCode.substring(r.end);
});
- File(_testPath).writeAsStringSync(newCode);
+ File(_testPath!).writeAsStringSync(newCode);
}
}
@@ -78,8 +77,8 @@
if (_testPath != null && actualText != expected) {
if (_testCode == null) {
- _testCode = File(_testPath).readAsStringSync();
- _testCodeLines = LineInfo.fromContent(_testCode);
+ _testCode = File(_testPath!).readAsStringSync();
+ _testCodeLines = LineInfo.fromContent(_testCode!);
}
try {
@@ -90,27 +89,28 @@
// Assuming traceString contains "$_testPath:$invocationLine:$column",
// figure out the value of invocationLine.
- int testFilePathOffset = traceString.indexOf(_testPath);
+ int testFilePathOffset = traceString.indexOf(_testPath!);
expect(testFilePathOffset, isNonNegative);
// Sanity check: there must be ':' after the path.
- expect(traceString[testFilePathOffset + _testPath.length], ':');
+ expect(traceString[testFilePathOffset + _testPath!.length], ':');
- int lineOffset = testFilePathOffset + _testPath.length + ':'.length;
+ int lineOffset = testFilePathOffset + _testPath!.length + ':'.length;
int invocationLine = int.parse(traceString.substring(
lineOffset, traceString.indexOf(':', lineOffset)));
- int invocationOffset = _testCodeLines.getOffsetOfLine(invocationLine - 1);
+ int invocationOffset =
+ _testCodeLines!.getOffsetOfLine(invocationLine - 1);
const String rawStringPrefix = "r'''";
int expectationOffset =
- _testCode.indexOf(rawStringPrefix, invocationOffset);
+ _testCode!.indexOf(rawStringPrefix, invocationOffset);
// Sanity check: there must be no other strings or blocks.
- expect(_testCode.substring(invocationOffset, expectationOffset),
+ expect(_testCode!.substring(invocationOffset, expectationOffset),
isNot(anyOf(contains("'"), contains('"'), contains('}'))));
expectationOffset += rawStringPrefix.length;
- int expectationEnd = _testCode.indexOf("'''", expectationOffset);
+ int expectationEnd = _testCode!.indexOf("'''", expectationOffset);
_replacements.add(
_Replacement(expectationOffset, expectationEnd, '\n' + actualText));
@@ -118,17 +118,17 @@
}
// Print the actual text to simplify copy/paste into the expectation.
-// if (actualText != expected) {
-// print('-------- Actual --------');
-// print(actualText + '------------------------');
-// }
+ // if (actualText != expected) {
+ // print('-------- Actual --------');
+ // print(actualText + '------------------------');
+ // }
expect(actualText, expected);
}
/// Writes the canonical text presentation of elements.
class _ElementWriter {
- final String selfUriStr;
+ final String? selfUriStr;
final bool withCodeRanges;
final bool withExportScope;
final bool withFullyResolvedAst;
@@ -144,7 +144,7 @@
_ElementWriter({
this.selfUriStr,
- this.withCodeRanges,
+ this.withCodeRanges = false,
this.withConstElements = true,
this.withExportScope = false,
this.withFullyResolvedAst = false,
@@ -152,13 +152,13 @@
this.withSyntheticAccessors = false,
this.withSyntheticFields = false,
this.withTypes = false,
- this.withTypeParameterVariance,
+ this.withTypeParameterVariance = false,
});
bool isDynamicType(DartType type) => type is DynamicTypeImpl;
bool isEnumField(Element e) {
- Element enclosing = e.enclosingElement;
+ var enclosing = e.enclosingElement;
return enclosing is ClassElement && enclosing.isEnum;
}
@@ -203,10 +203,10 @@
writeCodeRange(e);
writeTypeParameterElements(e.typeParameters, withDefault: true);
- if (e.supertype != null && e.supertype.element.name != 'Object' ||
+ if (e.supertype != null && e.supertype!.element.name != 'Object' ||
e.mixins.isNotEmpty) {
buffer.write(' extends ');
- writeType(e.supertype);
+ writeType(e.supertype!);
}
if (e.isMixin) {
@@ -287,7 +287,7 @@
writeParameterElements(e.parameters);
{
- ConstructorElement redirected = e.redirectedConstructor;
+ var redirected = e.redirectedConstructor;
if (redirected != null) {
buffer.write(' = ');
writeType(redirected.returnType);
@@ -302,7 +302,7 @@
if (withFullyResolvedAst) {
buffer.writeln(';');
_withIndent(() {
- if (initializers != null && initializers.isNotEmpty) {
+ if (initializers.isNotEmpty) {
_writelnWithIndent('constantInitializers');
_withIndent(() {
for (var initializer in initializers) {
@@ -313,9 +313,7 @@
_writeParameterElementDefaultValues(e.parameters);
});
} else {
- if (initializers != null) {
- writeList(' : ', '', initializers, ', ', writeNode);
- }
+ writeList(' : ', '', initializers, ', ', writeNode);
buffer.writeln(';');
}
@@ -324,7 +322,7 @@
}
void writeDocumentation(Element e, [String prefix = '']) {
- String comment = e.documentationComment;
+ var comment = e.documentationComment;
if (comment != null) {
if (comment.startsWith('///')) {
comment = comment.split('\n').join('\n$prefix');
@@ -368,10 +366,8 @@
writeName(e);
writeCodeRange(e);
writeTypeParameterElements(e.typeParameters, withDefault: false);
- if (e.extendedType != null) {
- buffer.write(' on ');
- writeType(e.extendedType);
- }
+ buffer.write(' on ');
+ writeType(e.extendedType);
buffer.writeln(' {');
@@ -432,7 +428,7 @@
if (e.prefix != null) {
buffer.write(' as ');
- writeName(e.prefix);
+ writeName(e.prefix!);
if (withOffsets) {
buffer.write('(${e.prefixOffset})');
}
@@ -560,7 +556,7 @@
}
}
- void writeNode(AstNode e, {Expression enclosing}) {
+ void writeNode(AstNode? e, {Expression? enclosing}) {
bool needsParenthesis = e is Expression &&
enclosing != null &&
e.precedence < enclosing.precedence;
@@ -582,10 +578,10 @@
writeNode(e.name);
if (e.constructorName != null) {
buffer.write('.');
- writeNode(e.constructorName);
+ writeNode(e.constructorName!);
}
if (e.arguments != null) {
- writeList('(', ')', e.arguments.arguments, ', ', writeNode,
+ writeList('(', ')', e.arguments!.arguments, ', ', writeNode,
includeEmpty: true);
}
} else if (e is AsExpression) {
@@ -597,7 +593,7 @@
writeNode(e.condition);
if (e.message != null) {
buffer.write(', ');
- writeNode(e.message);
+ writeNode(e.message!);
}
buffer.write(')');
} else if (e is BinaryExpression) {
@@ -622,24 +618,24 @@
writeNode(e.type);
if (e.name != null) {
buffer.write('.');
- writeNode(e.name);
+ writeNode(e.name!);
}
} else if (e is DoubleLiteral) {
buffer.write(e.value);
} else if (e is GenericFunctionType) {
if (e.returnType != null) {
- writeNode(e.returnType);
+ writeNode(e.returnType!);
buffer.write(' ');
}
buffer.write('Function');
if (e.typeParameters != null) {
- writeList('<', '>', e.typeParameters.typeParameters, ', ', writeNode);
+ writeList('<', '>', e.typeParameters!.typeParameters, ', ', writeNode);
}
writeList('(', ')', e.parameters.parameters, ', ', writeNode,
includeEmpty: true);
} else if (e is InstanceCreationExpression) {
if (e.keyword != null) {
- buffer.write(e.keyword.lexeme);
+ buffer.write(e.keyword!.lexeme);
buffer.write(' ');
}
if (withTypes && e.constructorName.type.typeArguments == null) {
@@ -665,7 +661,7 @@
buffer.write('const ');
}
if (e.typeArguments != null) {
- writeList('<', '>', e.typeArguments.arguments, ', ', writeNode);
+ writeList('<', '>', e.typeArguments!.arguments, ', ', writeNode);
} else if (withTypes) {
writeInterfaceTypeArgsComment(e);
}
@@ -678,7 +674,7 @@
buffer.write('const ');
}
if (e.typeArguments != null) {
- writeList('<', '>', e.typeArguments.arguments, ', ', writeNode);
+ writeList('<', '>', e.typeArguments!.arguments, ', ', writeNode);
} else if (withTypes) {
writeInterfaceTypeArgsComment(e);
}
@@ -700,7 +696,7 @@
}
writeNode(e.methodName);
if (e.typeArguments != null) {
- writeList('<', '>', e.typeArguments.arguments, ', ', writeNode);
+ writeList('<', '>', e.typeArguments!.arguments, ', ', writeNode);
}
writeList('(', ')', e.argumentList.arguments, ', ', writeNode,
includeEmpty: true);
@@ -734,7 +730,7 @@
writeNode(e.type);
if (e.identifier != null) {
buffer.write(' ');
- buffer.write(e.identifier.name);
+ buffer.write(e.identifier!.name);
}
} else if (e is SimpleIdentifier) {
if (withConstElements) {
@@ -778,7 +774,7 @@
} else if (e is TypeName) {
writeNode(e.name);
if (e.typeArguments != null) {
- writeList('<', '>', e.typeArguments.arguments, ', ', writeNode);
+ writeList('<', '>', e.typeArguments!.arguments, ', ', writeNode);
}
} else if (e is SpreadElement) {
buffer.write(e.spreadOperator.lexeme);
@@ -803,8 +799,8 @@
}
void writeParameterElement(ParameterElement e) {
- String defaultValueSeparator;
- Expression defaultValue;
+ String? defaultValueSeparator;
+ Expression? defaultValue;
String closeString;
if (e.isRequiredPositional) {
closeString = '';
@@ -884,12 +880,12 @@
if (e.isGetter) {
expect(variable.getter, same(e));
if (variable.setter != null) {
- expect(variable.setter.variable, same(variable));
+ expect(variable.setter!.variable, same(variable));
}
} else {
expect(variable.setter, same(e));
if (variable.getter != null) {
- expect(variable.getter.variable, same(variable));
+ expect(variable.getter!.variable, same(variable));
}
}
}
@@ -947,10 +943,10 @@
if (!e.isSynthetic) {
expect(e.getter, isNotNull);
- _assertSyntheticAccessorEnclosing(e, e.getter);
+ _assertSyntheticAccessorEnclosing(e, e.getter!);
if (e.setter != null) {
- _assertSyntheticAccessorEnclosing(e, e.setter);
+ _assertSyntheticAccessorEnclosing(e, e.setter!);
}
}
@@ -998,8 +994,7 @@
});
} else {
if (e is ConstVariableElement) {
- Expression initializer =
- (e as ConstVariableElement).constantInitializer;
+ var initializer = (e as ConstVariableElement).constantInitializer;
if (initializer != null) {
buffer.write(' = ');
writeNode(initializer);
@@ -1050,7 +1045,7 @@
}
void writeTypeInferenceError(Element e) {
- TopLevelInferenceError inferenceError;
+ TopLevelInferenceError? inferenceError;
if (e is MethodElementImpl) {
inferenceError = e.typeInferenceError;
} else if (e is PropertyInducingElementImpl) {
@@ -1068,7 +1063,7 @@
void writeTypeParameterElement(
TypeParameterElement e, {
- @required bool withDefault,
+ required bool withDefault,
}) {
var impl = e as TypeParameterElementImpl;
@@ -1083,13 +1078,13 @@
writeName(e);
writeCodeRange(e);
- if (e.bound != null && !e.bound.isDartCoreObject) {
+ if (e.bound != null && !e.bound!.isDartCoreObject) {
buffer.write(' extends ');
- writeType(e.bound);
+ writeType(e.bound!);
}
if (withDefault) {
- var defaultType = impl.defaultType;
+ var defaultType = impl.defaultType!;
if (defaultType is! DynamicTypeImpl) {
buffer.write(' = ');
writeType(defaultType);
@@ -1099,10 +1094,10 @@
void writeTypeParameterElements(
List<TypeParameterElement> elements, {
- @required bool withDefault,
+ required bool withDefault,
}) {
if (!withFullyResolvedAst) {
- writeList('<', '>', elements, ', ', (e) {
+ writeList<TypeParameterElement>('<', '>', elements, ', ', (e) {
writeTypeParameterElement(e, withDefault: withDefault);
});
}
@@ -1111,7 +1106,7 @@
void writeUnitElement(CompilationUnitElement e) {
if (e.library.definingCompilationUnit != e) {
buffer.writeln('-' * 20);
- buffer.writeln('unit: ${e.source?.shortName}');
+ buffer.writeln('unit: ${e.source.shortName}');
buffer.writeln();
}
e.typeAliases.forEach(writeTypeAliasElement);
@@ -1124,7 +1119,7 @@
e.functions.forEach(writeFunctionElement);
}
- void writeUri(Source source) {
+ void writeUri(Source? source) {
if (source != null) {
Uri uri = source.uri;
String uriStr = uri.toString();
@@ -1154,7 +1149,7 @@
}
}
- String _getElementLocationString(Element element) {
+ String _getElementLocationString(Element? element) {
if (element == null) {
return 'null';
}
@@ -1166,7 +1161,7 @@
return uri;
}
- ElementLocation location = element.location;
+ var location = element.location!;
List<String> components = location.components.toList();
if (components.isNotEmpty) {
components[0] = onlyName(components[0]);
@@ -1180,7 +1175,7 @@
return components.join(';');
}
- String _typeStr(DartType type) {
+ String? _typeStr(DartType? type) {
return type?.getDisplayString(
withNullability: true,
);
@@ -1193,7 +1188,7 @@
this.indent = indent;
}
- void _writelnTypeWithIndent(String name, DartType type) {
+ void _writelnTypeWithIndent(String name, DartType? type) {
buffer.write(indent);
buffer.write('$name: ');
buffer.writeln(_typeStr(type));
@@ -1232,7 +1227,8 @@
if (metadata.isNotEmpty) {
_writelnWithIndent('metadata');
_withIndent(() {
- for (ElementAnnotationImpl annotation in metadata) {
+ for (var annotation in metadata) {
+ annotation as ElementAnnotationImpl;
_writeResolvedNode(annotation.annotationAst);
}
});
@@ -1255,7 +1251,8 @@
if (elements.isNotEmpty) {
_writelnWithIndent('typeParameters');
_withIndent(() {
- for (TypeParameterElementImpl e in elements) {
+ for (var e in elements) {
+ e as TypeParameterElementImpl;
_writelnWithIndent(e.name);
_withIndent(() {
_writelnTypeWithIndent('bound', e.bound);
diff --git a/pkg/analyzer/test/src/summary/flat_buffers_test.dart b/pkg/analyzer/test/src/summary/flat_buffers_test.dart
index c822a77..adb1fd5 100644
--- a/pkg/analyzer/test/src/summary/flat_buffers_test.dart
+++ b/pkg/analyzer/test/src/summary/flat_buffers_test.dart
@@ -164,8 +164,10 @@
// read and verify
BufferContext buf = BufferContext.fromBytes(byteList);
int objectOffset = buf.derefObject(0);
- expect(const StringReader().vTableGet(buf, objectOffset, 0), latinString);
- expect(const StringReader().vTableGet(buf, objectOffset, 1), unicodeString);
+ expect(const StringReader().vTableGetOrNull(buf, objectOffset, 0),
+ latinString);
+ expect(const StringReader().vTableGetOrNull(buf, objectOffset, 1),
+ unicodeString);
}
void test_table_types() {
@@ -188,14 +190,15 @@
// read and verify
BufferContext buf = BufferContext.fromBytes(byteList);
int objectOffset = buf.derefObject(0);
- expect(const BoolReader().vTableGet(buf, objectOffset, 0), true);
- expect(const Int8Reader().vTableGet(buf, objectOffset, 1), 10);
- expect(const Int32Reader().vTableGet(buf, objectOffset, 2), 20);
- expect(const StringReader().vTableGet(buf, objectOffset, 3), '12345');
- expect(const Int32Reader().vTableGet(buf, objectOffset, 4), 40);
- expect(const Uint32Reader().vTableGet(buf, objectOffset, 5), 0x9ABCDEF0);
- expect(const Uint8Reader().vTableGet(buf, objectOffset, 6), 0x9A);
- expect(const Float64Reader().vTableGet(buf, objectOffset, 7), -12.34);
+ expect(const BoolReader().vTableGetOrNull(buf, objectOffset, 0), true);
+ expect(const Int8Reader().vTableGetOrNull(buf, objectOffset, 1), 10);
+ expect(const Int32Reader().vTableGetOrNull(buf, objectOffset, 2), 20);
+ expect(const StringReader().vTableGetOrNull(buf, objectOffset, 3), '12345');
+ expect(const Int32Reader().vTableGetOrNull(buf, objectOffset, 4), 40);
+ expect(
+ const Uint32Reader().vTableGetOrNull(buf, objectOffset, 5), 0x9ABCDEF0);
+ expect(const Uint8Reader().vTableGetOrNull(buf, objectOffset, 6), 0x9A);
+ expect(const Float64Reader().vTableGetOrNull(buf, objectOffset, 7), -12.34);
}
void test_writeList_of_Uint32() {
@@ -352,7 +355,7 @@
// read and verify
BufferContext buf = BufferContext.fromBytes(byteList);
StringListWrapperImpl reader = StringListWrapperReader().read(buf, 0);
- List<String> items = reader.items;
+ List<String> items = reader.items!;
expect(items, hasLength(2));
expect(items, contains('12345'));
expect(items, contains('ABC'));
@@ -393,8 +396,8 @@
StringListWrapperImpl(this.bp, this.offset);
- List<String> get items =>
- const ListReader<String>(StringReader()).vTableGet(bp, offset, 0);
+ List<String>? get items =>
+ const ListReader<String>(StringReader()).vTableGetOrNull(bp, offset, 0);
}
class StringListWrapperReader extends TableReader<StringListWrapperImpl> {
diff --git a/pkg/analyzer/test/src/summary/in_summary_source_test.dart b/pkg/analyzer/test/src/summary/in_summary_source_test.dart
index 240fa1c..570ebce 100644
--- a/pkg/analyzer/test/src/summary/in_summary_source_test.dart
+++ b/pkg/analyzer/test/src/summary/in_summary_source_test.dart
@@ -27,15 +27,17 @@
}))
]);
- InSummarySource source = sourceFactory.forUri('package:foo/foo.dart');
+ var source =
+ sourceFactory.forUri('package:foo/foo.dart') as InSummarySource;
expect(source, isNotNull);
expect(source.summaryPath, 'foo.sum');
- source = sourceFactory.forUri('package:foo/src/foo_impl.dart');
+ source = sourceFactory.forUri('package:foo/src/foo_impl.dart')
+ as InSummarySource;
expect(source, isNotNull);
expect(source.summaryPath, 'foo.sum');
- source = sourceFactory.forUri('package:bar/baz.dart');
+ source = sourceFactory.forUri('package:bar/baz.dart') as InSummarySource;
expect(source, isNotNull);
expect(source.summaryPath, 'bar.sum');
}
diff --git a/pkg/analyzer/test/src/summary/resolved_ast_printer.dart b/pkg/analyzer/test/src/summary/resolved_ast_printer.dart
index b8eaf24..3b4f286 100644
--- a/pkg/analyzer/test/src/summary/resolved_ast_printer.dart
+++ b/pkg/analyzer/test/src/summary/resolved_ast_printer.dart
@@ -12,7 +12,6 @@
import 'package:analyzer/src/dart/element/member.dart';
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/summary2/reference.dart';
-import 'package:meta/meta.dart';
/// Used in [ResolvedAstPrinter] to print lines of code that corresponding
/// to a subtree of AST. This help to make the bulky presentation of AST a
@@ -26,13 +25,13 @@
/// Prints AST as a tree, with properties and children.
class ResolvedAstPrinter extends ThrowingAstVisitor<void> {
/// The URI of the library that contains the AST being printed.
- final String _selfUriStr;
+ final String? _selfUriStr;
/// The target sink to print AST.
final StringSink _sink;
/// The optional provider for code lines, might be `null`.
- final CodeLinesProvider _codeLinesProvider;
+ final CodeLinesProvider? _codeLinesProvider;
/// If `true`, types should be printed with nullability suffixes.
final bool _withNullability;
@@ -40,10 +39,10 @@
String _indent = '';
ResolvedAstPrinter({
- @required String selfUriStr,
- @required StringSink sink,
- @required String indent,
- CodeLinesProvider codeLinesProvider,
+ required String? selfUriStr,
+ required StringSink sink,
+ required String indent,
+ CodeLinesProvider? codeLinesProvider,
bool withNullability = false,
}) : _selfUriStr = selfUriStr,
_sink = sink,
@@ -613,7 +612,7 @@
_writeln('FunctionDeclaration');
_withIndent(() {
var properties = _Properties();
- properties.addType('declaredElementType', node.declaredElement.type);
+ properties.addType('declaredElementType', node.declaredElement!.type);
properties.addToken('externalKeyword', node.externalKeyword);
properties.addNode('functionExpression', node.functionExpression);
properties.addToken('propertyKeyword', node.propertyKeyword);
@@ -916,7 +915,7 @@
_withIndent(() {
var properties = _Properties();
properties.addNode('body', node.body);
- properties.addType('declaredElementType', node.declaredElement.type);
+ properties.addType('declaredElementType', node.declaredElement!.type);
properties.addToken('externalKeyword', node.externalKeyword);
properties.addToken('modifierKeyword', node.modifierKeyword);
properties.addNode('name', node.name);
@@ -1339,8 +1338,7 @@
// TODO (kallentu) : Clean up TypeParameterImpl casting once variance is
// added to the interface.
if ((node as TypeParameterImpl).varianceKeyword != null) {
- properties.addToken(
- 'variance', (node as TypeParameterImpl).varianceKeyword);
+ properties.addToken('variance', node.varianceKeyword);
}
properties.addNode('bound', node.bound);
properties.addNode('name', node.name);
@@ -1524,7 +1522,7 @@
void _addFormalParameter(_Properties properties, FormalParameter node) {
properties.addToken('covariantKeyword', node.covariantKeyword);
properties.addElement('declaredElement', node.declaredElement);
- properties.addType('declaredElementType', node.declaredElement.type);
+ properties.addType('declaredElementType', node.declaredElement!.type);
properties.addNode('identifier', node.identifier);
properties.addNodeList('metadata', node.metadata);
properties.addToken('requiredKeyword', node.requiredKeyword);
@@ -1565,7 +1563,7 @@
properties.addNode('argumentList', node.argumentList);
properties.addType('staticInvokeType', node.staticInvokeType);
properties.addNode('typeArguments', node.typeArguments);
- properties.addTypeList('typeArgumentTypes', node.typeArgumentTypes);
+ properties.addTypeList('typeArgumentTypes', node.typeArgumentTypes!);
_addExpression(properties, node);
}
@@ -1659,7 +1657,8 @@
}
String _referenceToString(Reference reference) {
- if (reference.parent.parent == null) {
+ var parent = reference.parent!;
+ if (parent.parent == null) {
var libraryUriStr = reference.name;
if (libraryUriStr == _selfUriStr) {
return 'self';
@@ -1668,15 +1667,15 @@
}
// Ignore the unit, skip to the library.
- if (reference.parent.name == '@unit') {
- return _referenceToString(reference.parent.parent);
+ if (parent.name == '@unit') {
+ return _referenceToString(parent.parent!);
}
var name = reference.name;
if (name.isEmpty) {
name = '•';
}
- return _referenceToString(reference.parent) + '::$name';
+ return _referenceToString(parent) + '::$name';
}
String _substitutionMapStr(Map<TypeParameterElement, DartType> map) {
@@ -1686,7 +1685,7 @@
return '{$entriesStr}';
}
- String _typeStr(DartType type) {
+ String? _typeStr(DartType? type) {
return type?.getDisplayString(withNullability: _withNullability);
}
@@ -1697,13 +1696,13 @@
_indent = indent;
}
- void _writeElement(String name, Element element) {
+ void _writeElement(String name, Element? element) {
_sink.write(_indent);
_sink.write('$name: ');
_writeElement0(element);
}
- void _writeElement0(Element element) {
+ void _writeElement0(Element? element) {
if (element == null) {
_sink.writeln('<null>');
return;
@@ -1744,7 +1743,7 @@
}
}
- void _writeNode(String name, AstNode node) {
+ void _writeNode(String name, AstNode? node) {
if (node != null) {
_sink.write(_indent);
_sink.write('$name: ');
@@ -1772,7 +1771,7 @@
}
}
- void _writeSource(String name, Source source) {
+ void _writeSource(String name, Source? source) {
if (source != null) {
_writelnWithIndent('$name: ${source.uri}');
} else {
@@ -1780,14 +1779,14 @@
}
}
- void _writeToken(String name, Token token) {
+ void _writeToken(String name, Token? token) {
if (token != null) {
_sink.write(_indent);
_sink.writeln('$name: $token');
}
}
- void _writeType(String name, DartType type) {
+ void _writeType(String name, DartType? type) {
var typeStr = _typeStr(type);
_writelnWithIndent('$name: $typeStr');
}
@@ -1810,7 +1809,7 @@
}
class _ElementProperty extends _Property {
- final Element element;
+ final Element? element;
_ElementProperty(String name, this.element) : super(name);
@@ -1832,7 +1831,7 @@
}
class _NodeProperty extends _Property {
- final AstNode node;
+ final AstNode? node;
_NodeProperty(String name, this.node) : super(name);
@@ -1845,13 +1844,13 @@
class _Properties {
final properties = <_Property>[];
- void addElement(String name, Element element) {
+ void addElement(String name, Element? element) {
properties.add(
_ElementProperty(name, element),
);
}
- void addNode(String name, AstNode node) {
+ void addNode(String name, AstNode? node) {
properties.add(
_NodeProperty(name, node),
);
@@ -1863,25 +1862,25 @@
);
}
- void addRaw(String name, Object value) {
+ void addRaw(String name, Object? value) {
properties.add(
_RawProperty(name, value),
);
}
- void addSource(String name, Source source) {
+ void addSource(String name, Source? source) {
properties.add(
_SourceProperty(name, source),
);
}
- void addToken(String name, Token token) {
+ void addToken(String name, Token? token) {
properties.add(
_TokenProperty(name, token),
);
}
- void addType(String name, DartType type) {
+ void addType(String name, DartType? type) {
properties.add(
_TypeProperty(name, type),
);
@@ -1903,7 +1902,7 @@
}
class _RawProperty extends _Property {
- final Object value;
+ final Object? value;
_RawProperty(String name, this.value) : super(name);
@@ -1914,7 +1913,7 @@
}
class _SourceProperty extends _Property {
- final Source source;
+ final Source? source;
_SourceProperty(String name, this.source) : super(name);
@@ -1925,7 +1924,7 @@
}
class _TokenProperty extends _Property {
- final Token token;
+ final Token? token;
_TokenProperty(String name, this.token) : super(name);
@@ -1947,7 +1946,7 @@
}
class _TypeProperty extends _Property {
- final DartType type;
+ final DartType? type;
_TypeProperty(String name, this.type) : super(name);
diff --git a/pkg/analyzer/test/src/summary/resynthesize_ast2_test.dart b/pkg/analyzer/test/src/summary/resynthesize_ast2_test.dart
index 1627018..7dd1655 100644
--- a/pkg/analyzer/test/src/summary/resynthesize_ast2_test.dart
+++ b/pkg/analyzer/test/src/summary/resynthesize_ast2_test.dart
@@ -18,7 +18,6 @@
import 'package:analyzer/src/summary2/link.dart';
import 'package:analyzer/src/summary2/linked_element_factory.dart';
import 'package:analyzer/src/summary2/reference.dart';
-import 'package:meta/meta.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
import 'resynthesize_common.dart';
@@ -34,17 +33,17 @@
class ResynthesizeAst2Test extends AbstractResynthesizeTest
with ResynthesizeTestCases {
/// The shared SDK bundle, computed once and shared among test invocations.
- static _SdkBundle _sdkBundle;
+ static _SdkBundle? _sdkBundle;
_SdkBundle get sdkBundle {
if (_sdkBundle != null) {
- return _sdkBundle;
+ return _sdkBundle!;
}
var featureSet = FeatureSet.latestLanguageVersion();
var inputLibraries = <LinkInputLibrary>[];
for (var sdkLibrary in sdk.sdkLibraries) {
- var source = sourceFactory.resolveUri(null, sdkLibrary.shortName);
+ var source = sourceFactory.resolveUri(null, sdkLibrary.shortName)!;
var text = getFile(source.fullName).readAsStringSync();
var unit = parseText(text, featureSet);
@@ -118,7 +117,7 @@
),
);
- return elementFactory.libraryOfUri('${source.uri}');
+ return elementFactory.libraryOfUri('${source.uri}')!;
}
void setUp() {
@@ -149,11 +148,6 @@
units.add(
LinkInputUnit(relativeUriStr, partSource, false, unit),
);
- } else {
- var unit = parseText('', featureSet);
- units.add(
- LinkInputUnit(relativeUriStr, partSource, false, unit),
- );
}
}
}
@@ -162,7 +156,7 @@
void _addNonDartLibraries(
Set<Source> addedLibraries,
List<LinkInputLibrary> libraries,
- Source source,
+ Source? source,
) {
if (source == null ||
source.uri.isScheme('dart') ||
@@ -221,7 +215,7 @@
final Uint8List resolutionBytes;
_SdkBundle({
- @required this.astBytes,
- @required this.resolutionBytes,
+ required this.astBytes,
+ required this.resolutionBytes,
});
}
diff --git a/pkg/analyzer/test/src/summary/resynthesize_common.dart b/pkg/analyzer/test/src/summary/resynthesize_common.dart
index d690b6c..2ed4e8f 100644
--- a/pkg/analyzer/test/src/summary/resynthesize_common.dart
+++ b/pkg/analyzer/test/src/summary/resynthesize_common.dart
@@ -24,14 +24,14 @@
/// The return type separator: →
abstract class AbstractResynthesizeTest with ResourceProviderMixin {
/// The set of features enabled in this test.
- FeatureSet featureSet;
+ late FeatureSet featureSet;
DeclaredVariables declaredVariables = DeclaredVariables();
- /*late final*/ SourceFactory sourceFactory;
- /*late final*/ MockSdk sdk;
+ late final SourceFactory sourceFactory;
+ late final MockSdk sdk;
- /*late final*/ String testFile;
- Source testSource;
+ late String testFile;
+ late Source testSource;
Set<Source> otherLibrarySources = <Source>{};
AbstractResynthesizeTest() {
@@ -48,7 +48,7 @@
}
void addLibrary(String uri) {
- var source = sourceFactory.forUri(uri);
+ var source = sourceFactory.forUri(uri)!;
otherLibrarySources.add(source);
}
@@ -64,7 +64,7 @@
return source;
}
- Source addTestSource(String code, [Uri uri]) {
+ Source addTestSource(String code, [Uri? uri]) {
testSource = addSource(testFile, code);
return testSource;
}
@@ -2924,18 +2924,18 @@
C/*location: test.dart;C*/.
named/*location: test.dart;C;named*/(0);
''');
- TopLevelVariableElementImpl x =
- library.definingCompilationUnit.topLevelVariables[0];
- InstanceCreationExpression xExpr = x.constantInitializer;
- var xType = xExpr.constructorName.staticElement.returnType;
+ var x = library.definingCompilationUnit.topLevelVariables[0]
+ as TopLevelVariableElementImpl;
+ var xExpr = x.constantInitializer as InstanceCreationExpression;
+ var xType = xExpr.constructorName.staticElement!.returnType;
_assertTypeStr(
xType,
'C<int>',
);
- TopLevelVariableElementImpl y =
- library.definingCompilationUnit.topLevelVariables[0];
- InstanceCreationExpression yExpr = y.constantInitializer;
- var yType = yExpr.constructorName.staticElement.returnType;
+ var y = library.definingCompilationUnit.topLevelVariables[0]
+ as TopLevelVariableElementImpl;
+ var yExpr = y.constantInitializer as InstanceCreationExpression;
+ var yType = yExpr.constructorName.staticElement!.returnType;
_assertTypeStr(yType, 'C<int>');
}
@@ -3066,6 +3066,7 @@
''');
}
+ @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/44522')
test_const_invalid_intLiteral() async {
var library = await checkLibrary(r'''
const int x = 0x;
@@ -3684,6 +3685,7 @@
withTypes: true);
}
+ @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/44522')
test_const_map_if_else() async {
var library = await checkLibrary('''
const Object x = const <int, int>{if (true) 1: 2 else 3: 4];
@@ -4346,6 +4348,7 @@
withTypes: true);
}
+ @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/44522')
test_const_set_if_else() async {
var library = await checkLibrary('''
const Object x = const <int>{if (true) 1 else 2];
@@ -4525,6 +4528,7 @@
ListLiteral
elements
PropertyAccess
+ operator: ?.
propertyName: SimpleIdentifier
staticElement: dart:core::@class::String::@getter::length
staticType: int
@@ -5823,6 +5827,36 @@
withFullyResolvedAst: true);
}
+ test_defaultValue_methodMember_legacy() async {
+ featureSet = FeatureSets.beforeNullSafe;
+ var library = await checkLibrary('''
+void f([Comparator<T> compare = Comparable.compare]) {}
+''');
+ checkElementText(
+ library,
+ r'''
+void f([int* Function(dynamic, dynamic)* compare]) {}
+ compare
+ PrefixedIdentifier
+ identifier: SimpleIdentifier
+ staticElement: MethodMember
+ base: dart:core::@class::Comparable::@method::compare
+ substitution: {}
+ staticType: int* Function(Comparable<dynamic>*, Comparable<dynamic>*)*
+ token: compare
+ period: .
+ prefix: SimpleIdentifier
+ staticElement: dart:core::@class::Comparable
+ staticType: null
+ token: Comparable
+ staticElement: MethodMember
+ base: dart:core::@class::Comparable::@method::compare
+ substitution: {}
+ staticType: int* Function(Comparable<dynamic>*, Comparable<dynamic>*)*
+''',
+ withFullyResolvedAst: true);
+ }
+
test_defaultValue_refersToExtension_method_inside() async {
var library = await checkLibrary('''
class A {}
@@ -6437,7 +6471,7 @@
A: foo.dart;A
''',
withExportScope: true);
- expect(library.exports[0].exportedLibrary.source.shortName, 'foo.dart');
+ expect(library.exports[0].exportedLibrary!.source.shortName, 'foo.dart');
}
test_export_configurations_useFirst() async {
@@ -6463,7 +6497,7 @@
A: foo_io.dart;A
''',
withExportScope: true);
- expect(library.exports[0].exportedLibrary.source.shortName, 'foo_io.dart');
+ expect(library.exports[0].exportedLibrary!.source.shortName, 'foo_io.dart');
}
test_export_configurations_useSecond() async {
@@ -6490,7 +6524,7 @@
''',
withExportScope: true);
ExportElement export = library.exports[0];
- expect(export.exportedLibrary.source.shortName, 'foo_html.dart');
+ expect(export.exportedLibrary!.source.shortName, 'foo_html.dart');
}
test_export_function() async {
@@ -6693,7 +6727,7 @@
class B extends A {
}
''');
- var typeA = library.definingCompilationUnit.getType('B').supertype;
+ var typeA = library.definingCompilationUnit.getType('B')!.supertype!;
expect(typeA.element.source.shortName, 'foo.dart');
}
@@ -6719,7 +6753,7 @@
class B extends A {
}
''');
- var typeA = library.definingCompilationUnit.getType('B').supertype;
+ var typeA = library.definingCompilationUnit.getType('B')!.supertype!;
expect(typeA.element.source.shortName, 'foo_io.dart');
}
@@ -6745,7 +6779,7 @@
class B extends A {
}
''');
- var typeA = library.definingCompilationUnit.getType('B').supertype;
+ var typeA = library.definingCompilationUnit.getType('B')!.supertype!;
expect(typeA.element.source.shortName, 'foo_html.dart');
}
@@ -7411,10 +7445,10 @@
var type = unit.topLevelVariables[0].type as FunctionType;
expect(type.aliasElement, same(unit.typeAliases[0]));
- _assertTypeStrings(type.aliasArguments, ['int']);
+ _assertTypeStrings(type.aliasArguments!, ['int']);
// TODO(scheglov) https://github.com/dart-lang/sdk/issues/44629
- expect(type.element.enclosingElement, same(unit.typeAliases[0]));
+ expect(type.element!.enclosingElement, same(unit.typeAliases[0]));
_assertTypeStrings(type.typeArguments, ['int']);
}
@@ -7843,7 +7877,7 @@
class B extends A {
}
''');
- var typeA = library.definingCompilationUnit.getType('B').supertype;
+ var typeA = library.definingCompilationUnit.getType('B')!.supertype!;
expect(typeA.element.source.shortName, 'foo.dart');
}
@@ -7867,7 +7901,7 @@
class B extends A {
}
''');
- var typeA = library.definingCompilationUnit.getType('B').supertype;
+ var typeA = library.definingCompilationUnit.getType('B')!.supertype!;
expect(typeA.element.source.shortName, 'foo_io.dart');
}
@@ -7891,7 +7925,7 @@
class B extends A {
}
''');
- var typeA = library.definingCompilationUnit.getType('B').supertype;
+ var typeA = library.definingCompilationUnit.getType('B')!.supertype!;
expect(typeA.element.source.shortName, 'foo_io.dart');
}
@@ -7915,7 +7949,7 @@
class B extends A {
}
''');
- var typeA = library.definingCompilationUnit.getType('B').supertype;
+ var typeA = library.definingCompilationUnit.getType('B')!.supertype!;
expect(typeA.element.source.shortName, 'foo_html.dart');
}
@@ -7939,7 +7973,7 @@
class B extends A {
}
''');
- var typeA = library.definingCompilationUnit.getType('B').supertype;
+ var typeA = library.definingCompilationUnit.getType('B')!.supertype!;
expect(typeA.element.source.shortName, 'foo_html.dart');
}
@@ -8025,8 +8059,8 @@
addLibrarySource('/a.dart', 'library a; class C {}');
var library = await checkLibrary('import "a.dart" as a; a.C c;');
- expect(library.imports[0].prefix.nameOffset, 19);
- expect(library.imports[0].prefix.nameLength, 1);
+ expect(library.imports[0].prefix!.nameOffset, 19);
+ expect(library.imports[0].prefix!.nameLength, 1);
checkElementText(library, r'''
import 'a.dart' as a;
@@ -8041,8 +8075,8 @@
class D extends p.C {} // Prevent "unused import" warning
''');
expect(library.imports, hasLength(2));
- expect(library.imports[0].importedLibrary.location, library.location);
- expect(library.imports[1].importedLibrary.isDartCore, true);
+ expect(library.imports[0].importedLibrary!.location, library.location);
+ expect(library.imports[1].importedLibrary!.isDartCore, true);
checkElementText(library, r'''
import 'test.dart' as p;
class C {
@@ -8591,7 +8625,7 @@
// This test should verify that we correctly record inferred types,
// when the type is defined in a part of an SDK library. So, test that
// the type is actually in a part.
- Element streamElement = p.type.element;
+ Element streamElement = p.type.element!;
if (streamElement is ClassElement) {
expect(streamElement.source, isNot(streamElement.library.source));
}
@@ -9200,18 +9234,10 @@
export 'a2.dart';
export '<unresolved>';
export '<unresolved>';
-part '<unresolved>';
part 'a3.dart';
-part '<unresolved>';
---------------------
-unit: null
-
--------------------
unit: a3.dart
---------------------
-unit: null
-
''');
}
@@ -11305,10 +11331,6 @@
''');
checkElementText(library, r'''
library my.lib;
-part '<unresolved>';
---------------------
-unit: null
-
''');
}
@@ -13311,7 +13333,7 @@
test_unresolved_import() async {
var library = await checkLibrary("import 'foo.dart';", allowErrors: true);
- LibraryElement importedLibrary = library.imports[0].importedLibrary;
+ var importedLibrary = library.imports[0].importedLibrary!;
expect(importedLibrary.loadLibraryFunction, isNotNull);
expect(importedLibrary.publicNamespace, isNotNull);
expect(importedLibrary.exportNamespace, isNotNull);
@@ -13462,14 +13484,14 @@
// We intentionally don't check the text, because we want to test
// requesting individual elements, not all accessors/variables at once.
- var getter = _elementOfDefiningUnit(library, '@getter', 'x')
+ var getter = _elementOfDefiningUnit(library, ['@getter', 'x'])
as PropertyAccessorElementImpl;
var variable = getter.variable as TopLevelVariableElementImpl;
expect(variable, isNotNull);
expect(variable.isFinal, isTrue);
expect(variable.getter, same(getter));
expect('${variable.type}', 'int');
- expect(variable, same(_elementOfDefiningUnit(library, '@field', 'x')));
+ expect(variable, same(_elementOfDefiningUnit(library, ['@field', 'x'])));
}
test_variable_implicit_type() async {
@@ -13729,16 +13751,13 @@
expect(typeStringList, expected);
}
- Element _elementOfDefiningUnit(LibraryElementImpl library,
- [String name1, String name2, String name3]) {
+ Element _elementOfDefiningUnit(
+ LibraryElementImpl library, List<String> names) {
var unit = library.definingCompilationUnit as CompilationUnitElementImpl;
- var reference = unit.reference;
+ var reference = unit.reference!;
+ names.forEach((name) => reference = reference.getChild(name));
- [name1, name2, name3].takeWhile((e) => e != null).forEach((name) {
- reference = reference.getChild(name);
- });
-
- var elementFactory = unit.linkedContext.elementFactory;
- return elementFactory.elementOfReference(reference);
+ var elementFactory = unit.linkedContext!.elementFactory;
+ return elementFactory.elementOfReference(reference)!;
}
}
diff --git a/pkg/analyzer/test/src/summary/test_strategies.dart b/pkg/analyzer/test/src/summary/test_strategies.dart
index a503d24..5cd4d74 100644
--- a/pkg/analyzer/test/src/summary/test_strategies.dart
+++ b/pkg/analyzer/test/src/summary/test_strategies.dart
@@ -18,13 +18,13 @@
String text,
FeatureSet featureSet,
) {
- featureSet ??= FeatureSet.forTesting(sdkVersion: '2.3.0');
CharSequenceReader reader = CharSequenceReader(text);
- Scanner scanner = Scanner(null, reader, AnalysisErrorListener.NULL_LISTENER)
- ..configureFeatures(
- featureSetForOverriding: featureSet,
- featureSet: featureSet,
- );
+ Scanner scanner =
+ Scanner(_SourceMock.instance, reader, AnalysisErrorListener.NULL_LISTENER)
+ ..configureFeatures(
+ featureSetForOverriding: featureSet,
+ featureSet: featureSet,
+ );
Token token = scanner.tokenize();
// Pass the feature set from the scanner to the parser
// because the scanner may have detected a language version comment
@@ -45,3 +45,10 @@
return unit;
}
+
+class _SourceMock implements Source {
+ static final Source instance = _SourceMock();
+
+ @override
+ noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
+}
diff --git a/pkg/analyzer/test/src/summary/top_level_inference_test.dart b/pkg/analyzer/test/src/summary/top_level_inference_test.dart
index 9fbb5f4..9fbcbd1 100644
--- a/pkg/analyzer/test/src/summary/top_level_inference_test.dart
+++ b/pkg/analyzer/test/src/summary/top_level_inference_test.dart
@@ -2714,7 +2714,7 @@
var path = convertPath(testFilePath);
var analysisSession = contextFor(path).currentSession;
- var result = await analysisSession.getUnitElement(path);
- return result.element.library /*!*/;
+ var result = (await analysisSession.getUnitElement(path))!;
+ return result.element.library;
}
}
diff --git a/pkg/analyzer/test/src/task/options_test.dart b/pkg/analyzer/test/src/task/options_test.dart
index 73d9ac2..c855dc4 100644
--- a/pkg/analyzer/test/src/task/options_test.dart
+++ b/pkg/analyzer/test/src/task/options_test.dart
@@ -36,7 +36,7 @@
@reflectiveTest
class ContextConfigurationTest {
- final AnalysisOptions analysisOptions = AnalysisOptionsImpl();
+ final AnalysisOptionsImpl analysisOptions = AnalysisOptionsImpl();
final AnalysisOptionsProvider optionsProvider = AnalysisOptionsProvider();
@@ -400,10 +400,10 @@
@reflectiveTest
class OptionsProviderTest {
- TestPathTranslator pathTranslator;
- ResourceProvider resourceProvider;
+ late final TestPathTranslator pathTranslator;
+ late final ResourceProvider resourceProvider;
- AnalysisOptionsProvider provider;
+ late final AnalysisOptionsProvider provider;
String get optionsFilePath => '/analysis_options.yaml';
@@ -468,7 +468,7 @@
}
YamlMap _getOptions(String posixPath, {bool crawlUp = false}) {
- Resource resource = pathTranslator.getResource(posixPath);
+ var resource = pathTranslator.getResource(posixPath) as Folder;
return provider.getOptions(resource, crawlUp: crawlUp);
}
@@ -481,7 +481,19 @@
}
class TestRule extends LintRule {
- TestRule() : super(name: 'fantastic_test_rule', description: '');
+ TestRule()
+ : super(
+ name: 'fantastic_test_rule',
+ description: '',
+ details: '',
+ group: Group.style,
+ );
- TestRule.withName(String name) : super(name: name, description: '');
+ TestRule.withName(String name)
+ : super(
+ name: name,
+ description: '',
+ details: '',
+ group: Group.style,
+ );
}
diff --git a/pkg/analyzer/test/src/task/strong/dart2_inference_test.dart b/pkg/analyzer/test/src/task/strong/dart2_inference_test.dart
index c67500c..378090b 100644
--- a/pkg/analyzer/test/src/task/strong/dart2_inference_test.dart
+++ b/pkg/analyzer/test/src/task/strong/dart2_inference_test.dart
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/ast/ast.dart';
-import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/error/codes.dart';
@@ -730,7 +729,7 @@
await resolveTestCode(code);
{
var node = findNode.simple('w in');
- VariableElement element = node.staticElement;
+ var element = node.staticElement as VariableElement;
expect(node.staticType, isNull);
expect(element.type, typeProvider.dynamicType);
@@ -740,14 +739,14 @@
{
var node = findNode.simple('x in');
- VariableElement element = node.staticElement;
+ var element = node.staticElement as VariableElement;
expect(node.staticType, isNull);
expect(element.type, typeProvider.numType);
}
{
var node = findNode.simple('y in');
- VariableElement element = node.staticElement;
+ var element = node.staticElement as VariableElement;
expect(node.staticType, isNull);
expect(element.type, typeProvider.numType);
@@ -918,8 +917,8 @@
}
void _assertTypeAnnotations() {
- var code = result.content;
- var unit = result.unit;
+ var code = result.content!;
+ var unit = result.unit!;
var types = <int, String>{};
{
@@ -940,11 +939,11 @@
unit.accept(FunctionAstVisitor(
simpleIdentifier: (node) {
- Token comment = node.token.precedingComments;
+ var comment = node.token.precedingComments;
if (comment != null) {
- String expectedType = types[comment.offset];
+ var expectedType = types[comment.offset];
if (expectedType != null) {
- VariableElement element = node.staticElement;
+ var element = node.staticElement as VariableElement;
String actualType = typeString(element.type);
expect(actualType, expectedType, reason: '@${comment.offset}');
}
diff --git a/pkg/analyzer/test/src/task/strong/inferred_type_test.dart b/pkg/analyzer/test/src/task/strong/inferred_type_test.dart
index 7e41586..f10a523 100644
--- a/pkg/analyzer/test/src/task/strong/inferred_type_test.dart
+++ b/pkg/analyzer/test/src/task/strong/inferred_type_test.dart
@@ -19,7 +19,7 @@
@reflectiveTest
class InferredTypeTest extends PubPackageResolutionTest {
CompilationUnitElement get _resultUnitElement {
- return result.unit.declaredElement;
+ return result.unit!.declaredElement!;
}
test_asyncClosureReturnType_flatten() async {
@@ -1688,7 +1688,11 @@
}
test_futureThen() async {
- String build({String declared, String downwards, String upwards}) => '''
+ String build(
+ {required String declared,
+ required String downwards,
+ required String upwards}) =>
+ '''
import 'dart:async';
class MyFuture<T> implements Future<T> {
@@ -1729,7 +1733,11 @@
}
test_futureThen_conditional() async {
- String build({String declared, String downwards, String upwards}) => '''
+ String build(
+ {required String declared,
+ required String downwards,
+ required String upwards}) =>
+ '''
import 'dart:async';
class MyFuture<T> implements Future<T> {
MyFuture() {}
@@ -1812,7 +1820,11 @@
test_futureThen_upwards() async {
// Regression test for https://github.com/dart-lang/sdk/issues/27088.
- String build({String declared, String downwards, String upwards}) => '''
+ String build(
+ {required String declared,
+ required String downwards,
+ required String upwards}) =>
+ '''
import 'dart:async';
class MyFuture<T> implements Future<T> {
MyFuture() {}
@@ -1884,9 +1896,8 @@
test_futureUnion_asyncConditional() async {
String build(
- {String declared,
- String downwards,
- String upwards,
+ {required String downwards,
+ required String upwards,
String expectedInfo = ''}) =>
'''
import 'dart:async';
@@ -1920,9 +1931,9 @@
test_futureUnion_downwards() async {
String build(
- {String declared,
- String downwards,
- String upwards,
+ {required String declared,
+ required String downwards,
+ required String upwards,
String expectedError = ''}) {
return '''
import 'dart:async';
@@ -2213,7 +2224,7 @@
}
typedef void F<V>(V v);
''');
- var f = _resultUnitElement.getType('C').methods[0];
+ var f = _resultUnitElement.getType('C')!.methods[0];
_assertTypeStr(f.type, 'void Function(U) Function<U>(U)');
}
@@ -2227,7 +2238,7 @@
}
typedef List<V> G<V>();
''');
- var f = _resultUnitElement.getType('C').methods[0];
+ var f = _resultUnitElement.getType('C')!.methods[0];
_assertTypeStr(f.type, 'void Function<U>(List<U> Function())');
}
@@ -2241,7 +2252,7 @@
}
typedef V F<V>();
''');
- var f = _resultUnitElement.getType('C').methods[0];
+ var f = _resultUnitElement.getType('C')!.methods[0];
_assertTypeStr(f.type, 'U Function() Function<U>(U)');
}
@@ -2955,7 +2966,7 @@
int foo;
}
''');
- var f = _resultUnitElement.getType('C').accessors[0];
+ var f = _resultUnitElement.getType('C')!.accessors[0];
_assertTypeStr(f.type, 'void Function(int)');
}
@@ -2968,7 +2979,7 @@
set foo(int x) {}
}
''');
- var f = _resultUnitElement.getType('C').accessors[0];
+ var f = _resultUnitElement.getType('C')!.accessors[0];
_assertTypeStr(f.type, 'void Function(int)');
}
@@ -2982,10 +2993,10 @@
};
}
''');
- var x = _resultUnitElement.getType('C').fields[0];
+ var x = _resultUnitElement.getType('C')!.fields[0];
expect(x.name, 'x');
_assertTypeStr(x.type, 'String');
- var y = _resultUnitElement.getType('C').fields[1];
+ var y = _resultUnitElement.getType('C')!.fields[1];
expect(y.name, 'y');
_assertTypeStr(y.type, 'Map<String, Map<String, String>>');
}
@@ -3000,7 +3011,7 @@
var x = _resultUnitElement.topLevelVariables[0];
expect(x.name, 'x');
_assertTypeStr(x.type, 'String');
- var y = _resultUnitElement.getType('C').fields[0];
+ var y = _resultUnitElement.getType('C')!.fields[0];
expect(y.name, 'y');
_assertTypeStr(y.type, 'String');
}
@@ -3288,7 +3299,7 @@
(int i) => {i: b};
}
''');
- var f = _resultUnitElement.getType('C').fields[0];
+ var f = _resultUnitElement.getType('C')!.fields[0];
_assertTypeStr(f.type, 'Map<int, bool> Function(int) Function(bool)');
}
@@ -3298,7 +3309,7 @@
static final f = (bool b) => b;
}
''');
- var f = _resultUnitElement.getType('C').fields[0];
+ var f = _resultUnitElement.getType('C')!.fields[0];
_assertTypeStr(f.type, 'bool Function(bool)');
}
@@ -3308,7 +3319,7 @@
static final f = (bool b) => 1;
}
''');
- var f = _resultUnitElement.getType('C').fields[0];
+ var f = _resultUnitElement.getType('C')!.fields[0];
_assertTypeStr(f.type, 'int Function(bool)');
}
diff --git a/pkg/analyzer/test/src/util/yaml_test.dart b/pkg/analyzer/test/src/util/yaml_test.dart
index fec42e0..3877098 100644
--- a/pkg/analyzer/test/src/util/yaml_test.dart
+++ b/pkg/analyzer/test/src/util/yaml_test.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/src/util/yaml.dart';
+import 'package:source_span/source_span.dart';
import 'package:test/test.dart';
import 'package:yaml/src/event.dart';
import 'package:yaml/yaml.dart';
@@ -102,8 +103,9 @@
bool containsKey(Map<dynamic, YamlNode> map, dynamic key) =>
_getValue(map, key) != null;
-void expectEquals(YamlNode actual, YamlNode expected) {
+void expectEquals(YamlNode? actual, YamlNode? expected) {
if (expected is YamlScalar) {
+ actual!;
expect(actual, TypeMatcher<YamlScalar>());
expect(expected.value, actual.value);
} else if (expected is YamlList) {
@@ -150,20 +152,23 @@
YamlNode wrap(Object value) {
if (value is List) {
- List wrappedElements = value.map((e) => wrap(e)).toList();
- return YamlList.internal(wrappedElements, null, CollectionStyle.BLOCK);
+ var wrappedElements = value.map((e) => wrap(e)).toList();
+ return YamlList.internal(
+ wrappedElements, _FileSpanMock.instance, CollectionStyle.BLOCK);
} else if (value is Map) {
Map<dynamic, YamlNode> wrappedEntries = <dynamic, YamlNode>{};
value.forEach((k, v) {
wrappedEntries[wrap(k)] = wrap(v);
});
- return YamlMap.internal(wrappedEntries, null, CollectionStyle.BLOCK);
+ return YamlMap.internal(
+ wrappedEntries, _FileSpanMock.instance, CollectionStyle.BLOCK);
} else {
- return YamlScalar.internal(value, ScalarEvent(null, '', ScalarStyle.PLAIN));
+ return YamlScalar.internal(
+ value, ScalarEvent(_FileSpanMock.instance, '', ScalarStyle.PLAIN));
}
}
-YamlNode _getValue(Map map, Object key) {
+YamlNode? _getValue(Map map, Object key) {
Object keyValue = valueOf(key);
for (var existingKey in map.keys) {
if (valueOf(existingKey) == keyValue) {
@@ -172,3 +177,10 @@
}
return null;
}
+
+class _FileSpanMock implements FileSpan {
+ static final FileSpan instance = _FileSpanMock();
+
+ @override
+ noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
+}
diff --git a/pkg/analyzer/test/src/workspace/basic_test.dart b/pkg/analyzer/test/src/workspace/basic_test.dart
index 2ed06b8..2d08778 100644
--- a/pkg/analyzer/test/src/workspace/basic_test.dart
+++ b/pkg/analyzer/test/src/workspace/basic_test.dart
@@ -34,7 +34,7 @@
void test_contains_differentWorkspace() {
newFile('/workspace2/project/lib/file.dart');
- var package = findPackage('/workspace/project/lib/code.dart');
+ var package = findPackage('/workspace/project/lib/code.dart')!;
expect(
package.contains(
TestSource(convertPath('/workspace2/project/lib/file.dart'))),
@@ -44,7 +44,7 @@
void test_contains_sameWorkspace() {
newFile('/workspace/project/lib/file2.dart');
- var package = findPackage('/workspace/project/lib/code.dart');
+ var package = findPackage('/workspace/project/lib/code.dart')!;
expect(
package.contains(
TestSource(convertPath('/workspace/project/lib/file2.dart'))),
@@ -62,7 +62,7 @@
void test_findPackageFor_includedFile() {
newFile('/workspace/project/lib/file.dart');
- var package = findPackage('/workspace/project/lib/file.dart');
+ var package = findPackage('/workspace/project/lib/file.dart')!;
expect(package, isNotNull);
expect(package.root, convertPath('/workspace'));
expect(package.workspace, equals(workspace));
@@ -77,7 +77,7 @@
void test_packagesAvailableTo() {
var libraryPath = convertPath('/workspace/lib/test.dart');
- var package = findPackage(libraryPath);
+ var package = findPackage(libraryPath)!;
var packageMap = package.packagesAvailableTo(libraryPath);
expect(packageMap.keys, unorderedEquals(['p1', 'workspace']));
}
diff --git a/pkg/analyzer/test/src/workspace/bazel_test.dart b/pkg/analyzer/test/src/workspace/bazel_test.dart
index 9d7cd6e..00f80db 100644
--- a/pkg/analyzer/test/src/workspace/bazel_test.dart
+++ b/pkg/analyzer/test/src/workspace/bazel_test.dart
@@ -9,7 +9,6 @@
import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart';
import 'package:analyzer/src/workspace/bazel.dart';
import 'package:async/async.dart';
-import 'package:meta/meta.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
import 'package:watcher/watcher.dart';
@@ -27,14 +26,14 @@
@reflectiveTest
class BazelFileUriResolverTest with ResourceProviderMixin {
- BazelWorkspace workspace;
- BazelFileUriResolver resolver;
+ late final BazelWorkspace workspace;
+ late final BazelFileUriResolver resolver;
void setUp() {
newFile('/workspace/WORKSPACE');
newFolder('/workspace/bazel-genfiles');
workspace =
- BazelWorkspace.find(resourceProvider, convertPath('/workspace'));
+ BazelWorkspace.find(resourceProvider, convertPath('/workspace'))!;
resolver = BazelFileUriResolver(workspace);
newFile('/workspace/test.dart');
newFile('/workspace/bazel-bin/gen1.dart');
@@ -43,63 +42,58 @@
}
void test_resolveAbsolute_doesNotExist() {
- Source source = _resolvePath('/workspace/foo.dart');
- expect(source, isNotNull);
+ var source = _resolvePath('/workspace/foo.dart')!;
expect(source.exists(), isFalse);
expect(source.fullName, convertPath('/workspace/foo.dart'));
}
void test_resolveAbsolute_file() {
- Source source = _resolvePath('/workspace/test.dart');
- expect(source, isNotNull);
+ var source = _resolvePath('/workspace/test.dart')!;
expect(source.exists(), isTrue);
expect(source.fullName, convertPath('/workspace/test.dart'));
}
void test_resolveAbsolute_folder() {
- Source source = _resolvePath('/workspace');
+ var source = _resolvePath('/workspace');
expect(source, isNull);
}
void test_resolveAbsolute_generated_file_exists_one() {
- Source source = _resolvePath('/workspace/gen1.dart');
- expect(source, isNotNull);
+ var source = _resolvePath('/workspace/gen1.dart')!;
expect(source.exists(), isTrue);
expect(source.fullName, convertPath('/workspace/bazel-bin/gen1.dart'));
}
void test_resolveAbsolute_generated_file_exists_two() {
- Source source = _resolvePath('/workspace/gen2.dart');
- expect(source, isNotNull);
+ var source = _resolvePath('/workspace/gen2.dart')!;
expect(source.exists(), isTrue);
expect(source.fullName, convertPath('/workspace/bazel-genfiles/gen2.dart'));
}
void test_resolveAbsolute_notFile_dartUri() {
Uri uri = Uri(scheme: 'dart', path: 'core');
- Source source = resolver.resolveAbsolute(uri);
+ var source = resolver.resolveAbsolute(uri);
expect(source, isNull);
}
void test_resolveAbsolute_notFile_httpsUri() {
Uri uri = Uri(scheme: 'https', path: '127.0.0.1/test.dart');
- Source source = resolver.resolveAbsolute(uri);
+ var source = resolver.resolveAbsolute(uri);
expect(source, isNull);
}
void test_restoreAbsolute() {
Uri uri =
resourceProvider.pathContext.toUri(convertPath('/workspace/test.dart'));
- Source source = resolver.resolveAbsolute(uri);
- expect(source, isNotNull);
+ var source = resolver.resolveAbsolute(uri)!;
expect(resolver.restoreAbsolute(source), uri);
expect(
- resolver
- .restoreAbsolute(NonExistingSource(source.fullName, null, null)),
+ resolver.restoreAbsolute(NonExistingSource(source.fullName,
+ Uri.parse('package:test/test.dart'), UriKind.PACKAGE_URI)),
uri);
}
- Source _resolvePath(String absolutePosixPath) {
+ Source? _resolvePath(String absolutePosixPath) {
String absolutePath = convertPath(absolutePosixPath);
Uri uri = resourceProvider.pathContext.toUri(absolutePath);
return resolver.resolveAbsolute(uri);
@@ -108,8 +102,8 @@
@reflectiveTest
class BazelPackageUriResolverTest with ResourceProviderMixin {
- BazelWorkspace workspace;
- BazelPackageUriResolver resolver;
+ late final BazelWorkspace workspace;
+ late final BazelPackageUriResolver resolver;
void test_resolveAbsolute_bin() {
_addResources([
@@ -225,7 +219,7 @@
'/workspace/bazel-genfiles/',
]);
var uri = Uri.parse('package:foo..bar/baz.dart');
- Source source = resolver.resolveAbsolute(uri);
+ var source = resolver.resolveAbsolute(uri);
expect(source, isNull);
}
@@ -235,7 +229,7 @@
'/workspace/bazel-genfiles/',
]);
var uri = Uri.parse('package:foo//bar/baz.dart');
- Source source = resolver.resolveAbsolute(uri);
+ var source = resolver.resolveAbsolute(uri);
expect(source, isNull);
}
@@ -244,7 +238,7 @@
'/workspace/WORKSPACE',
'/workspace/bazel-genfiles/',
]);
- Source source = resolver.resolveAbsolute(Uri.parse('package:foo'));
+ var source = resolver.resolveAbsolute(Uri.parse('package:foo'));
expect(source, isNull);
}
@@ -253,7 +247,7 @@
'/workspace/WORKSPACE',
'/workspace/bazel-genfiles/',
]);
- Source source = resolver.resolveAbsolute(Uri.parse('dart:async'));
+ var source = resolver.resolveAbsolute(Uri.parse('dart:async'));
expect(source, isNull);
}
@@ -263,8 +257,7 @@
'/workspace/bazel-genfiles/',
'/workspace/my/foo/lib/bar.dart',
]);
- Source source =
- resolver.resolveAbsolute(Uri.parse('package:/foo/bar.dart'));
+ var source = resolver.resolveAbsolute(Uri.parse('package:/foo/bar.dart'));
expect(source, isNull);
}
@@ -547,7 +540,7 @@
}
}
workspace =
- BazelWorkspace.find(resourceProvider, convertPath(workspacePath));
+ BazelWorkspace.find(resourceProvider, convertPath(workspacePath))!;
resolver = BazelPackageUriResolver(workspace);
}
@@ -559,35 +552,34 @@
void _assertResolve(String uriStr, String posixPath,
{bool exists = true, bool restore = true}) {
Uri uri = Uri.parse(uriStr);
- Source source = resolver.resolveAbsolute(uri);
- expect(source, isNotNull);
+ var source = resolver.resolveAbsolute(uri)!;
expect(source.fullName, convertPath(posixPath));
expect(source.uri, uri);
expect(source.exists(), exists);
// If enabled, test also "restoreAbsolute".
if (restore) {
- Uri uri = resolver.restoreAbsolute(source);
+ var uri = resolver.restoreAbsolute(source);
expect(uri.toString(), uriStr);
}
}
- void _assertRestore(String posixPath, String expectedUri) {
+ void _assertRestore(String posixPath, String? expectedUri) {
String path = convertPath(posixPath);
_MockSource source = _MockSource(path);
- Uri uri = resolver.restoreAbsolute(source);
+ var uri = resolver.restoreAbsolute(source);
expect(uri?.toString(), expectedUri);
}
}
@reflectiveTest
class BazelWorkspacePackageTest with ResourceProviderMixin {
- BazelWorkspace workspace;
- BazelWorkspacePackage package;
+ late final BazelWorkspace workspace;
+ BazelWorkspacePackage? package;
void test_contains_differentPackage_summarySource() {
_setUpPackage();
var source = _inSummarySource('package:some.other.code/file.dart');
- expect(package.contains(source), isFalse);
+ expect(package!.contains(source), isFalse);
}
void test_contains_differentPackageInWorkspace() {
@@ -596,7 +588,7 @@
// A file that is _not_ in this package is not required to have a BUILD
// file above it, for simplicity and reduced I/O.
expect(
- package.contains(
+ package!.contains(
_testSource('/ws/some/other/code/file.dart'),
),
isFalse,
@@ -606,7 +598,7 @@
void test_contains_differentWorkspace() {
_setUpPackage();
expect(
- package.contains(
+ package!.contains(
_testSource('/ws2/some/file.dart'),
),
isFalse,
@@ -620,10 +612,10 @@
final targetBinFile = newFile('/ws/some/code/bin/code.dart');
final targetTestFile = newFile('/ws/some/code/test/code_test.dart');
- expect(package.contains(_testSource(targetFile.path)), isTrue);
- expect(package.contains(_testSource(targetFile2.path)), isTrue);
- expect(package.contains(_testSource(targetBinFile.path)), isTrue);
- expect(package.contains(_testSource(targetTestFile.path)), isTrue);
+ expect(package!.contains(_testSource(targetFile.path)), isTrue);
+ expect(package!.contains(_testSource(targetFile2.path)), isTrue);
+ expect(package!.contains(_testSource(targetBinFile.path)), isTrue);
+ expect(package!.contains(_testSource(targetTestFile.path)), isTrue);
}
void test_contains_samePackage_summarySource() {
@@ -633,8 +625,8 @@
final file2Source = _inSummarySource('package:some.code/code2.dart');
final file3Source = _inSummarySource('package:some.code/src/code2.dart');
- expect(package.contains(file2Source), isTrue);
- expect(package.contains(file3Source), isTrue);
+ expect(package!.contains(file2Source), isTrue);
+ expect(package!.contains(file3Source), isTrue);
}
void test_contains_subPackage() {
@@ -643,7 +635,7 @@
newFile('/ws/some/code/testing/lib/testing.dart');
expect(
- package.contains(
+ package!.contains(
_testSource('/ws/some/code/testing/lib/testing.dart'),
),
isFalse,
@@ -654,8 +646,19 @@
_setUpPackage();
expect(package, isNotNull);
- expect(package.root, convertPath('/ws/some/code'));
- expect(package.workspace, equals(workspace));
+ expect(package?.root, convertPath('/ws/some/code'));
+ expect(package?.workspace, equals(workspace));
+ }
+
+ void test_findPackageFor_inBlazeOut_notPackage() {
+ var path =
+ convertPath('/ws/blaze-out/k8-opt/bin/news/lib/news_base.pb.dart');
+ newFile('/ws/news/BUILD', content: '');
+ newFile(path, content: '');
+ workspace = BazelWorkspace.find(resourceProvider, path)!;
+
+ var package = workspace.findPackageFor(path);
+ expect(package, isNull);
}
void test_findPackageFor_missingMarkerFiles() {
@@ -666,7 +669,7 @@
workspace = BazelWorkspace.find(
resourceProvider,
convertPath('/ws/some/code'),
- );
+ )!;
final targetFile = newFile('/ws/some/code/lib/code.dart');
package = workspace.findPackageFor(targetFile.path);
@@ -682,14 +685,14 @@
workspace = BazelWorkspace.find(
resourceProvider,
convertPath('/ws/some/code'),
- );
+ )!;
package = workspace.findPackageFor(
convertPath('/ws/some/code/lib/code.dart'),
);
expect(package, isNotNull);
- expect(package.root, convertPath('/ws/some/code'));
- expect(package.workspace, equals(workspace));
+ expect(package?.root, convertPath('/ws/some/code'));
+ expect(package?.workspace, equals(workspace));
}
void test_findPackageFor_packagesFileExistsInOnlyBinPath() {
@@ -700,14 +703,14 @@
workspace = BazelWorkspace.find(
resourceProvider,
convertPath('/ws/some/code'),
- );
+ )!;
package = workspace.findPackageFor(
convertPath('/ws/some/code/lib/code.dart'),
);
expect(package, isNotNull);
- expect(package.root, convertPath('/ws/some/code'));
- expect(package.workspace, equals(workspace));
+ expect(package?.root, convertPath('/ws/some/code'));
+ expect(package?.workspace, equals(workspace));
}
void test_findPackageFor_packagesFileInBinExists_subPackage() {
@@ -720,20 +723,20 @@
workspace = BazelWorkspace.find(
resourceProvider,
convertPath('/ws/some/code/testing'),
- );
+ )!;
package = workspace.findPackageFor(
convertPath('/ws/some/code/testing/lib/testing.dart'),
);
expect(package, isNotNull);
- expect(package.root, convertPath('/ws/some/code/testing'));
- expect(package.workspace, equals(workspace));
+ expect(package?.root, convertPath('/ws/some/code/testing'));
+ expect(package?.workspace, equals(workspace));
}
void test_packagesAvailableTo() {
_setUpPackage();
- var packageMap =
- package.packagesAvailableTo(convertPath('/ws/some/code/lib/code.dart'));
+ var packageMap = package
+ ?.packagesAvailableTo(convertPath('/ws/some/code/lib/code.dart'));
expect(packageMap, isEmpty);
}
@@ -764,7 +767,7 @@
workspace = BazelWorkspace.find(
resourceProvider,
convertPath('/ws/some/code'),
- );
+ )!;
package = workspace.findPackageFor(
convertPath('/ws/some/code/lib/code.dart'),
);
@@ -778,13 +781,13 @@
@reflectiveTest
class BazelWorkspaceTest with ResourceProviderMixin {
- BazelWorkspace workspace;
+ late final BazelWorkspace workspace;
void test_bazelFileWatcher() async {
_addResources([
'/workspace/WORKSPACE',
]);
- _MockTimer timer;
+ late _MockTimer timer;
var timerFactory = (Duration _, void Function(Timer) callback) {
timer = _MockTimer(callback);
return timer;
@@ -838,9 +841,9 @@
'/workspace/WORKSPACE',
'/workspace/bazel-bin/my/module/test1.dart',
]);
- BazelWorkspace workspace = BazelWorkspace.find(
- resourceProvider, convertPath('/workspace/my/module'));
- _MockTimer timer;
+ var workspace = BazelWorkspace.find(
+ resourceProvider, convertPath('/workspace/my/module'))!;
+ late _MockTimer timer;
var timerFactory = (Duration _, void Function(Timer) callback) {
timer = _MockTimer(callback);
return timer;
@@ -853,7 +856,7 @@
timerFactory: timerFactory)));
var file1 =
- workspace.findFile(convertPath('/workspace/my/module/test1.dart'));
+ workspace.findFile(convertPath('/workspace/my/module/test1.dart'))!;
expect(file1.exists, true);
var watcher = await watcherCompleter.future;
var events = StreamQueue(watcher.events);
@@ -899,12 +902,12 @@
'/workspace/WORKSPACE',
'/workspace/bazel-bin/my/module/test1.dart',
]);
- BazelWorkspace workspace = BazelWorkspace.find(
- resourceProvider, convertPath('/workspace/my/module'));
+ var workspace = BazelWorkspace.find(
+ resourceProvider, convertPath('/workspace/my/module'))!;
var notifications = StreamQueue(workspace.bazelCandidateFiles);
var file1 =
- workspace.findFile(convertPath('/workspace/my/module/test1.dart'));
+ workspace.findFile(convertPath('/workspace/my/module/test1.dart'))!;
expect(file1.exists, true);
var notification = await notifications.next;
expect(notification.requested, convertPath('my/module/test1.dart'));
@@ -914,7 +917,7 @@
[convertPath('/workspace/bazel-bin/my/module/test1.dart')]));
var file2 =
- workspace.findFile(convertPath('/workspace/my/module/test2.dart'));
+ workspace.findFile(convertPath('/workspace/my/module/test2.dart'))!;
expect(file2.exists, false);
notification = await notifications.next;
expect(notification.requested, convertPath('my/module/test2.dart'));
@@ -938,8 +941,8 @@
'/workspace/blaze-out/host/bin/',
'/workspace/my/module/BUILD',
]);
- BazelWorkspace workspace = BazelWorkspace.find(
- resourceProvider, convertPath('/workspace/my/module'));
+ var workspace = BazelWorkspace.find(
+ resourceProvider, convertPath('/workspace/my/module'))!;
expect(workspace.root, convertPath('/workspace'));
expect(workspace.readonly, isNull);
expect(workspace.binPaths.single,
@@ -948,7 +951,7 @@
expect(
workspace
.findPackageFor(convertPath(
- '/workspace/blaze-out/host/bin/my/module/lib/foo.dart'))
+ '/workspace/blaze-out/host/bin/my/module/lib/foo.dart'))!
.root,
convertPath('/workspace/my/module'));
}
@@ -959,8 +962,8 @@
'/workspace/blaze-out/',
'/workspace/my/module/',
]);
- BazelWorkspace workspace = BazelWorkspace.find(
- resourceProvider, convertPath('/workspace/my/module'));
+ var workspace = BazelWorkspace.find(
+ resourceProvider, convertPath('/workspace/my/module'))!;
expect(workspace.root, convertPath('/workspace'));
expect(workspace.readonly, isNull);
expect(workspace.binPaths.single, convertPath('/workspace/blaze-bin'));
@@ -973,8 +976,8 @@
'/workspace/blaze-out/k8-fastbuild/bin/',
'/workspace/my/module/',
]);
- BazelWorkspace workspace = BazelWorkspace.find(
- resourceProvider, convertPath('/workspace/my/module'));
+ var workspace = BazelWorkspace.find(
+ resourceProvider, convertPath('/workspace/my/module'))!;
expect(workspace.root, convertPath('/workspace'));
expect(workspace.readonly, isNull);
expect(workspace.binPaths, hasLength(2));
@@ -991,8 +994,8 @@
'/Users/user/test/prime/',
'/Users/user/test/prime/bazel-genfiles/',
]);
- BazelWorkspace workspace = BazelWorkspace.find(
- resourceProvider, convertPath('/Users/user/test/prime/my/module'));
+ var workspace = BazelWorkspace.find(
+ resourceProvider, convertPath('/Users/user/test/prime/my/module'))!;
expect(workspace.root, convertPath('/Users/user/test/prime'));
expect(workspace.readonly, convertPath('/Users/user/test/READONLY/prime'));
expect(workspace.binPaths.single,
@@ -1007,8 +1010,8 @@
'/Users/user/test/prime/WORKSPACE',
'/Users/user/test/prime/bazel-genfiles/',
]);
- BazelWorkspace workspace = BazelWorkspace.find(
- resourceProvider, convertPath('/Users/user/test/prime/my/module'));
+ var workspace = BazelWorkspace.find(
+ resourceProvider, convertPath('/Users/user/test/prime/my/module'))!;
expect(workspace.root, convertPath('/Users/user/test/prime'));
expect(workspace.readonly, isNull);
expect(workspace.binPaths.single,
@@ -1023,8 +1026,8 @@
'/Users/user/test/prime/',
'/Users/user/test/prime/blaze-genfiles/',
]);
- BazelWorkspace workspace = BazelWorkspace.find(
- resourceProvider, convertPath('/Users/user/test/prime/my/module'));
+ var workspace = BazelWorkspace.find(
+ resourceProvider, convertPath('/Users/user/test/prime/my/module'))!;
expect(workspace.root, convertPath('/Users/user/test/prime'));
expect(workspace.readonly, convertPath('/Users/user/test/READONLY/prime'));
expect(workspace.binPaths.single,
@@ -1038,8 +1041,8 @@
'/workspace/WORKSPACE',
'/workspace/bazel-genfiles/',
]);
- BazelWorkspace workspace = BazelWorkspace.find(
- resourceProvider, convertPath('/workspace/my/module'));
+ var workspace = BazelWorkspace.find(
+ resourceProvider, convertPath('/workspace/my/module'))!;
expect(workspace.root, convertPath('/workspace'));
expect(workspace.readonly, isNull);
expect(workspace.binPaths.single, convertPath('/workspace/bazel-bin'));
@@ -1051,8 +1054,8 @@
'/workspace/WORKSPACE',
'/workspace/bazel-genfiles/',
]);
- BazelWorkspace workspace = BazelWorkspace.find(
- resourceProvider, convertPath('/workspace/my/module'));
+ var workspace = BazelWorkspace.find(
+ resourceProvider, convertPath('/workspace/my/module'))!;
expect(workspace.root, convertPath('/workspace'));
expect(workspace.readonly, isNull);
expect(workspace.binPaths.single, convertPath('/workspace/bazel-bin'));
@@ -1064,8 +1067,8 @@
'/workspace/WORKSPACE',
'/workspace/bazel-genfiles/',
]);
- BazelWorkspace workspace =
- BazelWorkspace.find(resourceProvider, convertPath('/workspace'));
+ var workspace =
+ BazelWorkspace.find(resourceProvider, convertPath('/workspace'))!;
expect(workspace.root, convertPath('/workspace'));
expect(workspace.readonly, isNull);
expect(workspace.binPaths.single, convertPath('/workspace/bazel-bin'));
@@ -1077,8 +1080,8 @@
'/workspace/WORKSPACE',
'/workspace/blaze-genfiles/',
]);
- BazelWorkspace workspace =
- BazelWorkspace.find(resourceProvider, convertPath('/workspace'));
+ var workspace =
+ BazelWorkspace.find(resourceProvider, convertPath('/workspace'))!;
expect(workspace.root, convertPath('/workspace'));
expect(workspace.readonly, isNull);
expect(workspace.binPaths.single, convertPath('/workspace/blaze-bin'));
@@ -1086,22 +1089,21 @@
}
void test_find_null_noWorkspaceMarkers() {
- BazelWorkspace workspace = BazelWorkspace.find(
+ var workspace = BazelWorkspace.find(
resourceProvider, convertPath('/workspace/my/module'));
expect(workspace, isNull);
}
void test_find_null_noWorkspaceMarkers_inRoot() {
- BazelWorkspace workspace =
- BazelWorkspace.find(resourceProvider, convertPath('/'));
+ var workspace = BazelWorkspace.find(resourceProvider, convertPath('/'));
expect(workspace, isNull);
}
void test_find_null_symlinkPrefix() {
String prefix = BazelWorkspace.defaultSymlinkPrefix;
newFile('/workspace/WORKSPACE');
- BazelWorkspace workspace = BazelWorkspace.find(
- resourceProvider, convertPath('/workspace/my/module'));
+ var workspace = BazelWorkspace.find(
+ resourceProvider, convertPath('/workspace/my/module'))!;
expect(workspace.root, convertPath('/workspace'));
expect(workspace.readonly, isNull);
expect(workspace.binPaths.single, convertPath('/workspace/$prefix-bin'));
@@ -1120,7 +1122,7 @@
'/Users/user/test/READONLY/prime/other/module/test4.dart',
]);
workspace = BazelWorkspace.find(
- resourceProvider, convertPath('/Users/user/test/prime/my/module'));
+ resourceProvider, convertPath('/Users/user/test/prime/my/module'))!;
_expectFindFile('/Users/user/test/prime/my/module/test1.dart',
equals: '/Users/user/test/prime/my/module/test1.dart');
_expectFindFile('/Users/user/test/prime/my/module/test2.dart',
@@ -1140,7 +1142,7 @@
'/Users/user/test/READONLY/prime/my/module/test.dart',
]);
workspace = BazelWorkspace.find(
- resourceProvider, convertPath('/Users/user/test/prime/my/module'));
+ resourceProvider, convertPath('/Users/user/test/prime/my/module'))!;
_expectFindFile('/Users/user/test/prime/my/module/test.dart',
equals: '/Users/user/test/prime/my/module/test.dart');
}
@@ -1155,7 +1157,7 @@
'/workspace/bazel-genfiles/my/module/test3.dart',
]);
workspace = BazelWorkspace.find(
- resourceProvider, convertPath('/workspace/my/module'));
+ resourceProvider, convertPath('/workspace/my/module'))!;
_expectFindFile('/workspace/my/module/test1.dart',
equals: '/workspace/my/module/test1.dart');
_expectFindFile('/workspace/my/module/test2.dart',
@@ -1187,8 +1189,8 @@
}
/// Expect that [BazelWorkspace.findFile], given [path], returns [equals].
- void _expectFindFile(String path, {@required String equals}) =>
- expect(workspace.findFile(convertPath(path)).path, convertPath(equals));
+ void _expectFindFile(String path, {required String equals}) =>
+ expect(workspace.findFile(convertPath(path))!.path, convertPath(equals));
}
class _MockSource implements Source {
diff --git a/pkg/analyzer/test/src/workspace/gn_test.dart b/pkg/analyzer/test/src/workspace/gn_test.dart
index 122391c..9441a01 100644
--- a/pkg/analyzer/test/src/workspace/gn_test.dart
+++ b/pkg/analyzer/test/src/workspace/gn_test.dart
@@ -23,7 +23,7 @@
newFile('/ws/some/code/BUILD.gn');
var targetFile = newFile('/ws/some/code/lib/code.dart');
- var package = workspace.findPackageFor(targetFile.path);
+ var package = workspace.findPackageFor(targetFile.path)!;
// A file that is _not_ in this package is not required to have a BUILD.gn
// file above it, for simplicity and reduced I/O.
expect(
@@ -37,7 +37,7 @@
newFile('/ws/some/code/BUILD.gn');
var targetFile = newFile('/ws/some/code/lib/code.dart');
- var package = workspace.findPackageFor(targetFile.path);
+ var package = workspace.findPackageFor(targetFile.path)!;
expect(package.contains(TestSource(convertPath('/ws2/some/file.dart'))),
isFalse);
}
@@ -51,7 +51,7 @@
var targetBinFile = newFile('/ws/some/code/bin/code.dart');
var targetTestFile = newFile('/ws/some/code/test/code_test.dart');
- var package = workspace.findPackageFor(targetFile.path);
+ var package = workspace.findPackageFor(targetFile.path)!;
expect(package.contains(TestSource(targetFile2.path)), isTrue);
expect(package.contains(TestSource(targetFile3.path)), isTrue);
expect(package.contains(TestSource(targetBinFile.path)), isTrue);
@@ -66,7 +66,7 @@
newFile('/ws/some/code/testing/lib/testing.dart');
var package =
- workspace.findPackageFor(convertPath('/ws/some/code/lib/code.dart'));
+ workspace.findPackageFor(convertPath('/ws/some/code/lib/code.dart'))!;
expect(
package.contains(
TestSource(convertPath('/ws/some/code/testing/lib/testing.dart'))),
@@ -78,8 +78,7 @@
newFile('/ws/some/code/BUILD.gn');
var targetFile = newFile('/ws/some/code/lib/code.dart');
- var package = workspace.findPackageFor(targetFile.path);
- expect(package, isNotNull);
+ var package = workspace.findPackageFor(targetFile.path)!;
expect(package.root, convertPath('/ws/some/code'));
expect(package.workspace, equals(workspace));
}
@@ -97,7 +96,7 @@
GnWorkspace workspace = _buildStandardGnWorkspace();
newFile('/ws/some/code/BUILD.gn');
var libraryPath = newFile('/ws/some/code/lib/code.dart').path;
- var package = workspace.findPackageFor(libraryPath);
+ var package = workspace.findPackageFor(libraryPath)!;
var packageMap = package.packagesAvailableTo(libraryPath);
expect(packageMap.keys, unorderedEquals(['p1', 'workspace']));
}
@@ -127,7 +126,7 @@
}''');
newFolder('/ws/some/code');
var gnWorkspace =
- GnWorkspace.find(resourceProvider, convertPath('/ws/some/code'));
+ GnWorkspace.find(resourceProvider, convertPath('/ws/some/code'))!;
expect(gnWorkspace.isBazel, isFalse);
return gnWorkspace;
}
@@ -137,7 +136,7 @@
class GnWorkspaceTest with ResourceProviderMixin {
void test_find_noJiriRoot() {
newFolder('/workspace');
- GnWorkspace workspace =
+ var workspace =
GnWorkspace.find(resourceProvider, convertPath('/workspace'));
expect(workspace, isNull);
}
@@ -145,7 +144,7 @@
void test_find_noPackagesFiles() {
newFolder('/workspace/.jiri_root');
newFolder('/workspace/some/code');
- GnWorkspace workspace =
+ var workspace =
GnWorkspace.find(resourceProvider, convertPath('/workspace'));
expect(workspace, isNull);
}
@@ -164,9 +163,8 @@
newFile('/workspace/.fx-build-dir', content: '$buildDir\n');
newFile(
'/workspace/out/debug-x87_128/dartlang/gen/some/code/foo_package_config.json');
- GnWorkspace workspace =
- GnWorkspace.find(resourceProvider, convertPath('/workspace/some/code'));
- expect(workspace, isNotNull);
+ var workspace =
+ GnWorkspace.find(resourceProvider, convertPath('/workspace/some/code'))!;
expect(workspace.root, convertPath('/workspace'));
}
@@ -191,12 +189,11 @@
}
]
}''');
- GnWorkspace workspace =
- GnWorkspace.find(resourceProvider, convertPath('/workspace/some/code'));
- expect(workspace, isNotNull);
+ var workspace =
+ GnWorkspace.find(resourceProvider, convertPath('/workspace/some/code'))!;
expect(workspace.root, convertPath('/workspace'));
expect(workspace.packageMap.length, 1);
- expect(workspace.packageMap['flutter'][0].path,
+ expect(workspace.packageMap['flutter']![0].path,
convertPath("$packageLocation/lib"));
}
@@ -221,12 +218,11 @@
}
]
}''');
- GnWorkspace workspace =
- GnWorkspace.find(resourceProvider, convertPath('/workspace/some/code'));
- expect(workspace, isNotNull);
+ var workspace =
+ GnWorkspace.find(resourceProvider, convertPath('/workspace/some/code'))!;
expect(workspace.root, convertPath('/workspace'));
expect(workspace.packageMap.length, 1);
- expect(workspace.packageMap['flutter'][0].path,
+ expect(workspace.packageMap['flutter']![0].path,
convertPath("$packageLocation/lib"));
}
@@ -249,12 +245,11 @@
}
]
}''');
- GnWorkspace workspace =
- GnWorkspace.find(resourceProvider, convertPath('/workspace/some/code'));
- expect(workspace, isNotNull);
+ var workspace =
+ GnWorkspace.find(resourceProvider, convertPath('/workspace/some/code'))!;
expect(workspace.root, convertPath('/workspace'));
expect(workspace.packageMap.length, 1);
- expect(workspace.packageMap['flutter'][0].path,
+ expect(workspace.packageMap['flutter']![0].path,
convertPath("$packageLocation/lib"));
}
@@ -278,12 +273,11 @@
}
]
}''');
- GnWorkspace workspace =
- GnWorkspace.find(resourceProvider, convertPath('/workspace/some/code'));
- expect(workspace, isNotNull);
+ var workspace =
+ GnWorkspace.find(resourceProvider, convertPath('/workspace/some/code'))!;
expect(workspace.root, convertPath('/workspace'));
expect(workspace.packageMap.length, 1);
- expect(workspace.packageMap['flutter'][0].path,
+ expect(workspace.packageMap['flutter']![0].path,
convertPath("$packageLocation/lib"));
}
@@ -324,12 +318,11 @@
}
]
}''');
- GnWorkspace workspace =
- GnWorkspace.find(resourceProvider, convertPath('/workspace/some/code'));
- expect(workspace, isNotNull);
+ var workspace =
+ GnWorkspace.find(resourceProvider, convertPath('/workspace/some/code'))!;
expect(workspace.root, convertPath('/workspace'));
expect(workspace.packageMap.length, 1);
- expect(workspace.packageMap['rettulf'][0].path,
+ expect(workspace.packageMap['rettulf']![0].path,
convertPath("$otherPackageLocation/lib2"));
}
@@ -370,14 +363,13 @@
}
]
}''');
- GnWorkspace workspace =
- GnWorkspace.find(resourceProvider, convertPath('/workspace/some/code'));
- expect(workspace, isNotNull);
+ var workspace =
+ GnWorkspace.find(resourceProvider, convertPath('/workspace/some/code'))!;
expect(workspace.root, convertPath('/workspace'));
expect(workspace.packageMap.length, 2);
- expect(workspace.packageMap['flutter'][0].path,
+ expect(workspace.packageMap['flutter']![0].path,
convertPath("$packageOneLocation/one/lib"));
- expect(workspace.packageMap['rettulf'][0].path,
+ expect(workspace.packageMap['rettulf']![0].path,
convertPath("$packageTwoLocation/two/lib"));
}
}
diff --git a/pkg/analyzer/test/src/workspace/package_build_test.dart b/pkg/analyzer/test/src/workspace/package_build_test.dart
index 2a9000a..dbc0e58 100644
--- a/pkg/analyzer/test/src/workspace/package_build_test.dart
+++ b/pkg/analyzer/test/src/workspace/package_build_test.dart
@@ -6,7 +6,6 @@
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart';
import 'package:analyzer/src/workspace/package_build.dart';
-import 'package:meta/meta.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -32,18 +31,18 @@
noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
@override
- Source resolveAbsolute(Uri uri, [Uri actualUri]) {
+ Source? resolveAbsolute(Uri uri, [Uri? actualUri]) {
return uriToFile[uri]?.createSource(uri);
}
@override
- Uri restoreAbsolute(Source source) => pathToUri[source.fullName];
+ Uri? restoreAbsolute(Source source) => pathToUri[source.fullName];
}
@reflectiveTest
class PackageBuildFileUriResolverTest with ResourceProviderMixin {
- PackageBuildWorkspace workspace;
- PackageBuildFileUriResolver resolver;
+ late final PackageBuildWorkspace workspace;
+ late final PackageBuildFileUriResolver resolver;
void setUp() {
newFolder('/workspace/.dart_tool/build/generated/project/lib');
@@ -55,7 +54,7 @@
'project': [getFolder('/workspace')]
},
convertPath('/workspace'),
- );
+ )!;
resolver = PackageBuildFileUriResolver(workspace);
newFile('/workspace/test.dart');
newFile('/workspace/.dart_tool/build/generated/project/gen.dart');
@@ -63,27 +62,25 @@
}
void test_resolveAbsolute_doesNotExist() {
- Source source = _resolvePath('/workspace/foo.dart');
+ var source = _resolvePath('/workspace/foo.dart')!;
expect(source, isNotNull);
expect(source.exists(), isFalse);
expect(source.fullName, convertPath('/workspace/foo.dart'));
}
void test_resolveAbsolute_file() {
- Source source = _resolvePath('/workspace/test.dart');
- expect(source, isNotNull);
+ var source = _resolvePath('/workspace/test.dart')!;
expect(source.exists(), isTrue);
expect(source.fullName, convertPath('/workspace/test.dart'));
}
void test_resolveAbsolute_folder() {
- Source source = _resolvePath('/workspace');
+ var source = _resolvePath('/workspace');
expect(source, isNull);
}
void test_resolveAbsolute_generated_file_exists_one() {
- Source source = _resolvePath('/workspace/gen.dart');
- expect(source, isNotNull);
+ var source = _resolvePath('/workspace/gen.dart')!;
expect(source.exists(), isTrue);
expect(source.fullName,
convertPath('/workspace/.dart_tool/build/generated/project/gen.dart'));
@@ -91,29 +88,29 @@
void test_resolveAbsolute_notFile_dartUri() {
Uri uri = Uri(scheme: 'dart', path: 'core');
- Source source = resolver.resolveAbsolute(uri);
+ var source = resolver.resolveAbsolute(uri);
expect(source, isNull);
}
void test_resolveAbsolute_notFile_httpsUri() {
Uri uri = Uri(scheme: 'https', path: '127.0.0.1/test.dart');
- Source source = resolver.resolveAbsolute(uri);
+ var source = resolver.resolveAbsolute(uri);
expect(source, isNull);
}
void test_restoreAbsolute() {
Uri uri =
resourceProvider.pathContext.toUri(convertPath('/workspace/test.dart'));
- Source source = resolver.resolveAbsolute(uri);
+ var source = resolver.resolveAbsolute(uri)!;
expect(source, isNotNull);
expect(resolver.restoreAbsolute(source), uri);
expect(
- resolver
- .restoreAbsolute(NonExistingSource(source.fullName, null, null)),
+ resolver.restoreAbsolute(NonExistingSource(source.fullName,
+ Uri.parse('package:test/test.dart'), UriKind.PACKAGE_URI)),
uri);
}
- Source _resolvePath(String path) {
+ Source? _resolvePath(String path) {
Uri uri = toUri(path);
return resolver.resolveAbsolute(uri);
}
@@ -121,15 +118,15 @@
@reflectiveTest
class PackageBuildPackageUriResolverTest with ResourceProviderMixin {
- PackageBuildWorkspace workspace;
- PackageBuildPackageUriResolver resolver;
- MockUriResolver packageUriResolver;
+ late final PackageBuildWorkspace workspace;
+ late final PackageBuildPackageUriResolver resolver;
+ late final MockUriResolver packageUriResolver;
Uri addPackageSource(String path, String uriStr, {bool create = true}) {
Uri uri = Uri.parse(uriStr);
- final File file = create
+ final file = create
? newFile(path)
- : resourceProvider.getResource(convertPath(path));
+ : resourceProvider.getResource(convertPath(path)) as File;
packageUriResolver.add(uri, file);
return uri;
}
@@ -154,7 +151,7 @@
_addResources([
'/workspace/.dart_tool/build/generated',
]);
- Source source = resolver.resolveAbsolute(Uri.parse('dart:async'));
+ var source = resolver.resolveAbsolute(Uri.parse('dart:async'));
expect(source, isNull);
}
@@ -162,8 +159,7 @@
_addResources([
'/workspace/.dart_tool/build/generated',
]);
- Source source =
- resolver.resolveAbsolute(Uri.parse('package:/foo/bar.dart'));
+ var source = resolver.resolveAbsolute(Uri.parse('package:/foo/bar.dart'));
expect(source, isNull);
}
@@ -203,21 +199,20 @@
'project': [getFolder('/workspace')]
},
convertPath(workspacePath),
- );
+ )!;
packageUriResolver = MockUriResolver();
resolver = PackageBuildPackageUriResolver(workspace, packageUriResolver);
}
Source _assertResolveUri(Uri uri, String posixPath,
{bool exists = true, bool restore = true}) {
- Source source = resolver.resolveAbsolute(uri);
- expect(source, isNotNull);
+ var source = resolver.resolveAbsolute(uri)!;
expect(source.fullName, convertPath(posixPath));
expect(source.uri, uri);
expect(source.exists(), exists);
// If enabled, test also "restoreAbsolute".
if (restore) {
- Uri restoredUri = resolver.restoreAbsolute(source);
+ var restoredUri = resolver.restoreAbsolute(source);
expect(restoredUri.toString(), uri.toString());
}
return source;
@@ -226,8 +221,8 @@
@reflectiveTest
class PackageBuildWorkspacePackageTest with ResourceProviderMixin {
- PackageBuildWorkspace myWorkspace;
- PackageBuildWorkspacePackage myPackage;
+ late final PackageBuildWorkspace myWorkspace;
+ late final PackageBuildWorkspacePackage myPackage;
String get fooPackageLibPath => '$fooPackageRootPath/lib';
@@ -254,9 +249,9 @@
'foo': [getFolder(fooPackageLibPath)],
},
convertPath(myPackageRootPath),
- );
+ )!;
- myPackage = myWorkspace.findPackageFor('$myPackageLibPath/fake.dart');
+ myPackage = myWorkspace.findPackageFor('$myPackageLibPath/fake.dart')!;
}
test_contains_fileUri() {
@@ -316,8 +311,7 @@
test_findPackageFor_my_generated_libFile() {
var package = myWorkspace.findPackageFor(
convertPath('$myPackageGeneratedPath/my/lib/a.dart'),
- );
- expect(package, isNotNull);
+ )!;
expect(package.root, convertPath(myPackageRootPath));
expect(package.workspace, myWorkspace);
}
@@ -341,8 +335,7 @@
test_findPackageFor_my_generated_testFile() {
var package = myWorkspace.findPackageFor(
convertPath('$myPackageGeneratedPath/my/test/a.dart'),
- );
- expect(package, isNotNull);
+ )!;
expect(package.root, convertPath(myPackageRootPath));
expect(package.workspace, myWorkspace);
}
@@ -350,8 +343,7 @@
test_findPackageFor_my_libFile() {
var package = myWorkspace.findPackageFor(
convertPath('$myPackageLibPath/a.dart'),
- );
- expect(package, isNotNull);
+ )!;
expect(package.root, convertPath(myPackageRootPath));
expect(package.workspace, myWorkspace);
}
@@ -359,8 +351,7 @@
test_findPackageFor_my_testFile() {
var package = myWorkspace.findPackageFor(
convertPath('$myPackageRootPath/test/a.dart'),
- );
- expect(package, isNotNull);
+ )!;
expect(package.root, convertPath(myPackageRootPath));
expect(package.workspace, myWorkspace);
}
@@ -387,7 +378,7 @@
Source _sourceWithPackageUriWithoutPath(String uriStr) {
var uri = Uri.parse(uriStr);
- return _MockSource(path: null, uri: uri);
+ return _MockSource(path: convertPath('/test/lib/test.dart'), uri: uri);
}
}
@@ -451,7 +442,7 @@
newFolder('/workspace/aaa/.dart_tool/build/generated');
newFile('/workspace/aaa/pubspec.yaml', content: '*');
- PackageBuildWorkspace workspace = PackageBuildWorkspace.find(
+ var workspace = PackageBuildWorkspace.find(
resourceProvider,
{},
convertPath('/workspace/aaa/lib'),
@@ -462,11 +453,11 @@
void test_find_hasDartToolAndPubspec() {
newFolder('/workspace/.dart_tool/build/generated/project/lib');
newFile('/workspace/pubspec.yaml', content: 'name: project');
- PackageBuildWorkspace workspace = PackageBuildWorkspace.find(
+ var workspace = PackageBuildWorkspace.find(
resourceProvider,
{},
convertPath('/workspace'),
- );
+ )!;
expect(workspace.root, convertPath('/workspace'));
expect(workspace.projectPackageName, 'project');
}
@@ -477,11 +468,11 @@
newFile('/workspace/opened/up/a/child/dir/pubspec.yaml',
content: 'name: subproject');
newFile('/workspace/pubspec.yaml', content: 'name: project');
- PackageBuildWorkspace workspace = PackageBuildWorkspace.find(
+ var workspace = PackageBuildWorkspace.find(
resourceProvider,
{},
convertPath('/workspace/opened/up/a/child/dir'),
- );
+ )!;
expect(workspace.root, convertPath('/workspace/opened/up/a/child/dir'));
expect(workspace.projectPackageName, 'subproject');
}
@@ -491,11 +482,11 @@
newFolder('/workspace/opened/up/a/child/dir');
newFolder('/workspace/opened/up/a/child/dir/.dart_tool/build');
newFile('/workspace/pubspec.yaml', content: 'name: project');
- PackageBuildWorkspace workspace = PackageBuildWorkspace.find(
+ var workspace = PackageBuildWorkspace.find(
resourceProvider,
{},
convertPath('/workspace/opened/up/a/child/dir'),
- );
+ )!;
expect(workspace.root, convertPath('/workspace'));
expect(workspace.projectPackageName, 'project');
}
@@ -504,7 +495,7 @@
// Edge case: an empty .dart_tool directory. Don't assume package:build.
newFolder('/workspace/.dart_tool');
newFile('/workspace/pubspec.yaml', content: 'name: project');
- PackageBuildWorkspace workspace = PackageBuildWorkspace.find(
+ var workspace = PackageBuildWorkspace.find(
resourceProvider,
{},
convertPath('/workspace'),
@@ -514,7 +505,7 @@
void test_find_hasDartToolNoPubspec() {
newFolder('/workspace/.dart_tool/build/generated/project/lib');
- PackageBuildWorkspace workspace = PackageBuildWorkspace.find(
+ var workspace = PackageBuildWorkspace.find(
resourceProvider,
{},
convertPath('/workspace'),
@@ -526,7 +517,7 @@
// Dart projects will have this directory, that don't use package:build.
newFolder('/workspace/.dart_tool/pub');
newFile('/workspace/pubspec.yaml', content: 'name: project');
- PackageBuildWorkspace workspace = PackageBuildWorkspace.find(
+ var workspace = PackageBuildWorkspace.find(
resourceProvider,
{},
convertPath('/workspace'),
@@ -537,7 +528,7 @@
void test_find_hasMalformedPubspec() {
newFolder('/workspace/.dart_tool/build/generated/project/lib');
newFile('/workspace/pubspec.yaml', content: 'not: yaml: here! 1111');
- PackageBuildWorkspace workspace = PackageBuildWorkspace.find(
+ var workspace = PackageBuildWorkspace.find(
resourceProvider,
{},
convertPath('/workspace'),
@@ -551,7 +542,7 @@
newFile('/workspace/aaa/pubspec.yaml', content: '*');
- PackageBuildWorkspace workspace = PackageBuildWorkspace.find(
+ var workspace = PackageBuildWorkspace.find(
resourceProvider,
{},
convertPath('/workspace/aaa/lib'),
@@ -561,7 +552,7 @@
void test_find_hasPubspecNoDartTool() {
newFile('/workspace/pubspec.yaml', content: 'name: project');
- PackageBuildWorkspace workspace = PackageBuildWorkspace.find(
+ var workspace = PackageBuildWorkspace.find(
resourceProvider,
{},
convertPath('/workspace'),
@@ -661,7 +652,7 @@
),
),
convertPath(root),
- );
+ )!;
}
}
@@ -671,14 +662,10 @@
@override
final Uri uri;
- _MockSource({@required this.path, @required this.uri});
+ _MockSource({required this.path, required this.uri});
@override
String get fullName {
- if (path == null) {
- throw StateError('This source has no path, '
- 'and we do not expect that it will be accessed.');
- }
return path;
}
diff --git a/pkg/analyzer/test/src/workspace/pub_test.dart b/pkg/analyzer/test/src/workspace/pub_test.dart
index 399300f..12ab9c6 100644
--- a/pkg/analyzer/test/src/workspace/pub_test.dart
+++ b/pkg/analyzer/test/src/workspace/pub_test.dart
@@ -27,14 +27,14 @@
'p1': [getFolder('/.pubcache/p1/lib')],
'workspace': [getFolder('/workspace/lib')]
},
- convertPath('/workspace'));
+ convertPath('/workspace'))!;
expect(workspace.isBazel, isFalse);
}
void test_contains_differentWorkspace() {
newFile('/workspace2/project/lib/file.dart');
- var package = findPackage('/workspace/project/lib/code.dart');
+ var package = findPackage('/workspace/project/lib/code.dart')!;
expect(
package.contains(
TestSource(convertPath('/workspace2/project/lib/file.dart'))),
@@ -44,7 +44,7 @@
void test_contains_sameWorkspace() {
newFile('/workspace/project/lib/file2.dart');
- var package = findPackage('/workspace/project/lib/code.dart');
+ var package = findPackage('/workspace/project/lib/code.dart')!;
expect(
package.contains(
TestSource(convertPath('/workspace/project/lib/file2.dart'))),
@@ -62,8 +62,7 @@
void test_findPackageFor_includedFile() {
newFile('/workspace/project/lib/file.dart');
- var package = findPackage('/workspace/project/lib/file.dart');
- expect(package, isNotNull);
+ var package = findPackage('/workspace/project/lib/file.dart')!;
expect(package.root, convertPath('/workspace'));
expect(package.workspace, equals(workspace));
}
@@ -77,7 +76,7 @@
void test_packagesAvailableTo() {
var libraryPath = convertPath('/workspace/lib/test.dart');
- var package = findPackage(libraryPath);
+ var package = findPackage(libraryPath)!;
var packageMap = package.packagesAvailableTo(libraryPath);
expect(packageMap.keys, unorderedEquals(['p1', 'workspace']));
}
@@ -87,8 +86,8 @@
class PubWorkspaceTest with ResourceProviderMixin {
void test_find_directory() {
newFile('/workspace/pubspec.yaml', content: 'name: project');
- PubWorkspace workspace =
- PubWorkspace.find(resourceProvider, {}, convertPath('/workspace'));
+ var workspace =
+ PubWorkspace.find(resourceProvider, {}, convertPath('/workspace'))!;
expect(workspace.isBazel, isFalse);
expect(workspace.root, convertPath('/workspace'));
}
@@ -102,13 +101,13 @@
void test_find_file() {
newFile('/workspace/pubspec.yaml', content: 'name: project');
- PubWorkspace workspace = PubWorkspace.find(
- resourceProvider, {}, convertPath('/workspace/lib/lib1.dart'));
+ var workspace = PubWorkspace.find(
+ resourceProvider, {}, convertPath('/workspace/lib/lib1.dart'))!;
expect(workspace.root, convertPath('/workspace'));
}
void test_find_missingPubspec() {
- PubWorkspace workspace = PubWorkspace.find(
+ var workspace = PubWorkspace.find(
resourceProvider, {}, convertPath('/workspace/lib/lib1.dart'));
expect(workspace, isNull);
}
diff --git a/pkg/analyzer/test/src/workspace/workspace_test_support.dart b/pkg/analyzer/test/src/workspace/workspace_test_support.dart
index 164e1e4..30d4fbc 100644
--- a/pkg/analyzer/test/src/workspace/workspace_test_support.dart
+++ b/pkg/analyzer/test/src/workspace/workspace_test_support.dart
@@ -8,10 +8,10 @@
/// Utilities for tests of subclasses of [WorkspacePackage].
abstract class WorkspacePackageTest with ResourceProviderMixin {
/// The workspace containing the packages.
- Workspace workspace;
+ late final Workspace workspace;
/// Return the package containing the given [path], or `null` if there is no
/// such package in the [workspace].
- WorkspacePackage findPackage(String path) =>
+ WorkspacePackage? findPackage(String path) =>
workspace.findPackageFor(convertPath(path));
}
diff --git a/pkg/analyzer/test/util/id_testing_helper.dart b/pkg/analyzer/test/util/id_testing_helper.dart
index 76658f3..08e94dd 100644
--- a/pkg/analyzer/test/util/id_testing_helper.dart
+++ b/pkg/analyzer/test/util/id_testing_helper.dart
@@ -62,7 +62,8 @@
memorySourceFiles, codeMap, expectedMaps);
var config =
TestConfig(marker, 'provisional test config', featureSet: featureSet);
- return runTestForConfig<T>(testData, dataComputer, config);
+ return runTestForConfig<T>(testData, dataComputer, config,
+ onFailure: onFailure);
}
/// Creates the testing URI used for [fileName] in annotated tests.
@@ -77,11 +78,11 @@
/// Returns `true` if an error was encountered.
Future<Map<String, TestResult<T>>> runTest<T>(TestData testData,
DataComputer<T> dataComputer, List<TestConfig> testedConfigs,
- {bool testAfterFailures,
+ {required bool testAfterFailures,
bool forUserLibrariesOnly = true,
Iterable<Id> globalIds = const <Id>[],
- void Function(String message) onFailure,
- Map<String, List<String>> skipMap}) async {
+ required void Function(String message) onFailure,
+ Map<String, List<String>>? skipMap}) async {
for (TestConfig config in testedConfigs) {
if (!testData.expectedMaps.containsKey(config.marker)) {
throw ArgumentError("Unexpected test marker '${config.marker}'. "
@@ -105,12 +106,12 @@
RunTestFunction<T> runTestFor<T>(
DataComputer<T> dataComputer, List<TestConfig> testedConfigs) {
return (TestData testData,
- {bool testAfterFailures,
- bool verbose,
- bool succinct,
- bool printCode,
- Map<String, List<String>> skipMap,
- Uri nullUri}) {
+ {required bool testAfterFailures,
+ bool? verbose,
+ bool? succinct,
+ bool? printCode,
+ Map<String, List<String>>? skipMap,
+ Uri? nullUri}) {
return runTest(testData, dataComputer, testedConfigs,
testAfterFailures: testAfterFailures,
onFailure: onFailure,
@@ -123,11 +124,11 @@
/// Returns `true` if an error was encountered.
Future<TestResult<T>> runTestForConfig<T>(
TestData testData, DataComputer<T> dataComputer, TestConfig config,
- {bool fatalErrors,
- void Function(String message) onFailure,
- Map<String, List<String>> skipMap}) async {
+ {bool fatalErrors = true,
+ required void Function(String message) onFailure,
+ Map<String, List<String>>? skipMap}) async {
MemberAnnotations<IdValue> memberAnnotations =
- testData.expectedMaps[config.marker];
+ testData.expectedMaps[config.marker]!;
var resourceProvider = MemoryResourceProvider();
var testUris = <Uri>[];
for (var entry in testData.memorySourceFiles.entries) {
@@ -171,8 +172,8 @@
var results = <Uri, ResolvedUnitResult>{};
for (var testUri in testUris) {
- var result =
- await driver.getResult(resourceProvider.convertPath(testUri.path));
+ var path = resourceProvider.convertPath(testUri.path);
+ var result = (await driver.getResult(path))!;
var errors =
result.errors.where((e) => e.severity == Severity.error).toList();
if (errors.isNotEmpty) {
@@ -189,7 +190,7 @@
errorMap.forEach((offset, errors) {
var id = NodeId(offset, IdKind.error);
var data = dataComputer.computeErrorData(
- config, driver.testingData, id, errors);
+ config, driver.testingData!, id, errors);
if (data != null) {
Map<Id, ActualData<T>> actualMap = actualMapFor(testUri);
actualMap[id] = ActualData<T>(id, data, testUri, offset, errors);
@@ -197,7 +198,7 @@
});
} else {
String _formatError(AnalysisError e) {
- var locationInfo = result.unit.lineInfo.getLocation(e.offset);
+ var locationInfo = result.unit!.lineInfo!.getLocation(e.offset);
return '$locationInfo: ${e.errorCode}: ${e.message}';
}
@@ -210,7 +211,7 @@
results.forEach((testUri, result) {
dataComputer.computeUnitData(
- driver.testingData, result.unit, actualMapFor(testUri));
+ driver.testingData!, result.unit!, actualMapFor(testUri));
});
var compiledData = AnalyzerCompiledData<T>(
testData.code, testData.entryPoint, actualMaps, globalData);
@@ -243,7 +244,7 @@
var className = id.className;
var name = id.memberName;
var unit =
- parseString(content: code[uri].sourceCode, throwIfDiagnostics: false)
+ parseString(content: code[uri]!.sourceCode, throwIfDiagnostics: false)
.unit;
if (className != null) {
for (var declaration in unit.declarations) {
@@ -251,7 +252,7 @@
declaration.name.name == className) {
for (var member in declaration.members) {
if (member is ConstructorDeclaration) {
- if (member.name.name == name) {
+ if (member.name!.name == name) {
return member.offset;
}
} else if (member is FieldDeclaration) {
@@ -289,7 +290,7 @@
} else if (id is ClassId) {
var className = id.className;
var unit =
- parseString(content: code[uri].sourceCode, throwIfDiagnostics: false)
+ parseString(content: code[uri]!.sourceCode, throwIfDiagnostics: false)
.unit;
for (var declaration in unit.declarations) {
if (declaration is ClassDeclaration &&
@@ -300,9 +301,9 @@
return 0;
} else if (id is LibraryId) {
var unit =
- parseString(content: code[uri].sourceCode, throwIfDiagnostics: false)
+ parseString(content: code[uri]!.sourceCode, throwIfDiagnostics: false)
.unit;
- var offset = unit?.declaredElement?.library?.nameOffset ?? -1;
+ var offset = unit.declaredElement?.library.nameOffset ?? -1;
return offset >= 0 ? offset : 0;
} else {
throw StateError('Unexpected id ${id.runtimeType}');
@@ -329,7 +330,7 @@
bool get supportsErrors => false;
/// Returns data corresponding to [error].
- T computeErrorData(TestConfig config, TestingData testingData, Id id,
+ T? computeErrorData(TestConfig config, TestingData testingData, Id id,
List<AnalysisError> errors) =>
null;
@@ -346,6 +347,6 @@
final String name;
final FeatureSet featureSet;
- TestConfig(this.marker, this.name, {FeatureSet featureSet})
+ TestConfig(this.marker, this.name, {FeatureSet? featureSet})
: featureSet = featureSet ?? FeatureSet.latestLanguageVersion();
}
diff --git a/pkg/analyzer/test/utils.dart b/pkg/analyzer/test/utils.dart
index 64b63f6..082f929 100644
--- a/pkg/analyzer/test/utils.dart
+++ b/pkg/analyzer/test/utils.dart
@@ -34,7 +34,7 @@
return unitMember;
}
}
- Source source = unit.declaredElement.source;
+ Source source = unit.declaredElement!.source;
fail('No class named $className in $source');
}
@@ -42,7 +42,7 @@
/// in the class with the given [className] in the given compilation [unit].
/// If constructorName is null, return the default constructor;
static ConstructorDeclaration getConstructorInClass(
- CompilationUnit unit, String className, String constructorName) {
+ CompilationUnit unit, String className, String? constructorName) {
ClassDeclaration unitMember = getClass(unit, className);
NodeList<ClassMember> classMembers = unitMember.members;
for (ClassMember classMember in classMembers) {
@@ -76,9 +76,10 @@
/// Return the element of the field with the given [fieldName] in the class
/// with the given [className] in the given compilation [unit].
- static FieldElement getFieldInClassElement(
+ static FieldElement? getFieldInClassElement(
CompilationUnit unit, String className, String fieldName) {
- return getFieldInClass(unit, className, fieldName)?.name?.staticElement;
+ return getFieldInClass(unit, className, fieldName).name.staticElement
+ as FieldElement;
}
/// Return the declaration of the method with the given [methodName] in the
@@ -103,7 +104,7 @@
static List<Statement> getStatementsInMethod(
CompilationUnit unit, String className, String methodName) {
MethodDeclaration method = getMethodInClass(unit, className, methodName);
- BlockFunctionBody body = method.body;
+ var body = method.body as BlockFunctionBody;
return body.block.statements;
}
@@ -112,7 +113,7 @@
static List<Statement> getStatementsInTopLevelFunction(
CompilationUnit unit, String functionName) {
FunctionDeclaration function = getTopLevelFunction(unit, functionName);
- BlockFunctionBody body = function.functionExpression.body;
+ var body = function.functionExpression.body as BlockFunctionBody;
return body.block.statements;
}
@@ -153,7 +154,8 @@
/// Return the top-level variable element with the given [name].
static TopLevelVariableElement getTopLevelVariableElement(
CompilationUnit unit, String name) {
- return getTopLevelVariable(unit, name)?.name?.staticElement;
+ return getTopLevelVariable(unit, name).name.staticElement
+ as TopLevelVariableElement;
}
}
diff --git a/pkg/analyzer/test/verify_diagnostics_test.dart b/pkg/analyzer/test/verify_diagnostics_test.dart
index 96d7c2b..34f18aa 100644
--- a/pkg/analyzer/test/verify_diagnostics_test.dart
+++ b/pkg/analyzer/test/verify_diagnostics_test.dart
@@ -6,9 +6,9 @@
import 'package:analyzer/dart/analysis/results.dart';
import 'package:analyzer/dart/analysis/session.dart';
import 'package:analyzer/dart/ast/ast.dart';
-import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/error/error.dart';
import 'package:analyzer/file_system/physical_file_system.dart';
+import 'package:analyzer/src/dart/ast/token.dart';
import 'package:path/path.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -87,17 +87,17 @@
final StringBuffer buffer = StringBuffer();
/// The path to the file currently being verified.
- String filePath;
+ late String filePath;
/// A flag indicating whether the [filePath] has already been written to the
/// buffer.
bool hasWrittenFilePath = false;
/// The name of the variable currently being verified.
- String variableName;
+ late String variableName;
/// The name of the error code currently being verified.
- String codeName;
+ late String codeName;
/// A flag indicating whether the [variableName] has already been written to
/// the buffer.
@@ -122,17 +122,17 @@
/// Return the name of the code as defined in the [initializer].
String _extractCodeName(VariableDeclaration variable) {
- Expression initializer = variable.initializer;
+ var initializer = variable.initializer;
if (initializer is MethodInvocation) {
var firstArgument = initializer.argumentList.arguments[0];
- return (firstArgument as StringLiteral).stringValue;
+ return (firstArgument as StringLiteral).stringValue!;
}
return variable.name.name;
}
/// Extract documentation from the given [field] declaration.
- List<String> _extractDoc(FieldDeclaration field) {
- Token comments = field.firstTokenAfterCommentAndMetadata.precedingComments;
+ List<String>? _extractDoc(FieldDeclaration field) {
+ var comments = field.firstTokenAfterCommentAndMetadata.precedingComments;
if (comments == null) {
return null;
}
@@ -146,7 +146,7 @@
} else if (lexeme == '//') {
docs.add('');
}
- comments = comments.next;
+ comments = comments.next as CommentToken?;
}
if (docs.isEmpty) {
return null;
@@ -159,7 +159,7 @@
bool errorRequired,
Map<String, String> auxiliaryFiles,
List<String> experiments,
- String languageVersion,
+ String? languageVersion,
) {
int rangeStart = snippet.indexOf(errorRangeStart);
if (rangeStart < 0) {
@@ -194,8 +194,8 @@
List<String> lines, int start, int end, bool errorRequired) {
var snippets = <_SnippetData>[];
var auxiliaryFiles = <String, String>{};
- List<String> experiments;
- String languageVersion;
+ List<String>? experiments;
+ String? languageVersion;
var currentStart = -1;
for (var i = start; i < end; i++) {
var line = lines[i];
@@ -224,7 +224,7 @@
}
var content = lines.sublist(currentStart + 1, i).join('\n');
snippets.add(_extractSnippetData(content, errorRequired,
- auxiliaryFiles, experiments, languageVersion));
+ auxiliaryFiles, experiments ?? [], languageVersion));
auxiliaryFiles = <String, String>{};
}
currentStart = -1;
@@ -243,9 +243,6 @@
/// [path] and return the result.
ParsedUnitResult _parse(AnalysisContextCollection collection, String path) {
AnalysisSession session = collection.contextFor(path).currentSession;
- if (session == null) {
- throw StateError('No session for "$path"');
- }
ParsedUnitResult result = session.getParsedUnit(path);
if (result.state != ResultState.VALID) {
throw StateError('Unable to parse "$path"');
@@ -280,7 +277,7 @@
/// Extract documentation from the file that was parsed to produce the given
/// [result].
Future<void> _validateFile(ParsedUnitResult result) async {
- filePath = result.path;
+ filePath = result.path!;
hasWrittenFilePath = false;
CompilationUnit unit = result.unit;
for (CompilationUnitMember declaration in unit.declarations) {
@@ -288,7 +285,7 @@
String className = declaration.name.name;
for (ClassMember member in declaration.members) {
if (member is FieldDeclaration) {
- List<String> docs = _extractDoc(member);
+ var docs = _extractDoc(member);
if (docs != null) {
VariableDeclaration variable = member.fields.variables[0];
codeName = _extractCodeName(variable);
@@ -306,7 +303,7 @@
List<_SnippetData> exampleSnippets =
_extractSnippets(docs, exampleStart + 1, fixesStart, true);
- _SnippetData firstExample;
+ _SnippetData? firstExample;
if (exampleSnippets.isEmpty) {
_reportProblem('No example.');
} else {
@@ -416,7 +413,7 @@
final int length;
final Map<String, String> auxiliaryFiles;
final List<String> experiments;
- final String languageVersion;
+ final String? languageVersion;
_SnippetData(this.content, this.offset, this.length, this.auxiliaryFiles,
this.experiments, this.languageVersion);
@@ -438,7 +435,7 @@
}
@override
- String get testPackageLanguageVersion {
+ String? get testPackageLanguageVersion {
return snippet.languageVersion;
}
@@ -462,12 +459,12 @@
String pathInLib = uri.pathSegments.skip(1).join('/');
newFile(
'$packageRootPath/lib/$pathInLib',
- content: auxiliaryFiles[uriStr],
+ content: auxiliaryFiles[uriStr]!,
);
} else {
newFile(
'$testPackageRootPath/$uriStr',
- content: auxiliaryFiles[uriStr],
+ content: auxiliaryFiles[uriStr]!,
);
}
}
diff --git a/pkg/analyzer/test/verify_docs_test.dart b/pkg/analyzer/test/verify_docs_test.dart
index 32e6bc1..76acfa9 100644
--- a/pkg/analyzer/test/verify_docs_test.dart
+++ b/pkg/analyzer/test/verify_docs_test.dart
@@ -92,6 +92,7 @@
// API, write code to compute the list of imports so that new public API
// will automatically be allowed.
String imports = '''
+// @dart = 2.9
import 'dart:math' as math;
import 'package:analyzer/dart/analysis/analysis_context.dart';
@@ -118,7 +119,7 @@
fail('The snippets directory contains multiple analysis contexts.');
}
ErrorsResult results =
- await contexts[0].currentSession.getErrors(snippetPath);
+ (await contexts[0].currentSession.getErrors(snippetPath))!;
Iterable<AnalysisError> errors = results.errors.where((error) {
ErrorCode errorCode = error.errorCode;
return errorCode != HintCode.UNUSED_IMPORT &&
diff --git a/pkg/analyzer/test/verify_tests_test.dart b/pkg/analyzer/test/verify_tests_test.dart
index 3db4bb7..fd16bb7 100644
--- a/pkg/analyzer/test/verify_tests_test.dart
+++ b/pkg/analyzer/test/verify_tests_test.dart
@@ -16,7 +16,7 @@
}
class _VerifyTests extends VerifyTests {
- _VerifyTests(String testDirPath, {List<String> excludedPaths})
+ _VerifyTests(String testDirPath, {List<String>? excludedPaths})
: super(testDirPath, excludedPaths: excludedPaths);
@override
diff --git a/pkg/analyzer/tool/diagnostics/generate.dart b/pkg/analyzer/tool/diagnostics/generate.dart
index 7571b56..1680135 100644
--- a/pkg/analyzer/tool/diagnostics/generate.dart
+++ b/pkg/analyzer/tool/diagnostics/generate.dart
@@ -8,8 +8,8 @@
import 'package:analyzer/dart/analysis/results.dart';
import 'package:analyzer/dart/analysis/session.dart';
import 'package:analyzer/dart/ast/ast.dart';
-import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/file_system/physical_file_system.dart';
+import 'package:analyzer/src/dart/ast/token.dart';
import 'package:analyzer_utilities/package_root.dart' as package_root;
import 'package:path/src/context.dart';
@@ -58,7 +58,7 @@
/// The path to the file containing the generated definition of the diagnostic
/// codes that include the message, or `null` if the
- final String declarationPath;
+ final String? declarationPath;
/// Initialize a newly created code path from the [documentationPath] and
/// [declarationPath].
@@ -67,14 +67,16 @@
/// Return a list of code paths computed by joining the path segments in the
/// corresponding lists from [documentationPaths] and [declarationPaths].
static List<CodePath> from(List<List<String>> documentationPaths,
- List<List<String>> declarationPaths) {
+ List<List<String>?> declarationPaths) {
Context pathContext = PhysicalResourceProvider.INSTANCE.pathContext;
List<CodePath> paths = [];
for (int i = 0; i < documentationPaths.length; i++) {
String docPath = pathContext.joinAll(documentationPaths[i]);
- String declPath;
- if (declarationPaths[i] != null) {
- declPath = pathContext.joinAll(declarationPaths[i]);
+
+ String? declPath;
+ var declarationPath = declarationPaths[i];
+ if (declarationPath != null) {
+ declPath = pathContext.joinAll(declarationPath);
}
paths.add(CodePath(docPath, declPath));
}
@@ -92,7 +94,7 @@
List<String> messages;
/// The lines of documentation associated with the diagnostic.
- List<String> documentation;
+ List<String>? documentation;
/// Initialize a newly created information holder with the given [name] and
/// [message].
@@ -119,7 +121,7 @@
}
}
sink.writeln();
- for (String line in documentation) {
+ for (String line in documentation!) {
sink.writeln(line);
}
}
@@ -186,7 +188,7 @@
resourceProvider: PhysicalResourceProvider.INSTANCE);
for (CodePath codePath in codePaths) {
String docPath = codePath.documentationPath;
- String declPath = codePath.declarationPath;
+ var declPath = codePath.declarationPath;
if (declPath == null) {
_extractDocs(_parse(collection, docPath), null);
} else {
@@ -205,9 +207,9 @@
/// the expression does not appear to be creating an error code. If the
/// expression is the name of a generated code, then the [generatedResult]
/// should have the unit in which the information can be found.
- DiagnosticInformation _extractDiagnosticInformation(
- Expression expression, ParsedUnitResult generatedResult) {
- List<Expression> arguments;
+ DiagnosticInformation? _extractDiagnosticInformation(
+ Expression expression, ParsedUnitResult? generatedResult) {
+ List<Expression>? arguments;
if (expression is InstanceCreationExpression) {
arguments = expression.argumentList.arguments;
} else if (expression is MethodInvocation) {
@@ -219,7 +221,7 @@
if (arguments != null) {
String name = _extractName(arguments);
String message = _extractMessage(arguments);
- DiagnosticInformation info = infoByName[name];
+ var info = infoByName[name];
if (info == null) {
info = DiagnosticInformation(name, message);
infoByName[name] = info;
@@ -230,10 +232,9 @@
}
if (expression is SimpleIdentifier && generatedResult != null) {
- VariableDeclaration variable =
- _findVariable(expression.name, generatedResult.unit);
+ var variable = _findVariable(expression.name, generatedResult.unit);
if (variable != null) {
- return _extractDiagnosticInformation(variable.initializer, null);
+ return _extractDiagnosticInformation(variable.initializer!, null);
}
}
@@ -241,8 +242,8 @@
}
/// Extract documentation from the given [field] declaration.
- List<String> _extractDoc(FieldDeclaration field) {
- Token comments = field.firstTokenAfterCommentAndMetadata.precedingComments;
+ List<String>? _extractDoc(FieldDeclaration field) {
+ var comments = field.firstTokenAfterCommentAndMetadata.precedingComments;
if (comments == null) {
return null;
}
@@ -272,7 +273,7 @@
} else if (lexeme == '//') {
docs.add('');
}
- comments = comments.next;
+ comments = comments.next as CommentToken?;
}
if (docs.isEmpty) {
return null;
@@ -283,7 +284,8 @@
/// Extract documentation from the file that was parsed to produce the given
/// [result]. If a [generatedResult] is provided, then the messages might be
/// in the file parsed to produce the result.
- void _extractDocs(ParsedUnitResult result, ParsedUnitResult generatedResult) {
+ void _extractDocs(
+ ParsedUnitResult result, ParsedUnitResult? generatedResult) {
CompilationUnit unit = result.unit;
for (CompilationUnitMember declaration in unit.declarations) {
if (declaration is ClassDeclaration &&
@@ -293,10 +295,10 @@
member.isStatic &&
!_isDeprecated(member)) {
VariableDeclaration variable = member.fields.variables[0];
- DiagnosticInformation info = _extractDiagnosticInformation(
- variable.initializer, generatedResult);
+ var info = _extractDiagnosticInformation(
+ variable.initializer!, generatedResult);
if (info != null) {
- List<String> docs = _extractDoc(member);
+ var docs = _extractDoc(member);
if (docs != null) {
if (info.documentation != null) {
throw StateError(
@@ -312,7 +314,7 @@
}
/// Return the message extracted from the list of [arguments].
- String _extractMessage(NodeList<Expression> arguments) {
+ String _extractMessage(List<Expression> arguments) {
int positionalCount =
arguments.where((expression) => expression is! NamedExpression).length;
if (positionalCount == 2) {
@@ -326,19 +328,19 @@
}
/// Return the name extracted from the list of [arguments].
- String _extractName(NodeList<Expression> arguments) =>
+ String _extractName(List<Expression> arguments) =>
_extractString(arguments[0]);
String _extractString(Expression expression) {
if (expression is StringLiteral) {
- return expression.stringValue;
+ return expression.stringValue!;
}
throw StateError('Cannot extract string from $expression');
}
/// Return the declaration of the top-level variable with the [name] in the
/// compilation unit, or `null` if there is no such variable.
- VariableDeclaration _findVariable(String name, CompilationUnit unit) {
+ VariableDeclaration? _findVariable(String name, CompilationUnit unit) {
for (CompilationUnitMember member in unit.declarations) {
if (member is TopLevelVariableDeclaration) {
for (VariableDeclaration variable in member.variables.variables) {
@@ -359,9 +361,6 @@
/// [path] and return the result.
ParsedUnitResult _parse(AnalysisContextCollection collection, String path) {
AnalysisSession session = collection.contextFor(path).currentSession;
- if (session == null) {
- throw StateError('No session for "$path"');
- }
ParsedUnitResult result = session.getParsedUnit(path);
if (result.state != ResultState.VALID) {
throw StateError('Unable to parse "$path"');
@@ -382,7 +381,7 @@
List<String> errorCodes = infoByName.keys.toList();
errorCodes.sort();
for (String errorCode in errorCodes) {
- DiagnosticInformation info = infoByName[errorCode];
+ DiagnosticInformation info = infoByName[errorCode]!;
if (info.hasDocumentation) {
sink.writeln();
info.writeOn(sink);
diff --git a/pkg/analyzer/tool/experiments/experiments_test.dart b/pkg/analyzer/tool/experiments/experiments_test.dart
index 575c084..1b0e8ec 100644
--- a/pkg/analyzer/tool/experiments/experiments_test.dart
+++ b/pkg/analyzer/tool/experiments/experiments_test.dart
@@ -1,3 +1,4 @@
+// @dart = 2.9
// 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.
diff --git a/pkg/analyzer/tool/experiments/generate.dart b/pkg/analyzer/tool/experiments/generate.dart
index 6e28018..5fc75f1 100644
--- a/pkg/analyzer/tool/experiments/generate.dart
+++ b/pkg/analyzer/tool/experiments/generate.dart
@@ -45,7 +45,7 @@
class _ExperimentsGenerator {
final Map experimentsYaml;
- List<String> keysSorted;
+ late List<String> keysSorted;
final out = StringBuffer('''
//
@@ -57,13 +57,15 @@
part of 'experiments.dart';
''');
- Map<String, dynamic> _features;
+ Map<String, dynamic>? _features;
_ExperimentsGenerator(this.experimentsYaml);
Map<String, dynamic> get features {
- if (_features != null) return _features;
- _features = {};
+ var features = _features;
+ if (features != null) return features;
+
+ features = <String, dynamic>{};
Map yamlFeatures = experimentsYaml['features'];
for (MapEntry entry in yamlFeatures.entries) {
String category = entry.value['category'] ?? 'language';
@@ -72,10 +74,10 @@
// possibly allow e.g. 'analyzer' etc.
continue;
}
- _features[entry.key] = entry.value;
+ features[entry.key] = entry.value;
}
- return _features;
+ return _features = features;
}
void generateFormatCode() {
diff --git a/pkg/analyzer/tool/messages/generate.dart b/pkg/analyzer/tool/messages/generate.dart
index fb3bfe7..80b9579 100644
--- a/pkg/analyzer/tool/messages/generate.dart
+++ b/pkg/analyzer/tool/messages/generate.dart
@@ -1,3 +1,4 @@
+// @dart = 2.9
/// This file contains code to generate scanner and parser message
/// based on the information in pkg/front_end/messages.yaml.
///
diff --git a/pkg/analyzer/tool/summary/build_sdk_summaries.dart b/pkg/analyzer/tool/summary/build_sdk_summaries.dart
index 9d76bc7..746feb2 100644
--- a/pkg/analyzer/tool/summary/build_sdk_summaries.dart
+++ b/pkg/analyzer/tool/summary/build_sdk_summaries.dart
@@ -11,7 +11,7 @@
void main(List<String> args) {
String command;
String outFilePath;
- String sdkPath;
+ String? sdkPath;
if (args.length == 2) {
command = args[0];
outFilePath = args[1];
diff --git a/pkg/analyzer/tool/summary/check_test.dart b/pkg/analyzer/tool/summary/check_test.dart
index a5d0473..24ca23e 100644
--- a/pkg/analyzer/tool/summary/check_test.dart
+++ b/pkg/analyzer/tool/summary/check_test.dart
@@ -1,3 +1,4 @@
+// @dart = 2.9
// Copyright (c) 2015, 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.
diff --git a/pkg/analyzer/tool/summary/generate.dart b/pkg/analyzer/tool/summary/generate.dart
index 3bba6a2..cb5beab 100644
--- a/pkg/analyzer/tool/summary/generate.dart
+++ b/pkg/analyzer/tool/summary/generate.dart
@@ -1,3 +1,4 @@
+// @dart = 2.9
// Copyright (c) 2015, 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.
@@ -114,6 +115,11 @@
}
}
+ /// Return the nullable [encodedType] of the [type].
+ String encodedType2(idl_model.FieldType type) {
+ return encodedType(type) + '?';
+ }
+
/// Add the prefix `idl.` to a type name, unless that type name is the name of
/// a built-in type.
String idlPrefix(String s) {
@@ -173,6 +179,10 @@
return allVariants.toList()..sort();
}
+ bool _isNullable(idl_model.FieldType type) {
+ return !type.isList && _idl.classes.containsKey(type.typeName);
+ }
+
String _variantAssertStatement(
idl_model.ClassDeclaration class_,
idl_model.LogicalProperty property,
@@ -229,8 +239,8 @@
});
out('} else {');
indent(() {
- out('signature.addInt($ref.length);');
- out('for (var x in $ref) {');
+ out('signature.addInt($ref!.length);');
+ out('for (var x in $ref!) {');
indent(() {
_generateSignatureCall(type.typeName, 'x', false);
});
@@ -297,7 +307,7 @@
for (var logicalName in field.logicalProperties.keys) {
var logicalProperty = field.logicalProperties[logicalName];
if (logicalProperty.variants.contains(variant)) {
- out('${encodedType(field.type)} $logicalName,');
+ out('${encodedType2(field.type)} $logicalName,');
}
}
}
@@ -339,7 +349,7 @@
for (idl_model.FieldDeclaration field in cls.fields) {
String fieldName = field.name;
idl_model.FieldType type = field.type;
- String typeStr = encodedType(type);
+ String typeStr = encodedType2(type);
out('$typeStr _$fieldName;');
}
}
@@ -355,7 +365,7 @@
if (fieldType.isList ||
fieldType.typeName == 'String' ||
_idl.classes.containsKey(fieldType.typeName)) {
- out('fb.Offset $offsetName;');
+ out('fb.Offset? $offsetName;');
}
}
@@ -366,31 +376,32 @@
String condition;
String writeCode;
if (fieldType.isList) {
- condition = ' || $valueName.isEmpty';
+ condition = ' || $valueName!.isEmpty';
if (_idl.classes.containsKey(fieldType.typeName)) {
String itemCode = 'b.finish(fbBuilder)';
- String listCode = '$valueName.map((b) => $itemCode).toList()';
+ String listCode = '$valueName!.map((b) => $itemCode).toList()';
writeCode = '$offsetName = fbBuilder.writeList($listCode);';
} else if (_idl.enums.containsKey(fieldType.typeName)) {
String itemCode = 'b.index';
- String listCode = '$valueName.map((b) => $itemCode).toList()';
+ String listCode = '$valueName!.map((b) => $itemCode).toList()';
writeCode = '$offsetName = fbBuilder.writeListUint8($listCode);';
} else if (fieldType.typeName == 'bool') {
- writeCode = '$offsetName = fbBuilder.writeListBool($valueName);';
+ writeCode = '$offsetName = fbBuilder.writeListBool($valueName!);';
} else if (fieldType.typeName == 'int') {
- writeCode = '$offsetName = fbBuilder.writeListUint32($valueName);';
+ writeCode = '$offsetName = fbBuilder.writeListUint32($valueName!);';
} else if (fieldType.typeName == 'double') {
- writeCode = '$offsetName = fbBuilder.writeListFloat64($valueName);';
+ writeCode =
+ '$offsetName = fbBuilder.writeListFloat64($valueName!);';
} else {
assert(fieldType.typeName == 'String');
String itemCode = 'fbBuilder.writeString(b)';
- String listCode = '$valueName.map((b) => $itemCode).toList()';
+ String listCode = '$valueName!.map((b) => $itemCode).toList()';
writeCode = '$offsetName = fbBuilder.writeList($listCode);';
}
} else if (fieldType.typeName == 'String') {
- writeCode = '$offsetName = fbBuilder.writeString($valueName);';
+ writeCode = '$offsetName = fbBuilder.writeString($valueName!);';
} else if (_idl.classes.containsKey(fieldType.typeName)) {
- writeCode = '$offsetName = $valueName.finish(fbBuilder);';
+ writeCode = '$offsetName = $valueName!.finish(fbBuilder);';
}
if (writeCode != null) {
if (condition == null) {
@@ -430,7 +441,7 @@
writeCode = 'fbBuilder.addUint32($index, $valueName);';
} else if (_idl.enums.containsKey(fieldType.typeName)) {
condition += ' && $valueName != ${defaultValue(fieldType, true)}';
- writeCode = 'fbBuilder.addUint8($index, $valueName.index);';
+ writeCode = 'fbBuilder.addUint8($index, $valueName!.index);';
}
if (writeCode == null) {
throw UnimplementedError('Writing type ${fieldType.typeName}');
@@ -529,11 +540,12 @@
}
} else {
out('@override');
- out('$typeStr get $fieldName => _$fieldName$defSuffix;');
+ var nn = _isNullable(field.type) ? '?' : '';
+ out('$typeStr$nn get $fieldName => _$fieldName$defSuffix;');
}
out();
- constructorParams.add('$typeStr $fieldName');
+ constructorParams.add('$typeStr? $fieldName');
outDoc(field.documentation);
@@ -550,7 +562,8 @@
out();
}
} else {
- out('set $fieldName($typeStr value) {');
+ var nn = _isNullable(field.type) ? '?' : '';
+ out('set $fieldName($typeStr$nn value) {');
indent(() {
_generateNonNegativeInt(fieldType);
out('this._$fieldName = value;');
@@ -564,9 +577,9 @@
void _generateNonNegativeInt(idl_model.FieldType fieldType) {
if (fieldType.typeName == 'int') {
if (!fieldType.isList) {
- out('assert(value == null || value >= 0);');
+ out('assert(value >= 0);');
} else {
- out('assert(value == null || value.every((e) => e >= 0));');
+ out('assert(value.every((e) => e >= 0));');
}
}
}
@@ -578,15 +591,17 @@
void _generateSignatureCall(String typeName, String ref, bool couldBeNull) {
if (_idl.enums.containsKey(typeName)) {
if (couldBeNull) {
- out('signature.addInt($ref == null ? 0 : $ref.index);');
+ out('signature.addInt($ref == null ? 0 : $ref!.index);');
} else {
out('signature.addInt($ref.index);');
}
} else if (_idl.classes.containsKey(typeName)) {
if (couldBeNull) {
out('signature.addBool($ref != null);');
+ out('$ref?.collectApiSignature(signature);');
+ } else {
+ out('$ref.collectApiSignature(signature);');
}
- out('$ref?.collectApiSignature(signature);');
} else {
switch (typeName) {
case 'String':
@@ -1196,7 +1211,7 @@
for (idl_model.FieldDeclaration field in cls.fields) {
String returnType = _dartType(field.type);
String fieldName = field.name;
- out('$returnType _$fieldName;');
+ out('$returnType? _$fieldName;');
}
// Write getters.
for (idl_model.FieldDeclaration field in cls.allFields) {
@@ -1255,20 +1270,26 @@
out(_variantAssertStatement(cls, logicalProperty));
String readExpr =
'$readCode.vTableGet(_bc, _bcOffset, $index, $def)';
- out('_$fieldName ??= $readExpr;');
- out('return _$fieldName;');
+ out('return _$fieldName ??= $readExpr;');
});
out('}');
out();
}
} else {
out('@override');
- out('$returnType get $fieldName {');
+ if (_isNullable(type)) {
+ out('$returnType? get $fieldName {');
+ } else {
+ out('$returnType get $fieldName {');
+ }
indent(() {
- String readExpr =
- '$readCode.vTableGet(_bc, _bcOffset, $index, $def)';
- out('_$fieldName ??= $readExpr;');
- out('return _$fieldName;');
+ String readExpr;
+ if (_isNullable(type)) {
+ readExpr = '$readCode.vTableGetOrNull(_bc, _bcOffset, $index)';
+ } else {
+ readExpr = '$readCode.vTableGet(_bc, _bcOffset, $index, $def)';
+ }
+ out('return _$fieldName ??= $readExpr;');
});
out('}');
}
@@ -1309,7 +1330,8 @@
}
}
- String jsonStore(idl_model.FieldType type, String name) {
+ String jsonStore(
+ idl_model.FieldType type, String name, String localName) {
_StringToString convertItem;
if (_idl.classes.containsKey(type.typeName)) {
convertItem = (String name) => '$name.toJson()';
@@ -1323,12 +1345,12 @@
}
String convertField;
if (convertItem == null) {
- convertField = name;
+ convertField = localName;
} else if (type.isList) {
- convertField = '$name.map((_value) =>'
+ convertField = '$localName.map((_value) =>'
' ${convertItem('_value')}).toList()';
} else {
- convertField = convertItem(name);
+ convertField = convertItem(localName);
}
return '_result[${quoted(name)}] = $convertField';
}
@@ -1349,8 +1371,10 @@
indent(() {
for (idl_model.FieldDeclaration field in cls.fields) {
if (field.logicalProperties == null) {
- var condition = jsonCondition(field.type, field.name);
- var storeField = jsonStore(field.type, field.name);
+ var localName = 'local_${field.name}';
+ out('var $localName = ${field.name};');
+ var condition = jsonCondition(field.type, localName);
+ var storeField = jsonStore(field.type, field.name, localName);
writeConditionalStatement(condition, storeField);
}
}
@@ -1363,8 +1387,11 @@
for (var logicalName in logicalProperties.keys) {
var logicalProperty = logicalProperties[logicalName];
if (logicalProperty.variants.contains(variant)) {
- var condition = jsonCondition(field.type, logicalName);
- var storeField = jsonStore(field.type, logicalName);
+ var localName = 'local_${field.name}';
+ out('var $localName = ${field.name};');
+ var condition = jsonCondition(field.type, localName);
+ var storeField =
+ jsonStore(field.type, logicalName, localName);
writeConditionalStatement(condition, storeField);
}
}
@@ -1377,8 +1404,10 @@
} else {
indent(() {
for (idl_model.FieldDeclaration field in cls.fields) {
- String condition = jsonCondition(field.type, field.name);
- String storeField = jsonStore(field.type, field.name);
+ var localName = 'local_${field.name}';
+ out('var $localName = ${field.name};');
+ String condition = jsonCondition(field.type, localName);
+ String storeField = jsonStore(field.type, field.name, localName);
writeConditionalStatement(condition, storeField);
}
});
@@ -1417,7 +1446,7 @@
out('throw StateError("Unexpected \$${cls.variantField}");');
out('}');
} else {
- out('Map<String, Object> toMap() => {');
+ out('Map<String, Object?> toMap() => {');
indent(() {
for (idl_model.FieldDeclaration field in cls.fields) {
String fieldName = field.name;
diff --git a/pkg/analyzer/tool/summary/idl_model.dart b/pkg/analyzer/tool/summary/idl_model.dart
index 9680760..0b78425 100644
--- a/pkg/analyzer/tool/summary/idl_model.dart
+++ b/pkg/analyzer/tool/summary/idl_model.dart
@@ -5,7 +5,6 @@
/// This file contains a set of concrete classes representing an in-memory
/// semantic model of the IDL used to code generate summary serialization and
/// deserialization code.
-import 'package:meta/meta.dart';
/// Information about a single class defined in the IDL.
class ClassDeclaration extends Declaration {
@@ -17,20 +16,20 @@
/// If [isTopLevel] is `true` and a file identifier was specified for this
/// class, the file identifier string. Otherwise `null`.
- final String fileIdentifier;
+ final String? fileIdentifier;
/// Indicates whether the class has the `deprecated` annotation.
final bool isDeprecated;
- final String variantField;
+ final String? variantField;
ClassDeclaration({
- @required String documentation,
- @required this.fileIdentifier,
- @required String name,
- @required this.isDeprecated,
- @required this.isTopLevel,
- @required this.variantField,
+ required String? documentation,
+ required this.fileIdentifier,
+ required String name,
+ required this.isDeprecated,
+ required this.isTopLevel,
+ required this.variantField,
}) : super(documentation, name);
/// Get the non-deprecated fields defined in the class.
@@ -41,7 +40,7 @@
/// Information about a declaration in the IDL.
class Declaration {
/// The optional documentation, may be `null`.
- final String documentation;
+ final String? documentation;
/// The name of the declaration.
final String name;
@@ -54,13 +53,13 @@
/// List of enumerated values.
final List<EnumValueDeclaration> values = <EnumValueDeclaration>[];
- EnumDeclaration(String documentation, String name)
+ EnumDeclaration(String? documentation, String name)
: super(documentation, name);
}
/// Information about a single enum value defined in the IDL.
class EnumValueDeclaration extends Declaration {
- EnumValueDeclaration(String documentation, String name)
+ EnumValueDeclaration(String? documentation, String name)
: super(documentation, name);
}
@@ -79,16 +78,16 @@
final bool isInformative;
/// Maps logical property names to logical property.
- final Map<String, LogicalProperty> logicalProperties;
+ final Map<String, LogicalProperty>? logicalProperties;
FieldDeclaration({
- @required String documentation,
- @required String name,
- @required this.type,
- @required this.id,
- @required this.isDeprecated,
- @required this.isInformative,
- @required this.logicalProperties,
+ required String? documentation,
+ required String name,
+ required this.type,
+ required this.id,
+ required this.isDeprecated,
+ required this.isInformative,
+ required this.logicalProperties,
}) : super(documentation, name);
}
@@ -143,8 +142,8 @@
final List<String> variants;
LogicalProperty({
- @required this.isDeprecated,
- @required this.isInformative,
- @required this.variants,
+ required this.isDeprecated,
+ required this.isInformative,
+ required this.variants,
});
}
diff --git a/pkg/analyzer/tool/summary/mini_ast.dart b/pkg/analyzer/tool/summary/mini_ast.dart
index 356e81f..a81c33c 100644
--- a/pkg/analyzer/tool/summary/mini_ast.dart
+++ b/pkg/analyzer/tool/summary/mini_ast.dart
@@ -12,15 +12,16 @@
import 'package:_fe_analyzer_shared/src/parser/stack_listener.dart';
import 'package:_fe_analyzer_shared/src/scanner/token.dart';
import 'package:analyzer/src/dart/analysis/experiments.dart';
+import 'package:collection/collection.dart';
import 'package:pub_semver/pub_semver.dart';
/// "Mini AST" representation of a declaration which can accept annotations.
class AnnotatedNode {
- final Comment documentationComment;
+ final Comment? documentationComment;
final List<Annotation> metadata;
- AnnotatedNode(this.documentationComment, List<Annotation> metadata)
+ AnnotatedNode(this.documentationComment, List<Annotation>? metadata)
: metadata = metadata ?? const [];
}
@@ -28,9 +29,9 @@
class Annotation {
final String name;
- final String constructorName;
+ final String? constructorName;
- final List<Expression> arguments;
+ final List<Expression>? arguments;
Annotation(this.name, this.constructorName, this.arguments);
}
@@ -43,14 +44,14 @@
final List<ClassMember> members;
- ClassDeclaration(Comment documentationComment, List<Annotation> metadata,
+ ClassDeclaration(Comment? documentationComment, List<Annotation>? metadata,
this.name, this.superclass, this.members)
: super(documentationComment, metadata);
}
/// "Mini AST" representation of a class member.
class ClassMember extends AnnotatedNode {
- ClassMember(Comment documentationComment, List<Annotation> metadata)
+ ClassMember(Comment? documentationComment, List<Annotation>? metadata)
: super(documentationComment, metadata);
}
@@ -63,13 +64,14 @@
factory Comment(Token commentToken) {
var tokens = <Token>[];
bool isDocumentation = false;
- while (commentToken != null) {
- if (commentToken.lexeme.startsWith('/**') ||
- commentToken.lexeme.startsWith('///')) {
+
+ Token? token = commentToken;
+ while (token != null) {
+ if (token.lexeme.startsWith('/**') || token.lexeme.startsWith('///')) {
isDocumentation = true;
}
- tokens.add(commentToken);
- commentToken = commentToken.next;
+ tokens.add(token);
+ token = token.next;
}
return Comment._(isDocumentation, tokens);
}
@@ -84,7 +86,8 @@
/// "Mini AST" representation of a top level member of a compilation unit.
class CompilationUnitMember extends AnnotatedNode {
- CompilationUnitMember(Comment documentationComment, List<Annotation> metadata)
+ CompilationUnitMember(
+ Comment? documentationComment, List<Annotation>? metadata)
: super(documentationComment, metadata);
}
@@ -93,7 +96,7 @@
final String name;
ConstructorDeclaration(
- Comment documentationComment, List<Annotation> metadata, this.name)
+ Comment? documentationComment, List<Annotation>? metadata, this.name)
: super(documentationComment, metadata);
}
@@ -103,7 +106,7 @@
final String name;
EnumConstantDeclaration(
- Comment documentationComment, List<Annotation> metadata, this.name)
+ Comment? documentationComment, List<Annotation> metadata, this.name)
: super(documentationComment, metadata);
}
@@ -113,7 +116,7 @@
final List<EnumConstantDeclaration> constants;
- EnumDeclaration(Comment documentationComment, List<Annotation> metadata,
+ EnumDeclaration(Comment? documentationComment, List<Annotation>? metadata,
this.name, this.constants)
: super(documentationComment, metadata);
}
@@ -154,7 +157,7 @@
final TypeName returnType;
- MethodDeclaration(Comment documentationComment, List<Annotation> metadata,
+ MethodDeclaration(Comment? documentationComment, List<Annotation>? metadata,
this.isGetter, this.name, this.returnType)
: super(documentationComment, metadata);
}
@@ -167,11 +170,11 @@
final compilationUnit = CompilationUnit();
@override
- Uri get uri => null;
+ Uri get uri => throw UnimplementedError();
@override
void addProblem(Message message, int charOffset, int length,
- {bool wasHandled = false, List<LocatedMessage> context}) {
+ {bool wasHandled = false, List<LocatedMessage>? context}) {
internalProblem(message, charOffset, uri);
}
@@ -183,8 +186,9 @@
@override
void beginMetadataStar(Token token) {
debugEvent("beginMetadataStar");
- if (token.precedingComments != null) {
- push(Comment(token.precedingComments));
+ var precedingComments = token.precedingComments;
+ if (precedingComments != null) {
+ push(Comment(precedingComments));
} else {
push(NullValue.Comments);
}
@@ -201,7 +205,7 @@
debugEvent("BinaryExpression");
if (identical('.', token.stringValue)) {
- var rightOperand = pop();
+ var rightOperand = pop() as String;
var leftOperand = pop();
if (leftOperand is String && !leftOperand.contains('.')) {
push(PrefixedIdentifier(leftOperand, token, rightOperand));
@@ -218,12 +222,12 @@
@override
void endClassDeclaration(Token beginToken, Token endToken) {
debugEvent("ClassDeclaration");
- List<ClassMember> members = popTypedList();
- TypeName superclass = pop();
+ var members = popTypedList<ClassMember>() ?? [];
+ var superclass = pop() as TypeName;
pop(); // Type variables
- String name = pop();
- List<Annotation> metadata = popTypedList();
- Comment comment = pop();
+ var name = pop() as String;
+ var metadata = popTypedList<Annotation>();
+ var comment = pop() as Comment?;
compilationUnit.declarations
.add(ClassDeclaration(comment, metadata, name, superclass, members));
}
@@ -234,24 +238,24 @@
debugEvent("ClassFactoryMethod");
pop(); // Body
pop(); // Type variables
- String name = pop();
- List<Annotation> metadata = popTypedList();
- Comment comment = pop();
+ var name = pop() as String;
+ var metadata = popTypedList() as List<Annotation>?;
+ var comment = pop() as Comment?;
push(ConstructorDeclaration(comment, metadata, name));
}
@override
- void endClassMethod(Token getOrSet, Token beginToken, Token beginParam,
- Token beginInitializers, Token endToken) {
+ void endClassMethod(Token? getOrSet, Token beginToken, Token beginParam,
+ Token? beginInitializers, Token endToken) {
debugEvent("Method");
pop(); // Body
pop(); // Initializers
pop(); // Formal parameters
pop(); // Type variables
- String name = pop();
- TypeName returnType = pop();
- List<Annotation> metadata = popTypedList();
- Comment comment = pop();
+ var name = pop() as String;
+ var returnType = pop() as TypeName;
+ var metadata = popTypedList<Annotation>();
+ var comment = pop() as Comment?;
push(MethodDeclaration(
comment, metadata, getOrSet?.lexeme == 'get', name, returnType));
}
@@ -261,7 +265,7 @@
DeclarationKind kind, int memberCount, Token beginToken, Token endToken) {
debugEvent("ClassOrMixinBody");
push(popList(memberCount,
- List<ClassMember>.filled(memberCount, null, growable: true)));
+ List<ClassMember?>.filled(memberCount, null, growable: true)));
}
@override
@@ -283,14 +287,14 @@
@override
void endEnum(Token enumKeyword, Token leftBrace, int count) {
debugEvent("Enum");
- List<EnumConstantDeclaration> constants =
- List.filled(count, null, growable: true);
+ var constants =
+ List<EnumConstantDeclaration?>.filled(count, null, growable: true);
popList(count, constants);
- String name = pop();
- List<Annotation> metadata = popTypedList();
- Comment comment = pop();
- compilationUnit.declarations
- .add(EnumDeclaration(comment, metadata, name, constants));
+ var name = pop() as String;
+ var metadata = popTypedList<Annotation>();
+ var comment = pop() as Comment?;
+ compilationUnit.declarations.add(EnumDeclaration(
+ comment, metadata, name, constants.whereNotNull().toList()));
}
@override
@@ -301,11 +305,11 @@
@override
void endFormalParameter(
- Token thisKeyword,
- Token periodAfterThis,
+ Token? thisKeyword,
+ Token? periodAfterThis,
Token nameToken,
- Token initializerStart,
- Token initializerEnd,
+ Token? initializerStart,
+ Token? initializerEnd,
FormalParameterKind kind,
MemberKind memberKind) {
debugEvent("FormalParameter");
@@ -322,7 +326,7 @@
}
@override
- void endImport(Token importKeyword, Token semicolon) {
+ void endImport(Token importKeyword, Token? semicolon) {
debugEvent("Import");
pop(NullValue.Prefix); // Prefix identifier
pop(); // URI
@@ -341,7 +345,7 @@
@override
void endLiteralString(int interpolationCount, Token endToken) {
super.endLiteralString(interpolationCount, endToken);
- String value = pop();
+ var value = pop() as String;
push(StringLiteral(value));
}
@@ -351,13 +355,13 @@
}
@override
- void endMetadata(Token beginToken, Token periodBeforeName, Token endToken) {
+ void endMetadata(Token beginToken, Token? periodBeforeName, Token endToken) {
debugEvent("Metadata");
inMetadata = false;
- List arguments = pop();
- String constructorName = popIfNotNull(periodBeforeName);
+ var arguments = pop() as List?;
+ var constructorName = popIfNotNull(periodBeforeName) as String;
pop(); // Type arguments
- String name = pop();
+ var name = pop() as String;
push(Annotation(name, constructorName,
arguments == null ? null : arguments.cast<Expression>()));
}
@@ -365,8 +369,9 @@
@override
void endMetadataStar(int count) {
debugEvent("MetadataStar");
- push(popList(count, List<Annotation>.filled(count, null, growable: true)) ??
- NullValue.Metadata);
+ push(
+ popList(count, List<Annotation?>.filled(count, null, growable: true)) ??
+ NullValue.Metadata);
}
@override
@@ -377,11 +382,11 @@
@override
void endTopLevelFields(
- Token externalToken,
- Token staticToken,
- Token covariantToken,
- Token lateToken,
- Token varFinalOrConst,
+ Token? externalToken,
+ Token? staticToken,
+ Token? covariantToken,
+ Token? lateToken,
+ Token? varFinalOrConst,
int count,
Token beginToken,
Token endToken) {
@@ -397,11 +402,11 @@
@override
void endTypeArguments(int count, Token beginToken, Token endToken) {
debugEvent("TypeArguments");
- push(popList(count, List<TypeName>.filled(count, null, growable: true)));
+ push(popList(count, List<TypeName?>.filled(count, null, growable: true)));
}
@override
- void handleAsyncModifier(Token asyncToken, Token starToken) {
+ void handleAsyncModifier(Token? asyncToken, Token? starToken) {
debugEvent("AsyncModifier");
}
@@ -429,8 +434,8 @@
@override
void handleIdentifier(Token token, IdentifierContext context) {
if (context == IdentifierContext.enumValueDeclaration) {
- List<Annotation> metadata = popTypedList();
- Comment comment = pop();
+ var metadata = popTypedList() as List<Annotation>;
+ var comment = pop() as Comment?;
push(EnumConstantDeclaration(comment, metadata, token.lexeme));
} else {
push(token.lexeme);
@@ -444,7 +449,7 @@
}
@override
- void handleImportPrefix(Token deferredKeyword, Token asKeyword) {
+ void handleImportPrefix(Token? deferredKeyword, Token? asKeyword) {
debugEvent("ImportPrefix");
pushIfNull(asKeyword, NullValue.Prefix);
}
@@ -475,10 +480,10 @@
@override
void handleLiteralList(
- int count, Token leftBracket, Token constKeyword, Token rightBracket) {
+ int count, Token leftBracket, Token? constKeyword, Token rightBracket) {
debugEvent("LiteralList");
- var elements = List<Object>.filled(count, null);
+ var elements = List<Object?>.filled(count, null);
popList(count, elements);
pop(); // type arguments
@@ -499,8 +504,8 @@
@override
void handleNamedArgument(Token colon) {
- var expression = pop();
- var name = pop();
+ var expression = pop() as Expression;
+ var name = pop() as String;
push(NamedExpression(name, colon, expression));
}
@@ -536,8 +541,8 @@
@override
void handleQualified(Token period) {
debugEvent("Qualified");
- String suffix = pop();
- String prefix = pop();
+ var suffix = pop() as String;
+ var prefix = pop() as String;
push('$prefix.$suffix');
}
@@ -547,7 +552,7 @@
}
@override
- void handleRecoverImport(Token semicolon) {
+ void handleRecoverImport(Token? semicolon) {
debugEvent("RecoverImport");
pop(NullValue.Prefix); // Prefix identifier
}
@@ -567,32 +572,32 @@
}
@override
- void handleType(Token beginToken, Token questionMark) {
+ void handleType(Token beginToken, Token? questionMark) {
debugEvent("Type");
- reportErrorIfNullableType(questionMark);
- List<TypeName> typeArguments = popTypedList();
- String name = pop();
+ // reportErrorIfNullableType(questionMark);
+ var typeArguments = popTypedList<TypeName>();
+ var name = pop() as String;
push(TypeName(name, typeArguments));
}
@override
- internalProblem(Message message, int charOffset, Uri uri) {
+ internalProblem(Message message, int charOffset, Uri? uri) {
throw UnsupportedError(message.message);
}
- List popList(int n, List list) {
+ List? popList(int n, List list) {
if (n == 0) return null;
return stack.popList(n, list, null);
}
/// Calls [pop] and creates a list with the appropriate type parameter `T`
/// from the resulting `List<dynamic>`.
- List<T> popTypedList<T>() {
- List list = pop();
+ List<T>? popTypedList<T>() {
+ var list = pop() as List?;
return list != null ? List<T>.from(list) : null;
}
- void reportErrorIfNullableType(Token questionMark) {
+ void reportErrorIfNullableType(Token? questionMark) {
if (questionMark != null) {
assert(optional('?', questionMark));
var feature = ExperimentalFeatures.non_nullable;
@@ -630,7 +635,7 @@
@override
Token parseArgumentsOpt(Token token) {
- MiniAstBuilder listener = this.listener;
+ var listener = this.listener as MiniAstBuilder;
if (listener.inMetadata) {
return super.parseArgumentsOpt(token);
} else {
@@ -681,7 +686,7 @@
class TypeName {
final String name;
- final List<TypeName> typeArguments;
+ final List<TypeName>? typeArguments;
TypeName(this.name, this.typeArguments);
}
diff --git a/pkg/analyzer/tool/summary/stats.dart b/pkg/analyzer/tool/summary/stats.dart
index 47f58b4..86c0677 100644
--- a/pkg/analyzer/tool/summary/stats.dart
+++ b/pkg/analyzer/tool/summary/stats.dart
@@ -48,7 +48,7 @@
counts.forEach((Type type, Map<String, int> typeCounts) {
print(type);
List<String> keys = typeCounts.keys.toList();
- keys.sort((String a, String b) => typeCounts[b].compareTo(typeCounts[a]));
+ keys.sort((a, b) => typeCounts[b]!.compareTo(typeCounts[a]!));
for (String key in keys) {
print(' $key: ${typeCounts[key]}');
}
@@ -60,7 +60,7 @@
void record(SummaryClass obj) {
Map<String, int> typeCounts =
counts.putIfAbsent(obj.runtimeType, () => <String, int>{});
- obj.toMap().forEach((String key, Object value) {
+ obj.toMap().forEach((key, value) {
if (value == null ||
value == 0 ||
value == false ||
@@ -69,14 +69,11 @@
reflect(value).type.isEnum && (value as dynamic).index == 0) {
return;
}
- if (!typeCounts.containsKey(key)) {
- typeCounts[key] = 0;
- }
- typeCounts[key]++;
+ typeCounts.update(key, (value) => value + 1, ifAbsent: () => 0);
if (value is SummaryClass) {
record(value);
} else if (value is List) {
- value.forEach((Object element) {
+ value.forEach((element) {
if (element is SummaryClass) {
record(element);
}
diff --git a/pkg/analyzer/tool/test_log_parser/test_log_parser.dart b/pkg/analyzer/tool/test_log_parser/test_log_parser.dart
index bebd6c5..38ddab0 100644
--- a/pkg/analyzer/tool/test_log_parser/test_log_parser.dart
+++ b/pkg/analyzer/tool/test_log_parser/test_log_parser.dart
@@ -1,3 +1,4 @@
+// @dart = 2.9
// Copyright (c) 2018, 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.
diff --git a/pkg/analyzer_cli/lib/src/analyzer_impl.dart b/pkg/analyzer_cli/lib/src/analyzer_impl.dart
index 4294f1c..20931be 100644
--- a/pkg/analyzer_cli/lib/src/analyzer_impl.dart
+++ b/pkg/analyzer_cli/lib/src/analyzer_impl.dart
@@ -245,7 +245,7 @@
@override
void logException(dynamic exception,
[StackTrace stackTrace,
- List<InstrumentationServiceAttachment> attachments]) {
+ List<InstrumentationServiceAttachment> attachments = const []]) {
errorSink.writeln(exception);
errorSink.writeln(stackTrace);
}
diff --git a/pkg/analyzer_cli/lib/src/context_cache.dart b/pkg/analyzer_cli/lib/src/context_cache.dart
index 6c0bb25..ee33541 100644
--- a/pkg/analyzer_cli/lib/src/context_cache.dart
+++ b/pkg/analyzer_cli/lib/src/context_cache.dart
@@ -108,8 +108,7 @@
/// automatically.
AnalysisOptionsImpl _getAnalysisOptions() {
var contextOptions = builder.getAnalysisOptions(requestedSourceDirectory,
- verbosePrint: clOptions.verbose ? verbosePrint : null)
- as AnalysisOptionsImpl;
+ verbosePrint: clOptions.verbose ? verbosePrint : null);
_buildContextFeatureSet(contextOptions);
contextOptions.hint = !clOptions.disableHints;
diff --git a/pkg/analyzer_plugin/lib/utilities/completion/relevance.dart b/pkg/analyzer_plugin/lib/utilities/completion/relevance.dart
index 33fc86ea..96f4683 100644
--- a/pkg/analyzer_plugin/lib/utilities/completion/relevance.dart
+++ b/pkg/analyzer_plugin/lib/utilities/completion/relevance.dart
@@ -41,10 +41,6 @@
/// deferred imported library.
static const int loadLibrary = 200;
- /// The relevance used when suggesting a member of a class or extension and
- /// there are no features that can be used to provide a relevance score.
- static const int member = 500;
-
/// The relevance used when suggesting a named argument corresponding to a
/// named parameter that is not required.
static const int namedArgument = 900;
@@ -55,15 +51,9 @@
/// The relevance used when suggesting an override of an inherited member.
static const int override = 750;
- /// The relevance used when suggesting a prefix from an import directive.
- static const int prefix = 50;
-
/// The relevance used when suggesting a named argument corresponding to a
/// named parameter that is required.
static const int requiredNamedArgument = 950;
-
- /// The relevance used when suggesting a type parameter.
- static const int typeParameter = 500;
}
/// A name scope for constants that are related to the relevance of completion
diff --git a/pkg/analyzer_plugin/test/support/abstract_single_unit.dart b/pkg/analyzer_plugin/test/support/abstract_single_unit.dart
index ca144aa..c46632a 100644
--- a/pkg/analyzer_plugin/test/support/abstract_single_unit.dart
+++ b/pkg/analyzer_plugin/test/support/abstract_single_unit.dart
@@ -93,7 +93,7 @@
await resolveTestFile();
}
- Future resolveTestFile() async {
+ Future<void> resolveTestFile() async {
var result = await resolveFile(testFile);
testCode = result.content;
testUnit = result.unit;
diff --git a/pkg/analyzer_plugin/test/utilities/range_factory_test.dart b/pkg/analyzer_plugin/test/utilities/range_factory_test.dart
index 0250c35..3813dd0 100644
--- a/pkg/analyzer_plugin/test/utilities/range_factory_test.dart
+++ b/pkg/analyzer_plugin/test/utilities/range_factory_test.dart
@@ -3,9 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/ast/ast.dart';
-import 'package:analyzer/error/error.dart';
import 'package:analyzer/source/source_range.dart';
-import 'package:analyzer/src/generated/parser.dart';
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer_plugin/utilities/range_factory.dart';
import 'package:test/test.dart';
@@ -200,9 +198,14 @@
expect(range.endStart(mainName, mainBody), SourceRange(4, 3));
}
- void test_error() {
- var error = AnalysisError(null, 10, 5, ParserErrorCode.CONST_CLASS, []);
- expect(range.error(error), SourceRange(10, 5));
+ Future<void> test_error() async {
+ addTestSource('''
+class A {}
+const class B {}
+''');
+ var result = await resolveFile(testFile);
+ var error = result.errors.single;
+ expect(range.error(error), SourceRange(11, 5));
}
Future<void> test_node() async {
diff --git a/pkg/analyzer_utilities/lib/verify_tests.dart b/pkg/analyzer_utilities/lib/verify_tests.dart
index bfe5f35..d6fad18 100644
--- a/pkg/analyzer_utilities/lib/verify_tests.dart
+++ b/pkg/analyzer_utilities/lib/verify_tests.dart
@@ -110,7 +110,11 @@
var importedFiles = <String>[];
for (var directive in result.unit.directives) {
if (directive is ImportDirective) {
- importedFiles.add(directive.uri.stringValue);
+ var uri = directive.uri.stringValue;
+ if (uri == null) {
+ fail('Invalid URI: $directive');
+ }
+ importedFiles.add(uri);
}
}
var missingFiles = <String>[];
diff --git a/pkg/dev_compiler/lib/js/legacy/dart_library.js b/pkg/dev_compiler/lib/js/legacy/dart_library.js
index ac7b2b2..feb748c 100644
--- a/pkg/dev_compiler/lib/js/legacy/dart_library.js
+++ b/pkg/dev_compiler/lib/js/legacy/dart_library.js
@@ -5,9 +5,9 @@
// This file defines the module loader for the dart runtime.
var dart_library;
if (!dart_library) {
- dart_library = typeof module != "undefined" && module.exports || {};
+ dart_library = typeof module != 'undefined' && module.exports || {};
- (function (dart_library) {
+ (function(dart_library) {
'use strict';
// Throws an error related to module loading.
@@ -19,7 +19,7 @@
// capturing the exception.
if (!!self.dispatchEvent) {
self.dispatchEvent(
- new CustomEvent('dartLoadException', {detail: message}));
+ new CustomEvent('dartLoadException', {detail: message}));
}
throw Error(message);
}
@@ -27,6 +27,48 @@
const libraryImports = Symbol('libraryImports');
dart_library.libraryImports = libraryImports;
+ const _metrics = Symbol('metrics');
+ const _logMetrics = false;
+
+ // Returns a map from module name to various metrics for module.
+ function metrics() {
+ const map = {};
+ const keys = Array.from(_libraries.keys());
+ for (const key of keys) {
+ const lib = _libraries.get(key);
+ map[lib._name] = lib._library[_metrics];
+ }
+ return map;
+ }
+ dart_library.metrics = metrics;
+
+ function _sortFn(key1, key2) {
+ const t1 = _libraries.get(key1)._library[_metrics].loadTime;
+ const t2 = _libraries.get(key2)._library[_metrics].loadTime;
+ return t1 - t2;
+ }
+
+ // Convenience method to print the metrics in the browser console
+ // in CSV format.
+ function metricsCsv() {
+ let buffer =
+ 'Module, JS Size, Dart Size, Load Time, Cumulative JS Size\n';
+ const keys = Array.from(_libraries.keys());
+ keys.sort(_sortFn);
+ let cumulativeJsSize = 0;
+ for (const key of keys) {
+ const lib = _libraries.get(key);
+ const jsSize = lib._library[_metrics].jsSize;
+ cumulativeJsSize += jsSize;
+ const dartSize = lib._library[_metrics].dartSize;
+ const loadTime = lib._library[_metrics].loadTime;
+ buffer += '"' + lib._name + '", ' + jsSize + ', ' + dartSize + ', ' +
+ loadTime + ', ' + cumulativeJsSize + '\n';
+ }
+ return buffer;
+ }
+ dart_library.metricsCsv = metricsCsv;
+
// Module support. This is a simplified module system for Dart.
// Longer term, we can easily migrate to an existing JS module system:
// ES6, AMD, RequireJS, ....
@@ -34,7 +76,7 @@
// Returns a proxy that delegates to the underlying loader.
// This defers loading of a module until a library is actually used.
const loadedModule = Symbol('loadedModule');
- dart_library.defer = function (module, name, patch) {
+ dart_library.defer = function(module, name, patch) {
let done = false;
function loadDeferred() {
done = true;
@@ -47,11 +89,11 @@
// library object should be get (to read a top-level variable, method, or
// Class) or set (to write a top-level variable).
return new Proxy({}, {
- get: function (o, p) {
+ get: function(o, p) {
if (!done) loadDeferred();
return module[name][p];
},
- set: function (o, p, value) {
+ set: function(o, p, value) {
if (!done) loadDeferred();
module[name][p] = value;
return true;
@@ -60,10 +102,13 @@
};
let _reverseImports = new Map();
- class LibraryLoader {
- constructor(name, defaultValue, imports, loader) {
- imports.forEach(function (i) {
+ // Set of libraries that were not only loaded on the page but also executed.
+ let _executedLibraries = new Set();
+
+ class LibraryLoader {
+ constructor(name, defaultValue, imports, loader, data) {
+ imports.forEach(function(i) {
let deps = _reverseImports.get(i);
if (!deps) {
deps = new Set();
@@ -75,6 +120,9 @@
this._library = defaultValue ? defaultValue : {};
this._imports = imports;
this._loader = loader;
+ data.jsSize = loader.toString().length;
+ data.loadTime = Infinity;
+ this._metrics = data;
// Cyclic import detection
this._state = LibraryLoader.NOT_LOADED;
@@ -95,6 +143,7 @@
} else if (this._state >= LibraryLoader.READY) {
return this._library;
}
+ _executedLibraries.add(this._name);
this._state = LibraryLoader.LOADING;
// Handle imports
@@ -106,19 +155,33 @@
library[libraryImports] = this._imports;
library[loadedModule] = library;
+ library[_metrics] = this._metrics;
args.unshift(library);
if (this._name == 'dart_sdk') {
// Eagerly load the SDK.
+ if (!!self.performance) {
+ library[_metrics].loadTime = self.performance.now();
+ }
+ if (_logMetrics) console.time('Load ' + this._name);
this._loader.apply(null, args);
+ if (_logMetrics) console.timeEnd('Load ' + this._name);
} else {
// Load / parse other modules on demand.
let done = false;
this._library = new Proxy(library, {
- get: function (o, name) {
+ get: function(o, name) {
+ if (name == _metrics) {
+ return o[name];
+ }
if (!done) {
done = true;
+ if (!!self.performance) {
+ library[_metrics].loadTime = self.performance.now();
+ }
+ if (_logMetrics) console.time('Load ' + loader._name);
loader._loader.apply(null, args);
+ if (_logMetrics) console.timeEnd('Load ' + loader._name);
}
return o[name];
}
@@ -139,12 +202,12 @@
// Map from name to LibraryLoader
let _libraries = new Map();
- dart_library.libraries = function () {
+ dart_library.libraries = function() {
return _libraries.keys();
};
- dart_library.debuggerLibraries = function () {
+ dart_library.debuggerLibraries = function() {
let debuggerLibraries = [];
- _libraries.forEach(function (value, key, map) {
+ _libraries.forEach(function(value, key, map) {
debuggerLibraries.push(value.load());
});
debuggerLibraries.__proto__ = null;
@@ -162,42 +225,76 @@
deps.forEach(_invalidateLibrary);
}
- function library(name, defaultValue, imports, loader) {
+ function library(name, defaultValue, imports, loader, data = {}) {
let result = _libraries.get(name);
if (result) {
console.log('Re-loading ' + name);
_invalidateLibrary(name);
}
- result = new LibraryLoader(name, defaultValue, imports, loader);
+ result = new LibraryLoader(name, defaultValue, imports, loader, data);
_libraries.set(name, result);
return result;
}
dart_library.library = library;
- // Maintain a stack of active imports. If a requested library/module is not
- // available, print the stack to show where/how it was requested.
- let _stack = [];
+ // Store executed modules upon reload.
+ if (!!self.addEventListener && !!self.localStorage) {
+ self.addEventListener('beforeunload', function(event) {
+ let libraryCache = {
+ 'time': new Date().getTime(),
+ 'modules': Array.from(_executedLibraries.keys())
+ };
+ self.localStorage.setItem(
+ 'dartLibraryCache', JSON.stringify(libraryCache));
+ });
+ }
+
+ // Map from module name to corresponding proxy library.
+ let _proxyLibs = new Map();
+
function import_(name) {
- let lib = _libraries.get(name);
- if (!lib) {
- let message = 'Module ' + name + ' not loaded in the browser.';
- if (_stack != []) {
- message += '\nDependency via:';
- let indent = '';
- for (let last = _stack.length - 1; last >= 0; last--) {
- indent += ' ';
- message += '\n' + indent + '- ' + _stack[last];
+ let proxy = _proxyLibs.get(name);
+ if (proxy) return proxy;
+ let proxyLib = new Proxy({}, {
+ get: function(o, p) {
+ let lib = _libraries.get(name);
+ if (self.$dartJITModules) {
+ // The backing module changed so update the reference
+ if (!lib) {
+ let xhr = new XMLHttpRequest();
+ let sourceURL = $dartLoader.moduleIdToUrl.get(name);
+ xhr.open('GET', sourceURL, false);
+ xhr.withCredentials = true;
+ xhr.send();
+ // Append sourceUrl so the resource shows up in the Chrome
+ // console.
+ eval(xhr.responseText + '//@ sourceURL=' + sourceURL);
+ lib = _libraries.get(name);
+ }
}
+ if (!lib) {
+ throwLibraryError('Module ' + name + ' not loaded in the browser.');
+ }
+ // Always load the library before accessing a property as it may have
+ // been invalidated.
+ return lib.load()[p];
}
- throwLibraryError(message);
- }
- _stack.push(name);
- let result = lib.load();
- _stack.pop();
- return result;
+ });
+ _proxyLibs.set(name, proxyLib);
+ return proxyLib;
}
dart_library.import = import_;
+ // Removes the corresponding library and invalidates all things that
+ // depend on it.
+ function _invalidateImport(name) {
+ let lib = _libraries.get(name);
+ if (!lib) return;
+ _invalidateLibrary(name);
+ _libraries.delete(name);
+ }
+ dart_library.invalidateImport = _invalidateImport;
+
let _debuggerInitialized = false;
// Called to initiate a hot restart of the application.
@@ -224,8 +321,8 @@
// 5. `$dartWarmReload` calls the callback to rerun main.
//
function reload(clearState) {
- // TODO(jmesserly): once we've rolled out `clearState` make it the default,
- // and eventually remove the parameter.
+ // TODO(jmesserly): once we've rolled out `clearState` make it the
+ // default, and eventually remove the parameter.
if (clearState == null) clearState = true;
@@ -234,7 +331,8 @@
// "hot reload" refers to keeping the application state and attempting to
// patch the code for the application while it is executing
// (https://flutter.io/hot-reload/), whereas "hot restart" refers to what
- // dartdevc supports: tear down the app, update the code, and rerun the app.
+ // dartdevc supports: tear down the app, update the code, and rerun the
+ // app.
if (!self || !self.$dartWarmReload) {
console.warn('Hot restart not supported in this environment.');
return;
@@ -246,7 +344,7 @@
result = _lastLibrary.onReloadStart();
}
- let sdk = _libraries.get("dart_sdk");
+ let sdk = _libraries.get('dart_sdk');
/// Once the `onReloadStart()` completes, this finishes the restart.
function finishHotRestart() {
@@ -254,7 +352,7 @@
if (clearState) {
// This resets all initialized fields and clears type caches and other
// temporary data structures used by the compiler/SDK.
- sdk.dart.hotRestart();
+ sdk._library.dart.hotRestart();
}
// Call the module loader to reload the necessary modules.
self.$dartWarmReload(() => {
@@ -317,6 +415,5 @@
library.main([]);
}
dart_library.start = start;
-
})(dart_library);
}
diff --git a/pkg/dev_compiler/tool/ddb b/pkg/dev_compiler/tool/ddb
index a87d416..56321d5 100755
--- a/pkg/dev_compiler/tool/ddb
+++ b/pkg/dev_compiler/tool/ddb
@@ -336,12 +336,20 @@
sdk.dart.weakNullSafetyErrors($weakNullSafetyErrors);
sdk.dart.nonNullAsserts($nonNullAsserts);
sdk.dart.nativeNonNullAsserts($nativeNonNullAsserts);
-dart_library.start('$basename', '$libname');
+
+// Invoke main through the d8 preamble to ensure the code is running
+// within the fake event loop.
+self.dartMainRunner(function () {
+ dart_library.start("$basename", "$libname");
+});
''';
+ var dart2jsD8Preamble =
+ '$sdkRoot/sdk/lib/_internal/js_runtime/lib/preambles/d8.js';
var d8File = p.setExtension(out, '.d8.js');
File(d8File).writeAsStringSync(runjs);
var d8Binary = binary ?? p.join(dartCheckoutPath, _d8executable);
- var process = await startProcess('D8', d8Binary, [d8File]);
+ var process =
+ await startProcess('D8', d8Binary, [dart2jsD8Preamble, d8File]);
if (await process.exitCode != 0) exit(await process.exitCode);
}
}
diff --git a/pkg/front_end/lib/src/fasta/kernel/type_algorithms.dart b/pkg/front_end/lib/src/fasta/kernel/type_algorithms.dart
index 8b6464e..64ce647 100644
--- a/pkg/front_end/lib/src/fasta/kernel/type_algorithms.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/type_algorithms.dart
@@ -989,9 +989,21 @@
findGenericFunctionTypes(formal.type, result: result);
}
}
- } else if (type is NamedTypeBuilder && type.arguments != null) {
- for (TypeBuilder argument in type.arguments) {
- findGenericFunctionTypes(argument, result: result);
+ } else if (type is NamedTypeBuilder) {
+ if (type.arguments != null) {
+ for (TypeBuilder argument in type.arguments) {
+ findGenericFunctionTypes(argument, result: result);
+ }
+ }
+
+ TypeDeclarationBuilder declaration = type.declaration;
+ if (declaration is TypeAliasBuilder) {
+ TypeBuilder rhsType = declaration.type;
+ if (rhsType is FunctionTypeBuilder &&
+ rhsType.typeVariables != null &&
+ rhsType.typeVariables.isNotEmpty) {
+ result.add(type);
+ }
}
}
}
diff --git a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
index 39531a8..23d1fea 100644
--- a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
@@ -18,45 +18,7 @@
import 'package:front_end/src/fasta/dill/dill_library_builder.dart'
show DillLibraryBuilder;
-import 'package:kernel/ast.dart'
- show
- Arguments,
- AsyncMarker,
- Class,
- Constructor,
- ConstructorInvocation,
- DartType,
- DynamicType,
- Expression,
- Extension,
- Field,
- FunctionNode,
- InterfaceType,
- InvalidType,
- Library,
- LibraryDependency,
- LibraryPart,
- ListLiteral,
- MapLiteral,
- Member,
- Name,
- NeverType,
- NonNullableByDefaultCompiledMode,
- NullType,
- Nullability,
- Procedure,
- ProcedureKind,
- Reference,
- SetLiteral,
- StaticInvocation,
- StringLiteral,
- Supertype,
- TypeParameter,
- TypeParameterType,
- Typedef,
- VariableDeclaration,
- Version,
- VoidType;
+import 'package:kernel/ast.dart' hide Combinator, MapEntry;
import 'package:kernel/class_hierarchy.dart' show ClassHierarchy;
@@ -2956,7 +2918,10 @@
int finishTypeVariables(ClassBuilder object, TypeBuilder dynamicType) {
int count = boundlessTypeVariables.length;
- for (TypeVariableBuilder builder in boundlessTypeVariables) {
+ // Ensure that type parameters are built after their dependencies by sorting
+ // them topologically using references in bounds.
+ for (TypeVariableBuilder builder
+ in _sortTypeVariablesTopologically(boundlessTypeVariables)) {
builder.finish(this, object, dynamicType);
}
boundlessTypeVariables.clear();
@@ -3734,8 +3699,13 @@
declaration.checkTypesInOutline(typeEnvironment);
} else if (declaration is SourceExtensionBuilder) {
declaration.checkTypesInOutline(typeEnvironment);
+ } else if (declaration is SourceTypeAliasBuilder) {
+ declaration.checkTypesInOutline(typeEnvironment);
} else {
- //assert(false, "Unexpected declaration ${declaration.runtimeType}");
+ assert(
+ declaration is! TypeDeclarationBuilder ||
+ declaration is BuiltinTypeDeclarationBuilder,
+ "Unexpected declaration ${declaration.runtimeType}");
}
}
inferredTypes.clear();
@@ -4176,3 +4146,77 @@
return 'ImplicitLanguageVersion(version=$version)';
}
}
+
+List<TypeVariableBuilder> _sortTypeVariablesTopologically(
+ List<TypeVariableBuilder> typeVariables) {
+ Set<TypeVariableBuilder> unhandled = new Set<TypeVariableBuilder>.identity()
+ ..addAll(typeVariables);
+ List<TypeVariableBuilder> result = <TypeVariableBuilder>[];
+ while (unhandled.isNotEmpty) {
+ TypeVariableBuilder rootVariable = unhandled.first;
+ unhandled.remove(rootVariable);
+ if (rootVariable.bound != null) {
+ _sortTypeVariablesTopologicallyFromRoot(
+ rootVariable.bound, unhandled, result);
+ }
+ result.add(rootVariable);
+ }
+ return result;
+}
+
+void _sortTypeVariablesTopologicallyFromRoot(TypeBuilder root,
+ Set<TypeVariableBuilder> unhandled, List<TypeVariableBuilder> result) {
+ assert(root != null);
+
+ List<TypeVariableBuilder> typeVariables;
+ List<TypeBuilder> internalDependents;
+
+ if (root is NamedTypeBuilder) {
+ TypeDeclarationBuilder declaration = root.declaration;
+ if (declaration is ClassBuilder) {
+ if (declaration.typeVariables != null &&
+ declaration.typeVariables.isNotEmpty) {
+ typeVariables = declaration.typeVariables;
+ }
+ } else if (declaration is TypeAliasBuilder) {
+ if (declaration.typeVariables != null &&
+ declaration.typeVariables.isNotEmpty) {
+ typeVariables = declaration.typeVariables;
+ }
+ internalDependents = <TypeBuilder>[declaration.type];
+ } else if (declaration is TypeVariableBuilder) {
+ typeVariables = <TypeVariableBuilder>[declaration];
+ }
+ } else if (root is FunctionTypeBuilder) {
+ if (root.typeVariables != null && root.typeVariables.isNotEmpty) {
+ typeVariables = root.typeVariables;
+ }
+ if (root.formals != null && root.formals.isNotEmpty) {
+ internalDependents = <TypeBuilder>[];
+ for (FormalParameterBuilder formal in root.formals) {
+ internalDependents.add(formal.type);
+ }
+ }
+ if (root.returnType != null) {
+ (internalDependents ??= <TypeBuilder>[]).add(root.returnType);
+ }
+ }
+
+ if (typeVariables != null && typeVariables.isNotEmpty) {
+ for (TypeVariableBuilder variable in typeVariables) {
+ if (unhandled.contains(variable)) {
+ unhandled.remove(variable);
+ if (variable.bound != null) {
+ _sortTypeVariablesTopologicallyFromRoot(
+ variable.bound, unhandled, result);
+ }
+ result.add(variable);
+ }
+ }
+ }
+ if (internalDependents != null && internalDependents.isNotEmpty) {
+ for (TypeBuilder type in internalDependents) {
+ _sortTypeVariablesTopologicallyFromRoot(type, unhandled, result);
+ }
+ }
+}
diff --git a/pkg/front_end/lib/src/fasta/source/source_type_alias_builder.dart b/pkg/front_end/lib/src/fasta/source/source_type_alias_builder.dart
index dc61bf9..5f1a2d2 100644
--- a/pkg/front_end/lib/src/fasta/source/source_type_alias_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_type_alias_builder.dart
@@ -20,6 +20,8 @@
import 'package:kernel/type_algebra.dart'
show FreshTypeParameters, getFreshTypeParameters;
+import 'package:kernel/type_environment.dart';
+
import '../fasta_codes.dart'
show noLength, templateCyclicTypedef, templateTypeArgumentMismatch;
@@ -62,6 +64,9 @@
super(metadata, name, parent, charOffset);
@override
+ SourceLibraryBuilder get library => super.library;
+
+ @override
List<TypeVariableBuilder> get typeVariables => _typeVariables;
@override
@@ -224,4 +229,11 @@
}
return result;
}
+
+ void checkTypesInOutline(TypeEnvironment typeEnvironment) {
+ library.checkBoundsInTypeParameters(
+ typeEnvironment, typedef.typeParameters, fileUri);
+ library.checkBoundsInType(
+ typedef.type, typeEnvironment, fileUri, type?.charOffset ?? charOffset);
+ }
}
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_26810_and.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_26810_and.dart.intertwined.expect
index 9abec744..ddb9ae4 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_26810_and.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_26810_and.dart.intertwined.expect
@@ -402,6 +402,7 @@
listener: handleSend(hashCode, and)
listener: handleEndingBinaryExpression(.)
rewriter()
+ rewriter()
listener: endBinaryExpression(+)
rewriter()
parsePrecedenceExpression(&, 12, true)
@@ -593,6 +594,7 @@
listener: handleSend(hashCode, and)
listener: handleEndingBinaryExpression(.)
rewriter()
+ rewriter()
listener: endBinaryExpression(+)
rewriter()
parsePrecedenceExpression(&, 12, true)
@@ -1432,6 +1434,7 @@
listener: handleNoArguments(and)
listener: handleSend(x, and)
rewriter()
+ rewriter()
listener: endBinaryExpression(+)
rewriter()
parsePrecedenceExpression(&, 12, true)
@@ -1647,6 +1650,7 @@
listener: handleNoArguments(and)
listener: handleSend(x, and)
rewriter()
+ rewriter()
listener: endBinaryExpression(+)
rewriter()
parsePrecedenceExpression(&, 12, true)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_26810_or.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_26810_or.dart.intertwined.expect
index 60507f0..38f516b 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_26810_or.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_26810_or.dart.intertwined.expect
@@ -402,6 +402,7 @@
listener: handleSend(hashCode, or)
listener: handleEndingBinaryExpression(.)
rewriter()
+ rewriter()
listener: endBinaryExpression(+)
rewriter()
parsePrecedenceExpression(|, 10, true)
@@ -593,6 +594,7 @@
listener: handleSend(hashCode, or)
listener: handleEndingBinaryExpression(.)
rewriter()
+ rewriter()
listener: endBinaryExpression(+)
rewriter()
parsePrecedenceExpression(|, 10, true)
@@ -1432,6 +1434,7 @@
listener: handleNoArguments(or)
listener: handleSend(x, or)
rewriter()
+ rewriter()
listener: endBinaryExpression(+)
rewriter()
parsePrecedenceExpression(|, 10, true)
@@ -1647,6 +1650,7 @@
listener: handleNoArguments(or)
listener: handleSend(x, or)
rewriter()
+ rewriter()
listener: endBinaryExpression(+)
rewriter()
parsePrecedenceExpression(|, 10, true)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_44785.crash_dart b/pkg/front_end/parser_testcases/error_recovery/issue_44785.crash_dart
new file mode 100644
index 0000000..5ba8b65
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_44785.crash_dart
@@ -0,0 +1,11 @@
+foo(int a, int b){
+ if (a == null or b == null){
+ return null
+ }
+}
+
+bar(int a, int b){
+ if (a == null and b == null){
+ return null
+ }
+}
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_44785.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_44785.crash_dart.expect
new file mode 100644
index 0000000..10ad30c
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_44785.crash_dart.expect
@@ -0,0 +1,140 @@
+Problems reported:
+
+parser/error_recovery/issue_44785.crash:2:17: Binary operator 'or' is written as '||' instead of the written out word.
+ if (a == null or b == null){
+ ^^
+
+parser/error_recovery/issue_44785.crash:3:12: Expected ';' after this.
+ return null
+ ^^^^
+
+parser/error_recovery/issue_44785.crash:8:17: Binary operator 'and' is written as '&&' instead of the written out word.
+ if (a == null and b == null){
+ ^^^
+
+parser/error_recovery/issue_44785.crash:9:12: Expected ';' after this.
+ return null
+ ^^^^
+
+beginCompilationUnit(foo)
+ beginMetadataStar(foo)
+ endMetadataStar(0)
+ beginTopLevelMember(foo)
+ beginTopLevelMethod(, null)
+ handleNoType()
+ handleIdentifier(foo, topLevelFunctionDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(a)
+ handleType(int, null)
+ handleIdentifier(a, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, a, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(b)
+ handleType(int, null)
+ handleIdentifier(b, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, b, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ endFormalParameters(2, (, ), MemberKind.TopLevelMethod)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginIfStatement(if)
+ handleIdentifier(a, expression)
+ handleNoTypeArguments(==)
+ handleNoArguments(==)
+ handleSend(a, ==)
+ beginBinaryExpression(==)
+ handleLiteralNull(null)
+ endBinaryExpression(==)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '||' instead of the written out word., Try replacing 'or' with '||'., {string: or, string2: ||}], or, or)
+ beginBinaryExpression(||)
+ handleIdentifier(b, expression)
+ handleNoTypeArguments(==)
+ handleNoArguments(==)
+ handleSend(b, ==)
+ beginBinaryExpression(==)
+ handleLiteralNull(null)
+ endBinaryExpression(==)
+ endBinaryExpression(||)
+ handleParenthesizedCondition(()
+ beginThenStatement({)
+ beginBlock({, BlockKind(statement))
+ beginReturnStatement(return)
+ handleLiteralNull(null)
+ handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], null, null)
+ endReturnStatement(true, return, ;)
+ endBlock(1, {, }, BlockKind(statement))
+ endThenStatement(})
+ endIfStatement(if, null)
+ endBlockFunctionBody(1, {, })
+ endTopLevelMethod(foo, null, })
+ endTopLevelDeclaration(bar)
+ beginMetadataStar(bar)
+ endMetadataStar(0)
+ beginTopLevelMember(bar)
+ beginTopLevelMethod(}, null)
+ handleNoType(})
+ handleIdentifier(bar, topLevelFunctionDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(a)
+ handleType(int, null)
+ handleIdentifier(a, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, a, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(b)
+ handleType(int, null)
+ handleIdentifier(b, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, b, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ endFormalParameters(2, (, ), MemberKind.TopLevelMethod)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginIfStatement(if)
+ handleIdentifier(a, expression)
+ handleNoTypeArguments(==)
+ handleNoArguments(==)
+ handleSend(a, ==)
+ beginBinaryExpression(==)
+ handleLiteralNull(null)
+ endBinaryExpression(==)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&&' instead of the written out word., Try replacing 'and' with '&&'., {string: and, string2: &&}], and, and)
+ beginBinaryExpression(&&)
+ handleIdentifier(b, expression)
+ handleNoTypeArguments(==)
+ handleNoArguments(==)
+ handleSend(b, ==)
+ beginBinaryExpression(==)
+ handleLiteralNull(null)
+ endBinaryExpression(==)
+ endBinaryExpression(&&)
+ handleParenthesizedCondition(()
+ beginThenStatement({)
+ beginBlock({, BlockKind(statement))
+ beginReturnStatement(return)
+ handleLiteralNull(null)
+ handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], null, null)
+ endReturnStatement(true, return, ;)
+ endBlock(1, {, }, BlockKind(statement))
+ endThenStatement(})
+ endIfStatement(if, null)
+ endBlockFunctionBody(1, {, })
+ endTopLevelMethod(bar, null, })
+ endTopLevelDeclaration()
+endCompilationUnit(2, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_44785.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_44785.crash_dart.intertwined.expect
new file mode 100644
index 0000000..cc1365f
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_44785.crash_dart.intertwined.expect
@@ -0,0 +1,308 @@
+parseUnit(foo)
+ skipErrorTokens(foo)
+ listener: beginCompilationUnit(foo)
+ syntheticPreviousToken(foo)
+ parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+ parseMetadataStar()
+ listener: beginMetadataStar(foo)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl()
+ listener: beginTopLevelMember(foo)
+ isReservedKeyword(()
+ parseTopLevelMethod(, null, , Instance of 'NoType', null, foo, false)
+ listener: beginTopLevelMethod(, null)
+ listener: handleNoType()
+ ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
+ listener: handleIdentifier(foo, topLevelFunctionDeclaration)
+ parseMethodTypeVar(foo)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(foo, foo, false, MemberKind.TopLevelMethod)
+ parseFormalParameters(foo, MemberKind.TopLevelMethod)
+ parseFormalParametersRest((, MemberKind.TopLevelMethod)
+ listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(a)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(a, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, a, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(b)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(b, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, b, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.TopLevelMethod)
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ parseFunctionBody(), false, false)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, if)
+ parseStatement({)
+ parseStatementX({)
+ parseIfStatement({)
+ listener: beginIfStatement(if)
+ ensureParenthesizedCondition(if)
+ parseExpressionInParenthesisRest(()
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true)
+ parseUnaryExpression((, true)
+ parsePrimary((, expression)
+ parseSendOrFunctionLiteral((, expression)
+ parseSend((, expression)
+ ensureIdentifier((, expression)
+ listener: handleIdentifier(a, expression)
+ listener: handleNoTypeArguments(==)
+ parseArgumentsOpt(a)
+ listener: handleNoArguments(==)
+ listener: handleSend(a, ==)
+ listener: beginBinaryExpression(==)
+ parsePrecedenceExpression(==, 8, true)
+ parseUnaryExpression(==, true)
+ parsePrimary(==, expression)
+ parseLiteralNull(==)
+ listener: handleLiteralNull(null)
+ rewriter()
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseSendOrFunctionLiteral(|, expression)
+ parseSend(|, expression)
+ ensureIdentifier(|, expression)
+ parseArgumentsOpt(b)
+ rewriter()
+ listener: endBinaryExpression(==)
+ rewriter()
+ parsePrecedenceExpression(||, 6, true)
+ parseUnaryExpression(||, true)
+ parsePrimary(||, expression)
+ parseSendOrFunctionLiteral(||, expression)
+ parseSend(||, expression)
+ ensureIdentifier(||, expression)
+ parseArgumentsOpt(b)
+ parsePrecedenceExpression(==, 8, true)
+ parseUnaryExpression(==, true)
+ parsePrimary(==, expression)
+ parseLiteralNull(==)
+ reportRecoverableError(or, Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '||' instead of the written out word., Try replacing 'or' with '||'., {string: or, string2: ||}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '||' instead of the written out word., Try replacing 'or' with '||'., {string: or, string2: ||}], or, or)
+ rewriter()
+ listener: beginBinaryExpression(||)
+ parsePrecedenceExpression(||, 6, true)
+ parseUnaryExpression(||, true)
+ parsePrimary(||, expression)
+ parseSendOrFunctionLiteral(||, expression)
+ parseSend(||, expression)
+ ensureIdentifier(||, expression)
+ listener: handleIdentifier(b, expression)
+ listener: handleNoTypeArguments(==)
+ parseArgumentsOpt(b)
+ listener: handleNoArguments(==)
+ listener: handleSend(b, ==)
+ listener: beginBinaryExpression(==)
+ parsePrecedenceExpression(==, 8, true)
+ parseUnaryExpression(==, true)
+ parsePrimary(==, expression)
+ parseLiteralNull(==)
+ listener: handleLiteralNull(null)
+ listener: endBinaryExpression(==)
+ listener: endBinaryExpression(||)
+ ensureCloseParen(null, ()
+ listener: handleParenthesizedCondition(()
+ listener: beginThenStatement({)
+ parseStatement())
+ parseStatementX())
+ parseBlock(), BlockKind(statement))
+ ensureBlock(), null, null)
+ listener: beginBlock({, BlockKind(statement))
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseLiteralNull(return)
+ listener: handleLiteralNull(null)
+ ensureSemicolon(null)
+ reportRecoverableError(null, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+ listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], null, null)
+ rewriter()
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlock(1, {, }, BlockKind(statement))
+ listener: endThenStatement(})
+ listener: endIfStatement(if, null)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endTopLevelMethod(foo, null, })
+ listener: endTopLevelDeclaration(bar)
+ parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+ parseMetadataStar(})
+ listener: beginMetadataStar(bar)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl(})
+ listener: beginTopLevelMember(bar)
+ isReservedKeyword(()
+ parseTopLevelMethod(}, null, }, Instance of 'NoType', null, bar, false)
+ listener: beginTopLevelMethod(}, null)
+ listener: handleNoType(})
+ ensureIdentifierPotentiallyRecovered(}, topLevelFunctionDeclaration, false)
+ listener: handleIdentifier(bar, topLevelFunctionDeclaration)
+ parseMethodTypeVar(bar)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(bar, bar, false, MemberKind.TopLevelMethod)
+ parseFormalParameters(bar, MemberKind.TopLevelMethod)
+ parseFormalParametersRest((, MemberKind.TopLevelMethod)
+ listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(a)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(a, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, a, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(b)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(b, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, b, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.TopLevelMethod)
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ parseFunctionBody(), false, false)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, if)
+ parseStatement({)
+ parseStatementX({)
+ parseIfStatement({)
+ listener: beginIfStatement(if)
+ ensureParenthesizedCondition(if)
+ parseExpressionInParenthesisRest(()
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true)
+ parseUnaryExpression((, true)
+ parsePrimary((, expression)
+ parseSendOrFunctionLiteral((, expression)
+ parseSend((, expression)
+ ensureIdentifier((, expression)
+ listener: handleIdentifier(a, expression)
+ listener: handleNoTypeArguments(==)
+ parseArgumentsOpt(a)
+ listener: handleNoArguments(==)
+ listener: handleSend(a, ==)
+ listener: beginBinaryExpression(==)
+ parsePrecedenceExpression(==, 8, true)
+ parseUnaryExpression(==, true)
+ parsePrimary(==, expression)
+ parseLiteralNull(==)
+ listener: handleLiteralNull(null)
+ rewriter()
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseSendOrFunctionLiteral(&, expression)
+ parseSend(&, expression)
+ ensureIdentifier(&, expression)
+ parseArgumentsOpt(b)
+ rewriter()
+ listener: endBinaryExpression(==)
+ rewriter()
+ parsePrecedenceExpression(&&, 7, true)
+ parseUnaryExpression(&&, true)
+ parsePrimary(&&, expression)
+ parseSendOrFunctionLiteral(&&, expression)
+ parseSend(&&, expression)
+ ensureIdentifier(&&, expression)
+ parseArgumentsOpt(b)
+ parsePrecedenceExpression(==, 8, true)
+ parseUnaryExpression(==, true)
+ parsePrimary(==, expression)
+ parseLiteralNull(==)
+ reportRecoverableError(and, Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&&' instead of the written out word., Try replacing 'and' with '&&'., {string: and, string2: &&}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&&' instead of the written out word., Try replacing 'and' with '&&'., {string: and, string2: &&}], and, and)
+ rewriter()
+ listener: beginBinaryExpression(&&)
+ parsePrecedenceExpression(&&, 7, true)
+ parseUnaryExpression(&&, true)
+ parsePrimary(&&, expression)
+ parseSendOrFunctionLiteral(&&, expression)
+ parseSend(&&, expression)
+ ensureIdentifier(&&, expression)
+ listener: handleIdentifier(b, expression)
+ listener: handleNoTypeArguments(==)
+ parseArgumentsOpt(b)
+ listener: handleNoArguments(==)
+ listener: handleSend(b, ==)
+ listener: beginBinaryExpression(==)
+ parsePrecedenceExpression(==, 8, true)
+ parseUnaryExpression(==, true)
+ parsePrimary(==, expression)
+ parseLiteralNull(==)
+ listener: handleLiteralNull(null)
+ listener: endBinaryExpression(==)
+ listener: endBinaryExpression(&&)
+ ensureCloseParen(null, ()
+ listener: handleParenthesizedCondition(()
+ listener: beginThenStatement({)
+ parseStatement())
+ parseStatementX())
+ parseBlock(), BlockKind(statement))
+ ensureBlock(), null, null)
+ listener: beginBlock({, BlockKind(statement))
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseLiteralNull(return)
+ listener: handleLiteralNull(null)
+ ensureSemicolon(null)
+ reportRecoverableError(null, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+ listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], null, null)
+ rewriter()
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlock(1, {, }, BlockKind(statement))
+ listener: endThenStatement(})
+ listener: endIfStatement(if, null)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endTopLevelMethod(bar, null, })
+ listener: endTopLevelDeclaration()
+ reportAllErrorTokens(foo)
+ listener: endCompilationUnit(2, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_44785.crash_dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/issue_44785.crash_dart.parser.expect
new file mode 100644
index 0000000..d576386
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_44785.crash_dart.parser.expect
@@ -0,0 +1,27 @@
+NOTICE: Stream was rewritten by parser!
+
+foo(int a, int b){
+if (a == null || b == null){
+return null
+;}
+}
+
+bar(int a, int b){
+if (a == null && b == null){
+return null
+;}
+}
+
+
+foo[StringToken]([BeginToken]int[StringToken] a[StringToken],[SimpleToken] int[StringToken] b[StringToken])[SimpleToken]{[BeginToken]
+if[KeywordToken] ([BeginToken]a[StringToken] ==[SimpleToken] null[KeywordToken] ||[ReplacementToken] b[StringToken] ==[SimpleToken] null[KeywordToken])[SimpleToken]{[BeginToken]
+return[KeywordToken] null[KeywordToken]
+;[SyntheticToken]}[SimpleToken]
+}[SimpleToken]
+
+bar[StringToken]([BeginToken]int[StringToken] a[StringToken],[SimpleToken] int[StringToken] b[StringToken])[SimpleToken]{[BeginToken]
+if[KeywordToken] ([BeginToken]a[StringToken] ==[SimpleToken] null[KeywordToken] &&[ReplacementToken] b[StringToken] ==[SimpleToken] null[KeywordToken])[SimpleToken]{[BeginToken]
+return[KeywordToken] null[KeywordToken]
+;[SyntheticToken]}[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_44785.crash_dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/issue_44785.crash_dart.scanner.expect
new file mode 100644
index 0000000..8dd39ac
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_44785.crash_dart.scanner.expect
@@ -0,0 +1,25 @@
+foo(int a, int b){
+if (a == null or b == null){
+return null
+}
+}
+
+bar(int a, int b){
+if (a == null and b == null){
+return null
+}
+}
+
+
+foo[StringToken]([BeginToken]int[StringToken] a[StringToken],[SimpleToken] int[StringToken] b[StringToken])[SimpleToken]{[BeginToken]
+if[KeywordToken] ([BeginToken]a[StringToken] ==[SimpleToken] null[KeywordToken] or[StringToken] b[StringToken] ==[SimpleToken] null[KeywordToken])[SimpleToken]{[BeginToken]
+return[KeywordToken] null[KeywordToken]
+}[SimpleToken]
+}[SimpleToken]
+
+bar[StringToken]([BeginToken]int[StringToken] a[StringToken],[SimpleToken] int[StringToken] b[StringToken])[SimpleToken]{[BeginToken]
+if[KeywordToken] ([BeginToken]a[StringToken] ==[SimpleToken] null[KeywordToken] and[StringToken] b[StringToken] ==[SimpleToken] null[KeywordToken])[SimpleToken]{[BeginToken]
+return[KeywordToken] null[KeywordToken]
+}[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_1.crash_dart b/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_1.crash_dart
new file mode 100644
index 0000000..66fa775
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_1.crash_dart
@@ -0,0 +1,23 @@
+foo(int a, int b){
+ if (a == null or b == null){
+ return null;
+ }
+}
+
+foo2(int a, int b, int c){
+ if (a == null or b == null or c == null){
+ return null;
+ }
+}
+
+bar(int a, int b){
+ if (a == null and b == null){
+ return null;
+ }
+}
+
+bar2(int a, int b, int c){
+ if (a == null and b == null and c == null){
+ return null;
+ }
+}
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_1.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_1.crash_dart.expect
new file mode 100644
index 0000000..52d75b5
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_1.crash_dart.expect
@@ -0,0 +1,302 @@
+Problems reported:
+
+parser/error_recovery/issue_44785_prime_1.crash:2:17: Binary operator 'or' is written as '||' instead of the written out word.
+ if (a == null or b == null){
+ ^^
+
+parser/error_recovery/issue_44785_prime_1.crash:8:17: Binary operator 'or' is written as '||' instead of the written out word.
+ if (a == null or b == null or c == null){
+ ^^
+
+parser/error_recovery/issue_44785_prime_1.crash:8:30: Binary operator 'or' is written as '||' instead of the written out word.
+ if (a == null or b == null or c == null){
+ ^^
+
+parser/error_recovery/issue_44785_prime_1.crash:14:17: Binary operator 'and' is written as '&&' instead of the written out word.
+ if (a == null and b == null){
+ ^^^
+
+parser/error_recovery/issue_44785_prime_1.crash:20:17: Binary operator 'and' is written as '&&' instead of the written out word.
+ if (a == null and b == null and c == null){
+ ^^^
+
+parser/error_recovery/issue_44785_prime_1.crash:20:31: Binary operator 'and' is written as '&&' instead of the written out word.
+ if (a == null and b == null and c == null){
+ ^^^
+
+beginCompilationUnit(foo)
+ beginMetadataStar(foo)
+ endMetadataStar(0)
+ beginTopLevelMember(foo)
+ beginTopLevelMethod(, null)
+ handleNoType()
+ handleIdentifier(foo, topLevelFunctionDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(a)
+ handleType(int, null)
+ handleIdentifier(a, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, a, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(b)
+ handleType(int, null)
+ handleIdentifier(b, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, b, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ endFormalParameters(2, (, ), MemberKind.TopLevelMethod)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginIfStatement(if)
+ handleIdentifier(a, expression)
+ handleNoTypeArguments(==)
+ handleNoArguments(==)
+ handleSend(a, ==)
+ beginBinaryExpression(==)
+ handleLiteralNull(null)
+ endBinaryExpression(==)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '||' instead of the written out word., Try replacing 'or' with '||'., {string: or, string2: ||}], or, or)
+ beginBinaryExpression(||)
+ handleIdentifier(b, expression)
+ handleNoTypeArguments(==)
+ handleNoArguments(==)
+ handleSend(b, ==)
+ beginBinaryExpression(==)
+ handleLiteralNull(null)
+ endBinaryExpression(==)
+ endBinaryExpression(||)
+ handleParenthesizedCondition(()
+ beginThenStatement({)
+ beginBlock({, BlockKind(statement))
+ beginReturnStatement(return)
+ handleLiteralNull(null)
+ endReturnStatement(true, return, ;)
+ endBlock(1, {, }, BlockKind(statement))
+ endThenStatement(})
+ endIfStatement(if, null)
+ endBlockFunctionBody(1, {, })
+ endTopLevelMethod(foo, null, })
+ endTopLevelDeclaration(foo2)
+ beginMetadataStar(foo2)
+ endMetadataStar(0)
+ beginTopLevelMember(foo2)
+ beginTopLevelMethod(}, null)
+ handleNoType(})
+ handleIdentifier(foo2, topLevelFunctionDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(a)
+ handleType(int, null)
+ handleIdentifier(a, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, a, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(b)
+ handleType(int, null)
+ handleIdentifier(b, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, b, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(c)
+ handleType(int, null)
+ handleIdentifier(c, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, c, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ endFormalParameters(3, (, ), MemberKind.TopLevelMethod)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginIfStatement(if)
+ handleIdentifier(a, expression)
+ handleNoTypeArguments(==)
+ handleNoArguments(==)
+ handleSend(a, ==)
+ beginBinaryExpression(==)
+ handleLiteralNull(null)
+ endBinaryExpression(==)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '||' instead of the written out word., Try replacing 'or' with '||'., {string: or, string2: ||}], or, or)
+ beginBinaryExpression(||)
+ handleIdentifier(b, expression)
+ handleNoTypeArguments(==)
+ handleNoArguments(==)
+ handleSend(b, ==)
+ beginBinaryExpression(==)
+ handleLiteralNull(null)
+ endBinaryExpression(==)
+ endBinaryExpression(||)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '||' instead of the written out word., Try replacing 'or' with '||'., {string: or, string2: ||}], or, or)
+ beginBinaryExpression(||)
+ handleIdentifier(c, expression)
+ handleNoTypeArguments(==)
+ handleNoArguments(==)
+ handleSend(c, ==)
+ beginBinaryExpression(==)
+ handleLiteralNull(null)
+ endBinaryExpression(==)
+ endBinaryExpression(||)
+ handleParenthesizedCondition(()
+ beginThenStatement({)
+ beginBlock({, BlockKind(statement))
+ beginReturnStatement(return)
+ handleLiteralNull(null)
+ endReturnStatement(true, return, ;)
+ endBlock(1, {, }, BlockKind(statement))
+ endThenStatement(})
+ endIfStatement(if, null)
+ endBlockFunctionBody(1, {, })
+ endTopLevelMethod(foo2, null, })
+ endTopLevelDeclaration(bar)
+ beginMetadataStar(bar)
+ endMetadataStar(0)
+ beginTopLevelMember(bar)
+ beginTopLevelMethod(}, null)
+ handleNoType(})
+ handleIdentifier(bar, topLevelFunctionDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(a)
+ handleType(int, null)
+ handleIdentifier(a, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, a, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(b)
+ handleType(int, null)
+ handleIdentifier(b, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, b, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ endFormalParameters(2, (, ), MemberKind.TopLevelMethod)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginIfStatement(if)
+ handleIdentifier(a, expression)
+ handleNoTypeArguments(==)
+ handleNoArguments(==)
+ handleSend(a, ==)
+ beginBinaryExpression(==)
+ handleLiteralNull(null)
+ endBinaryExpression(==)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&&' instead of the written out word., Try replacing 'and' with '&&'., {string: and, string2: &&}], and, and)
+ beginBinaryExpression(&&)
+ handleIdentifier(b, expression)
+ handleNoTypeArguments(==)
+ handleNoArguments(==)
+ handleSend(b, ==)
+ beginBinaryExpression(==)
+ handleLiteralNull(null)
+ endBinaryExpression(==)
+ endBinaryExpression(&&)
+ handleParenthesizedCondition(()
+ beginThenStatement({)
+ beginBlock({, BlockKind(statement))
+ beginReturnStatement(return)
+ handleLiteralNull(null)
+ endReturnStatement(true, return, ;)
+ endBlock(1, {, }, BlockKind(statement))
+ endThenStatement(})
+ endIfStatement(if, null)
+ endBlockFunctionBody(1, {, })
+ endTopLevelMethod(bar, null, })
+ endTopLevelDeclaration(bar2)
+ beginMetadataStar(bar2)
+ endMetadataStar(0)
+ beginTopLevelMember(bar2)
+ beginTopLevelMethod(}, null)
+ handleNoType(})
+ handleIdentifier(bar2, topLevelFunctionDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(a)
+ handleType(int, null)
+ handleIdentifier(a, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, a, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(b)
+ handleType(int, null)
+ handleIdentifier(b, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, b, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(c)
+ handleType(int, null)
+ handleIdentifier(c, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, c, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ endFormalParameters(3, (, ), MemberKind.TopLevelMethod)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginIfStatement(if)
+ handleIdentifier(a, expression)
+ handleNoTypeArguments(==)
+ handleNoArguments(==)
+ handleSend(a, ==)
+ beginBinaryExpression(==)
+ handleLiteralNull(null)
+ endBinaryExpression(==)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&&' instead of the written out word., Try replacing 'and' with '&&'., {string: and, string2: &&}], and, and)
+ beginBinaryExpression(&&)
+ handleIdentifier(b, expression)
+ handleNoTypeArguments(==)
+ handleNoArguments(==)
+ handleSend(b, ==)
+ beginBinaryExpression(==)
+ handleLiteralNull(null)
+ endBinaryExpression(==)
+ endBinaryExpression(&&)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&&' instead of the written out word., Try replacing 'and' with '&&'., {string: and, string2: &&}], and, and)
+ beginBinaryExpression(&&)
+ handleIdentifier(c, expression)
+ handleNoTypeArguments(==)
+ handleNoArguments(==)
+ handleSend(c, ==)
+ beginBinaryExpression(==)
+ handleLiteralNull(null)
+ endBinaryExpression(==)
+ endBinaryExpression(&&)
+ handleParenthesizedCondition(()
+ beginThenStatement({)
+ beginBlock({, BlockKind(statement))
+ beginReturnStatement(return)
+ handleLiteralNull(null)
+ endReturnStatement(true, return, ;)
+ endBlock(1, {, }, BlockKind(statement))
+ endThenStatement(})
+ endIfStatement(if, null)
+ endBlockFunctionBody(1, {, })
+ endTopLevelMethod(bar2, null, })
+ endTopLevelDeclaration()
+endCompilationUnit(4, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_1.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_1.crash_dart.intertwined.expect
new file mode 100644
index 0000000..778aa02
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_1.crash_dart.intertwined.expect
@@ -0,0 +1,712 @@
+parseUnit(foo)
+ skipErrorTokens(foo)
+ listener: beginCompilationUnit(foo)
+ syntheticPreviousToken(foo)
+ parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+ parseMetadataStar()
+ listener: beginMetadataStar(foo)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl()
+ listener: beginTopLevelMember(foo)
+ isReservedKeyword(()
+ parseTopLevelMethod(, null, , Instance of 'NoType', null, foo, false)
+ listener: beginTopLevelMethod(, null)
+ listener: handleNoType()
+ ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
+ listener: handleIdentifier(foo, topLevelFunctionDeclaration)
+ parseMethodTypeVar(foo)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(foo, foo, false, MemberKind.TopLevelMethod)
+ parseFormalParameters(foo, MemberKind.TopLevelMethod)
+ parseFormalParametersRest((, MemberKind.TopLevelMethod)
+ listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(a)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(a, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, a, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(b)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(b, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, b, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.TopLevelMethod)
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ parseFunctionBody(), false, false)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, if)
+ parseStatement({)
+ parseStatementX({)
+ parseIfStatement({)
+ listener: beginIfStatement(if)
+ ensureParenthesizedCondition(if)
+ parseExpressionInParenthesisRest(()
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true)
+ parseUnaryExpression((, true)
+ parsePrimary((, expression)
+ parseSendOrFunctionLiteral((, expression)
+ parseSend((, expression)
+ ensureIdentifier((, expression)
+ listener: handleIdentifier(a, expression)
+ listener: handleNoTypeArguments(==)
+ parseArgumentsOpt(a)
+ listener: handleNoArguments(==)
+ listener: handleSend(a, ==)
+ listener: beginBinaryExpression(==)
+ parsePrecedenceExpression(==, 8, true)
+ parseUnaryExpression(==, true)
+ parsePrimary(==, expression)
+ parseLiteralNull(==)
+ listener: handleLiteralNull(null)
+ rewriter()
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseSendOrFunctionLiteral(|, expression)
+ parseSend(|, expression)
+ ensureIdentifier(|, expression)
+ parseArgumentsOpt(b)
+ rewriter()
+ listener: endBinaryExpression(==)
+ rewriter()
+ parsePrecedenceExpression(||, 6, true)
+ parseUnaryExpression(||, true)
+ parsePrimary(||, expression)
+ parseSendOrFunctionLiteral(||, expression)
+ parseSend(||, expression)
+ ensureIdentifier(||, expression)
+ parseArgumentsOpt(b)
+ parsePrecedenceExpression(==, 8, true)
+ parseUnaryExpression(==, true)
+ parsePrimary(==, expression)
+ parseLiteralNull(==)
+ reportRecoverableError(or, Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '||' instead of the written out word., Try replacing 'or' with '||'., {string: or, string2: ||}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '||' instead of the written out word., Try replacing 'or' with '||'., {string: or, string2: ||}], or, or)
+ rewriter()
+ listener: beginBinaryExpression(||)
+ parsePrecedenceExpression(||, 6, true)
+ parseUnaryExpression(||, true)
+ parsePrimary(||, expression)
+ parseSendOrFunctionLiteral(||, expression)
+ parseSend(||, expression)
+ ensureIdentifier(||, expression)
+ listener: handleIdentifier(b, expression)
+ listener: handleNoTypeArguments(==)
+ parseArgumentsOpt(b)
+ listener: handleNoArguments(==)
+ listener: handleSend(b, ==)
+ listener: beginBinaryExpression(==)
+ parsePrecedenceExpression(==, 8, true)
+ parseUnaryExpression(==, true)
+ parsePrimary(==, expression)
+ parseLiteralNull(==)
+ listener: handleLiteralNull(null)
+ listener: endBinaryExpression(==)
+ listener: endBinaryExpression(||)
+ ensureCloseParen(null, ()
+ listener: handleParenthesizedCondition(()
+ listener: beginThenStatement({)
+ parseStatement())
+ parseStatementX())
+ parseBlock(), BlockKind(statement))
+ ensureBlock(), null, null)
+ listener: beginBlock({, BlockKind(statement))
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseLiteralNull(return)
+ listener: handleLiteralNull(null)
+ ensureSemicolon(null)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlock(1, {, }, BlockKind(statement))
+ listener: endThenStatement(})
+ listener: endIfStatement(if, null)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endTopLevelMethod(foo, null, })
+ listener: endTopLevelDeclaration(foo2)
+ parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+ parseMetadataStar(})
+ listener: beginMetadataStar(foo2)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl(})
+ listener: beginTopLevelMember(foo2)
+ isReservedKeyword(()
+ parseTopLevelMethod(}, null, }, Instance of 'NoType', null, foo2, false)
+ listener: beginTopLevelMethod(}, null)
+ listener: handleNoType(})
+ ensureIdentifierPotentiallyRecovered(}, topLevelFunctionDeclaration, false)
+ listener: handleIdentifier(foo2, topLevelFunctionDeclaration)
+ parseMethodTypeVar(foo2)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(foo2, foo2, false, MemberKind.TopLevelMethod)
+ parseFormalParameters(foo2, MemberKind.TopLevelMethod)
+ parseFormalParametersRest((, MemberKind.TopLevelMethod)
+ listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(a)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(a, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, a, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(b)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(b, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, b, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(c)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(c, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, c, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ listener: endFormalParameters(3, (, ), MemberKind.TopLevelMethod)
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ parseFunctionBody(), false, false)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, if)
+ parseStatement({)
+ parseStatementX({)
+ parseIfStatement({)
+ listener: beginIfStatement(if)
+ ensureParenthesizedCondition(if)
+ parseExpressionInParenthesisRest(()
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true)
+ parseUnaryExpression((, true)
+ parsePrimary((, expression)
+ parseSendOrFunctionLiteral((, expression)
+ parseSend((, expression)
+ ensureIdentifier((, expression)
+ listener: handleIdentifier(a, expression)
+ listener: handleNoTypeArguments(==)
+ parseArgumentsOpt(a)
+ listener: handleNoArguments(==)
+ listener: handleSend(a, ==)
+ listener: beginBinaryExpression(==)
+ parsePrecedenceExpression(==, 8, true)
+ parseUnaryExpression(==, true)
+ parsePrimary(==, expression)
+ parseLiteralNull(==)
+ listener: handleLiteralNull(null)
+ rewriter()
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseSendOrFunctionLiteral(|, expression)
+ parseSend(|, expression)
+ ensureIdentifier(|, expression)
+ parseArgumentsOpt(b)
+ rewriter()
+ listener: endBinaryExpression(==)
+ rewriter()
+ parsePrecedenceExpression(||, 6, true)
+ parseUnaryExpression(||, true)
+ parsePrimary(||, expression)
+ parseSendOrFunctionLiteral(||, expression)
+ parseSend(||, expression)
+ ensureIdentifier(||, expression)
+ parseArgumentsOpt(b)
+ parsePrecedenceExpression(==, 8, true)
+ parseUnaryExpression(==, true)
+ parsePrimary(==, expression)
+ parseLiteralNull(==)
+ reportRecoverableError(or, Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '||' instead of the written out word., Try replacing 'or' with '||'., {string: or, string2: ||}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '||' instead of the written out word., Try replacing 'or' with '||'., {string: or, string2: ||}], or, or)
+ rewriter()
+ listener: beginBinaryExpression(||)
+ parsePrecedenceExpression(||, 6, true)
+ parseUnaryExpression(||, true)
+ parsePrimary(||, expression)
+ parseSendOrFunctionLiteral(||, expression)
+ parseSend(||, expression)
+ ensureIdentifier(||, expression)
+ listener: handleIdentifier(b, expression)
+ listener: handleNoTypeArguments(==)
+ parseArgumentsOpt(b)
+ listener: handleNoArguments(==)
+ listener: handleSend(b, ==)
+ listener: beginBinaryExpression(==)
+ parsePrecedenceExpression(==, 8, true)
+ parseUnaryExpression(==, true)
+ parsePrimary(==, expression)
+ parseLiteralNull(==)
+ listener: handleLiteralNull(null)
+ rewriter()
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseSendOrFunctionLiteral(|, expression)
+ parseSend(|, expression)
+ ensureIdentifier(|, expression)
+ parseArgumentsOpt(c)
+ rewriter()
+ listener: endBinaryExpression(==)
+ rewriter()
+ listener: endBinaryExpression(||)
+ rewriter()
+ parsePrecedenceExpression(||, 6, true)
+ parseUnaryExpression(||, true)
+ parsePrimary(||, expression)
+ parseSendOrFunctionLiteral(||, expression)
+ parseSend(||, expression)
+ ensureIdentifier(||, expression)
+ parseArgumentsOpt(c)
+ parsePrecedenceExpression(==, 8, true)
+ parseUnaryExpression(==, true)
+ parsePrimary(==, expression)
+ parseLiteralNull(==)
+ reportRecoverableError(or, Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '||' instead of the written out word., Try replacing 'or' with '||'., {string: or, string2: ||}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '||' instead of the written out word., Try replacing 'or' with '||'., {string: or, string2: ||}], or, or)
+ rewriter()
+ listener: beginBinaryExpression(||)
+ parsePrecedenceExpression(||, 6, true)
+ parseUnaryExpression(||, true)
+ parsePrimary(||, expression)
+ parseSendOrFunctionLiteral(||, expression)
+ parseSend(||, expression)
+ ensureIdentifier(||, expression)
+ listener: handleIdentifier(c, expression)
+ listener: handleNoTypeArguments(==)
+ parseArgumentsOpt(c)
+ listener: handleNoArguments(==)
+ listener: handleSend(c, ==)
+ listener: beginBinaryExpression(==)
+ parsePrecedenceExpression(==, 8, true)
+ parseUnaryExpression(==, true)
+ parsePrimary(==, expression)
+ parseLiteralNull(==)
+ listener: handleLiteralNull(null)
+ listener: endBinaryExpression(==)
+ listener: endBinaryExpression(||)
+ ensureCloseParen(null, ()
+ listener: handleParenthesizedCondition(()
+ listener: beginThenStatement({)
+ parseStatement())
+ parseStatementX())
+ parseBlock(), BlockKind(statement))
+ ensureBlock(), null, null)
+ listener: beginBlock({, BlockKind(statement))
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseLiteralNull(return)
+ listener: handleLiteralNull(null)
+ ensureSemicolon(null)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlock(1, {, }, BlockKind(statement))
+ listener: endThenStatement(})
+ listener: endIfStatement(if, null)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endTopLevelMethod(foo2, null, })
+ listener: endTopLevelDeclaration(bar)
+ parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+ parseMetadataStar(})
+ listener: beginMetadataStar(bar)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl(})
+ listener: beginTopLevelMember(bar)
+ isReservedKeyword(()
+ parseTopLevelMethod(}, null, }, Instance of 'NoType', null, bar, false)
+ listener: beginTopLevelMethod(}, null)
+ listener: handleNoType(})
+ ensureIdentifierPotentiallyRecovered(}, topLevelFunctionDeclaration, false)
+ listener: handleIdentifier(bar, topLevelFunctionDeclaration)
+ parseMethodTypeVar(bar)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(bar, bar, false, MemberKind.TopLevelMethod)
+ parseFormalParameters(bar, MemberKind.TopLevelMethod)
+ parseFormalParametersRest((, MemberKind.TopLevelMethod)
+ listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(a)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(a, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, a, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(b)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(b, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, b, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.TopLevelMethod)
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ parseFunctionBody(), false, false)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, if)
+ parseStatement({)
+ parseStatementX({)
+ parseIfStatement({)
+ listener: beginIfStatement(if)
+ ensureParenthesizedCondition(if)
+ parseExpressionInParenthesisRest(()
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true)
+ parseUnaryExpression((, true)
+ parsePrimary((, expression)
+ parseSendOrFunctionLiteral((, expression)
+ parseSend((, expression)
+ ensureIdentifier((, expression)
+ listener: handleIdentifier(a, expression)
+ listener: handleNoTypeArguments(==)
+ parseArgumentsOpt(a)
+ listener: handleNoArguments(==)
+ listener: handleSend(a, ==)
+ listener: beginBinaryExpression(==)
+ parsePrecedenceExpression(==, 8, true)
+ parseUnaryExpression(==, true)
+ parsePrimary(==, expression)
+ parseLiteralNull(==)
+ listener: handleLiteralNull(null)
+ rewriter()
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseSendOrFunctionLiteral(&, expression)
+ parseSend(&, expression)
+ ensureIdentifier(&, expression)
+ parseArgumentsOpt(b)
+ rewriter()
+ listener: endBinaryExpression(==)
+ rewriter()
+ parsePrecedenceExpression(&&, 7, true)
+ parseUnaryExpression(&&, true)
+ parsePrimary(&&, expression)
+ parseSendOrFunctionLiteral(&&, expression)
+ parseSend(&&, expression)
+ ensureIdentifier(&&, expression)
+ parseArgumentsOpt(b)
+ parsePrecedenceExpression(==, 8, true)
+ parseUnaryExpression(==, true)
+ parsePrimary(==, expression)
+ parseLiteralNull(==)
+ reportRecoverableError(and, Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&&' instead of the written out word., Try replacing 'and' with '&&'., {string: and, string2: &&}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&&' instead of the written out word., Try replacing 'and' with '&&'., {string: and, string2: &&}], and, and)
+ rewriter()
+ listener: beginBinaryExpression(&&)
+ parsePrecedenceExpression(&&, 7, true)
+ parseUnaryExpression(&&, true)
+ parsePrimary(&&, expression)
+ parseSendOrFunctionLiteral(&&, expression)
+ parseSend(&&, expression)
+ ensureIdentifier(&&, expression)
+ listener: handleIdentifier(b, expression)
+ listener: handleNoTypeArguments(==)
+ parseArgumentsOpt(b)
+ listener: handleNoArguments(==)
+ listener: handleSend(b, ==)
+ listener: beginBinaryExpression(==)
+ parsePrecedenceExpression(==, 8, true)
+ parseUnaryExpression(==, true)
+ parsePrimary(==, expression)
+ parseLiteralNull(==)
+ listener: handleLiteralNull(null)
+ listener: endBinaryExpression(==)
+ listener: endBinaryExpression(&&)
+ ensureCloseParen(null, ()
+ listener: handleParenthesizedCondition(()
+ listener: beginThenStatement({)
+ parseStatement())
+ parseStatementX())
+ parseBlock(), BlockKind(statement))
+ ensureBlock(), null, null)
+ listener: beginBlock({, BlockKind(statement))
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseLiteralNull(return)
+ listener: handleLiteralNull(null)
+ ensureSemicolon(null)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlock(1, {, }, BlockKind(statement))
+ listener: endThenStatement(})
+ listener: endIfStatement(if, null)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endTopLevelMethod(bar, null, })
+ listener: endTopLevelDeclaration(bar2)
+ parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+ parseMetadataStar(})
+ listener: beginMetadataStar(bar2)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl(})
+ listener: beginTopLevelMember(bar2)
+ isReservedKeyword(()
+ parseTopLevelMethod(}, null, }, Instance of 'NoType', null, bar2, false)
+ listener: beginTopLevelMethod(}, null)
+ listener: handleNoType(})
+ ensureIdentifierPotentiallyRecovered(}, topLevelFunctionDeclaration, false)
+ listener: handleIdentifier(bar2, topLevelFunctionDeclaration)
+ parseMethodTypeVar(bar2)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(bar2, bar2, false, MemberKind.TopLevelMethod)
+ parseFormalParameters(bar2, MemberKind.TopLevelMethod)
+ parseFormalParametersRest((, MemberKind.TopLevelMethod)
+ listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(a)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(a, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, a, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(b)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(b, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, b, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(c)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(c, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, c, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ listener: endFormalParameters(3, (, ), MemberKind.TopLevelMethod)
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ parseFunctionBody(), false, false)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, if)
+ parseStatement({)
+ parseStatementX({)
+ parseIfStatement({)
+ listener: beginIfStatement(if)
+ ensureParenthesizedCondition(if)
+ parseExpressionInParenthesisRest(()
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true)
+ parseUnaryExpression((, true)
+ parsePrimary((, expression)
+ parseSendOrFunctionLiteral((, expression)
+ parseSend((, expression)
+ ensureIdentifier((, expression)
+ listener: handleIdentifier(a, expression)
+ listener: handleNoTypeArguments(==)
+ parseArgumentsOpt(a)
+ listener: handleNoArguments(==)
+ listener: handleSend(a, ==)
+ listener: beginBinaryExpression(==)
+ parsePrecedenceExpression(==, 8, true)
+ parseUnaryExpression(==, true)
+ parsePrimary(==, expression)
+ parseLiteralNull(==)
+ listener: handleLiteralNull(null)
+ rewriter()
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseSendOrFunctionLiteral(&, expression)
+ parseSend(&, expression)
+ ensureIdentifier(&, expression)
+ parseArgumentsOpt(b)
+ rewriter()
+ listener: endBinaryExpression(==)
+ rewriter()
+ parsePrecedenceExpression(&&, 7, true)
+ parseUnaryExpression(&&, true)
+ parsePrimary(&&, expression)
+ parseSendOrFunctionLiteral(&&, expression)
+ parseSend(&&, expression)
+ ensureIdentifier(&&, expression)
+ parseArgumentsOpt(b)
+ parsePrecedenceExpression(==, 8, true)
+ parseUnaryExpression(==, true)
+ parsePrimary(==, expression)
+ parseLiteralNull(==)
+ reportRecoverableError(and, Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&&' instead of the written out word., Try replacing 'and' with '&&'., {string: and, string2: &&}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&&' instead of the written out word., Try replacing 'and' with '&&'., {string: and, string2: &&}], and, and)
+ rewriter()
+ listener: beginBinaryExpression(&&)
+ parsePrecedenceExpression(&&, 7, true)
+ parseUnaryExpression(&&, true)
+ parsePrimary(&&, expression)
+ parseSendOrFunctionLiteral(&&, expression)
+ parseSend(&&, expression)
+ ensureIdentifier(&&, expression)
+ listener: handleIdentifier(b, expression)
+ listener: handleNoTypeArguments(==)
+ parseArgumentsOpt(b)
+ listener: handleNoArguments(==)
+ listener: handleSend(b, ==)
+ listener: beginBinaryExpression(==)
+ parsePrecedenceExpression(==, 8, true)
+ parseUnaryExpression(==, true)
+ parsePrimary(==, expression)
+ parseLiteralNull(==)
+ listener: handleLiteralNull(null)
+ rewriter()
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseSendOrFunctionLiteral(&, expression)
+ parseSend(&, expression)
+ ensureIdentifier(&, expression)
+ parseArgumentsOpt(c)
+ rewriter()
+ listener: endBinaryExpression(==)
+ rewriter()
+ listener: endBinaryExpression(&&)
+ rewriter()
+ parsePrecedenceExpression(&&, 7, true)
+ parseUnaryExpression(&&, true)
+ parsePrimary(&&, expression)
+ parseSendOrFunctionLiteral(&&, expression)
+ parseSend(&&, expression)
+ ensureIdentifier(&&, expression)
+ parseArgumentsOpt(c)
+ parsePrecedenceExpression(==, 8, true)
+ parseUnaryExpression(==, true)
+ parsePrimary(==, expression)
+ parseLiteralNull(==)
+ reportRecoverableError(and, Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&&' instead of the written out word., Try replacing 'and' with '&&'., {string: and, string2: &&}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&&' instead of the written out word., Try replacing 'and' with '&&'., {string: and, string2: &&}], and, and)
+ rewriter()
+ listener: beginBinaryExpression(&&)
+ parsePrecedenceExpression(&&, 7, true)
+ parseUnaryExpression(&&, true)
+ parsePrimary(&&, expression)
+ parseSendOrFunctionLiteral(&&, expression)
+ parseSend(&&, expression)
+ ensureIdentifier(&&, expression)
+ listener: handleIdentifier(c, expression)
+ listener: handleNoTypeArguments(==)
+ parseArgumentsOpt(c)
+ listener: handleNoArguments(==)
+ listener: handleSend(c, ==)
+ listener: beginBinaryExpression(==)
+ parsePrecedenceExpression(==, 8, true)
+ parseUnaryExpression(==, true)
+ parsePrimary(==, expression)
+ parseLiteralNull(==)
+ listener: handleLiteralNull(null)
+ listener: endBinaryExpression(==)
+ listener: endBinaryExpression(&&)
+ ensureCloseParen(null, ()
+ listener: handleParenthesizedCondition(()
+ listener: beginThenStatement({)
+ parseStatement())
+ parseStatementX())
+ parseBlock(), BlockKind(statement))
+ ensureBlock(), null, null)
+ listener: beginBlock({, BlockKind(statement))
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseLiteralNull(return)
+ listener: handleLiteralNull(null)
+ ensureSemicolon(null)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlock(1, {, }, BlockKind(statement))
+ listener: endThenStatement(})
+ listener: endIfStatement(if, null)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endTopLevelMethod(bar2, null, })
+ listener: endTopLevelDeclaration()
+ reportAllErrorTokens(foo)
+ listener: endCompilationUnit(4, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_1.crash_dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_1.crash_dart.parser.expect
new file mode 100644
index 0000000..735b62c
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_1.crash_dart.parser.expect
@@ -0,0 +1,51 @@
+NOTICE: Stream was rewritten by parser!
+
+foo(int a, int b){
+if (a == null || b == null){
+return null;
+}
+}
+
+foo2(int a, int b, int c){
+if (a == null || b == null || c == null){
+return null;
+}
+}
+
+bar(int a, int b){
+if (a == null && b == null){
+return null;
+}
+}
+
+bar2(int a, int b, int c){
+if (a == null && b == null && c == null){
+return null;
+}
+}
+
+
+foo[StringToken]([BeginToken]int[StringToken] a[StringToken],[SimpleToken] int[StringToken] b[StringToken])[SimpleToken]{[BeginToken]
+if[KeywordToken] ([BeginToken]a[StringToken] ==[SimpleToken] null[KeywordToken] ||[ReplacementToken] b[StringToken] ==[SimpleToken] null[KeywordToken])[SimpleToken]{[BeginToken]
+return[KeywordToken] null[KeywordToken];[SimpleToken]
+}[SimpleToken]
+}[SimpleToken]
+
+foo2[StringToken]([BeginToken]int[StringToken] a[StringToken],[SimpleToken] int[StringToken] b[StringToken],[SimpleToken] int[StringToken] c[StringToken])[SimpleToken]{[BeginToken]
+if[KeywordToken] ([BeginToken]a[StringToken] ==[SimpleToken] null[KeywordToken] ||[ReplacementToken] b[StringToken] ==[SimpleToken] null[KeywordToken] ||[ReplacementToken] c[StringToken] ==[SimpleToken] null[KeywordToken])[SimpleToken]{[BeginToken]
+return[KeywordToken] null[KeywordToken];[SimpleToken]
+}[SimpleToken]
+}[SimpleToken]
+
+bar[StringToken]([BeginToken]int[StringToken] a[StringToken],[SimpleToken] int[StringToken] b[StringToken])[SimpleToken]{[BeginToken]
+if[KeywordToken] ([BeginToken]a[StringToken] ==[SimpleToken] null[KeywordToken] &&[ReplacementToken] b[StringToken] ==[SimpleToken] null[KeywordToken])[SimpleToken]{[BeginToken]
+return[KeywordToken] null[KeywordToken];[SimpleToken]
+}[SimpleToken]
+}[SimpleToken]
+
+bar2[StringToken]([BeginToken]int[StringToken] a[StringToken],[SimpleToken] int[StringToken] b[StringToken],[SimpleToken] int[StringToken] c[StringToken])[SimpleToken]{[BeginToken]
+if[KeywordToken] ([BeginToken]a[StringToken] ==[SimpleToken] null[KeywordToken] &&[ReplacementToken] b[StringToken] ==[SimpleToken] null[KeywordToken] &&[ReplacementToken] c[StringToken] ==[SimpleToken] null[KeywordToken])[SimpleToken]{[BeginToken]
+return[KeywordToken] null[KeywordToken];[SimpleToken]
+}[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_1.crash_dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_1.crash_dart.scanner.expect
new file mode 100644
index 0000000..ac1419c
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_1.crash_dart.scanner.expect
@@ -0,0 +1,49 @@
+foo(int a, int b){
+if (a == null or b == null){
+return null;
+}
+}
+
+foo2(int a, int b, int c){
+if (a == null or b == null or c == null){
+return null;
+}
+}
+
+bar(int a, int b){
+if (a == null and b == null){
+return null;
+}
+}
+
+bar2(int a, int b, int c){
+if (a == null and b == null and c == null){
+return null;
+}
+}
+
+
+foo[StringToken]([BeginToken]int[StringToken] a[StringToken],[SimpleToken] int[StringToken] b[StringToken])[SimpleToken]{[BeginToken]
+if[KeywordToken] ([BeginToken]a[StringToken] ==[SimpleToken] null[KeywordToken] or[StringToken] b[StringToken] ==[SimpleToken] null[KeywordToken])[SimpleToken]{[BeginToken]
+return[KeywordToken] null[KeywordToken];[SimpleToken]
+}[SimpleToken]
+}[SimpleToken]
+
+foo2[StringToken]([BeginToken]int[StringToken] a[StringToken],[SimpleToken] int[StringToken] b[StringToken],[SimpleToken] int[StringToken] c[StringToken])[SimpleToken]{[BeginToken]
+if[KeywordToken] ([BeginToken]a[StringToken] ==[SimpleToken] null[KeywordToken] or[StringToken] b[StringToken] ==[SimpleToken] null[KeywordToken] or[StringToken] c[StringToken] ==[SimpleToken] null[KeywordToken])[SimpleToken]{[BeginToken]
+return[KeywordToken] null[KeywordToken];[SimpleToken]
+}[SimpleToken]
+}[SimpleToken]
+
+bar[StringToken]([BeginToken]int[StringToken] a[StringToken],[SimpleToken] int[StringToken] b[StringToken])[SimpleToken]{[BeginToken]
+if[KeywordToken] ([BeginToken]a[StringToken] ==[SimpleToken] null[KeywordToken] and[StringToken] b[StringToken] ==[SimpleToken] null[KeywordToken])[SimpleToken]{[BeginToken]
+return[KeywordToken] null[KeywordToken];[SimpleToken]
+}[SimpleToken]
+}[SimpleToken]
+
+bar2[StringToken]([BeginToken]int[StringToken] a[StringToken],[SimpleToken] int[StringToken] b[StringToken],[SimpleToken] int[StringToken] c[StringToken])[SimpleToken]{[BeginToken]
+if[KeywordToken] ([BeginToken]a[StringToken] ==[SimpleToken] null[KeywordToken] and[StringToken] b[StringToken] ==[SimpleToken] null[KeywordToken] and[StringToken] c[StringToken] ==[SimpleToken] null[KeywordToken])[SimpleToken]{[BeginToken]
+return[KeywordToken] null[KeywordToken];[SimpleToken]
+}[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_2.crash_dart b/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_2.crash_dart
new file mode 100644
index 0000000..7f0c579
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_2.crash_dart
@@ -0,0 +1,23 @@
+foo(int a, int b){
+ if (a == null || b == null){
+ return null;
+ }
+}
+
+foo2(int a, int b, int c){
+ if (a == null || b == null || c == null){
+ return null;
+ }
+}
+
+bar(int a, int b){
+ if (a == null && b == null){
+ return null;
+ }
+}
+
+bar2(int a, int b, int c){
+ if (a == null && b == null && c == null){
+ return null;
+ }
+}
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_2.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_2.crash_dart.expect
new file mode 100644
index 0000000..cd1beba
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_2.crash_dart.expect
@@ -0,0 +1,270 @@
+beginCompilationUnit(foo)
+ beginMetadataStar(foo)
+ endMetadataStar(0)
+ beginTopLevelMember(foo)
+ beginTopLevelMethod(, null)
+ handleNoType()
+ handleIdentifier(foo, topLevelFunctionDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(a)
+ handleType(int, null)
+ handleIdentifier(a, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, a, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(b)
+ handleType(int, null)
+ handleIdentifier(b, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, b, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ endFormalParameters(2, (, ), MemberKind.TopLevelMethod)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginIfStatement(if)
+ handleIdentifier(a, expression)
+ handleNoTypeArguments(==)
+ handleNoArguments(==)
+ handleSend(a, ==)
+ beginBinaryExpression(==)
+ handleLiteralNull(null)
+ endBinaryExpression(==)
+ beginBinaryExpression(||)
+ handleIdentifier(b, expression)
+ handleNoTypeArguments(==)
+ handleNoArguments(==)
+ handleSend(b, ==)
+ beginBinaryExpression(==)
+ handleLiteralNull(null)
+ endBinaryExpression(==)
+ endBinaryExpression(||)
+ handleParenthesizedCondition(()
+ beginThenStatement({)
+ beginBlock({, BlockKind(statement))
+ beginReturnStatement(return)
+ handleLiteralNull(null)
+ endReturnStatement(true, return, ;)
+ endBlock(1, {, }, BlockKind(statement))
+ endThenStatement(})
+ endIfStatement(if, null)
+ endBlockFunctionBody(1, {, })
+ endTopLevelMethod(foo, null, })
+ endTopLevelDeclaration(foo2)
+ beginMetadataStar(foo2)
+ endMetadataStar(0)
+ beginTopLevelMember(foo2)
+ beginTopLevelMethod(}, null)
+ handleNoType(})
+ handleIdentifier(foo2, topLevelFunctionDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(a)
+ handleType(int, null)
+ handleIdentifier(a, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, a, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(b)
+ handleType(int, null)
+ handleIdentifier(b, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, b, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(c)
+ handleType(int, null)
+ handleIdentifier(c, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, c, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ endFormalParameters(3, (, ), MemberKind.TopLevelMethod)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginIfStatement(if)
+ handleIdentifier(a, expression)
+ handleNoTypeArguments(==)
+ handleNoArguments(==)
+ handleSend(a, ==)
+ beginBinaryExpression(==)
+ handleLiteralNull(null)
+ endBinaryExpression(==)
+ beginBinaryExpression(||)
+ handleIdentifier(b, expression)
+ handleNoTypeArguments(==)
+ handleNoArguments(==)
+ handleSend(b, ==)
+ beginBinaryExpression(==)
+ handleLiteralNull(null)
+ endBinaryExpression(==)
+ endBinaryExpression(||)
+ beginBinaryExpression(||)
+ handleIdentifier(c, expression)
+ handleNoTypeArguments(==)
+ handleNoArguments(==)
+ handleSend(c, ==)
+ beginBinaryExpression(==)
+ handleLiteralNull(null)
+ endBinaryExpression(==)
+ endBinaryExpression(||)
+ handleParenthesizedCondition(()
+ beginThenStatement({)
+ beginBlock({, BlockKind(statement))
+ beginReturnStatement(return)
+ handleLiteralNull(null)
+ endReturnStatement(true, return, ;)
+ endBlock(1, {, }, BlockKind(statement))
+ endThenStatement(})
+ endIfStatement(if, null)
+ endBlockFunctionBody(1, {, })
+ endTopLevelMethod(foo2, null, })
+ endTopLevelDeclaration(bar)
+ beginMetadataStar(bar)
+ endMetadataStar(0)
+ beginTopLevelMember(bar)
+ beginTopLevelMethod(}, null)
+ handleNoType(})
+ handleIdentifier(bar, topLevelFunctionDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(a)
+ handleType(int, null)
+ handleIdentifier(a, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, a, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(b)
+ handleType(int, null)
+ handleIdentifier(b, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, b, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ endFormalParameters(2, (, ), MemberKind.TopLevelMethod)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginIfStatement(if)
+ handleIdentifier(a, expression)
+ handleNoTypeArguments(==)
+ handleNoArguments(==)
+ handleSend(a, ==)
+ beginBinaryExpression(==)
+ handleLiteralNull(null)
+ endBinaryExpression(==)
+ beginBinaryExpression(&&)
+ handleIdentifier(b, expression)
+ handleNoTypeArguments(==)
+ handleNoArguments(==)
+ handleSend(b, ==)
+ beginBinaryExpression(==)
+ handleLiteralNull(null)
+ endBinaryExpression(==)
+ endBinaryExpression(&&)
+ handleParenthesizedCondition(()
+ beginThenStatement({)
+ beginBlock({, BlockKind(statement))
+ beginReturnStatement(return)
+ handleLiteralNull(null)
+ endReturnStatement(true, return, ;)
+ endBlock(1, {, }, BlockKind(statement))
+ endThenStatement(})
+ endIfStatement(if, null)
+ endBlockFunctionBody(1, {, })
+ endTopLevelMethod(bar, null, })
+ endTopLevelDeclaration(bar2)
+ beginMetadataStar(bar2)
+ endMetadataStar(0)
+ beginTopLevelMember(bar2)
+ beginTopLevelMethod(}, null)
+ handleNoType(})
+ handleIdentifier(bar2, topLevelFunctionDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(a)
+ handleType(int, null)
+ handleIdentifier(a, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, a, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(b)
+ handleType(int, null)
+ handleIdentifier(b, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, b, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(c)
+ handleType(int, null)
+ handleIdentifier(c, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, c, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ endFormalParameters(3, (, ), MemberKind.TopLevelMethod)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginIfStatement(if)
+ handleIdentifier(a, expression)
+ handleNoTypeArguments(==)
+ handleNoArguments(==)
+ handleSend(a, ==)
+ beginBinaryExpression(==)
+ handleLiteralNull(null)
+ endBinaryExpression(==)
+ beginBinaryExpression(&&)
+ handleIdentifier(b, expression)
+ handleNoTypeArguments(==)
+ handleNoArguments(==)
+ handleSend(b, ==)
+ beginBinaryExpression(==)
+ handleLiteralNull(null)
+ endBinaryExpression(==)
+ endBinaryExpression(&&)
+ beginBinaryExpression(&&)
+ handleIdentifier(c, expression)
+ handleNoTypeArguments(==)
+ handleNoArguments(==)
+ handleSend(c, ==)
+ beginBinaryExpression(==)
+ handleLiteralNull(null)
+ endBinaryExpression(==)
+ endBinaryExpression(&&)
+ handleParenthesizedCondition(()
+ beginThenStatement({)
+ beginBlock({, BlockKind(statement))
+ beginReturnStatement(return)
+ handleLiteralNull(null)
+ endReturnStatement(true, return, ;)
+ endBlock(1, {, }, BlockKind(statement))
+ endThenStatement(})
+ endIfStatement(if, null)
+ endBlockFunctionBody(1, {, })
+ endTopLevelMethod(bar2, null, })
+ endTopLevelDeclaration()
+endCompilationUnit(4, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_2.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_2.crash_dart.intertwined.expect
new file mode 100644
index 0000000..9a82acc
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_2.crash_dart.intertwined.expect
@@ -0,0 +1,566 @@
+parseUnit(foo)
+ skipErrorTokens(foo)
+ listener: beginCompilationUnit(foo)
+ syntheticPreviousToken(foo)
+ parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+ parseMetadataStar()
+ listener: beginMetadataStar(foo)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl()
+ listener: beginTopLevelMember(foo)
+ isReservedKeyword(()
+ parseTopLevelMethod(, null, , Instance of 'NoType', null, foo, false)
+ listener: beginTopLevelMethod(, null)
+ listener: handleNoType()
+ ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
+ listener: handleIdentifier(foo, topLevelFunctionDeclaration)
+ parseMethodTypeVar(foo)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(foo, foo, false, MemberKind.TopLevelMethod)
+ parseFormalParameters(foo, MemberKind.TopLevelMethod)
+ parseFormalParametersRest((, MemberKind.TopLevelMethod)
+ listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(a)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(a, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, a, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(b)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(b, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, b, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.TopLevelMethod)
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ parseFunctionBody(), false, false)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, if)
+ parseStatement({)
+ parseStatementX({)
+ parseIfStatement({)
+ listener: beginIfStatement(if)
+ ensureParenthesizedCondition(if)
+ parseExpressionInParenthesisRest(()
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true)
+ parseUnaryExpression((, true)
+ parsePrimary((, expression)
+ parseSendOrFunctionLiteral((, expression)
+ parseSend((, expression)
+ ensureIdentifier((, expression)
+ listener: handleIdentifier(a, expression)
+ listener: handleNoTypeArguments(==)
+ parseArgumentsOpt(a)
+ listener: handleNoArguments(==)
+ listener: handleSend(a, ==)
+ listener: beginBinaryExpression(==)
+ parsePrecedenceExpression(==, 8, true)
+ parseUnaryExpression(==, true)
+ parsePrimary(==, expression)
+ parseLiteralNull(==)
+ listener: handleLiteralNull(null)
+ listener: endBinaryExpression(==)
+ listener: beginBinaryExpression(||)
+ parsePrecedenceExpression(||, 6, true)
+ parseUnaryExpression(||, true)
+ parsePrimary(||, expression)
+ parseSendOrFunctionLiteral(||, expression)
+ parseSend(||, expression)
+ ensureIdentifier(||, expression)
+ listener: handleIdentifier(b, expression)
+ listener: handleNoTypeArguments(==)
+ parseArgumentsOpt(b)
+ listener: handleNoArguments(==)
+ listener: handleSend(b, ==)
+ listener: beginBinaryExpression(==)
+ parsePrecedenceExpression(==, 8, true)
+ parseUnaryExpression(==, true)
+ parsePrimary(==, expression)
+ parseLiteralNull(==)
+ listener: handleLiteralNull(null)
+ listener: endBinaryExpression(==)
+ listener: endBinaryExpression(||)
+ ensureCloseParen(null, ()
+ listener: handleParenthesizedCondition(()
+ listener: beginThenStatement({)
+ parseStatement())
+ parseStatementX())
+ parseBlock(), BlockKind(statement))
+ ensureBlock(), null, null)
+ listener: beginBlock({, BlockKind(statement))
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseLiteralNull(return)
+ listener: handleLiteralNull(null)
+ ensureSemicolon(null)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlock(1, {, }, BlockKind(statement))
+ listener: endThenStatement(})
+ listener: endIfStatement(if, null)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endTopLevelMethod(foo, null, })
+ listener: endTopLevelDeclaration(foo2)
+ parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+ parseMetadataStar(})
+ listener: beginMetadataStar(foo2)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl(})
+ listener: beginTopLevelMember(foo2)
+ isReservedKeyword(()
+ parseTopLevelMethod(}, null, }, Instance of 'NoType', null, foo2, false)
+ listener: beginTopLevelMethod(}, null)
+ listener: handleNoType(})
+ ensureIdentifierPotentiallyRecovered(}, topLevelFunctionDeclaration, false)
+ listener: handleIdentifier(foo2, topLevelFunctionDeclaration)
+ parseMethodTypeVar(foo2)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(foo2, foo2, false, MemberKind.TopLevelMethod)
+ parseFormalParameters(foo2, MemberKind.TopLevelMethod)
+ parseFormalParametersRest((, MemberKind.TopLevelMethod)
+ listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(a)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(a, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, a, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(b)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(b, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, b, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(c)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(c, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, c, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ listener: endFormalParameters(3, (, ), MemberKind.TopLevelMethod)
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ parseFunctionBody(), false, false)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, if)
+ parseStatement({)
+ parseStatementX({)
+ parseIfStatement({)
+ listener: beginIfStatement(if)
+ ensureParenthesizedCondition(if)
+ parseExpressionInParenthesisRest(()
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true)
+ parseUnaryExpression((, true)
+ parsePrimary((, expression)
+ parseSendOrFunctionLiteral((, expression)
+ parseSend((, expression)
+ ensureIdentifier((, expression)
+ listener: handleIdentifier(a, expression)
+ listener: handleNoTypeArguments(==)
+ parseArgumentsOpt(a)
+ listener: handleNoArguments(==)
+ listener: handleSend(a, ==)
+ listener: beginBinaryExpression(==)
+ parsePrecedenceExpression(==, 8, true)
+ parseUnaryExpression(==, true)
+ parsePrimary(==, expression)
+ parseLiteralNull(==)
+ listener: handleLiteralNull(null)
+ listener: endBinaryExpression(==)
+ listener: beginBinaryExpression(||)
+ parsePrecedenceExpression(||, 6, true)
+ parseUnaryExpression(||, true)
+ parsePrimary(||, expression)
+ parseSendOrFunctionLiteral(||, expression)
+ parseSend(||, expression)
+ ensureIdentifier(||, expression)
+ listener: handleIdentifier(b, expression)
+ listener: handleNoTypeArguments(==)
+ parseArgumentsOpt(b)
+ listener: handleNoArguments(==)
+ listener: handleSend(b, ==)
+ listener: beginBinaryExpression(==)
+ parsePrecedenceExpression(==, 8, true)
+ parseUnaryExpression(==, true)
+ parsePrimary(==, expression)
+ parseLiteralNull(==)
+ listener: handleLiteralNull(null)
+ listener: endBinaryExpression(==)
+ listener: endBinaryExpression(||)
+ listener: beginBinaryExpression(||)
+ parsePrecedenceExpression(||, 6, true)
+ parseUnaryExpression(||, true)
+ parsePrimary(||, expression)
+ parseSendOrFunctionLiteral(||, expression)
+ parseSend(||, expression)
+ ensureIdentifier(||, expression)
+ listener: handleIdentifier(c, expression)
+ listener: handleNoTypeArguments(==)
+ parseArgumentsOpt(c)
+ listener: handleNoArguments(==)
+ listener: handleSend(c, ==)
+ listener: beginBinaryExpression(==)
+ parsePrecedenceExpression(==, 8, true)
+ parseUnaryExpression(==, true)
+ parsePrimary(==, expression)
+ parseLiteralNull(==)
+ listener: handleLiteralNull(null)
+ listener: endBinaryExpression(==)
+ listener: endBinaryExpression(||)
+ ensureCloseParen(null, ()
+ listener: handleParenthesizedCondition(()
+ listener: beginThenStatement({)
+ parseStatement())
+ parseStatementX())
+ parseBlock(), BlockKind(statement))
+ ensureBlock(), null, null)
+ listener: beginBlock({, BlockKind(statement))
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseLiteralNull(return)
+ listener: handleLiteralNull(null)
+ ensureSemicolon(null)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlock(1, {, }, BlockKind(statement))
+ listener: endThenStatement(})
+ listener: endIfStatement(if, null)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endTopLevelMethod(foo2, null, })
+ listener: endTopLevelDeclaration(bar)
+ parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+ parseMetadataStar(})
+ listener: beginMetadataStar(bar)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl(})
+ listener: beginTopLevelMember(bar)
+ isReservedKeyword(()
+ parseTopLevelMethod(}, null, }, Instance of 'NoType', null, bar, false)
+ listener: beginTopLevelMethod(}, null)
+ listener: handleNoType(})
+ ensureIdentifierPotentiallyRecovered(}, topLevelFunctionDeclaration, false)
+ listener: handleIdentifier(bar, topLevelFunctionDeclaration)
+ parseMethodTypeVar(bar)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(bar, bar, false, MemberKind.TopLevelMethod)
+ parseFormalParameters(bar, MemberKind.TopLevelMethod)
+ parseFormalParametersRest((, MemberKind.TopLevelMethod)
+ listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(a)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(a, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, a, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(b)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(b, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, b, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.TopLevelMethod)
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ parseFunctionBody(), false, false)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, if)
+ parseStatement({)
+ parseStatementX({)
+ parseIfStatement({)
+ listener: beginIfStatement(if)
+ ensureParenthesizedCondition(if)
+ parseExpressionInParenthesisRest(()
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true)
+ parseUnaryExpression((, true)
+ parsePrimary((, expression)
+ parseSendOrFunctionLiteral((, expression)
+ parseSend((, expression)
+ ensureIdentifier((, expression)
+ listener: handleIdentifier(a, expression)
+ listener: handleNoTypeArguments(==)
+ parseArgumentsOpt(a)
+ listener: handleNoArguments(==)
+ listener: handleSend(a, ==)
+ listener: beginBinaryExpression(==)
+ parsePrecedenceExpression(==, 8, true)
+ parseUnaryExpression(==, true)
+ parsePrimary(==, expression)
+ parseLiteralNull(==)
+ listener: handleLiteralNull(null)
+ listener: endBinaryExpression(==)
+ listener: beginBinaryExpression(&&)
+ parsePrecedenceExpression(&&, 7, true)
+ parseUnaryExpression(&&, true)
+ parsePrimary(&&, expression)
+ parseSendOrFunctionLiteral(&&, expression)
+ parseSend(&&, expression)
+ ensureIdentifier(&&, expression)
+ listener: handleIdentifier(b, expression)
+ listener: handleNoTypeArguments(==)
+ parseArgumentsOpt(b)
+ listener: handleNoArguments(==)
+ listener: handleSend(b, ==)
+ listener: beginBinaryExpression(==)
+ parsePrecedenceExpression(==, 8, true)
+ parseUnaryExpression(==, true)
+ parsePrimary(==, expression)
+ parseLiteralNull(==)
+ listener: handleLiteralNull(null)
+ listener: endBinaryExpression(==)
+ listener: endBinaryExpression(&&)
+ ensureCloseParen(null, ()
+ listener: handleParenthesizedCondition(()
+ listener: beginThenStatement({)
+ parseStatement())
+ parseStatementX())
+ parseBlock(), BlockKind(statement))
+ ensureBlock(), null, null)
+ listener: beginBlock({, BlockKind(statement))
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseLiteralNull(return)
+ listener: handleLiteralNull(null)
+ ensureSemicolon(null)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlock(1, {, }, BlockKind(statement))
+ listener: endThenStatement(})
+ listener: endIfStatement(if, null)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endTopLevelMethod(bar, null, })
+ listener: endTopLevelDeclaration(bar2)
+ parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+ parseMetadataStar(})
+ listener: beginMetadataStar(bar2)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl(})
+ listener: beginTopLevelMember(bar2)
+ isReservedKeyword(()
+ parseTopLevelMethod(}, null, }, Instance of 'NoType', null, bar2, false)
+ listener: beginTopLevelMethod(}, null)
+ listener: handleNoType(})
+ ensureIdentifierPotentiallyRecovered(}, topLevelFunctionDeclaration, false)
+ listener: handleIdentifier(bar2, topLevelFunctionDeclaration)
+ parseMethodTypeVar(bar2)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(bar2, bar2, false, MemberKind.TopLevelMethod)
+ parseFormalParameters(bar2, MemberKind.TopLevelMethod)
+ parseFormalParametersRest((, MemberKind.TopLevelMethod)
+ listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(a)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(a, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, a, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(b)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(b, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, b, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(c)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(c, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, c, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+ listener: endFormalParameters(3, (, ), MemberKind.TopLevelMethod)
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ parseFunctionBody(), false, false)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, if)
+ parseStatement({)
+ parseStatementX({)
+ parseIfStatement({)
+ listener: beginIfStatement(if)
+ ensureParenthesizedCondition(if)
+ parseExpressionInParenthesisRest(()
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true)
+ parseUnaryExpression((, true)
+ parsePrimary((, expression)
+ parseSendOrFunctionLiteral((, expression)
+ parseSend((, expression)
+ ensureIdentifier((, expression)
+ listener: handleIdentifier(a, expression)
+ listener: handleNoTypeArguments(==)
+ parseArgumentsOpt(a)
+ listener: handleNoArguments(==)
+ listener: handleSend(a, ==)
+ listener: beginBinaryExpression(==)
+ parsePrecedenceExpression(==, 8, true)
+ parseUnaryExpression(==, true)
+ parsePrimary(==, expression)
+ parseLiteralNull(==)
+ listener: handleLiteralNull(null)
+ listener: endBinaryExpression(==)
+ listener: beginBinaryExpression(&&)
+ parsePrecedenceExpression(&&, 7, true)
+ parseUnaryExpression(&&, true)
+ parsePrimary(&&, expression)
+ parseSendOrFunctionLiteral(&&, expression)
+ parseSend(&&, expression)
+ ensureIdentifier(&&, expression)
+ listener: handleIdentifier(b, expression)
+ listener: handleNoTypeArguments(==)
+ parseArgumentsOpt(b)
+ listener: handleNoArguments(==)
+ listener: handleSend(b, ==)
+ listener: beginBinaryExpression(==)
+ parsePrecedenceExpression(==, 8, true)
+ parseUnaryExpression(==, true)
+ parsePrimary(==, expression)
+ parseLiteralNull(==)
+ listener: handleLiteralNull(null)
+ listener: endBinaryExpression(==)
+ listener: endBinaryExpression(&&)
+ listener: beginBinaryExpression(&&)
+ parsePrecedenceExpression(&&, 7, true)
+ parseUnaryExpression(&&, true)
+ parsePrimary(&&, expression)
+ parseSendOrFunctionLiteral(&&, expression)
+ parseSend(&&, expression)
+ ensureIdentifier(&&, expression)
+ listener: handleIdentifier(c, expression)
+ listener: handleNoTypeArguments(==)
+ parseArgumentsOpt(c)
+ listener: handleNoArguments(==)
+ listener: handleSend(c, ==)
+ listener: beginBinaryExpression(==)
+ parsePrecedenceExpression(==, 8, true)
+ parseUnaryExpression(==, true)
+ parsePrimary(==, expression)
+ parseLiteralNull(==)
+ listener: handleLiteralNull(null)
+ listener: endBinaryExpression(==)
+ listener: endBinaryExpression(&&)
+ ensureCloseParen(null, ()
+ listener: handleParenthesizedCondition(()
+ listener: beginThenStatement({)
+ parseStatement())
+ parseStatementX())
+ parseBlock(), BlockKind(statement))
+ ensureBlock(), null, null)
+ listener: beginBlock({, BlockKind(statement))
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseLiteralNull(return)
+ listener: handleLiteralNull(null)
+ ensureSemicolon(null)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlock(1, {, }, BlockKind(statement))
+ listener: endThenStatement(})
+ listener: endIfStatement(if, null)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endTopLevelMethod(bar2, null, })
+ listener: endTopLevelDeclaration()
+ reportAllErrorTokens(foo)
+ listener: endCompilationUnit(4, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_2.crash_dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_2.crash_dart.parser.expect
new file mode 100644
index 0000000..3dea4b2
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_2.crash_dart.parser.expect
@@ -0,0 +1,49 @@
+foo(int a, int b){
+if (a == null || b == null){
+return null;
+}
+}
+
+foo2(int a, int b, int c){
+if (a == null || b == null || c == null){
+return null;
+}
+}
+
+bar(int a, int b){
+if (a == null && b == null){
+return null;
+}
+}
+
+bar2(int a, int b, int c){
+if (a == null && b == null && c == null){
+return null;
+}
+}
+
+
+foo[StringToken]([BeginToken]int[StringToken] a[StringToken],[SimpleToken] int[StringToken] b[StringToken])[SimpleToken]{[BeginToken]
+if[KeywordToken] ([BeginToken]a[StringToken] ==[SimpleToken] null[KeywordToken] ||[SimpleToken] b[StringToken] ==[SimpleToken] null[KeywordToken])[SimpleToken]{[BeginToken]
+return[KeywordToken] null[KeywordToken];[SimpleToken]
+}[SimpleToken]
+}[SimpleToken]
+
+foo2[StringToken]([BeginToken]int[StringToken] a[StringToken],[SimpleToken] int[StringToken] b[StringToken],[SimpleToken] int[StringToken] c[StringToken])[SimpleToken]{[BeginToken]
+if[KeywordToken] ([BeginToken]a[StringToken] ==[SimpleToken] null[KeywordToken] ||[SimpleToken] b[StringToken] ==[SimpleToken] null[KeywordToken] ||[SimpleToken] c[StringToken] ==[SimpleToken] null[KeywordToken])[SimpleToken]{[BeginToken]
+return[KeywordToken] null[KeywordToken];[SimpleToken]
+}[SimpleToken]
+}[SimpleToken]
+
+bar[StringToken]([BeginToken]int[StringToken] a[StringToken],[SimpleToken] int[StringToken] b[StringToken])[SimpleToken]{[BeginToken]
+if[KeywordToken] ([BeginToken]a[StringToken] ==[SimpleToken] null[KeywordToken] &&[SimpleToken] b[StringToken] ==[SimpleToken] null[KeywordToken])[SimpleToken]{[BeginToken]
+return[KeywordToken] null[KeywordToken];[SimpleToken]
+}[SimpleToken]
+}[SimpleToken]
+
+bar2[StringToken]([BeginToken]int[StringToken] a[StringToken],[SimpleToken] int[StringToken] b[StringToken],[SimpleToken] int[StringToken] c[StringToken])[SimpleToken]{[BeginToken]
+if[KeywordToken] ([BeginToken]a[StringToken] ==[SimpleToken] null[KeywordToken] &&[SimpleToken] b[StringToken] ==[SimpleToken] null[KeywordToken] &&[SimpleToken] c[StringToken] ==[SimpleToken] null[KeywordToken])[SimpleToken]{[BeginToken]
+return[KeywordToken] null[KeywordToken];[SimpleToken]
+}[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_2.crash_dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_2.crash_dart.scanner.expect
new file mode 100644
index 0000000..3dea4b2
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_44785_prime_2.crash_dart.scanner.expect
@@ -0,0 +1,49 @@
+foo(int a, int b){
+if (a == null || b == null){
+return null;
+}
+}
+
+foo2(int a, int b, int c){
+if (a == null || b == null || c == null){
+return null;
+}
+}
+
+bar(int a, int b){
+if (a == null && b == null){
+return null;
+}
+}
+
+bar2(int a, int b, int c){
+if (a == null && b == null && c == null){
+return null;
+}
+}
+
+
+foo[StringToken]([BeginToken]int[StringToken] a[StringToken],[SimpleToken] int[StringToken] b[StringToken])[SimpleToken]{[BeginToken]
+if[KeywordToken] ([BeginToken]a[StringToken] ==[SimpleToken] null[KeywordToken] ||[SimpleToken] b[StringToken] ==[SimpleToken] null[KeywordToken])[SimpleToken]{[BeginToken]
+return[KeywordToken] null[KeywordToken];[SimpleToken]
+}[SimpleToken]
+}[SimpleToken]
+
+foo2[StringToken]([BeginToken]int[StringToken] a[StringToken],[SimpleToken] int[StringToken] b[StringToken],[SimpleToken] int[StringToken] c[StringToken])[SimpleToken]{[BeginToken]
+if[KeywordToken] ([BeginToken]a[StringToken] ==[SimpleToken] null[KeywordToken] ||[SimpleToken] b[StringToken] ==[SimpleToken] null[KeywordToken] ||[SimpleToken] c[StringToken] ==[SimpleToken] null[KeywordToken])[SimpleToken]{[BeginToken]
+return[KeywordToken] null[KeywordToken];[SimpleToken]
+}[SimpleToken]
+}[SimpleToken]
+
+bar[StringToken]([BeginToken]int[StringToken] a[StringToken],[SimpleToken] int[StringToken] b[StringToken])[SimpleToken]{[BeginToken]
+if[KeywordToken] ([BeginToken]a[StringToken] ==[SimpleToken] null[KeywordToken] &&[SimpleToken] b[StringToken] ==[SimpleToken] null[KeywordToken])[SimpleToken]{[BeginToken]
+return[KeywordToken] null[KeywordToken];[SimpleToken]
+}[SimpleToken]
+}[SimpleToken]
+
+bar2[StringToken]([BeginToken]int[StringToken] a[StringToken],[SimpleToken] int[StringToken] b[StringToken],[SimpleToken] int[StringToken] c[StringToken])[SimpleToken]{[BeginToken]
+if[KeywordToken] ([BeginToken]a[StringToken] ==[SimpleToken] null[KeywordToken] &&[SimpleToken] b[StringToken] ==[SimpleToken] null[KeywordToken] &&[SimpleToken] c[StringToken] ==[SimpleToken] null[KeywordToken])[SimpleToken]{[BeginToken]
+return[KeywordToken] null[KeywordToken];[SimpleToken]
+}[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/test/spell_checking_list_common.txt b/pkg/front_end/test/spell_checking_list_common.txt
index f92c75c..9601042 100644
--- a/pkg/front_end/test/spell_checking_list_common.txt
+++ b/pkg/front_end/test/spell_checking_list_common.txt
@@ -794,6 +794,7 @@
dependencies
dependency
dependent
+dependents
depending
depends
deprecate
@@ -3126,6 +3127,7 @@
type
typed
typedef
+typedef's
typedefs
types
typically
diff --git a/pkg/front_end/testcases/general/bounds_check_in_typedef.dart b/pkg/front_end/testcases/general/bounds_check_in_typedef.dart
new file mode 100644
index 0000000..955eb3d
--- /dev/null
+++ b/pkg/front_end/testcases/general/bounds_check_in_typedef.dart
@@ -0,0 +1,10 @@
+// Copyright (c) 2021, 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.
+
+class A<X extends String> {}
+
+typedef F = Function<Z extends A<Y>>() Function<Y extends num>();
+typedef G = void Function<Y extends num>(Function<Z extends A<Y>>());
+
+main() {}
diff --git a/pkg/front_end/testcases/general/bounds_check_in_typedef.dart.outline.expect b/pkg/front_end/testcases/general/bounds_check_in_typedef.dart.outline.expect
new file mode 100644
index 0000000..cdad149
--- /dev/null
+++ b/pkg/front_end/testcases/general/bounds_check_in_typedef.dart.outline.expect
@@ -0,0 +1,41 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/bounds_check_in_typedef.dart:7:40: Error: Type argument 'Y' doesn't conform to the bound 'String' of the type variable 'X' on 'A'.
+// Try changing type arguments so that they conform to the bounds.
+// typedef F = Function<Z extends A<Y>>() Function<Y extends num>();
+// ^
+// pkg/front_end/testcases/general/bounds_check_in_typedef.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends String> {}
+// ^
+//
+// pkg/front_end/testcases/general/bounds_check_in_typedef.dart:8:18: Error: Type argument 'Y' doesn't conform to the bound 'String' of the type variable 'X' on 'A'.
+// Try changing type arguments so that they conform to the bounds.
+// typedef G = void Function<Y extends num>(Function<Z extends A<Y>>());
+// ^
+// pkg/front_end/testcases/general/bounds_check_in_typedef.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends String> {}
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef F = <Y extends core::num* = dynamic>() →* <Z extends self::A<Y*>* = dynamic>() →* dynamic;
+typedef G = <Y extends core::num* = dynamic>(<Z extends self::A<Y*>* = dynamic>() →* dynamic) →* void;
+class A<X extends core::String* = core::String*> extends core::Object {
+ synthetic constructor •() → self::A<self::A::X*>*
+ ;
+ abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
+ abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
+ abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
+ abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
+ abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
+ abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
+ abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
+ abstract member-signature method toString() → core::String*; -> core::Object::toString
+ abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
+ abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+}
+static method main() → dynamic
+ ;
diff --git a/pkg/front_end/testcases/general/bounds_check_in_typedef.dart.strong.expect b/pkg/front_end/testcases/general/bounds_check_in_typedef.dart.strong.expect
new file mode 100644
index 0000000..1bf550a
--- /dev/null
+++ b/pkg/front_end/testcases/general/bounds_check_in_typedef.dart.strong.expect
@@ -0,0 +1,41 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/bounds_check_in_typedef.dart:7:40: Error: Type argument 'Y' doesn't conform to the bound 'String' of the type variable 'X' on 'A'.
+// Try changing type arguments so that they conform to the bounds.
+// typedef F = Function<Z extends A<Y>>() Function<Y extends num>();
+// ^
+// pkg/front_end/testcases/general/bounds_check_in_typedef.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends String> {}
+// ^
+//
+// pkg/front_end/testcases/general/bounds_check_in_typedef.dart:8:18: Error: Type argument 'Y' doesn't conform to the bound 'String' of the type variable 'X' on 'A'.
+// Try changing type arguments so that they conform to the bounds.
+// typedef G = void Function<Y extends num>(Function<Z extends A<Y>>());
+// ^
+// pkg/front_end/testcases/general/bounds_check_in_typedef.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends String> {}
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef F = <Y extends core::num* = dynamic>() →* <Z extends self::A<Y*>* = dynamic>() →* dynamic;
+typedef G = <Y extends core::num* = dynamic>(<Z extends self::A<Y*>* = dynamic>() →* dynamic) →* void;
+class A<X extends core::String* = core::String*> extends core::Object {
+ synthetic constructor •() → self::A<self::A::X*>*
+ : super core::Object::•()
+ ;
+ abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
+ abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
+ abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
+ abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
+ abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
+ abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
+ abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
+ abstract member-signature method toString() → core::String*; -> core::Object::toString
+ abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
+ abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/bounds_check_in_typedef.dart.strong.transformed.expect b/pkg/front_end/testcases/general/bounds_check_in_typedef.dart.strong.transformed.expect
new file mode 100644
index 0000000..1bf550a
--- /dev/null
+++ b/pkg/front_end/testcases/general/bounds_check_in_typedef.dart.strong.transformed.expect
@@ -0,0 +1,41 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/bounds_check_in_typedef.dart:7:40: Error: Type argument 'Y' doesn't conform to the bound 'String' of the type variable 'X' on 'A'.
+// Try changing type arguments so that they conform to the bounds.
+// typedef F = Function<Z extends A<Y>>() Function<Y extends num>();
+// ^
+// pkg/front_end/testcases/general/bounds_check_in_typedef.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends String> {}
+// ^
+//
+// pkg/front_end/testcases/general/bounds_check_in_typedef.dart:8:18: Error: Type argument 'Y' doesn't conform to the bound 'String' of the type variable 'X' on 'A'.
+// Try changing type arguments so that they conform to the bounds.
+// typedef G = void Function<Y extends num>(Function<Z extends A<Y>>());
+// ^
+// pkg/front_end/testcases/general/bounds_check_in_typedef.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends String> {}
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef F = <Y extends core::num* = dynamic>() →* <Z extends self::A<Y*>* = dynamic>() →* dynamic;
+typedef G = <Y extends core::num* = dynamic>(<Z extends self::A<Y*>* = dynamic>() →* dynamic) →* void;
+class A<X extends core::String* = core::String*> extends core::Object {
+ synthetic constructor •() → self::A<self::A::X*>*
+ : super core::Object::•()
+ ;
+ abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
+ abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
+ abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
+ abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
+ abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
+ abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
+ abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
+ abstract member-signature method toString() → core::String*; -> core::Object::toString
+ abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
+ abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/bounds_check_in_typedef.dart.textual_outline.expect b/pkg/front_end/testcases/general/bounds_check_in_typedef.dart.textual_outline.expect
new file mode 100644
index 0000000..0005089
--- /dev/null
+++ b/pkg/front_end/testcases/general/bounds_check_in_typedef.dart.textual_outline.expect
@@ -0,0 +1,5 @@
+class A<X extends String> {}
+
+typedef F = Function<Z extends A<Y>>() Function<Y extends num>();
+typedef G = void Function<Y extends num>(Function<Z extends A<Y>>());
+main() {}
diff --git a/pkg/front_end/testcases/general/bounds_check_in_typedef.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/bounds_check_in_typedef.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..66a369f
--- /dev/null
+++ b/pkg/front_end/testcases/general/bounds_check_in_typedef.dart.textual_outline_modelled.expect
@@ -0,0 +1,5 @@
+class A<X extends String> {}
+
+main() {}
+typedef F = Function<Z extends A<Y>>() Function<Y extends num>();
+typedef G = void Function<Y extends num>(Function<Z extends A<Y>>());
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_parametrized_typedef_cycle.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_parametrized_typedef_cycle.dart.outline.expect
index 1686062..6f257ee 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_parametrized_typedef_cycle.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_parametrized_typedef_cycle.dart.outline.expect
@@ -2,6 +2,10 @@
//
// Problems in library:
//
+// pkg/front_end/testcases/instantiate_to_bound/non_simple_class_parametrized_typedef_cycle.dart:9:12: Error: Type variables can't have generic function types in their bounds.
+// class Hest<TypeX extends Fisk> {}
+// ^^^^^
+//
// pkg/front_end/testcases/instantiate_to_bound/non_simple_class_parametrized_typedef_cycle.dart:11:9: Error: Generic type 'Fisk' can't be used without type arguments in the bounds of its own type variables. It is referenced indirectly through 'Hest'.
// Try providing type arguments to 'Hest' here or to some other raw types in the bounds along the reference chain.
// typedef Fisk = void Function<TypeY extends Hest>();
@@ -17,7 +21,7 @@
import "dart:core" as core;
typedef Fisk = <TypeY extends core::Object* = dynamic>() →* void;
-class Hest<TypeX extends <TypeY extends core::Object* = dynamic>() →* void = <TypeY extends core::Object* = dynamic>() →* void> extends core::Object {
+class Hest<TypeX extends <TypeY extends core::Object* = dynamic>() →* void = dynamic> extends core::Object {
synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_parametrized_typedef_cycle.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_parametrized_typedef_cycle.dart.strong.expect
index 7203cff..a8be06f 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_parametrized_typedef_cycle.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_parametrized_typedef_cycle.dart.strong.expect
@@ -2,6 +2,10 @@
//
// Problems in library:
//
+// pkg/front_end/testcases/instantiate_to_bound/non_simple_class_parametrized_typedef_cycle.dart:9:12: Error: Type variables can't have generic function types in their bounds.
+// class Hest<TypeX extends Fisk> {}
+// ^^^^^
+//
// pkg/front_end/testcases/instantiate_to_bound/non_simple_class_parametrized_typedef_cycle.dart:11:9: Error: Generic type 'Fisk' can't be used without type arguments in the bounds of its own type variables. It is referenced indirectly through 'Hest'.
// Try providing type arguments to 'Hest' here or to some other raw types in the bounds along the reference chain.
// typedef Fisk = void Function<TypeY extends Hest>();
@@ -17,7 +21,7 @@
import "dart:core" as core;
typedef Fisk = <TypeY extends core::Object* = dynamic>() →* void;
-class Hest<TypeX extends <TypeY extends core::Object* = dynamic>() →* void = <TypeY extends core::Object* = dynamic>() →* void> extends core::Object {
+class Hest<TypeX extends <TypeY extends core::Object* = dynamic>() →* void = dynamic> extends core::Object {
synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_parametrized_typedef_cycle.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_parametrized_typedef_cycle.dart.strong.transformed.expect
index 7203cff..a8be06f 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_parametrized_typedef_cycle.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_parametrized_typedef_cycle.dart.strong.transformed.expect
@@ -2,6 +2,10 @@
//
// Problems in library:
//
+// pkg/front_end/testcases/instantiate_to_bound/non_simple_class_parametrized_typedef_cycle.dart:9:12: Error: Type variables can't have generic function types in their bounds.
+// class Hest<TypeX extends Fisk> {}
+// ^^^^^
+//
// pkg/front_end/testcases/instantiate_to_bound/non_simple_class_parametrized_typedef_cycle.dart:11:9: Error: Generic type 'Fisk' can't be used without type arguments in the bounds of its own type variables. It is referenced indirectly through 'Hest'.
// Try providing type arguments to 'Hest' here or to some other raw types in the bounds along the reference chain.
// typedef Fisk = void Function<TypeY extends Hest>();
@@ -17,7 +21,7 @@
import "dart:core" as core;
typedef Fisk = <TypeY extends core::Object* = dynamic>() →* void;
-class Hest<TypeX extends <TypeY extends core::Object* = dynamic>() →* void = <TypeY extends core::Object* = dynamic>() →* void> extends core::Object {
+class Hest<TypeX extends <TypeY extends core::Object* = dynamic>() →* void = dynamic> extends core::Object {
synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_typedef_cycle.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_typedef_cycle.dart.outline.expect
index f759e2b..c9e1d02 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_typedef_cycle.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_typedef_cycle.dart.outline.expect
@@ -16,7 +16,7 @@
import self as self;
import "dart:core" as core;
-typedef Fisk<unrelated TypeY extends dynamic = dynamic> = () →* void;
+typedef Fisk<unrelated TypeY extends core::Object* = dynamic> = () →* void;
class Hest<TypeX extends () →* void = () →* void> extends core::Object {
synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_typedef_cycle.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_typedef_cycle.dart.strong.expect
index 8ccdcd1..165ac5e 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_typedef_cycle.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_typedef_cycle.dart.strong.expect
@@ -16,7 +16,7 @@
import self as self;
import "dart:core" as core;
-typedef Fisk<unrelated TypeY extends dynamic = dynamic> = () →* void;
+typedef Fisk<unrelated TypeY extends core::Object* = dynamic> = () →* void;
class Hest<TypeX extends () →* void = () →* void> extends core::Object {
synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
: super core::Object::•()
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_typedef_cycle.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_typedef_cycle.dart.strong.transformed.expect
index 8ccdcd1..165ac5e 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_typedef_cycle.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_typedef_cycle.dart.strong.transformed.expect
@@ -16,7 +16,7 @@
import self as self;
import "dart:core" as core;
-typedef Fisk<unrelated TypeY extends dynamic = dynamic> = () →* void;
+typedef Fisk<unrelated TypeY extends core::Object* = dynamic> = () →* void;
class Hest<TypeX extends () →* void = () →* void> extends core::Object {
synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
: super core::Object::•()
diff --git a/pkg/front_end/testcases/nnbd/issue34803.dart b/pkg/front_end/testcases/nnbd/issue34803.dart
new file mode 100644
index 0000000..ec6eda3
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue34803.dart
@@ -0,0 +1,8 @@
+// Copyright (c) 2021, 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.
+
+class A<X extends G<num>> {}
+typedef G<X> = void Function<Y extends X>();
+
+main() {}
diff --git a/pkg/front_end/testcases/nnbd/issue34803.dart.outline.expect b/pkg/front_end/testcases/nnbd/issue34803.dart.outline.expect
new file mode 100644
index 0000000..81ae317
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue34803.dart.outline.expect
@@ -0,0 +1,18 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/issue34803.dart:5:9: Error: Type variables can't have generic function types in their bounds.
+// class A<X extends G<num>> {}
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef G<invariant X extends core::Object? = dynamic> = <Y extends X% = dynamic>() → void;
+class A<X extends <Y extends core::num = dynamic>() → void = dynamic> extends core::Object {
+ synthetic constructor •() → self::A<self::A::X>
+ ;
+}
+static method main() → dynamic
+ ;
diff --git a/pkg/front_end/testcases/nnbd/issue34803.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue34803.dart.strong.expect
new file mode 100644
index 0000000..7cf7baa
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue34803.dart.strong.expect
@@ -0,0 +1,18 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/issue34803.dart:5:9: Error: Type variables can't have generic function types in their bounds.
+// class A<X extends G<num>> {}
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef G<invariant X extends core::Object? = dynamic> = <Y extends X% = dynamic>() → void;
+class A<X extends <Y extends core::num = dynamic>() → void = dynamic> extends core::Object {
+ synthetic constructor •() → self::A<self::A::X>
+ : super core::Object::•()
+ ;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue34803.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue34803.dart.strong.transformed.expect
new file mode 100644
index 0000000..7cf7baa
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue34803.dart.strong.transformed.expect
@@ -0,0 +1,18 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/issue34803.dart:5:9: Error: Type variables can't have generic function types in their bounds.
+// class A<X extends G<num>> {}
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef G<invariant X extends core::Object? = dynamic> = <Y extends X% = dynamic>() → void;
+class A<X extends <Y extends core::num = dynamic>() → void = dynamic> extends core::Object {
+ synthetic constructor •() → self::A<self::A::X>
+ : super core::Object::•()
+ ;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue34803.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/issue34803.dart.textual_outline.expect
new file mode 100644
index 0000000..3d362ac
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue34803.dart.textual_outline.expect
@@ -0,0 +1,4 @@
+class A<X extends G<num>> {}
+
+typedef G<X> = void Function<Y extends X>();
+main() {}
diff --git a/pkg/front_end/testcases/nnbd/issue34803.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd/issue34803.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..92dc404
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue34803.dart.textual_outline_modelled.expect
@@ -0,0 +1,4 @@
+class A<X extends G<num>> {}
+
+main() {}
+typedef G<X> = void Function<Y extends X>();
diff --git a/pkg/front_end/testcases/nnbd/issue34803.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue34803.dart.weak.expect
new file mode 100644
index 0000000..7cf7baa
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue34803.dart.weak.expect
@@ -0,0 +1,18 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/issue34803.dart:5:9: Error: Type variables can't have generic function types in their bounds.
+// class A<X extends G<num>> {}
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef G<invariant X extends core::Object? = dynamic> = <Y extends X% = dynamic>() → void;
+class A<X extends <Y extends core::num = dynamic>() → void = dynamic> extends core::Object {
+ synthetic constructor •() → self::A<self::A::X>
+ : super core::Object::•()
+ ;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue34803.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue34803.dart.weak.transformed.expect
new file mode 100644
index 0000000..7cf7baa
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue34803.dart.weak.transformed.expect
@@ -0,0 +1,18 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/issue34803.dart:5:9: Error: Type variables can't have generic function types in their bounds.
+// class A<X extends G<num>> {}
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef G<invariant X extends core::Object? = dynamic> = <Y extends X% = dynamic>() → void;
+class A<X extends <Y extends core::num = dynamic>() → void = dynamic> extends core::Object {
+ synthetic constructor •() → self::A<self::A::X>
+ : super core::Object::•()
+ ;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue42434.dart b/pkg/front_end/testcases/nnbd/issue42434.dart
new file mode 100644
index 0000000..8616955
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue42434.dart
@@ -0,0 +1,9 @@
+// Copyright (c) 2021, 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.
+
+class A<X extends A<X>> {}
+
+typedef AAlias<X> = Function<X1 extends A<X>> ();
+
+main() {}
diff --git a/pkg/front_end/testcases/nnbd/issue42434.dart.outline.expect b/pkg/front_end/testcases/nnbd/issue42434.dart.outline.expect
new file mode 100644
index 0000000..46e4efc
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue42434.dart.outline.expect
@@ -0,0 +1,25 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/issue42434.dart:7:21: Error: Type argument 'X/*1*/' doesn't conform to the bound 'A<X/*2*/>' of the type variable 'X' on 'A'.
+// - 'X/*1*/' is from 'pkg/front_end/testcases/nnbd/issue42434.dart'.
+// - 'A' is from 'pkg/front_end/testcases/nnbd/issue42434.dart'.
+// - 'X/*2*/' is from 'pkg/front_end/testcases/nnbd/issue42434.dart'.
+// Try changing type arguments so that they conform to the bounds.
+// typedef AAlias<X> = Function<X1 extends A<X>> ();
+// ^
+// pkg/front_end/testcases/nnbd/issue42434.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends A<X>> {}
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef AAlias<invariant X extends core::Object? = dynamic> = <X1 extends self::A<X%> = dynamic>() → dynamic;
+class A<X extends self::A<self::A::X> = self::A<dynamic>> extends core::Object {
+ synthetic constructor •() → self::A<self::A::X>
+ ;
+}
+static method main() → dynamic
+ ;
diff --git a/pkg/front_end/testcases/nnbd/issue42434.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue42434.dart.strong.expect
new file mode 100644
index 0000000..e263ad8
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue42434.dart.strong.expect
@@ -0,0 +1,25 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/issue42434.dart:7:21: Error: Type argument 'X/*1*/' doesn't conform to the bound 'A<X/*2*/>' of the type variable 'X' on 'A'.
+// - 'X/*1*/' is from 'pkg/front_end/testcases/nnbd/issue42434.dart'.
+// - 'A' is from 'pkg/front_end/testcases/nnbd/issue42434.dart'.
+// - 'X/*2*/' is from 'pkg/front_end/testcases/nnbd/issue42434.dart'.
+// Try changing type arguments so that they conform to the bounds.
+// typedef AAlias<X> = Function<X1 extends A<X>> ();
+// ^
+// pkg/front_end/testcases/nnbd/issue42434.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends A<X>> {}
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef AAlias<invariant X extends core::Object? = dynamic> = <X1 extends self::A<X%> = dynamic>() → dynamic;
+class A<X extends self::A<self::A::X> = self::A<dynamic>> extends core::Object {
+ synthetic constructor •() → self::A<self::A::X>
+ : super core::Object::•()
+ ;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue42434.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue42434.dart.strong.transformed.expect
new file mode 100644
index 0000000..e263ad8
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue42434.dart.strong.transformed.expect
@@ -0,0 +1,25 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/issue42434.dart:7:21: Error: Type argument 'X/*1*/' doesn't conform to the bound 'A<X/*2*/>' of the type variable 'X' on 'A'.
+// - 'X/*1*/' is from 'pkg/front_end/testcases/nnbd/issue42434.dart'.
+// - 'A' is from 'pkg/front_end/testcases/nnbd/issue42434.dart'.
+// - 'X/*2*/' is from 'pkg/front_end/testcases/nnbd/issue42434.dart'.
+// Try changing type arguments so that they conform to the bounds.
+// typedef AAlias<X> = Function<X1 extends A<X>> ();
+// ^
+// pkg/front_end/testcases/nnbd/issue42434.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends A<X>> {}
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef AAlias<invariant X extends core::Object? = dynamic> = <X1 extends self::A<X%> = dynamic>() → dynamic;
+class A<X extends self::A<self::A::X> = self::A<dynamic>> extends core::Object {
+ synthetic constructor •() → self::A<self::A::X>
+ : super core::Object::•()
+ ;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue42434.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/issue42434.dart.textual_outline.expect
new file mode 100644
index 0000000..388a33b
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue42434.dart.textual_outline.expect
@@ -0,0 +1,4 @@
+class A<X extends A<X>> {}
+
+typedef AAlias<X> = Function<X1 extends A<X>>();
+main() {}
diff --git a/pkg/front_end/testcases/nnbd/issue42434.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd/issue42434.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..58c739f
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue42434.dart.textual_outline_modelled.expect
@@ -0,0 +1,4 @@
+class A<X extends A<X>> {}
+
+main() {}
+typedef AAlias<X> = Function<X1 extends A<X>>();
diff --git a/pkg/front_end/testcases/nnbd/issue42434.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue42434.dart.weak.expect
new file mode 100644
index 0000000..e263ad8
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue42434.dart.weak.expect
@@ -0,0 +1,25 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/issue42434.dart:7:21: Error: Type argument 'X/*1*/' doesn't conform to the bound 'A<X/*2*/>' of the type variable 'X' on 'A'.
+// - 'X/*1*/' is from 'pkg/front_end/testcases/nnbd/issue42434.dart'.
+// - 'A' is from 'pkg/front_end/testcases/nnbd/issue42434.dart'.
+// - 'X/*2*/' is from 'pkg/front_end/testcases/nnbd/issue42434.dart'.
+// Try changing type arguments so that they conform to the bounds.
+// typedef AAlias<X> = Function<X1 extends A<X>> ();
+// ^
+// pkg/front_end/testcases/nnbd/issue42434.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends A<X>> {}
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef AAlias<invariant X extends core::Object? = dynamic> = <X1 extends self::A<X%> = dynamic>() → dynamic;
+class A<X extends self::A<self::A::X> = self::A<dynamic>> extends core::Object {
+ synthetic constructor •() → self::A<self::A::X>
+ : super core::Object::•()
+ ;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue42434.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue42434.dart.weak.transformed.expect
new file mode 100644
index 0000000..e263ad8
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue42434.dart.weak.transformed.expect
@@ -0,0 +1,25 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/issue42434.dart:7:21: Error: Type argument 'X/*1*/' doesn't conform to the bound 'A<X/*2*/>' of the type variable 'X' on 'A'.
+// - 'X/*1*/' is from 'pkg/front_end/testcases/nnbd/issue42434.dart'.
+// - 'A' is from 'pkg/front_end/testcases/nnbd/issue42434.dart'.
+// - 'X/*2*/' is from 'pkg/front_end/testcases/nnbd/issue42434.dart'.
+// Try changing type arguments so that they conform to the bounds.
+// typedef AAlias<X> = Function<X1 extends A<X>> ();
+// ^
+// pkg/front_end/testcases/nnbd/issue42434.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends A<X>> {}
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef AAlias<invariant X extends core::Object? = dynamic> = <X1 extends self::A<X%> = dynamic>() → dynamic;
+class A<X extends self::A<self::A::X> = self::A<dynamic>> extends core::Object {
+ synthetic constructor •() → self::A<self::A::X>
+ : super core::Object::•()
+ ;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue42434_2.dart b/pkg/front_end/testcases/nnbd/issue42434_2.dart
new file mode 100644
index 0000000..614b86d
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue42434_2.dart
@@ -0,0 +1,11 @@
+// Copyright (c) 2021, 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.
+
+typedef AAlias<X> = Function<X1 extends A<X>> ();
+
+typedef A<X extends B<X>> = Function();
+
+class B<X> {}
+
+main() {}
diff --git a/pkg/front_end/testcases/nnbd/issue42434_2.dart.outline.expect b/pkg/front_end/testcases/nnbd/issue42434_2.dart.outline.expect
new file mode 100644
index 0000000..d314070
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue42434_2.dart.outline.expect
@@ -0,0 +1,26 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/issue42434_2.dart:5:21: Error: Type argument 'X/*1*/' doesn't conform to the bound 'B<X/*2*/>' of the type variable 'X' on 'A'.
+// - 'X/*1*/' is from 'pkg/front_end/testcases/nnbd/issue42434_2.dart'.
+// - 'B' is from 'pkg/front_end/testcases/nnbd/issue42434_2.dart'.
+// - 'X/*2*/' is from 'pkg/front_end/testcases/nnbd/issue42434_2.dart'.
+// Try changing type arguments so that they conform to the bounds.
+// typedef AAlias<X> = Function<X1 extends A<X>> ();
+// ^
+// pkg/front_end/testcases/nnbd/issue42434_2.dart:7:11: Context: This is the type variable whose bound isn't conformed to.
+// typedef A<X extends B<X>> = Function();
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef AAlias<unrelated X extends core::Object? = dynamic> = <X1 extends () → dynamic = dynamic>() → dynamic;
+typedef A<unrelated X extends self::B<X> = self::B<dynamic>> = () → dynamic;
+class B<X extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::B<self::B::X%>
+ ;
+}
+static method main() → dynamic
+ ;
diff --git a/pkg/front_end/testcases/nnbd/issue42434_2.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue42434_2.dart.strong.expect
new file mode 100644
index 0000000..88588f6
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue42434_2.dart.strong.expect
@@ -0,0 +1,26 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/issue42434_2.dart:5:21: Error: Type argument 'X/*1*/' doesn't conform to the bound 'B<X/*2*/>' of the type variable 'X' on 'A'.
+// - 'X/*1*/' is from 'pkg/front_end/testcases/nnbd/issue42434_2.dart'.
+// - 'B' is from 'pkg/front_end/testcases/nnbd/issue42434_2.dart'.
+// - 'X/*2*/' is from 'pkg/front_end/testcases/nnbd/issue42434_2.dart'.
+// Try changing type arguments so that they conform to the bounds.
+// typedef AAlias<X> = Function<X1 extends A<X>> ();
+// ^
+// pkg/front_end/testcases/nnbd/issue42434_2.dart:7:11: Context: This is the type variable whose bound isn't conformed to.
+// typedef A<X extends B<X>> = Function();
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef AAlias<unrelated X extends core::Object? = dynamic> = <X1 extends () → dynamic = dynamic>() → dynamic;
+typedef A<unrelated X extends self::B<X> = self::B<dynamic>> = () → dynamic;
+class B<X extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::B<self::B::X%>
+ : super core::Object::•()
+ ;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue42434_2.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue42434_2.dart.strong.transformed.expect
new file mode 100644
index 0000000..88588f6
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue42434_2.dart.strong.transformed.expect
@@ -0,0 +1,26 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/issue42434_2.dart:5:21: Error: Type argument 'X/*1*/' doesn't conform to the bound 'B<X/*2*/>' of the type variable 'X' on 'A'.
+// - 'X/*1*/' is from 'pkg/front_end/testcases/nnbd/issue42434_2.dart'.
+// - 'B' is from 'pkg/front_end/testcases/nnbd/issue42434_2.dart'.
+// - 'X/*2*/' is from 'pkg/front_end/testcases/nnbd/issue42434_2.dart'.
+// Try changing type arguments so that they conform to the bounds.
+// typedef AAlias<X> = Function<X1 extends A<X>> ();
+// ^
+// pkg/front_end/testcases/nnbd/issue42434_2.dart:7:11: Context: This is the type variable whose bound isn't conformed to.
+// typedef A<X extends B<X>> = Function();
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef AAlias<unrelated X extends core::Object? = dynamic> = <X1 extends () → dynamic = dynamic>() → dynamic;
+typedef A<unrelated X extends self::B<X> = self::B<dynamic>> = () → dynamic;
+class B<X extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::B<self::B::X%>
+ : super core::Object::•()
+ ;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue42434_2.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/issue42434_2.dart.textual_outline.expect
new file mode 100644
index 0000000..608b52e
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue42434_2.dart.textual_outline.expect
@@ -0,0 +1,6 @@
+typedef AAlias<X> = Function<X1 extends A<X>>();
+typedef A<X extends B<X>> = Function();
+
+class B<X> {}
+
+main() {}
diff --git a/pkg/front_end/testcases/nnbd/issue42434_2.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd/issue42434_2.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..3b7a00b
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue42434_2.dart.textual_outline_modelled.expect
@@ -0,0 +1,5 @@
+class B<X> {}
+
+main() {}
+typedef A<X extends B<X>> = Function();
+typedef AAlias<X> = Function<X1 extends A<X>>();
diff --git a/pkg/front_end/testcases/nnbd/issue42434_2.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue42434_2.dart.weak.expect
new file mode 100644
index 0000000..88588f6
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue42434_2.dart.weak.expect
@@ -0,0 +1,26 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/issue42434_2.dart:5:21: Error: Type argument 'X/*1*/' doesn't conform to the bound 'B<X/*2*/>' of the type variable 'X' on 'A'.
+// - 'X/*1*/' is from 'pkg/front_end/testcases/nnbd/issue42434_2.dart'.
+// - 'B' is from 'pkg/front_end/testcases/nnbd/issue42434_2.dart'.
+// - 'X/*2*/' is from 'pkg/front_end/testcases/nnbd/issue42434_2.dart'.
+// Try changing type arguments so that they conform to the bounds.
+// typedef AAlias<X> = Function<X1 extends A<X>> ();
+// ^
+// pkg/front_end/testcases/nnbd/issue42434_2.dart:7:11: Context: This is the type variable whose bound isn't conformed to.
+// typedef A<X extends B<X>> = Function();
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef AAlias<unrelated X extends core::Object? = dynamic> = <X1 extends () → dynamic = dynamic>() → dynamic;
+typedef A<unrelated X extends self::B<X> = self::B<dynamic>> = () → dynamic;
+class B<X extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::B<self::B::X%>
+ : super core::Object::•()
+ ;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue42434_2.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue42434_2.dart.weak.transformed.expect
new file mode 100644
index 0000000..88588f6
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue42434_2.dart.weak.transformed.expect
@@ -0,0 +1,26 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/issue42434_2.dart:5:21: Error: Type argument 'X/*1*/' doesn't conform to the bound 'B<X/*2*/>' of the type variable 'X' on 'A'.
+// - 'X/*1*/' is from 'pkg/front_end/testcases/nnbd/issue42434_2.dart'.
+// - 'B' is from 'pkg/front_end/testcases/nnbd/issue42434_2.dart'.
+// - 'X/*2*/' is from 'pkg/front_end/testcases/nnbd/issue42434_2.dart'.
+// Try changing type arguments so that they conform to the bounds.
+// typedef AAlias<X> = Function<X1 extends A<X>> ();
+// ^
+// pkg/front_end/testcases/nnbd/issue42434_2.dart:7:11: Context: This is the type variable whose bound isn't conformed to.
+// typedef A<X extends B<X>> = Function();
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef AAlias<unrelated X extends core::Object? = dynamic> = <X1 extends () → dynamic = dynamic>() → dynamic;
+typedef A<unrelated X extends self::B<X> = self::B<dynamic>> = () → dynamic;
+class B<X extends core::Object? = dynamic> extends core::Object {
+ synthetic constructor •() → self::B<self::B::X%>
+ : super core::Object::•()
+ ;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue44455.dart b/pkg/front_end/testcases/nnbd/issue44455.dart
new file mode 100644
index 0000000..20797b94
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue44455.dart
@@ -0,0 +1,11 @@
+// Copyright (c) 2021, 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.
+
+typedef F<Y extends num> = Y Function();
+class A<X extends F<X>> {}
+
+class A2<X extends F2<X>> {}
+typedef F2<Y extends num> = Y Function();
+
+main() {}
diff --git a/pkg/front_end/testcases/nnbd/issue44455.dart.outline.expect b/pkg/front_end/testcases/nnbd/issue44455.dart.outline.expect
new file mode 100644
index 0000000..6628b32
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue44455.dart.outline.expect
@@ -0,0 +1,35 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/issue44455.dart:6:9: Error: Type argument 'X' doesn't conform to the bound 'num' of the type variable 'Y' on 'F'.
+// Try changing type arguments so that they conform to the bounds.
+// class A<X extends F<X>> {}
+// ^
+// pkg/front_end/testcases/nnbd/issue44455.dart:5:11: Context: This is the type variable whose bound isn't conformed to.
+// typedef F<Y extends num> = Y Function();
+// ^
+//
+// pkg/front_end/testcases/nnbd/issue44455.dart:8:10: Error: Type argument 'X' doesn't conform to the bound 'num' of the type variable 'Y' on 'F2'.
+// Try changing type arguments so that they conform to the bounds.
+// class A2<X extends F2<X>> {}
+// ^
+// pkg/front_end/testcases/nnbd/issue44455.dart:9:12: Context: This is the type variable whose bound isn't conformed to.
+// typedef F2<Y extends num> = Y Function();
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef F<Y extends core::num = core::num> = () → Y;
+typedef F2<Y extends core::num = core::num> = () → Y;
+class A<X extends () → self::A::X = () → dynamic> extends core::Object {
+ synthetic constructor •() → self::A<self::A::X>
+ ;
+}
+class A2<X extends () → self::A2::X = () → dynamic> extends core::Object {
+ synthetic constructor •() → self::A2<self::A2::X>
+ ;
+}
+static method main() → dynamic
+ ;
diff --git a/pkg/front_end/testcases/nnbd/issue44455.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue44455.dart.strong.expect
new file mode 100644
index 0000000..2d1e9e6
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue44455.dart.strong.expect
@@ -0,0 +1,36 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/issue44455.dart:6:9: Error: Type argument 'X' doesn't conform to the bound 'num' of the type variable 'Y' on 'F'.
+// Try changing type arguments so that they conform to the bounds.
+// class A<X extends F<X>> {}
+// ^
+// pkg/front_end/testcases/nnbd/issue44455.dart:5:11: Context: This is the type variable whose bound isn't conformed to.
+// typedef F<Y extends num> = Y Function();
+// ^
+//
+// pkg/front_end/testcases/nnbd/issue44455.dart:8:10: Error: Type argument 'X' doesn't conform to the bound 'num' of the type variable 'Y' on 'F2'.
+// Try changing type arguments so that they conform to the bounds.
+// class A2<X extends F2<X>> {}
+// ^
+// pkg/front_end/testcases/nnbd/issue44455.dart:9:12: Context: This is the type variable whose bound isn't conformed to.
+// typedef F2<Y extends num> = Y Function();
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef F<Y extends core::num = core::num> = () → Y;
+typedef F2<Y extends core::num = core::num> = () → Y;
+class A<X extends () → self::A::X = () → dynamic> extends core::Object {
+ synthetic constructor •() → self::A<self::A::X>
+ : super core::Object::•()
+ ;
+}
+class A2<X extends () → self::A2::X = () → dynamic> extends core::Object {
+ synthetic constructor •() → self::A2<self::A2::X>
+ : super core::Object::•()
+ ;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue44455.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue44455.dart.strong.transformed.expect
new file mode 100644
index 0000000..2d1e9e6
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue44455.dart.strong.transformed.expect
@@ -0,0 +1,36 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/issue44455.dart:6:9: Error: Type argument 'X' doesn't conform to the bound 'num' of the type variable 'Y' on 'F'.
+// Try changing type arguments so that they conform to the bounds.
+// class A<X extends F<X>> {}
+// ^
+// pkg/front_end/testcases/nnbd/issue44455.dart:5:11: Context: This is the type variable whose bound isn't conformed to.
+// typedef F<Y extends num> = Y Function();
+// ^
+//
+// pkg/front_end/testcases/nnbd/issue44455.dart:8:10: Error: Type argument 'X' doesn't conform to the bound 'num' of the type variable 'Y' on 'F2'.
+// Try changing type arguments so that they conform to the bounds.
+// class A2<X extends F2<X>> {}
+// ^
+// pkg/front_end/testcases/nnbd/issue44455.dart:9:12: Context: This is the type variable whose bound isn't conformed to.
+// typedef F2<Y extends num> = Y Function();
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef F<Y extends core::num = core::num> = () → Y;
+typedef F2<Y extends core::num = core::num> = () → Y;
+class A<X extends () → self::A::X = () → dynamic> extends core::Object {
+ synthetic constructor •() → self::A<self::A::X>
+ : super core::Object::•()
+ ;
+}
+class A2<X extends () → self::A2::X = () → dynamic> extends core::Object {
+ synthetic constructor •() → self::A2<self::A2::X>
+ : super core::Object::•()
+ ;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue44455.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/issue44455.dart.textual_outline.expect
new file mode 100644
index 0000000..ff5016e
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue44455.dart.textual_outline.expect
@@ -0,0 +1,8 @@
+typedef F<Y extends num> = Y Function();
+
+class A<X extends F<X>> {}
+
+class A2<X extends F2<X>> {}
+
+typedef F2<Y extends num> = Y Function();
+main() {}
diff --git a/pkg/front_end/testcases/nnbd/issue44455.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd/issue44455.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..101871b
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue44455.dart.textual_outline_modelled.expect
@@ -0,0 +1,7 @@
+class A<X extends F<X>> {}
+
+class A2<X extends F2<X>> {}
+
+main() {}
+typedef F<Y extends num> = Y Function();
+typedef F2<Y extends num> = Y Function();
diff --git a/pkg/front_end/testcases/nnbd/issue44455.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue44455.dart.weak.expect
new file mode 100644
index 0000000..2d1e9e6
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue44455.dart.weak.expect
@@ -0,0 +1,36 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/issue44455.dart:6:9: Error: Type argument 'X' doesn't conform to the bound 'num' of the type variable 'Y' on 'F'.
+// Try changing type arguments so that they conform to the bounds.
+// class A<X extends F<X>> {}
+// ^
+// pkg/front_end/testcases/nnbd/issue44455.dart:5:11: Context: This is the type variable whose bound isn't conformed to.
+// typedef F<Y extends num> = Y Function();
+// ^
+//
+// pkg/front_end/testcases/nnbd/issue44455.dart:8:10: Error: Type argument 'X' doesn't conform to the bound 'num' of the type variable 'Y' on 'F2'.
+// Try changing type arguments so that they conform to the bounds.
+// class A2<X extends F2<X>> {}
+// ^
+// pkg/front_end/testcases/nnbd/issue44455.dart:9:12: Context: This is the type variable whose bound isn't conformed to.
+// typedef F2<Y extends num> = Y Function();
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef F<Y extends core::num = core::num> = () → Y;
+typedef F2<Y extends core::num = core::num> = () → Y;
+class A<X extends () → self::A::X = () → dynamic> extends core::Object {
+ synthetic constructor •() → self::A<self::A::X>
+ : super core::Object::•()
+ ;
+}
+class A2<X extends () → self::A2::X = () → dynamic> extends core::Object {
+ synthetic constructor •() → self::A2<self::A2::X>
+ : super core::Object::•()
+ ;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue44455.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue44455.dart.weak.transformed.expect
new file mode 100644
index 0000000..2d1e9e6
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/issue44455.dart.weak.transformed.expect
@@ -0,0 +1,36 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/issue44455.dart:6:9: Error: Type argument 'X' doesn't conform to the bound 'num' of the type variable 'Y' on 'F'.
+// Try changing type arguments so that they conform to the bounds.
+// class A<X extends F<X>> {}
+// ^
+// pkg/front_end/testcases/nnbd/issue44455.dart:5:11: Context: This is the type variable whose bound isn't conformed to.
+// typedef F<Y extends num> = Y Function();
+// ^
+//
+// pkg/front_end/testcases/nnbd/issue44455.dart:8:10: Error: Type argument 'X' doesn't conform to the bound 'num' of the type variable 'Y' on 'F2'.
+// Try changing type arguments so that they conform to the bounds.
+// class A2<X extends F2<X>> {}
+// ^
+// pkg/front_end/testcases/nnbd/issue44455.dart:9:12: Context: This is the type variable whose bound isn't conformed to.
+// typedef F2<Y extends num> = Y Function();
+// ^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef F<Y extends core::num = core::num> = () → Y;
+typedef F2<Y extends core::num = core::num> = () → Y;
+class A<X extends () → self::A::X = () → dynamic> extends core::Object {
+ synthetic constructor •() → self::A<self::A::X>
+ : super core::Object::•()
+ ;
+}
+class A2<X extends () → self::A2::X = () → dynamic> extends core::Object {
+ synthetic constructor •() → self::A2<self::A2::X>
+ : super core::Object::•()
+ ;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue44595.dart.outline.expect b/pkg/front_end/testcases/nnbd/issue44595.dart.outline.expect
index 59b9de9..d770a61 100644
--- a/pkg/front_end/testcases/nnbd/issue44595.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/issue44595.dart.outline.expect
@@ -4,7 +4,7 @@
import "dart:async";
-typedef Exactly<invariant T extends dynamic = dynamic> = (T%) → T%;
+typedef Exactly<invariant T extends core::Object? = dynamic> = (T%) → T%;
extension _extension#0<T extends core::Object? = dynamic> on T% {
method checkStaticType = self::_extension#0|checkStaticType;
tearoff checkStaticType = self::_extension#0|get#checkStaticType;
diff --git a/pkg/front_end/testcases/nnbd/issue44595.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue44595.dart.strong.expect
index 2c6d5bc..e9cfab0 100644
--- a/pkg/front_end/testcases/nnbd/issue44595.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue44595.dart.strong.expect
@@ -4,7 +4,7 @@
import "dart:async";
-typedef Exactly<invariant T extends dynamic = dynamic> = (T%) → T%;
+typedef Exactly<invariant T extends core::Object? = dynamic> = (T%) → T%;
extension _extension#0<T extends core::Object? = dynamic> on T% {
method checkStaticType = self::_extension#0|checkStaticType;
tearoff checkStaticType = self::_extension#0|get#checkStaticType;
diff --git a/pkg/front_end/testcases/nnbd/issue44595.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue44595.dart.strong.transformed.expect
index 5861f8c..ef34905 100644
--- a/pkg/front_end/testcases/nnbd/issue44595.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue44595.dart.strong.transformed.expect
@@ -5,7 +5,7 @@
import "dart:async";
-typedef Exactly<invariant T extends dynamic = dynamic> = (T%) → T%;
+typedef Exactly<invariant T extends core::Object? = dynamic> = (T%) → T%;
extension _extension#0<T extends core::Object? = dynamic> on T% {
method checkStaticType = self::_extension#0|checkStaticType;
tearoff checkStaticType = self::_extension#0|get#checkStaticType;
diff --git a/pkg/front_end/testcases/nnbd/issue44595.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue44595.dart.weak.expect
index 2c6d5bc..e9cfab0 100644
--- a/pkg/front_end/testcases/nnbd/issue44595.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue44595.dart.weak.expect
@@ -4,7 +4,7 @@
import "dart:async";
-typedef Exactly<invariant T extends dynamic = dynamic> = (T%) → T%;
+typedef Exactly<invariant T extends core::Object? = dynamic> = (T%) → T%;
extension _extension#0<T extends core::Object? = dynamic> on T% {
method checkStaticType = self::_extension#0|checkStaticType;
tearoff checkStaticType = self::_extension#0|get#checkStaticType;
diff --git a/pkg/front_end/testcases/nnbd/issue44595.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue44595.dart.weak.transformed.expect
index 5861f8c..ef34905 100644
--- a/pkg/front_end/testcases/nnbd/issue44595.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue44595.dart.weak.transformed.expect
@@ -5,7 +5,7 @@
import "dart:async";
-typedef Exactly<invariant T extends dynamic = dynamic> = (T%) → T%;
+typedef Exactly<invariant T extends core::Object? = dynamic> = (T%) → T%;
extension _extension#0<T extends core::Object? = dynamic> on T% {
method checkStaticType = self::_extension#0|checkStaticType;
tearoff checkStaticType = self::_extension#0|get#checkStaticType;
diff --git a/pkg/front_end/testcases/nnbd_mixed/cyclic_typedef.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/cyclic_typedef.dart.weak.expect
index 6fb923f..c05d772 100644
--- a/pkg/front_end/testcases/nnbd_mixed/cyclic_typedef.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/cyclic_typedef.dart.weak.expect
@@ -38,6 +38,13 @@
static method main() → dynamic {}
library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/cyclic_typedef_lib.dart:10:13: Error: Type variables can't have generic function types in their bounds.
+// class Hest1<TypeX extends Fisk1> {}
+// ^^^^^
+//
import self as self2;
import "cyclic_typedef.dart" as self;
import "dart:core" as core;
@@ -45,7 +52,7 @@
import "org-dartlang-testcase:///cyclic_typedef.dart";
typedef Fisk2 = <TypeY extends self::Hest2<dynamic> = dynamic>() → void;
-class Hest1<TypeX extends <TypeY extends core::Object? = dynamic>() → void = <TypeY extends core::Object? = dynamic>() → void> extends core::Object {
+class Hest1<TypeX extends <TypeY extends core::Object? = dynamic>() → void = dynamic> extends core::Object {
synthetic constructor •() → self2::Hest1<self2::Hest1::TypeX>
: super core::Object::•()
;
diff --git a/pkg/front_end/testcases/nnbd_mixed/cyclic_typedef.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/cyclic_typedef.dart.weak.transformed.expect
index 6fb923f..c05d772 100644
--- a/pkg/front_end/testcases/nnbd_mixed/cyclic_typedef.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/cyclic_typedef.dart.weak.transformed.expect
@@ -38,6 +38,13 @@
static method main() → dynamic {}
library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd_mixed/cyclic_typedef_lib.dart:10:13: Error: Type variables can't have generic function types in their bounds.
+// class Hest1<TypeX extends Fisk1> {}
+// ^^^^^
+//
import self as self2;
import "cyclic_typedef.dart" as self;
import "dart:core" as core;
@@ -45,7 +52,7 @@
import "org-dartlang-testcase:///cyclic_typedef.dart";
typedef Fisk2 = <TypeY extends self::Hest2<dynamic> = dynamic>() → void;
-class Hest1<TypeX extends <TypeY extends core::Object? = dynamic>() → void = <TypeY extends core::Object? = dynamic>() → void> extends core::Object {
+class Hest1<TypeX extends <TypeY extends core::Object? = dynamic>() → void = dynamic> extends core::Object {
synthetic constructor •() → self2::Hest1<self2::Hest1::TypeX>
: super core::Object::•()
;
diff --git a/pkg/kernel/lib/src/bounds_checks.dart b/pkg/kernel/lib/src/bounds_checks.dart
index dcbb5d9..4aa0115 100644
--- a/pkg/kernel/lib/src/bounds_checks.dart
+++ b/pkg/kernel/lib/src/bounds_checks.dart
@@ -350,7 +350,11 @@
return const <TypeArgumentIssue>[];
}
- if (variables.isEmpty) return const <TypeArgumentIssue>[];
+ if (variables.isEmpty) {
+ return typedefRhsResult.isNotEmpty
+ ? typedefRhsResult
+ : const <TypeArgumentIssue>[];
+ }
List<TypeArgumentIssue> result = <TypeArgumentIssue>[];
List<TypeArgumentIssue> argumentsResult = <TypeArgumentIssue>[];
diff --git a/pkg/nnbd_migration/test/already_migrated_code_decorator_test.dart b/pkg/nnbd_migration/test/already_migrated_code_decorator_test.dart
index fdc03f1..b4d8508 100644
--- a/pkg/nnbd_migration/test/already_migrated_code_decorator_test.dart
+++ b/pkg/nnbd_migration/test/already_migrated_code_decorator_test.dart
@@ -9,6 +9,7 @@
import 'package:analyzer/source/line_info.dart';
import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/dart/element/type.dart';
+import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/generated/testing/element_factory.dart';
import 'package:analyzer/src/generated/testing/test_type_provider.dart';
import 'package:analyzer/src/generated/utilities_dart.dart';
@@ -412,6 +413,7 @@
}
void test_getImmediateSupertypes_generic() {
+ var library = _LibraryElementMock();
var t = ElementFactory.typeParameterElement('T');
var class_ = element = ElementFactory.classElement3(
name: 'C',
@@ -420,7 +422,7 @@
t.instantiate(nullabilitySuffix: suffix),
),
);
- class_.enclosingElement = ElementFactory.compilationUnit('test.dart');
+ class_.enclosingElement = library.definingCompilationUnit;
var decoratedSupertypes = decorator.getImmediateSupertypes(class_).toList();
expect(decoratedSupertypes, hasLength(1));
checkIterable(
@@ -432,10 +434,11 @@
}
void test_getImmediateSupertypes_interface() {
+ var library = _LibraryElementMock();
var class_ =
element = ElementFactory.classElement('C', typeProvider.objectType);
class_.interfaces = [typeProvider.numType];
- class_.enclosingElement = ElementFactory.compilationUnit('test.dart');
+ class_.enclosingElement = library.definingCompilationUnit;
var decoratedSupertypes = decorator.getImmediateSupertypes(class_).toList();
expect(decoratedSupertypes, hasLength(2));
checkObject(decoratedSupertypes[0], checkExplicitlyNonNullable,
@@ -445,10 +448,11 @@
}
void test_getImmediateSupertypes_mixin() {
+ var library = _LibraryElementMock();
var class_ =
element = ElementFactory.classElement('C', typeProvider.objectType);
class_.mixins = [typeProvider.numType];
- class_.enclosingElement = ElementFactory.compilationUnit('test.dart');
+ class_.enclosingElement = library.definingCompilationUnit;
var decoratedSupertypes = decorator.getImmediateSupertypes(class_).toList();
expect(decoratedSupertypes, hasLength(2));
checkObject(decoratedSupertypes[0], checkExplicitlyNonNullable,
@@ -458,9 +462,10 @@
}
void test_getImmediateSupertypes_superclassConstraint() {
+ var library = _LibraryElementMock();
var class_ = element = ElementFactory.mixinElement(
name: 'C', constraints: [typeProvider.numType]);
- class_.enclosingElement = ElementFactory.compilationUnit('test.dart');
+ class_.enclosingElement = library.definingCompilationUnit;
var decoratedSupertypes = decorator.getImmediateSupertypes(class_).toList();
expect(decoratedSupertypes, hasLength(1));
checkNum(decoratedSupertypes[0], checkExplicitlyNonNullable,
@@ -468,9 +473,10 @@
}
void test_getImmediateSupertypes_supertype() {
+ var library = _LibraryElementMock();
var class_ =
element = ElementFactory.classElement('C', typeProvider.objectType);
- class_.enclosingElement = ElementFactory.compilationUnit('test.dart');
+ class_.enclosingElement = library.definingCompilationUnit;
var decoratedSupertypes = decorator.getImmediateSupertypes(class_).toList();
expect(decoratedSupertypes, hasLength(1));
// TODO(paulberry): displayName should be 'Object supertype of C'
@@ -505,6 +511,47 @@
: super(NullabilitySuffix.star);
}
+class _CompilationUnitElementMock implements CompilationUnitElementImpl {
+ @override
+ final LibraryElement enclosingElement;
+
+ @override
+ final Source source;
+
+ _CompilationUnitElementMock(this.enclosingElement, this.source);
+
+ noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
+}
+
+class _LibraryElementMock implements LibraryElementImpl {
+ @override
+ CompilationUnitElement definingCompilationUnit;
+
+ @override
+ Source source;
+
+ _LibraryElementMock() {
+ source = _SourceMock();
+ definingCompilationUnit = _CompilationUnitElementMock(this, source);
+ }
+
+ @override
+ Element get enclosingElement => null;
+
+ @override
+ bool get isNonNullableByDefault => false;
+
+ @override
+ noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
+}
+
class _MockElement implements Element {
noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
}
+
+class _SourceMock implements Source {
+ String get fullName => '/test.dart';
+
+ @override
+ noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
+}
diff --git a/pkg/vm_service/CHANGELOG.md b/pkg/vm_service/CHANGELOG.md
index a9229ae..f6a97c1 100644
--- a/pkg/vm_service/CHANGELOG.md
+++ b/pkg/vm_service/CHANGELOG.md
@@ -1,5 +1,12 @@
# Changelog
+## 6.1.0-nullsafety.0
+- Added `identityHashCode` property to `HeapSnapshotObject`, which can be used to compare
+ objects across heap snapshots.
+- Added `successors` iterable to `HeapSnapshotObject`, which provides a convenient way to
+ access children of a given object.
+- Added `klass` getter to `HeapSnapshotObject`.
+
## 6.0.1-nullsafety.1
- Fix issue where some `Instance` properties were not being populated correctly.
diff --git a/pkg/vm_service/lib/src/snapshot_graph.dart b/pkg/vm_service/lib/src/snapshot_graph.dart
index 7e93eed..4db040a 100644
--- a/pkg/vm_service/lib/src/snapshot_graph.dart
+++ b/pkg/vm_service/lib/src/snapshot_graph.dart
@@ -15,6 +15,9 @@
_ReadStream(this._chunks);
+ bool get atEnd => ((_byteIndex >= _chunks[_chunkIndex].lengthInBytes) &&
+ (_chunkIndex + 1 >= _chunks.length));
+
int readByte() {
while (_byteIndex >= _chunks[_chunkIndex].lengthInBytes) {
_chunkIndex++;
@@ -117,6 +120,9 @@
/// A representation of a class type captured in a memory snapshot.
class HeapSnapshotClass {
+ /// The class ID representing this type.
+ int get classId => _classId;
+
/// The simple (not qualified) name of the class.
String get name => _name;
@@ -129,12 +135,13 @@
/// The list of fields in the class.
List<HeapSnapshotField> get fields => _fields;
+ final int _classId;
String _name = '';
String _libraryName = '';
late final Uri _libraryUri;
final List<HeapSnapshotField> _fields = <HeapSnapshotField>[];
- HeapSnapshotClass._read(_ReadStream reader) {
+ HeapSnapshotClass._read(this._classId, _ReadStream reader) {
// flags (reserved).
reader.readUnsigned();
@@ -148,6 +155,18 @@
_populateFields(reader);
}
+ HeapSnapshotClass._root()
+ : _classId = 0,
+ _name = 'Root',
+ _libraryName = '',
+ _libraryUri = Uri();
+
+ HeapSnapshotClass._sentinel()
+ : _classId = 0,
+ _name = 'Sentinel',
+ _libraryName = '',
+ _libraryUri = Uri();
+
void _populateFields(_ReadStream reader) {
final fieldCount = reader.readUnsigned();
for (int i = 0; i < fieldCount; ++i) {
@@ -161,6 +180,14 @@
/// The class ID representing the type of this object.
int get classId => _classId;
+ /// The class representing the type of this object.
+ HeapSnapshotClass get klass {
+ if (_classId <= 0) {
+ return HeapSnapshotClass._sentinel();
+ }
+ return _graph._classes[_classId];
+ }
+
/// The space used by this object in bytes.
int get shallowSize => _shallowSize;
@@ -170,22 +197,54 @@
/// A list of 1-origin indicies into [HeapSnapshotGraph.objects].
List<int> get references => _references;
+ /// The identity hash code of this object.
+ ///
+ /// If `identityHashCode` is 0, either the snapshot did not contain the list
+ /// of identity hash codes or this object cannot be compared across
+ /// snapshots.
+ int get identityHashCode => _identityHashCode;
+
+ Iterable<HeapSnapshotObject> get successors sync* {
+ final startSuccessorIndex = _graph._firstSuccessors[_oid];
+ final limitSuccessorIndex = _graph._firstSuccessors[_oid + 1];
+
+ for (int nextSuccessorIndex = startSuccessorIndex;
+ nextSuccessorIndex < limitSuccessorIndex;
+ ++nextSuccessorIndex) {
+ final successorId = _graph._successors[nextSuccessorIndex];
+ yield _graph.objects[successorId];
+ }
+ }
+
+ final HeapSnapshotGraph _graph;
+ final int _oid;
int _classId = -1;
int _shallowSize = -1;
+ int _identityHashCode = 0;
late final dynamic _data;
final List<int> _references = <int>[];
- HeapSnapshotObject._read(_ReadStream reader) {
+ HeapSnapshotObject._sentinel(this._graph)
+ : _oid = 0,
+ _data = HeapSnapshotObjectNoData() {
+ _graph._firstSuccessors[_oid] = _graph._eid;
+ }
+
+ HeapSnapshotObject._read(this._graph, this._oid, _ReadStream reader) {
_classId = reader.readUnsigned();
_shallowSize = reader.readUnsigned();
_data = _getNonReferenceData(reader);
+ _graph._firstSuccessors[_oid] = _graph._eid;
_populateReferences(reader);
}
void _populateReferences(_ReadStream reader) {
final referencesCount = reader.readUnsigned();
for (int i = 0; i < referencesCount; ++i) {
- _references.add(reader.readUnsigned());
+ int childOid = reader.readUnsigned();
+ _references.add(childOid);
+ _graph._successors[_graph._eid] = childOid;
+ _graph._eid++;
}
}
}
@@ -249,6 +308,10 @@
final List<HeapSnapshotExternalProperty> _externalProperties =
<HeapSnapshotExternalProperty>[];
+ late Uint32List _firstSuccessors;
+ late Uint32List _successors;
+ int _eid = 0;
+
/// Requests a heap snapshot for a given isolate and builds a
/// [HeapSnapshotGraph].
///
@@ -290,23 +353,31 @@
_capacity = reader.readUnsigned();
_externalSize = reader.readUnsigned();
_populateClasses(reader);
- _referenceCount = reader.readUnsigned();
_populateObjects(reader);
_populateExternalProperties(reader);
+ _populateIdentityHashCodes(reader);
}
void _populateClasses(_ReadStream reader) {
final classCount = reader.readUnsigned();
- for (int i = 0; i < classCount; ++i) {
- _classes.add(HeapSnapshotClass._read(reader));
+ _classes.add(HeapSnapshotClass._root());
+ for (int i = 1; i <= classCount; ++i) {
+ final klass = HeapSnapshotClass._read(i, reader);
+ _classes.add(klass);
}
}
void _populateObjects(_ReadStream reader) {
+ _referenceCount = reader.readUnsigned();
final objectCount = reader.readUnsigned();
- for (int i = 0; i < objectCount; ++i) {
- _objects.add(HeapSnapshotObject._read(reader));
+ _firstSuccessors = _newUint32Array(objectCount + 2);
+ _successors = _newUint32Array(_referenceCount);
+
+ _objects.add(HeapSnapshotObject._sentinel(this));
+ for (int i = 1; i <= objectCount; ++i) {
+ _objects.add(HeapSnapshotObject._read(this, i, reader));
}
+ _firstSuccessors[objectCount + 1] = _eid;
}
void _populateExternalProperties(_ReadStream reader) {
@@ -315,6 +386,29 @@
_externalProperties.add(HeapSnapshotExternalProperty._read(reader));
}
}
+
+ void _populateIdentityHashCodes(_ReadStream reader) {
+ if (reader.atEnd) {
+ // Older VMs don't include identity hash codes.
+ return;
+ }
+ final objectCount = _objects.length;
+ for (int i = 1; i < objectCount; ++i) {
+ _objects[i]._identityHashCode = reader.readUnsigned();
+ }
+ }
+
+ Uint32List _newUint32Array(int size) {
+ try {
+ return Uint32List(size);
+ } on ArgumentError {
+ // JS throws a misleading invalid argument error. Convert to a more
+ // user-friendly message.
+ throw Exception(
+ 'OutOfMemoryError: Not enough memory available to analyze the snapshot.',
+ );
+ }
+ }
}
const _kNoData = 0;
diff --git a/pkg/vm_service/pubspec.yaml b/pkg/vm_service/pubspec.yaml
index 7bd051f..3e87a37 100644
--- a/pkg/vm_service/pubspec.yaml
+++ b/pkg/vm_service/pubspec.yaml
@@ -3,7 +3,7 @@
A library to communicate with a service implementing the Dart VM
service protocol.
-version: 6.0.1-nullsafety.1
+version: 6.1.0-nullsafety.0
homepage: https://github.com/dart-lang/sdk/tree/master/pkg/vm_service
diff --git a/pkg/vm_service/test/common/test_helper.dart b/pkg/vm_service/test/common/test_helper.dart
index 634ec64..cd6a983 100644
--- a/pkg/vm_service/test/common/test_helper.dart
+++ b/pkg/vm_service/test/common/test_helper.dart
@@ -133,7 +133,7 @@
fullArgs.add('--pause-isolates-on-start');
}
if (pause_on_exit) {
- fullArgs.add('--pause-isolates-on-io.exit');
+ fullArgs.add('--pause-isolates-on-exit');
}
if (!useAuthToken) {
fullArgs.add('--disable-service-auth-codes');
diff --git a/pkg/vm_service/test/heap_snapshot_graph_test.dart b/pkg/vm_service/test/heap_snapshot_graph_test.dart
index b9fbe10..51490ec 100644
--- a/pkg/vm_service/test/heap_snapshot_graph_test.dart
+++ b/pkg/vm_service/test/heap_snapshot_graph_test.dart
@@ -44,7 +44,8 @@
int actualShallowSize = 0;
int actualRefCount = 0;
snapshotGraph.objects.forEach((HeapSnapshotObject o) {
- expect(o.classId >= 0, isTrue);
+ // -1 is the CID used by the sentinel.
+ expect(o.classId >= -1, isTrue);
expect(o.data, isNotNull);
expect(o.references, isNotNull);
actualShallowSize += o.shallowSize;
@@ -91,7 +92,7 @@
foosFound = 0;
snapshotGraph.objects.forEach((HeapSnapshotObject o) {
if (o.classId == 0) return;
- if (o.classId - 1 == fooClassId) {
+ if (o.classId == fooClassId) {
foosFound++;
}
});
diff --git a/pkg/vm_service/test/object_graph_identity_hash_test.dart b/pkg/vm_service/test/object_graph_identity_hash_test.dart
new file mode 100644
index 0000000..da61a9d
--- /dev/null
+++ b/pkg/vm_service/test/object_graph_identity_hash_test.dart
@@ -0,0 +1,159 @@
+// Copyright (c) 2021, 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.
+
+import 'dart:collection';
+
+import 'package:vm_service/vm_service.dart';
+import 'package:test/test.dart';
+import 'common/service_test_common.dart';
+import 'common/test_helper.dart';
+
+class Foo {}
+
+class Bar {}
+
+class Container1 {
+ @pragma("vm:entry-point")
+ Foo foo = Foo();
+ @pragma("vm:entry-point")
+ Bar bar = Bar();
+}
+
+class Container2 {
+ Container2(this.foo);
+
+ @pragma("vm:entry-point")
+ Foo foo;
+ @pragma("vm:entry-point")
+ Bar bar = Bar();
+}
+
+class Container3 {
+ @pragma("vm:entry-point")
+ int number = 42;
+ @pragma("vm:entry-point")
+ double doub = 3.14;
+ @pragma("vm:entry-point")
+ String foo = 'foobar';
+ @pragma("vm:entry-point")
+ bool bar = false;
+ @pragma("vm:entry-point")
+ late Map baz;
+ @pragma("vm:entry-point")
+ late LinkedHashMap linkedBaz;
+ @pragma("vm:entry-point")
+ late List list;
+ @pragma("vm:entry-point")
+ late List unmodifiableList;
+
+ Container3() {
+ baz = {
+ 'a': 'b',
+ };
+ linkedBaz = LinkedHashMap.from(baz);
+ list = [1, 2, 3];
+ unmodifiableList = List.empty();
+ }
+}
+
+late Container1 c1;
+late Container2 c2;
+late Container3 c3;
+
+void script() {
+ c1 = Container1();
+ c2 = Container2(c1.foo);
+ c3 = Container3();
+}
+
+late HeapSnapshotGraph snapshot1;
+late HeapSnapshotObject snapshot1Foo;
+late HeapSnapshotObject snapshot1Bar;
+
+late HeapSnapshotGraph snapshot2;
+late HeapSnapshotObject snapshot2Foo;
+late HeapSnapshotObject snapshot2Bar;
+
+late HeapSnapshotGraph snapshot3;
+
+final tests = <IsolateTest>[
+ (VmService service, IsolateRef isolate) async {
+ snapshot1 = await HeapSnapshotGraph.getSnapshot(service, isolate);
+
+ Iterable<HeapSnapshotObject> container1s = snapshot1.objects.where(
+ (HeapSnapshotObject obj) => obj.klass.name == 'Container1',
+ );
+ expect(container1s.length, 1);
+
+ final c1Obj = container1s.first;
+
+ snapshot1Foo = c1Obj.successors.firstWhere(
+ (element) => element.klass.name == 'Foo',
+ );
+ expect(
+ snapshot1Foo.identityHashCode != 0,
+ true,
+ );
+
+ snapshot1Bar = c1Obj.successors.firstWhere(
+ (element) => element.klass.name == 'Bar',
+ );
+ expect(
+ snapshot1Bar.identityHashCode != 0,
+ true,
+ );
+ },
+ (VmService service, IsolateRef isolate) async {
+ snapshot2 = await HeapSnapshotGraph.getSnapshot(service, isolate);
+ ;
+ Iterable<HeapSnapshotObject> container2s = snapshot2.objects.where(
+ (HeapSnapshotObject obj) => obj.klass.name == 'Container2',
+ );
+ expect(container2s.length, 1);
+
+ final c2Obj = container2s.first;
+
+ snapshot2Foo = c2Obj.successors.firstWhere(
+ (element) => element.klass.name == 'Foo',
+ );
+ expect(
+ snapshot2Foo.identityHashCode != 0,
+ true,
+ );
+ expect(
+ snapshot1Foo.identityHashCode == snapshot2Foo.identityHashCode,
+ true,
+ );
+
+ snapshot2Bar = c2Obj.successors.firstWhere(
+ (element) => element.klass.name == 'Bar',
+ );
+ expect(
+ snapshot2Bar.identityHashCode != 0,
+ true,
+ );
+ expect(
+ snapshot1Bar.identityHashCode != snapshot2Bar.identityHashCode,
+ true,
+ );
+ },
+ (VmService service, IsolateRef isolate) async {
+ snapshot3 = await HeapSnapshotGraph.getSnapshot(service, isolate);
+ Iterable<HeapSnapshotObject> container3s = snapshot3.objects.where(
+ (HeapSnapshotObject obj) => obj.klass.name == 'Container3',
+ );
+ expect(container3s.length, 1);
+ final c3Obj = container3s.first;
+ for (final successor in c3Obj.successors) {
+ expect(successor.identityHashCode, 0);
+ }
+ },
+];
+
+main(args) => runIsolateTests(
+ args,
+ tests,
+ testeeBefore: script,
+ pause_on_exit: true,
+ );
diff --git a/runtime/observatory/lib/object_graph.dart b/runtime/observatory/lib/object_graph.dart
index f0adee0..85f64df 100644
--- a/runtime/observatory/lib/object_graph.dart
+++ b/runtime/observatory/lib/object_graph.dart
@@ -202,11 +202,16 @@
/// An object in a heap snapshot.
abstract class SnapshotObject {
- // If this object has been obtained from [successors] or [predecessors], the
- // name of slot. Otherwise, the empty string.
+ /// The identity hash code of this object, used to compare objects across
+ /// snapshots. If [identityHashCode] is 0, this object cannot be compared to
+ /// other objects.
+ int get identityHashCode;
+
+ /// If this object has been obtained from [successors] or [predecessors], the
+ /// name of slot. Otherwise, the empty string.
String get label;
- // The value for primitives. Otherwise, the class name.
+ /// The value for primitives. Otherwise, the class name.
String get description;
/// [internalSize] + [externalSize].
@@ -255,10 +260,12 @@
class _SnapshotObject implements SnapshotObject {
final int _id;
+ final int identityHashCode;
final _SnapshotGraph _graph;
final String label;
- _SnapshotObject._new(this._id, this._graph, this.label);
+ _SnapshotObject._new(this._id, this._graph, this.label)
+ : identityHashCode = _graph._identityHashes![_id];
bool operator ==(Object other) {
if (other is _SnapshotObject) {
@@ -344,6 +351,7 @@
late SnapshotObject _parent;
late List<SnapshotObject> _children;
+ int get identityHashCode => 0;
String get label => "";
String get description => _description;
SnapshotClass get klass => _klass;
@@ -805,6 +813,9 @@
onProgress.add("Loading external properties...");
await new Future(() => _readExternalProperties(stream!));
+ onProgress.add("Loading object identity hash codes...");
+ await new Future(() => _readObjectIdentityHashes(stream!));
+
stream = null;
onProgress.add("Compute class table...");
@@ -877,6 +888,7 @@
Uint32List? _externalSizes;
Uint32List? _firstSuccs;
Uint32List? _succs;
+ Uint32List? _identityHashes;
// Intermediates.
Uint32List? _vertex;
@@ -1036,6 +1048,15 @@
_externalSizes = externalSizes;
}
+ void _readObjectIdentityHashes(_ReadStream stream) {
+ final N = _N!;
+ final identityHashes = _newUint32Array(N + 1);
+ for (int oid = 1; oid <= N; ++oid) {
+ identityHashes[oid] = stream.readUnsigned();
+ }
+ _identityHashes = identityHashes;
+ }
+
void _computeClassTable() {
final N = _N!;
final classes = _classes!;
diff --git a/runtime/observatory/tests/service/object_graph_identity_hash_test.dart b/runtime/observatory/tests/service/object_graph_identity_hash_test.dart
new file mode 100644
index 0000000..eb7c109
--- /dev/null
+++ b/runtime/observatory/tests/service/object_graph_identity_hash_test.dart
@@ -0,0 +1,160 @@
+// Copyright (c) 2021, 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.
+
+import 'package:observatory/object_graph.dart';
+import 'package:observatory/service_io.dart';
+import 'package:test/test.dart';
+import 'service_test_common.dart';
+import 'test_helper.dart';
+
+class Foo {}
+
+class Bar {}
+
+class Container1 {
+ @pragma("vm:entry-point")
+ Foo foo = Foo();
+ @pragma("vm:entry-point")
+ Bar bar = Bar();
+}
+
+class Container2 {
+ Container2(this.foo);
+
+ @pragma("vm:entry-point")
+ Foo foo;
+ @pragma("vm:entry-point")
+ Bar bar = Bar();
+}
+
+class Container3 {
+ @pragma("vm:entry-point")
+ int number = 42;
+ @pragma("vm:entry-point")
+ double doub = 3.14;
+ @pragma("vm:entry-point")
+ String foo = 'foobar';
+ @pragma("vm:entry-point")
+ bool bar = false;
+ @pragma("vm:entry-point")
+ late Map baz;
+ @pragma("vm:entry-point")
+ late List list;
+ @pragma("vm:entry-point")
+ late List unmodifiableList;
+
+ Container3() {
+ baz = {
+ 'a': 'b',
+ };
+ list = [1, 2, 3];
+ unmodifiableList = List.empty();
+ }
+}
+
+@pragma("vm:entry-point")
+late Container1 c1;
+@pragma("vm:entry-point")
+late Container2 c2;
+@pragma("vm:entry-point")
+late Container3 c3;
+
+void script() {
+ c1 = Container1();
+ c2 = Container2(c1.foo);
+ c3 = Container3();
+}
+
+late SnapshotGraph snapshot1;
+late SnapshotObject snapshot1Foo;
+late SnapshotObject snapshot1Bar;
+
+late SnapshotGraph snapshot2;
+late SnapshotObject snapshot2Foo;
+late SnapshotObject snapshot2Bar;
+
+late SnapshotGraph snapshot3;
+
+final tests = <IsolateTest>[
+ (Isolate isolate) async {
+ snapshot1 = await isolate.fetchHeapSnapshot().done;
+
+ Iterable<SnapshotObject> container1s = snapshot1.objects.where(
+ (SnapshotObject obj) => obj.klass.name == 'Container1',
+ );
+ expect(container1s.length, 1);
+
+ final c1Obj = container1s.first;
+
+ c1Obj.successors.forEach((element) {
+ print(element.klass.name);
+ });
+ snapshot1Foo = c1Obj.successors.firstWhere(
+ (element) => element.klass.name == 'Foo',
+ );
+ expect(
+ snapshot1Foo.identityHashCode != 0,
+ true,
+ );
+
+ snapshot1Bar = c1Obj.successors.firstWhere(
+ (element) => element.klass.name == 'Bar',
+ );
+ expect(
+ snapshot1Bar.identityHashCode != 0,
+ true,
+ );
+ },
+ (Isolate isolate) async {
+ snapshot2 = await isolate.fetchHeapSnapshot().done;
+ Iterable<SnapshotObject> container2s = snapshot2.objects.where(
+ (SnapshotObject obj) => obj.klass.name == 'Container2',
+ );
+ expect(container2s.length, 1);
+
+ final c2Obj = container2s.first;
+
+ snapshot2Foo = c2Obj.successors.firstWhere(
+ (element) => element.klass.name == 'Foo',
+ );
+ expect(
+ snapshot2Foo.identityHashCode != 0,
+ true,
+ );
+ expect(
+ snapshot1Foo.identityHashCode == snapshot2Foo.identityHashCode,
+ true,
+ );
+
+ snapshot2Bar = c2Obj.successors.firstWhere(
+ (element) => element.klass.name == 'Bar',
+ );
+ expect(
+ snapshot2Bar.identityHashCode != 0,
+ true,
+ );
+ expect(
+ snapshot1Bar.identityHashCode != snapshot2Bar.identityHashCode,
+ true,
+ );
+ },
+ (Isolate isolate) async {
+ snapshot3 = await isolate.fetchHeapSnapshot().done;
+ Iterable<SnapshotObject> container3s = snapshot3.objects.where(
+ (SnapshotObject obj) => obj.klass.name == 'Container3',
+ );
+ expect(container3s.length, 1);
+ final c3Obj = container3s.first;
+ for (final successor in c3Obj.successors) {
+ expect(successor.identityHashCode, 0);
+ }
+ },
+];
+
+main(args) => runIsolateTests(
+ args,
+ tests,
+ testeeBefore: script,
+ pause_on_exit: true,
+ );
diff --git a/runtime/observatory_2/lib/object_graph.dart b/runtime/observatory_2/lib/object_graph.dart
index 0e891ce..21b426a 100644
--- a/runtime/observatory_2/lib/object_graph.dart
+++ b/runtime/observatory_2/lib/object_graph.dart
@@ -202,11 +202,16 @@
/// An object in a heap snapshot.
abstract class SnapshotObject {
- // If this object has been obtained from [successors] or [predecessors], the
- // name of slot. Otherwise, the empty string.
+ /// The identity hash code of this object, used to compare objects across
+ /// snapshots. If [identityHashCode] is 0, this object cannot be compared to
+ /// other objects.
+ int get identityHashCode;
+
+ /// If this object has been obtained from [successors] or [predecessors], the
+ /// name of slot. Otherwise, the empty string.
String get label;
- // The value for primitives. Otherwise, the class name.
+ /// The value for primitives. Otherwise, the class name.
String get description;
/// [internalSize] + [externalSize].
@@ -255,10 +260,12 @@
class _SnapshotObject implements SnapshotObject {
final int _id;
+ final int identityHashCode;
final _SnapshotGraph _graph;
final String label;
- _SnapshotObject._new(this._id, this._graph, this.label);
+ _SnapshotObject._new(this._id, this._graph, this.label)
+ : identityHashCode = _graph._identityHashes[_id];
bool operator ==(Object other) {
if (other is _SnapshotObject) {
@@ -344,6 +351,7 @@
SnapshotObject _parent;
List<SnapshotObject> _children;
+ int get identityHashCode => 0;
String get label => null;
String get description => _description;
SnapshotClass get klass => _klass;
@@ -794,6 +802,9 @@
onProgress.add("Loading external properties...");
await new Future(() => _readExternalProperties(stream));
+ onProgress.add("Loading object identity hash codes...");
+ await new Future(() => _readObjectIdentityHashes(stream));
+
stream = null;
onProgress.add("Compute class table...");
@@ -866,6 +877,7 @@
Uint32List _externalSizes;
Uint32List _firstSuccs;
Uint32List _succs;
+ Uint32List _identityHashes;
// Intermediates.
Uint32List _vertex;
@@ -1025,6 +1037,15 @@
_externalSizes = externalSizes;
}
+ void _readObjectIdentityHashes(_ReadStream stream) {
+ final N = _N;
+ final identityHashes = _newUint32Array(N + 1);
+ for (int oid = 1; oid <= N; ++oid) {
+ identityHashes[oid] = stream.readUnsigned();
+ }
+ _identityHashes = identityHashes;
+ }
+
void _computeClassTable() {
final N = _N;
final classes = _classes;
diff --git a/runtime/observatory_2/tests/service_2/object_graph_identity_hash_test.dart b/runtime/observatory_2/tests/service_2/object_graph_identity_hash_test.dart
new file mode 100644
index 0000000..ed5c71b
--- /dev/null
+++ b/runtime/observatory_2/tests/service_2/object_graph_identity_hash_test.dart
@@ -0,0 +1,160 @@
+// Copyright (c) 2021, 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.
+
+import 'package:observatory_2/object_graph.dart';
+import 'package:observatory_2/service_io.dart';
+import 'package:test/test.dart';
+import 'service_test_common.dart';
+import 'test_helper.dart';
+
+class Foo {}
+
+class Bar {}
+
+class Container1 {
+ @pragma("vm:entry-point")
+ Foo foo = Foo();
+ @pragma("vm:entry-point")
+ Bar bar = Bar();
+}
+
+class Container2 {
+ Container2(this.foo);
+
+ @pragma("vm:entry-point")
+ Foo foo;
+ @pragma("vm:entry-point")
+ Bar bar = Bar();
+}
+
+class Container3 {
+ @pragma("vm:entry-point")
+ int number = 42;
+ @pragma("vm:entry-point")
+ double doub = 3.14;
+ @pragma("vm:entry-point")
+ String foo = 'foobar';
+ @pragma("vm:entry-point")
+ bool bar = false;
+ @pragma("vm:entry-point")
+ Map baz;
+ @pragma("vm:entry-point")
+ List list;
+ @pragma("vm:entry-point")
+ List unmodifiableList;
+
+ Container3() {
+ baz = {
+ 'a': 'b',
+ };
+ list = [1, 2, 3];
+ unmodifiableList = List.empty();
+ }
+}
+
+@pragma("vm:entry-point")
+Container1 c1;
+@pragma("vm:entry-point")
+Container2 c2;
+@pragma("vm:entry-point")
+Container3 c3;
+
+void script() {
+ c1 = Container1();
+ c2 = Container2(c1.foo);
+ c3 = Container3();
+}
+
+SnapshotGraph snapshot1;
+SnapshotObject snapshot1Foo;
+SnapshotObject snapshot1Bar;
+
+SnapshotGraph snapshot2;
+SnapshotObject snapshot2Foo;
+SnapshotObject snapshot2Bar;
+
+SnapshotGraph snapshot3;
+
+final tests = <IsolateTest>[
+ (Isolate isolate) async {
+ snapshot1 = await isolate.fetchHeapSnapshot().done;
+
+ Iterable<SnapshotObject> container1s = snapshot1.objects.where(
+ (SnapshotObject obj) => obj.klass.name == 'Container1',
+ );
+ expect(container1s.length, 1);
+
+ final c1Obj = container1s.first;
+
+ c1Obj.successors.forEach((element) {
+ print(element.klass.name);
+ });
+ snapshot1Foo = c1Obj.successors.firstWhere(
+ (element) => element.klass.name == 'Foo',
+ );
+ expect(
+ snapshot1Foo.identityHashCode != 0,
+ true,
+ );
+
+ snapshot1Bar = c1Obj.successors.firstWhere(
+ (element) => element.klass.name == 'Bar',
+ );
+ expect(
+ snapshot1Bar.identityHashCode != 0,
+ true,
+ );
+ },
+ (Isolate isolate) async {
+ snapshot2 = await isolate.fetchHeapSnapshot().done;
+ Iterable<SnapshotObject> container2s = snapshot2.objects.where(
+ (SnapshotObject obj) => obj.klass.name == 'Container2',
+ );
+ expect(container2s.length, 1);
+
+ final c2Obj = container2s.first;
+
+ snapshot2Foo = c2Obj.successors.firstWhere(
+ (element) => element.klass.name == 'Foo',
+ );
+ expect(
+ snapshot2Foo.identityHashCode != 0,
+ true,
+ );
+ expect(
+ snapshot1Foo.identityHashCode == snapshot2Foo.identityHashCode,
+ true,
+ );
+
+ snapshot2Bar = c2Obj.successors.firstWhere(
+ (element) => element.klass.name == 'Bar',
+ );
+ expect(
+ snapshot2Bar.identityHashCode != 0,
+ true,
+ );
+ expect(
+ snapshot1Bar.identityHashCode != snapshot2Bar.identityHashCode,
+ true,
+ );
+ },
+ (Isolate isolate) async {
+ snapshot3 = await isolate.fetchHeapSnapshot().done;
+ Iterable<SnapshotObject> container3s = snapshot3.objects.where(
+ (SnapshotObject obj) => obj.klass.name == 'Container3',
+ );
+ expect(container3s.length, 1);
+ final c3Obj = container3s.first;
+ for (final successor in c3Obj.successors) {
+ expect(successor.identityHashCode, 0);
+ }
+ },
+];
+
+main(args) => runIsolateTests(
+ args,
+ tests,
+ testeeBefore: script,
+ pause_on_exit: true,
+ );
diff --git a/runtime/vm/class_table.cc b/runtime/vm/class_table.cc
index ac501cf..248cf45 100644
--- a/runtime/vm/class_table.cc
+++ b/runtime/vm/class_table.cc
@@ -482,7 +482,14 @@
if (HasValidClassAt(cid)) {
cls = At(cid);
ASSERT(cls.IsClass());
+#if defined(DART_PRECOMPILER)
+ // Precompiler can drop classes and set their id() to kIllegalCid.
+ // It still leaves them in the class table so dropped program
+ // structure could still be accessed while writing debug info.
+ ASSERT((cls.id() == cid) || (cls.id() == kIllegalCid));
+#else
ASSERT(cls.id() == cid);
+#endif // defined(DART_PRECOMPILER)
}
}
}
diff --git a/runtime/vm/compiler/aot/precompiler.cc b/runtime/vm/compiler/aot/precompiler.cc
index 28b5d0f..392fd84 100644
--- a/runtime/vm/compiler/aot/precompiler.cc
+++ b/runtime/vm/compiler/aot/precompiler.cc
@@ -715,11 +715,13 @@
}
}
- const Array& inlined_functions =
- Array::Handle(Z, code.inlined_id_to_function());
- for (intptr_t i = 0; i < inlined_functions.Length(); i++) {
- target ^= inlined_functions.At(i);
- AddTypesOf(target);
+ if (!FLAG_dwarf_stack_traces_mode) {
+ const Array& inlined_functions =
+ Array::Handle(Z, code.inlined_id_to_function());
+ for (intptr_t i = 0; i < inlined_functions.Length(); i++) {
+ target ^= inlined_functions.At(i);
+ AddTypesOf(target);
+ }
}
}
@@ -2313,7 +2315,6 @@
THR_Print("Dropping class %" Pd " %s\n", cid, cls.ToCString());
}
- class_table->Unregister(cid);
cls.set_id(kIllegalCid); // We check this when serializing.
}
}
diff --git a/runtime/vm/compiler/backend/il.cc b/runtime/vm/compiler/backend/il.cc
index a276c17..f7cae12 100644
--- a/runtime/vm/compiler/backend/il.cc
+++ b/runtime/vm/compiler/backend/il.cc
@@ -3244,10 +3244,10 @@
UnboxedConstantInstr* uc = NULL;
const Object& val = value()->BoundConstant();
- if (val.IsSmi()) {
+ if (val.IsInteger()) {
const Double& double_val = Double::ZoneHandle(
flow_graph->zone(),
- Double::NewCanonical(Smi::Cast(val).AsDoubleValue()));
+ Double::NewCanonical(Integer::Cast(val).AsDoubleValue()));
uc = new UnboxedConstantInstr(double_val, kUnboxedDouble);
} else if (val.IsDouble()) {
uc = new UnboxedConstantInstr(val, kUnboxedDouble);
@@ -3308,10 +3308,10 @@
}
ConstantInstr* c = value()->definition()->AsConstant();
- if ((c != NULL) && c->value().IsSmi()) {
+ if ((c != NULL) && c->value().IsInteger()) {
if (!is_truncating()) {
// Check that constant fits into 32-bit integer.
- const int64_t value = static_cast<int64_t>(Smi::Cast(c->value()).Value());
+ const int64_t value = Integer::Cast(c->value()).AsInt64Value();
if (!Utils::IsInt(32, value)) {
return this;
}
diff --git a/runtime/vm/compiler/backend/il_arm64.cc b/runtime/vm/compiler/backend/il_arm64.cc
index 0d89c3f..d4b806d 100644
--- a/runtime/vm/compiler/backend/il_arm64.cc
+++ b/runtime/vm/compiler/backend/il_arm64.cc
@@ -4154,10 +4154,6 @@
compiler::Label done;
__ SmiUntag(result, value);
__ BranchIfSmi(value, &done);
- __ ldr(
- result,
- compiler::FieldAddress(value, Mint::value_offset(), compiler::kFourBytes),
- compiler::kFourBytes);
__ LoadFieldFromOffset(result, value, Mint::value_offset());
__ Bind(&done);
}
@@ -4190,11 +4186,8 @@
const Register out = locs()->out(0).reg();
ASSERT(value != out);
- ASSERT(kSmiTagSize == 1);
- const intptr_t shift = kBitsPerWord - kBitsPerByte;
- // TODO(vegorov) implement and use UBFM/SBFM for this.
- __ LslImmediate(out, value, shift);
- __ LsrImmediate(out, out, shift - kSmiTagSize);
+ ASSERT(compiler::target::kSmiBits >= 8);
+ __ ubfiz(out, value, kSmiTagSize, 8);
}
LocationSummary* BoxInteger32Instr::MakeLocationSummary(Zone* zone,
@@ -4215,14 +4208,12 @@
Register out = locs()->out(0).reg();
ASSERT(value != out);
- ASSERT(kSmiTagSize == 1);
- // TODO(vegorov) implement and use UBFM/SBFM for this.
- __ LslImmediate(out, value, 32);
+ ASSERT(compiler::target::kSmiBits >= 32);
if (from_representation() == kUnboxedInt32) {
- __ AsrImmediate(out, out, 32 - kSmiTagSize);
+ __ sbfiz(out, value, kSmiTagSize, 32);
} else {
ASSERT(from_representation() == kUnboxedUint32);
- __ LsrImmediate(out, out, 32 - kSmiTagSize);
+ __ ubfiz(out, value, kSmiTagSize, 32);
}
}
diff --git a/runtime/vm/flags.cc b/runtime/vm/flags.cc
index 3d78c39..d082e9dc 100644
--- a/runtime/vm/flags.cc
+++ b/runtime/vm/flags.cc
@@ -478,11 +478,6 @@
// compile-time, since that compiled code might be re-used in another
// isolate that has not yet initialized the global field.
FLAG_fields_may_be_reset = true;
-
- // To eliminate potential flakiness, we will start by disabling field guards
- // and CHA-based compilations.
- FLAG_use_field_guards = false;
- FLAG_use_cha_deopt = false;
}
#endif // !defined(DART_PRCOMPILED_RUNTIME)
diff --git a/runtime/vm/heap/weak_code.cc b/runtime/vm/heap/weak_code.cc
index a50936a..85bf634 100644
--- a/runtime/vm/heap/weak_code.cc
+++ b/runtime/vm/heap/weak_code.cc
@@ -10,6 +10,7 @@
#include "vm/object.h"
#include "vm/runtime_entry.h"
#include "vm/stack_frame.h"
+#include "vm/thread_registry.h"
namespace dart {
@@ -64,78 +65,88 @@
ASSERT(code_objects.IsNull());
return;
#else
+ // Ensure mutators see empty code_objects only after code was deoptimized.
+ SafepointWriteRwLocker ml(thread, thread->isolate_group()->program_lock());
+
if (code_objects.IsNull()) {
return;
}
- UpdateArrayTo(Object::null_array());
-
- // TODO(dartbug.com/36097): This has to walk all mutator threads when
- // disabling code.
- // Disable all code on stack.
- Code& code = Code::Handle();
- {
- DartFrameIterator iterator(thread,
- StackFrameIterator::kNoCrossThreadIteration);
- StackFrame* frame = iterator.NextFrame();
- while (frame != NULL) {
- code = frame->LookupDartCode();
- if (IsOptimizedCode(code_objects, code)) {
- ReportDeoptimization(code);
- DeoptimizeAt(code, frame);
+ auto isolate_group = IsolateGroup::Current();
+ // Deoptimize stacks and disable code with mutators stopped.
+ isolate_group->RunWithStoppedMutators([&]() {
+ Code& code = Code::Handle();
+ Thread* current = isolate_group->thread_registry()->active_list();
+ while (current != NULL) {
+ // Disable all code on stack.
+ {
+ DartFrameIterator iterator(
+ current, StackFrameIterator::kAllowCrossThreadIteration);
+ StackFrame* frame = iterator.NextFrame();
+ while (frame != NULL) {
+ code = frame->LookupDartCode();
+ if (IsOptimizedCode(code_objects, code)) {
+ ReportDeoptimization(code);
+ DeoptimizeAt(code, frame);
+ }
+ frame = iterator.NextFrame();
+ }
}
- frame = iterator.NextFrame();
- }
- }
-
- // Switch functions that use dependent code to unoptimized code.
- WeakProperty& weak_property = WeakProperty::Handle();
- Object& owner = Object::Handle();
- Function& function = Function::Handle();
- for (intptr_t i = 0; i < code_objects.Length(); i++) {
- weak_property ^= code_objects.At(i);
- code ^= weak_property.key();
- if (code.IsNull()) {
- // Code was garbage collected already.
- continue;
- }
- owner = code.owner();
- if (owner.IsFunction()) {
- function ^= owner.ptr();
- } else if (owner.IsClass()) {
- Class& cls = Class::Handle();
- cls ^= owner.ptr();
- cls.DisableAllocationStub();
- continue;
- } else if (owner.IsNull()) {
- code.Print();
- continue;
+ current = current->next();
}
- // If function uses dependent code switch it to unoptimized.
- if (code.is_optimized() && (function.CurrentCode() == code.ptr())) {
- ReportSwitchingCode(code);
- function.SwitchToUnoptimizedCode();
- } else if (function.unoptimized_code() == code.ptr()) {
- ReportSwitchingCode(code);
- function.SetWasCompiled(false);
- function.ClearICDataArray();
- // Remove the code object from the function. The next time the
- // function is invoked, it will be compiled again.
- function.ClearCode();
- // Invalidate the old code object so existing references to it
- // (from optimized code) will be patched when invoked.
- if (!code.IsDisabled()) {
- code.DisableDartCode();
+ // Switch functions that use dependent code to unoptimized code.
+ WeakProperty& weak_property = WeakProperty::Handle();
+ Object& owner = Object::Handle();
+ Function& function = Function::Handle();
+ for (intptr_t i = 0; i < code_objects.Length(); i++) {
+ weak_property ^= code_objects.At(i);
+ code ^= weak_property.key();
+ if (code.IsNull()) {
+ // Code was garbage collected already.
+ continue;
}
- } else {
- // Make non-OSR code non-entrant.
- if (!code.IsDisabled()) {
+ owner = code.owner();
+ if (owner.IsFunction()) {
+ function ^= owner.ptr();
+ } else if (owner.IsClass()) {
+ Class& cls = Class::Handle();
+ cls ^= owner.ptr();
+ cls.DisableAllocationStub();
+ continue;
+ } else if (owner.IsNull()) {
+ code.Print();
+ continue;
+ }
+
+ // If function uses dependent code switch it to unoptimized.
+ if (code.is_optimized() && (function.CurrentCode() == code.ptr())) {
ReportSwitchingCode(code);
- code.DisableDartCode();
+ function.SwitchToUnoptimizedCode();
+ } else if (function.unoptimized_code() == code.ptr()) {
+ ReportSwitchingCode(code);
+ function.SetWasCompiled(false);
+ function.ClearICDataArray();
+ // Remove the code object from the function. The next time the
+ // function is invoked, it will be compiled again.
+ function.ClearCode();
+ // Invalidate the old code object so existing references to it
+ // (from optimized code) will be patched when invoked.
+ if (!code.IsDisabled()) {
+ code.DisableDartCode();
+ }
+ } else {
+ // Make non-OSR code non-entrant.
+ if (!code.IsDisabled()) {
+ ReportSwitchingCode(code);
+ code.DisableDartCode();
+ }
}
}
- }
+
+ UpdateArrayTo(Object::null_array());
+ });
+
#endif // defined(DART_PRECOMPILED_RUNTIME)
}
diff --git a/runtime/vm/object_graph.cc b/runtime/vm/object_graph.cc
index 489b5e1..f71a174 100644
--- a/runtime/vm/object_graph.cc
+++ b/runtime/vm/object_graph.cc
@@ -1013,6 +1013,90 @@
DISALLOW_COPY_AND_ASSIGN(Pass2Visitor);
};
+class Pass3Visitor : public ObjectVisitor {
+ public:
+ explicit Pass3Visitor(HeapSnapshotWriter* writer)
+ : ObjectVisitor(), isolate_(Isolate::Current()), writer_(writer) {}
+
+ void VisitObject(ObjectPtr obj) {
+ if (obj->IsPseudoObject()) {
+ return;
+ }
+ writer_->WriteUnsigned(GetHash(obj));
+ }
+
+ private:
+ uint32_t GetHash(ObjectPtr obj) {
+ if (!obj->IsHeapObject()) return 0;
+ intptr_t cid = obj->GetClassId();
+ uint32_t hash = 0;
+ switch (cid) {
+ case kForwardingCorpse:
+ case kFreeListElement:
+ case kSmiCid:
+ UNREACHABLE();
+ case kArrayCid:
+ case kBoolCid:
+ case kCodeSourceMapCid:
+ case kCompressedStackMapsCid:
+ case kDoubleCid:
+ case kExternalOneByteStringCid:
+ case kExternalTwoByteStringCid:
+ case kGrowableObjectArrayCid:
+ case kImmutableArrayCid:
+ case kInstructionsCid:
+ case kInstructionsSectionCid:
+ case kLinkedHashMapCid:
+ case kMintCid:
+ case kNeverCid:
+ case kNullCid:
+ case kObjectPoolCid:
+ case kOneByteStringCid:
+ case kPcDescriptorsCid:
+ case kTwoByteStringCid:
+ case kVoidCid:
+ // Don't provide hash codes for objects with the above CIDs in order
+ // to try and avoid having to initialize identity hash codes for common
+ // primitives and types that don't have hash codes.
+ break;
+ default: {
+ hash = GetHashHelper(obj);
+ }
+ }
+ return hash;
+ }
+
+ uint32_t GetHashHelper(ObjectPtr obj) {
+ uint32_t hash;
+#if defined(HASH_IN_OBJECT_HEADER)
+ hash = Object::GetCachedHash(obj);
+ if (hash == 0) {
+ ASSERT(
+ !isolate_->group()->heap()->old_space()->IsObjectFromImagePages(obj));
+ hash = isolate_->random()->NextUInt32();
+ Object::SetCachedHash(obj, hash);
+ hash = Object::GetCachedHash(obj);
+ }
+#else
+ Heap* heap = isolate_->group()->heap();
+ hash = heap->GetHash(obj);
+ if (hash == 0) {
+ ASSERT(!heap->old_space()->IsObjectFromImagePages(obj));
+ heap->SetHash(obj, isolate_->random()->NextUInt32());
+ hash = heap->GetHash(obj);
+ }
+#endif
+ return hash;
+ }
+
+ // TODO(dartbug.com/36097): Once the shared class table contains more
+ // information than just the size (i.e. includes an immutable class
+ // descriptor), we can remove this dependency on the current isolate.
+ Isolate* isolate_;
+ HeapSnapshotWriter* const writer_;
+
+ DISALLOW_COPY_AND_ASSIGN(Pass3Visitor);
+};
void HeapSnapshotWriter::Write() {
HeapIterationScope iteration(thread());
@@ -1181,6 +1265,18 @@
isolate()->group()->VisitWeakPersistentHandles(&visitor);
}
+ {
+ // Identity hash codes
+ Pass3Visitor visitor(this);
+
+ // Handle root object.
+ WriteUnsigned(0);
+
+ // Handle visit rest of the objects.
+ iteration.IterateVMIsolateObjects(&visitor);
+ iteration.IterateObjects(&visitor);
+ }
+
ClearObjectIds();
Flush(true);
}
diff --git a/runtime/vm/raw_object.h b/runtime/vm/raw_object.h
index d209ad2..21f3aaa 100644
--- a/runtime/vm/raw_object.h
+++ b/runtime/vm/raw_object.h
@@ -1461,7 +1461,22 @@
POINTER_FIELD(ArrayPtr, hide_names) // list of names that are hidden.
POINTER_FIELD(LibraryPtr, owner)
VISIT_TO(ObjectPtr, owner)
- ObjectPtr* to_snapshot(Snapshot::Kind kind) { return to(); }
+ ObjectPtr* to_snapshot(Snapshot::Kind kind) {
+ switch (kind) {
+ case Snapshot::kFullAOT:
+ return reinterpret_cast<ObjectPtr*>(&target_);
+ case Snapshot::kFull:
+ case Snapshot::kFullCore:
+ case Snapshot::kFullJIT:
+ return reinterpret_cast<ObjectPtr*>(&owner_);
+ case Snapshot::kMessage:
+ case Snapshot::kNone:
+ case Snapshot::kInvalid:
+ break;
+ }
+ UNREACHABLE();
+ return NULL;
+ }
};
class UntaggedKernelProgramInfo : public UntaggedObject {
diff --git a/runtime/vm/service/heap_snapshot.md b/runtime/vm/service/heap_snapshot.md
index c32d562..b2c167f 100644
--- a/runtime/vm/service/heap_snapshot.md
+++ b/runtime/vm/service/heap_snapshot.md
@@ -41,7 +41,7 @@
// The amount of memory reserved for this heap. At least as large as |shallowSize|.
capacity : uleb128,
- // The sum of sizes of all external properites in this graph.
+ // The sum of sizes of all external properties in this graph.
externalSize : uleb128,
classCount : uleb128,
@@ -54,6 +54,14 @@
externalPropertyCount : uleb128,
externalProperties : SnapshotExternalProperty[externalPropertyCount],
+
+ // The list of identity hash codes corresponding to each entry in objects.
+ // A hash code of zero is invalid and cannot be used to determine equality
+ // between objects. If the same object is included in multiple
+ // HeapSnapshots, it will report the same identityHashCode. The converse is
+ // not true: two different objects may report the same identityHashCode
+ // (with low probability).
+ identityHashCodes: uint32[objectCount],
}
```
diff --git a/runtime/vm/thread_registry.h b/runtime/vm/thread_registry.h
index e0c80a3..c45103e 100644
--- a/runtime/vm/thread_registry.h
+++ b/runtime/vm/thread_registry.h
@@ -58,6 +58,7 @@
friend class IsolateGroup;
friend class SafepointHandler;
friend class Scavenger;
+ friend class WeakCodeReferences;
DISALLOW_COPY_AND_ASSIGN(ThreadRegistry);
};
diff --git a/sdk/lib/_internal/fix_data.yaml b/sdk/lib/_internal/fix_data.yaml
new file mode 100644
index 0000000..2c6e8e9
--- /dev/null
+++ b/sdk/lib/_internal/fix_data.yaml
@@ -0,0 +1,61 @@
+# Copyright (c) 2021, 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.
+
+# TODO(pq): Add link to public user guide when available.
+
+# Please add new fixes to the top of the file, separated by one blank line
+# from other fixes. Add corresponding golden tests to
+# `tests/lib/fix_data_tests` for each new fix.
+
+version: 1
+transforms:
+ - title: "Rename to 'read'"
+ date: 2021-01-25
+ element:
+ uris: [ 'dart:io' ]
+ field: 'READ'
+ inClass: 'FileMode'
+ changes:
+ - kind: 'rename'
+ newName: 'read'
+
+ - title: "Rename to 'write'"
+ date: 2021-01-25
+ element:
+ uris: [ 'dart:io' ]
+ field: 'WRITE'
+ inClass: 'FileMode'
+ changes:
+ - kind: 'rename'
+ newName: 'write'
+
+ - title: "Rename to 'append'"
+ date: 2021-01-25
+ element:
+ uris: [ 'dart:io' ]
+ field: 'APPEND'
+ inClass: 'FileMode'
+ changes:
+ - kind: 'rename'
+ newName: 'append'
+
+ - title: "Rename to 'writeOnly'"
+ date: 2021-01-25
+ element:
+ uris: [ 'dart:io' ]
+ field: 'WRITE_ONLY'
+ inClass: 'FileMode'
+ changes:
+ - kind: 'rename'
+ newName: 'writeOnly'
+
+ - title: "Rename to 'writeOnlyAppend'"
+ date: 2021-01-25
+ element:
+ uris: [ 'dart:io' ]
+ field: 'WRITE_ONLY_APPEND'
+ inClass: 'FileMode'
+ changes:
+ - kind: 'rename'
+ newName: 'writeOnlyAppend'
\ No newline at end of file
diff --git a/sdk/lib/async/zone.dart b/sdk/lib/async/zone.dart
index 5400814..a96cdfb 100644
--- a/sdk/lib/async/zone.dart
+++ b/sdk/lib/async/zone.dart
@@ -88,7 +88,7 @@
typedef RegisterCallbackHandler = ZoneCallback<R> Function<R>(
Zone self, ZoneDelegate parent, Zone zone, R Function() f);
-/// The type of a custom [Zone.registerUnary] implementation function.
+/// The type of a custom [Zone.registerUnaryCallback] implementation function.
///
/// Receives the [Zone] that the handler was registered on as [self],
/// a delegate forwarding to the handlers of [self]'s parent zone as [parent],
@@ -96,7 +96,7 @@
/// which will have [self] as a parent zone.
///
/// The function [f] is the function which was passed to the
-/// which was passed to the [Zone.registerUnary] of [zone].
+/// which was passed to the [Zone.registerUnaryCallback] of [zone].
///
/// The handler should return either the function [f]
/// or another function replacing [f],
@@ -105,7 +105,7 @@
typedef RegisterUnaryCallbackHandler = ZoneUnaryCallback<R, T> Function<R, T>(
Zone self, ZoneDelegate parent, Zone zone, R Function(T arg) f);
-/// The type of a custom [Zone.registerBinary] implementation function.
+/// The type of a custom [Zone.registerBinaryCallback] implementation function.
///
/// Receives the [Zone] that the handler was registered on as [self],
/// a delegate forwarding to the handlers of [self]'s parent zone as [parent],
@@ -113,7 +113,7 @@
/// which will have [self] as a parent zone.
///
/// The function [f] is the function which was passed to the
-/// which was passed to the [Zone.registerBinary] of [zone].
+/// which was passed to the [Zone.registerBinaryCallback] of [zone].
///
/// The handler should return either the function [f]
/// or another function replacing [f],
@@ -187,7 +187,7 @@
/// and the current zone where the error was uncaught as [zone],
/// which will have [self] as a parent zone.
///
-/// The callback function [f] and [duration] are the ones which were
+/// The callback function [f] and [period] are the ones which were
/// passed to [Zone.createPeriodicTimer] of [zone]
/// (possibly through the [Timer.periodic] constructor).
///
@@ -306,7 +306,7 @@
///
/// If the [handleUncaughtError] is provided, the new zone will be a new
/// "error zone" which will prevent errors from flowing into other
- /// error zones (see [errorZone], [sameErrorZone]).
+ /// error zones (see [Zone.errorZone], [Zone.inSameErrorZone]).
const factory ZoneSpecification(
{HandleUncaughtErrorHandler? handleUncaughtError,
RunHandler? run,
diff --git a/sdk/lib/core/errors.dart b/sdk/lib/core/errors.dart
index f0d6178..61aa5e3 100644
--- a/sdk/lib/core/errors.dart
+++ b/sdk/lib/core/errors.dart
@@ -42,7 +42,7 @@
/// effectively making it an alternative result rather than an error.
/// The thrown object can choose to implement [Exception]
/// to document that it represents an exceptional, but not erroneous,
-/// occurrence, but being an [Excpetion] has no other effect
+/// occurrence, but being an [Exception] has no other effect
/// than documentation.
///
/// All non-`null` values can be thrown in Dart.
@@ -575,8 +575,8 @@
/// Error thrown when a lazily initialized variable cannot be initialized.
///
-/// No longer used in null safe Dart code,
-/// replaced by late variables and [LateInitializationError].
+/// This is no longer used in null safe Dart code and is replaced by late
+/// variables and `LateInitializationError`.
// TODO: Deprecate?
class CyclicInitializationError extends Error {
final String? variableName;
diff --git a/sdk/lib/core/list.dart b/sdk/lib/core/list.dart
index 347484e..2f7bec5 100644
--- a/sdk/lib/core/list.dart
+++ b/sdk/lib/core/list.dart
@@ -645,7 +645,7 @@
/// must be non-`null`.
void fillRange(int start, int end, [E? fillValue]);
- /// Replaces a range of elements with the elements of [replacement].
+ /// Replaces a range of elements with the elements of [replacements].
///
/// Removes the objects in the range from [start] to [end],
/// then inserts the elements of [replacements] at [start].
@@ -667,10 +667,10 @@
/// but may be more efficient.
///
/// The list must be growable.
- /// This method does not work on fixed-length lists, even when [replacement]
+ /// This method does not work on fixed-length lists, even when [replacements]
/// has the same number of elements as the replaced range. In that case use
/// [setRange] instead.
- void replaceRange(int start, int end, Iterable<E> replacement);
+ void replaceRange(int start, int end, Iterable<E> replacements);
/// An unmodifiable [Map] view of this list.
///
diff --git a/sdk/lib/core/string_buffer.dart b/sdk/lib/core/string_buffer.dart
index 6826e06..b15cb77 100644
--- a/sdk/lib/core/string_buffer.dart
+++ b/sdk/lib/core/string_buffer.dart
@@ -35,7 +35,7 @@
/// Writes all [objects] separated by [separator].
///
/// Writes each individual object in [objects] in iteration order,
- /// and writes [separtor] between any two objects.
+ /// and writes [separator] between any two objects.
external void writeAll(Iterable<dynamic> objects, [String separator = ""]);
external void writeln([Object? obj = ""]);
diff --git a/tests/language/regress/regress33479_test.dart b/tests/language/regress/regress33479_test.dart
index cb07911..568b6f8 100644
--- a/tests/language/regress/regress33479_test.dart
+++ b/tests/language/regress/regress33479_test.dart
@@ -1,7 +1,9 @@
class Hest<TypeX extends Fisk> {}
+// ^
+// [cfe] Type variables can't have generic function types in their bounds.
typedef Fisk = void Function // don't merge lines
-// [error line 3, column 1, length 346]
+// [error line 5, column 1, length 346]
// [analyzer] COMPILE_TIME_ERROR.TYPE_ALIAS_CANNOT_REFERENCE_ITSELF
// ^
// [cfe] Generic type 'Fisk' can't be used without type arguments in the bounds of its own type variables. It is referenced indirectly through 'Hest'.
@@ -9,8 +11,6 @@
main() {
Hest hest = new Hest();
-// ^
-// [cfe] A generic function type can't be used as a type argument.
-// ^^^^
+// ^
// [cfe] Generic function type 'void Function<TypeY>()' inferred as a type argument.
}
diff --git a/tests/language_2/regress/regress33479_test.dart b/tests/language_2/regress/regress33479_test.dart
index cb07911..568b6f8 100644
--- a/tests/language_2/regress/regress33479_test.dart
+++ b/tests/language_2/regress/regress33479_test.dart
@@ -1,7 +1,9 @@
class Hest<TypeX extends Fisk> {}
+// ^
+// [cfe] Type variables can't have generic function types in their bounds.
typedef Fisk = void Function // don't merge lines
-// [error line 3, column 1, length 346]
+// [error line 5, column 1, length 346]
// [analyzer] COMPILE_TIME_ERROR.TYPE_ALIAS_CANNOT_REFERENCE_ITSELF
// ^
// [cfe] Generic type 'Fisk' can't be used without type arguments in the bounds of its own type variables. It is referenced indirectly through 'Hest'.
@@ -9,8 +11,6 @@
main() {
Hest hest = new Hest();
-// ^
-// [cfe] A generic function type can't be used as a type argument.
-// ^^^^
+// ^
// [cfe] Generic function type 'void Function<TypeY>()' inferred as a type argument.
}
diff --git a/tests/lib/fix_data_tests/README.md b/tests/lib/fix_data_tests/README.md
new file mode 100644
index 0000000..09ff06f
--- /dev/null
+++ b/tests/lib/fix_data_tests/README.md
@@ -0,0 +1,9 @@
+## Directory contents
+
+The Dart files and golden master `.expect` files in this directory are used to
+test the `dart fix` API refactorings used by the SDK.
+
+<!-- TODO(pq): Add link to public user guide when available. -->
+
+See the `sdk/lib/_internal/fix_data.yaml` file for the current Dart SDK API
+refactorings.
diff --git a/tests/lib/fix_data_tests/analysis_options.yaml b/tests/lib/fix_data_tests/analysis_options.yaml
new file mode 100644
index 0000000..7cca7b1
--- /dev/null
+++ b/tests/lib/fix_data_tests/analysis_options.yaml
@@ -0,0 +1 @@
+# This ensures that parent analysis options do not accidentally break the fix tests.
diff --git a/tests/lib/fix_data_tests/file.dart b/tests/lib/fix_data_tests/file.dart
new file mode 100644
index 0000000..0e5435d
--- /dev/null
+++ b/tests/lib/fix_data_tests/file.dart
@@ -0,0 +1,13 @@
+// Copyright (c) 2021, 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.
+
+import 'dart:io';
+
+void main() {
+ print(FileMode.APPEND);
+ print(FileMode.READ);
+ print(FileMode.WRITE);
+ print(FileMode.WRITE_ONLY);
+ print(FileMode.WRITE_ONLY_APPEND);
+}
diff --git a/tests/lib/fix_data_tests/file.dart.expect b/tests/lib/fix_data_tests/file.dart.expect
new file mode 100644
index 0000000..aafbba6
--- /dev/null
+++ b/tests/lib/fix_data_tests/file.dart.expect
@@ -0,0 +1,13 @@
+// Copyright (c) 2021, 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.
+
+import 'dart:io';
+
+void main() {
+ print(FileMode.append);
+ print(FileMode.read);
+ print(FileMode.write);
+ print(FileMode.writeOnly);
+ print(FileMode.writeOnlyAppend);
+}
diff --git a/tools/VERSION b/tools/VERSION
index 0b7de8c..7f25062 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 12
PATCH 0
-PRERELEASE 279
+PRERELEASE 280
PRERELEASE_PATCH 0
\ No newline at end of file
diff --git a/tools/bots/test_matrix.json b/tools/bots/test_matrix.json
index 3d7a822..4093a81 100644
--- a/tools/bots/test_matrix.json
+++ b/tools/bots/test_matrix.json
@@ -3246,6 +3246,27 @@
]
},
{
+ "name": "validate SDK API docs",
+ "script": "out/ReleaseX64/dart-sdk/bin/dartdoc",
+ "arguments": [
+ "--exclude",
+ "dart:ffi,dart:html,dart:web_sql,dart:web_audio,dart:svg,dart:indexed_db,dart:io",
+ "--sdk-docs",
+ "--no-generate-docs"
+ ],
+ "comments1": "TODO(devoncarew): add --errors=unresolved-doc-reference above to fail on unresolved doc references",
+ "comments2": "ambiguous-doc-reference, ambiguous-reexport, broken-link, deprecated, no-library-level-docs, unknown-directive, unknown-macro"
+ },
+ {
+ "name": "validate SDK API data-driven fixes",
+ "script": "out/ReleaseX64/dart-sdk/bin/dart",
+ "arguments": [
+ "fix",
+ "--compare-to-golden",
+ "tests/lib/fix_data_tests"
+ ]
+ },
+ {
"name": "package unit tests",
"arguments": [
"-nunittest-asserts-${mode}-${system}",