From 9456316b512e25004db16dfde2f6c020d96c9e8a Mon Sep 17 00:00:00 2001 From: Konstantin Shcheglov Date: Tue, 10 Dec 2019 01:31:22 +0000 Subject: [PATCH] ErrorReporter should know isNonNullableByDefault. So, when we call DartType.getDisplayString() we know if the type presentation should include nullability suffixes. This fixes many, but not all places where we need to present types. There are places where we don't go through ErrorReporter, but call ErrorListener directly. I plan to replace all these with ErrorReporter. R=brianwilkerson@google.com, paulberry@google.com Bug: https://github.com/dart-lang/sdk/issues/39651 Change-Id: Ic77a556e7834d8f757c8b13eed37ed1d34f47348 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/127744 Reviewed-by: Brian Wilkerson --- .../test/services/linter/linter_test.dart | 6 ++- pkg/analyzer/lib/error/listener.dart | 12 +++-- .../src/dart/analysis/library_analyzer.dart | 12 +++-- .../src/dart/constant/constant_verifier.dart | 14 ++++-- .../lib/src/dart/constant/evaluation.dart | 39 +++++++++++---- .../src/dart/resolver/resolution_visitor.dart | 6 ++- pkg/analyzer/lib/src/generated/constant.dart | 6 ++- .../lib/src/generated/parser_fasta.dart | 6 ++- pkg/analyzer/lib/src/generated/resolver.dart | 6 ++- pkg/analyzer/lib/src/lint/linter.dart | 31 ++++++++++-- .../lib/src/manifest/manifest_validator.dart | 6 ++- .../lib/src/pubspec/pubspec_validator.dart | 6 ++- pkg/analyzer/lib/src/task/options.dart | 6 ++- .../test/error/error_reporter_test.dart | 49 ++++++++++++++++--- .../test/generated/parser_fasta_test.dart | 12 ++++- .../test/generated/type_system_test.dart | 7 ++- .../src/dart/constant/evaluation_test.dart | 6 ++- .../test/src/lint/lint_rule_test.dart | 3 +- .../options/options_rule_validator_test.dart | 7 ++- 19 files changed, 190 insertions(+), 50 deletions(-) diff --git a/pkg/analysis_server/test/services/linter/linter_test.dart b/pkg/analysis_server/test/services/linter/linter_test.dart index 14b005459d33..cbedfc96d049 100644 --- a/pkg/analysis_server/test/services/linter/linter_test.dart +++ b/pkg/analysis_server/test/services/linter/linter_test.dart @@ -31,7 +31,11 @@ class LinterRuleOptionsValidatorTest { setUp() { registerLintRules(); recorder = new RecordingErrorListener(); - reporter = new ErrorReporter(recorder, new _TestSource()); + reporter = new ErrorReporter( + recorder, + new _TestSource(), + isNonNullableByDefault: false, + ); } test_linter_defined_rules() { diff --git a/pkg/analyzer/lib/error/listener.dart b/pkg/analyzer/lib/error/listener.dart index dae835f8299f..6b704795e291 100644 --- a/pkg/analyzer/lib/error/listener.dart +++ b/pkg/analyzer/lib/error/listener.dart @@ -67,6 +67,11 @@ class ErrorReporter { */ 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. */ @@ -77,7 +82,8 @@ class ErrorReporter { * given [_errorListener]. Errors will be reported against the * [_defaultSource] unless another source is provided later. */ - ErrorReporter(this._errorListener, this._defaultSource) { + ErrorReporter(this._errorListener, this._defaultSource, + {this.isNonNullableByDefault = false}) { if (_errorListener == null) { throw ArgumentError("An error listener must be provided"); } else if (_defaultSource == null) { @@ -204,13 +210,13 @@ class ErrorReporter { buffer.write(name); (type as TypeImpl).appendTo( buffer, - withNullability: false, + withNullability: isNonNullableByDefault, skipAllDynamicArguments: false, ); return buffer.toString(); } } - return type.getDisplayString(withNullability: false); + return type.getDisplayString(withNullability: isNonNullableByDefault); } Map> typeGroups = {}; diff --git a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart index da13e3512389..6838dddbedab 100644 --- a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart +++ b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart @@ -138,6 +138,9 @@ class LibraryAnalyzer { } timerLibraryAnalyzerFreshUnit.stop(); + _libraryElement = _elementFactory.libraryOfUri(_library.uriStr); + _libraryScope = LibraryScope(_libraryElement); + // Resolve URIs in directives to corresponding sources. FeatureSet featureSet = units[_library].featureSet; units.forEach((file, unit) { @@ -145,9 +148,6 @@ class LibraryAnalyzer { _resolveUriBasedDirectives(file, unit); }); - _libraryElement = _elementFactory.libraryOfUri(_library.uriStr); - _libraryScope = LibraryScope(_libraryElement); - timerLibraryAnalyzerResolve.start(); _resolveDirectives(units); @@ -465,7 +465,11 @@ class LibraryAnalyzer { ErrorReporter _getErrorReporter(FileState file) { return _errorReporters.putIfAbsent(file, () { RecordingErrorListener listener = _getErrorListener(file); - return ErrorReporter(listener, file.source); + return ErrorReporter( + listener, + file.source, + isNonNullableByDefault: _libraryElement.isNonNullableByDefault, + ); }); } diff --git a/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart b/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart index f99ba55ced2e..c6ef38ea9686 100644 --- a/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart +++ b/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart @@ -458,8 +458,11 @@ class ConstantVerifier extends RecursiveAstVisitor { /// @return the value of the compile time constant DartObjectImpl _validate(Expression expression, ErrorCode errorCode) { RecordingErrorListener errorListener = RecordingErrorListener(); - ErrorReporter subErrorReporter = - ErrorReporter(errorListener, _errorReporter.source); + ErrorReporter subErrorReporter = ErrorReporter( + errorListener, + _errorReporter.source, + isNonNullableByDefault: _currentLibrary.isNonNullableByDefault, + ); DartObjectImpl result = expression.accept(ConstantVisitor(_evaluationEngine, subErrorReporter)); _reportErrors(errorListener.errors, errorCode); @@ -550,8 +553,11 @@ class ConstantVerifier extends RecursiveAstVisitor { // can't be evaluated we'll just report a single error. AnalysisErrorListener errorListener = AnalysisErrorListener.NULL_LISTENER; - ErrorReporter subErrorReporter = - ErrorReporter(errorListener, _errorReporter.source); + ErrorReporter subErrorReporter = ErrorReporter( + errorListener, + _errorReporter.source, + isNonNullableByDefault: _currentLibrary.isNonNullableByDefault, + ); DartObjectImpl result = initializer .accept(ConstantVisitor(_evaluationEngine, subErrorReporter)); if (result == null) { diff --git a/pkg/analyzer/lib/src/dart/constant/evaluation.dart b/pkg/analyzer/lib/src/dart/constant/evaluation.dart index 937979f86dca..171fcb591539 100644 --- a/pkg/analyzer/lib/src/dart/constant/evaluation.dart +++ b/pkg/analyzer/lib/src/dart/constant/evaluation.dart @@ -98,6 +98,10 @@ class ConstantEvaluationEngine { ), experimentStatus = experimentStatus ?? ExperimentStatus(); + bool get _isNonNullableByDefault { + return (typeSystem as TypeSystemImpl).isNonNullableByDefault; + } + /// Check that the arguments to a call to fromEnvironment() are correct. The /// [arguments] are the AST nodes of the arguments. The [argumentValues] are /// the values of the unnamed arguments. The [namedArgumentValues] are the @@ -169,8 +173,11 @@ class ConstantEvaluationEngine { Expression defaultValue = constant.constantInitializer; if (defaultValue != null) { RecordingErrorListener errorListener = RecordingErrorListener(); - ErrorReporter errorReporter = - ErrorReporter(errorListener, constant.source); + ErrorReporter errorReporter = ErrorReporter( + errorListener, + constant.source, + isNonNullableByDefault: _isNonNullableByDefault, + ); DartObjectImpl dartObject = defaultValue.accept(ConstantVisitor(this, errorReporter)); constant.evaluationResult = @@ -184,8 +191,11 @@ class ConstantEvaluationEngine { Expression constantInitializer = constant.constantInitializer; if (constantInitializer != null) { RecordingErrorListener errorListener = RecordingErrorListener(); - ErrorReporter errorReporter = - ErrorReporter(errorListener, constant.source); + ErrorReporter errorReporter = ErrorReporter( + errorListener, + constant.source, + isNonNullableByDefault: _isNonNullableByDefault, + ); DartObjectImpl dartObject = constantInitializer.accept(ConstantVisitor(this, errorReporter)); // Only check the type for truly const declarations (don't check final @@ -235,8 +245,11 @@ class ConstantEvaluationEngine { element.isConst && constNode.arguments != null) { RecordingErrorListener errorListener = RecordingErrorListener(); - ErrorReporter errorReporter = - ErrorReporter(errorListener, constant.source); + ErrorReporter errorReporter = ErrorReporter( + errorListener, + constant.source, + isNonNullableByDefault: _isNonNullableByDefault, + ); ConstantVisitor constantVisitor = ConstantVisitor(this, errorReporter); DartObjectImpl result = evaluateConstructorCall( constNode, @@ -551,8 +564,11 @@ class ConstantEvaluationEngine { // different source. But they still should cause a constant evaluation // error for the current node. var externalErrorListener = BooleanErrorListener(); - var externalErrorReporter = - ErrorReporter(externalErrorListener, constructor.source); + var externalErrorReporter = ErrorReporter( + externalErrorListener, + constructor.source, + isNonNullableByDefault: _isNonNullableByDefault, + ); // Start with final fields that are initialized at their declaration site. List fields = constructor.enclosingElement.fields; @@ -811,8 +827,11 @@ class ConstantEvaluationEngine { ConstantEvaluationTarget constant) { if (constant is VariableElement) { RecordingErrorListener errorListener = RecordingErrorListener(); - ErrorReporter errorReporter = - ErrorReporter(errorListener, constant.source); + ErrorReporter errorReporter = ErrorReporter( + errorListener, + constant.source, + isNonNullableByDefault: _isNonNullableByDefault, + ); // TODO(paulberry): It would be really nice if we could extract enough // information from the 'cycle' argument to provide the user with a // description of the cycle. diff --git a/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart b/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart index 18738ae5686f..adfc270327b6 100644 --- a/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart +++ b/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart @@ -97,7 +97,11 @@ class ResolutionVisitor extends RecursiveAstVisitor { var typeProvider = libraryElement.typeProvider; var unitSource = unitElement.source; var isNonNullableByDefault = featureSet.isEnabled(Feature.non_nullable); - var errorReporter = ErrorReporter(errorListener, unitSource); + var errorReporter = ErrorReporter( + errorListener, + unitSource, + isNonNullableByDefault: isNonNullableByDefault, + ); var typeNameResolver = TypeNameResolver( libraryElement.typeSystem, diff --git a/pkg/analyzer/lib/src/generated/constant.dart b/pkg/analyzer/lib/src/generated/constant.dart index d768b47adbed..832d6896c8b4 100644 --- a/pkg/analyzer/lib/src/generated/constant.dart +++ b/pkg/analyzer/lib/src/generated/constant.dart @@ -129,7 +129,11 @@ class ConstantEvaluator { EvaluationResult evaluate(Expression expression) { RecordingErrorListener errorListener = RecordingErrorListener(); - ErrorReporter errorReporter = ErrorReporter(errorListener, _source); + ErrorReporter errorReporter = ErrorReporter( + errorListener, + _source, + isNonNullableByDefault: _typeSystem.isNonNullableByDefault, + ); DartObjectImpl result = expression.accept(ConstantVisitor( ConstantEvaluationEngine(_typeProvider, DeclaredVariables(), typeSystem: _typeSystem), diff --git a/pkg/analyzer/lib/src/generated/parser_fasta.dart b/pkg/analyzer/lib/src/generated/parser_fasta.dart index e5986a08e314..523c562ef394 100644 --- a/pkg/analyzer/lib/src/generated/parser_fasta.dart +++ b/pkg/analyzer/lib/src/generated/parser_fasta.dart @@ -380,7 +380,11 @@ class _Parser2 extends ParserAdapter { factory _Parser2( Source source, AnalysisErrorListener errorListener, FeatureSet featureSet, {bool allowNativeClause = false}) { - var errorReporter = ErrorReporter(errorListener, source); + var errorReporter = ErrorReporter( + errorListener, + source, + isNonNullableByDefault: featureSet.isEnabled(Feature.non_nullable), + ); return _Parser2._(source, errorReporter, source.uri, featureSet, allowNativeClause: allowNativeClause); } diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart index 71e83f81fad9..9b4e42ab0694 100644 --- a/pkg/analyzer/lib/src/generated/resolver.dart +++ b/pkg/analyzer/lib/src/generated/resolver.dart @@ -2729,7 +2729,11 @@ abstract class ScopedVisitor extends UnifyingAstVisitor { AnalysisErrorListener errorListener, {Scope nameScope}) : source = source, - errorReporter = ErrorReporter(errorListener, source) { + errorReporter = ErrorReporter( + errorListener, + source, + isNonNullableByDefault: definingLibrary.isNonNullableByDefault, + ) { if (nameScope == null) { this.nameScope = LibraryScope(definingLibrary); } else { diff --git a/pkg/analyzer/lib/src/lint/linter.dart b/pkg/analyzer/lib/src/lint/linter.dart index 46bde401d0b1..1c55d2eb83fb 100644 --- a/pkg/analyzer/lib/src/lint/linter.dart +++ b/pkg/analyzer/lib/src/lint/linter.dart @@ -114,7 +114,11 @@ class DartLinter implements AnalysisErrorListener { // processing gets pushed down, this hack can go away.) if (rule.reporter == null && sourceUrl != null) { var source = createSource(sourceUrl); - rule.reporter = ErrorReporter(this, source); + rule.reporter = ErrorReporter( + this, + source, + isNonNullableByDefault: false, + ); } try { spec.accept(visitor); @@ -343,15 +347,24 @@ class LinterContextImpl implements LinterContext { @override LinterConstantEvaluationResult evaluateConstant(Expression node) { - var source = currentUnit.unit.declaredElement.source; + var unitElement = currentUnit.unit.declaredElement; + var source = unitElement.source; + var libraryElement = unitElement.library; + var errorListener = RecordingErrorListener(); + var errorReporter = ErrorReporter( + errorListener, + source, + isNonNullableByDefault: libraryElement.isNonNullableByDefault, + ); + var visitor = ConstantVisitor( ConstantEvaluationEngine( typeProvider, declaredVariables, typeSystem: typeSystem, ), - ErrorReporter(errorListener, source), + errorReporter, ); var value = node.accept(visitor); @@ -364,7 +377,11 @@ class LinterContextImpl implements LinterContext { var libraryElement = unitElement.library; var listener = ConstantAnalysisErrorListener(); - var errorReporter = ErrorReporter(listener, unitElement.source); + var errorReporter = ErrorReporter( + listener, + unitElement.source, + isNonNullableByDefault: libraryElement.isNonNullableByDefault, + ); node.accept( ConstantVerifier( @@ -628,7 +645,11 @@ class SourceLinter implements DartLinter, AnalysisErrorListener { // processing gets pushed down, this hack can go away.) if (rule.reporter == null && sourceUrl != null) { var source = createSource(sourceUrl); - rule.reporter = ErrorReporter(this, source); + rule.reporter = ErrorReporter( + this, + source, + isNonNullableByDefault: false, + ); } try { spec.accept(visitor); diff --git a/pkg/analyzer/lib/src/manifest/manifest_validator.dart b/pkg/analyzer/lib/src/manifest/manifest_validator.dart index b91a4cffe477..afb06f9ac24a 100644 --- a/pkg/analyzer/lib/src/manifest/manifest_validator.dart +++ b/pkg/analyzer/lib/src/manifest/manifest_validator.dart @@ -29,7 +29,11 @@ class ManifestValidator { */ List validate(String contents, bool checkManifest) { RecordingErrorListener recorder = RecordingErrorListener(); - ErrorReporter reporter = ErrorReporter(recorder, source); + ErrorReporter reporter = ErrorReporter( + recorder, + source, + isNonNullableByDefault: false, + ); if (checkManifest) { var document = diff --git a/pkg/analyzer/lib/src/pubspec/pubspec_validator.dart b/pkg/analyzer/lib/src/pubspec/pubspec_validator.dart index 77c19055a2c0..a7a0e3bd1208 100644 --- a/pkg/analyzer/lib/src/pubspec/pubspec_validator.dart +++ b/pkg/analyzer/lib/src/pubspec/pubspec_validator.dart @@ -60,7 +60,11 @@ class PubspecValidator { */ List validate(Map contents) { RecordingErrorListener recorder = RecordingErrorListener(); - ErrorReporter reporter = ErrorReporter(recorder, source); + ErrorReporter reporter = ErrorReporter( + recorder, + source, + isNonNullableByDefault: false, + ); _validateDependencies(reporter, contents); _validateFlutter(reporter, contents); diff --git a/pkg/analyzer/lib/src/task/options.dart b/pkg/analyzer/lib/src/task/options.dart index d4b0ae5a3a80..a12f39132d43 100644 --- a/pkg/analyzer/lib/src/task/options.dart +++ b/pkg/analyzer/lib/src/task/options.dart @@ -425,7 +425,11 @@ class OptionsFileValidator { List validate(YamlMap options) { RecordingErrorListener recorder = RecordingErrorListener(); - ErrorReporter reporter = ErrorReporter(recorder, source); + ErrorReporter reporter = ErrorReporter( + recorder, + source, + isNonNullableByDefault: false, + ); if (AnalysisEngine.ANALYSIS_OPTIONS_FILE == source.shortName) { reporter.reportError(AnalysisError( source, diff --git a/pkg/analyzer/test/error/error_reporter_test.dart b/pkg/analyzer/test/error/error_reporter_test.dart index 1b84665b4ae4..5b5b2225922a 100644 --- a/pkg/analyzer/test/error/error_reporter_test.dart +++ b/pkg/analyzer/test/error/error_reporter_test.dart @@ -24,13 +24,22 @@ class ErrorReporterTest extends DriverResolutionTest { test_creation() async { var source = TestSource(); - expect(ErrorReporter(listener, source), isNotNull); + var reporter = ErrorReporter( + listener, + source, + isNonNullableByDefault: false, + ); + expect(reporter, isNotNull); } test_reportErrorForElement_named() async { await resolveTestCode('class A {}'); var element = findElement.class_('A'); - var reporter = ErrorReporter(listener, element.source); + var reporter = ErrorReporter( + listener, + element.source, + isNonNullableByDefault: false, + ); reporter.reportErrorForElement( StaticWarningCode.CAST_TO_NON_TYPE, element, @@ -48,7 +57,11 @@ import 'dart:math'; '''); var element = findElement.import('dart:math'); - var reporter = ErrorReporter(listener, element.source); + var reporter = ErrorReporter( + listener, + element.source, + isNonNullableByDefault: false, + ); reporter.reportErrorForElement( StaticWarningCode.CAST_TO_NON_TYPE, element, @@ -61,7 +74,11 @@ import 'dart:math'; test_reportErrorForSpan() async { var source = TestSource(); - var reporter = ErrorReporter(listener, source); + var reporter = ErrorReporter( + listener, + source, + isNonNullableByDefault: false, + ); var text = ''' foo: bar @@ -110,7 +127,11 @@ main() { nullabilitySuffix: NullabilitySuffix.none, ); - var reporter = ErrorReporter(listener, firstType.element.source); + var reporter = ErrorReporter( + listener, + firstType.element.source, + isNonNullableByDefault: false, + ); reporter.reportTypeErrorForNode( StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, @@ -145,7 +166,11 @@ main() { nullabilitySuffix: NullabilitySuffix.none, ); - var reporter = ErrorReporter(listener, firstType.element.source); + var reporter = ErrorReporter( + listener, + firstType.element.source, + isNonNullableByDefault: false, + ); reporter.reportTypeErrorForNode( StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, findNode.simple('x'), @@ -174,7 +199,11 @@ main() { var fb = findNode.topLevelVariableDeclaration('fb'); var source = result.unit.declaredElement.source; - var reporter = ErrorReporter(listener, source); + var reporter = ErrorReporter( + listener, + source, + isNonNullableByDefault: false, + ); reporter.reportTypeErrorForNode( StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, findNode.simple('x'), @@ -205,7 +234,11 @@ main() { var bb = findNode.topLevelVariableDeclaration('bb'); var source = result.unit.declaredElement.source; - var reporter = ErrorReporter(listener, source); + var reporter = ErrorReporter( + listener, + source, + isNonNullableByDefault: false, + ); reporter.reportTypeErrorForNode( StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, findNode.simple('x'), diff --git a/pkg/analyzer/test/generated/parser_fasta_test.dart b/pkg/analyzer/test/generated/parser_fasta_test.dart index b76ad9c0e55a..7639d07a5ee7 100644 --- a/pkg/analyzer/test/generated/parser_fasta_test.dart +++ b/pkg/analyzer/test/generated/parser_fasta_test.dart @@ -2088,7 +2088,11 @@ class FastaParserTestCase _fastaTokens = result.tokens; // Run parser - ErrorReporter errorReporter = ErrorReporter(listener, source); + ErrorReporter errorReporter = ErrorReporter( + listener, + source, + isNonNullableByDefault: false, + ); fasta.Parser parser = fasta.Parser(null); AstBuilder astBuilder = AstBuilder(errorReporter, source.uri, true, featureSet); @@ -3244,7 +3248,11 @@ class ParserProxy extends analyzer.ParserAdapter { {bool allowNativeClause = false, int expectedEndOffset}) { TestSource source = TestSource(); var errorListener = GatheringErrorListener(checkRanges: true); - var errorReporter = ErrorReporter(errorListener, source); + var errorReporter = ErrorReporter( + errorListener, + source, + isNonNullableByDefault: false, + ); return ParserProxy._( firstToken, errorReporter, null, errorListener, featureSet, allowNativeClause: allowNativeClause, diff --git a/pkg/analyzer/test/generated/type_system_test.dart b/pkg/analyzer/test/generated/type_system_test.dart index 365c8f9b1ad4..bc6361cdbe4d 100644 --- a/pkg/analyzer/test/generated/type_system_test.dart +++ b/pkg/analyzer/test/generated/type_system_test.dart @@ -1441,8 +1441,11 @@ class GenericFunctionInferenceTest extends AbstractTypeSystemTest { {DartType returnType, bool expectError = false}) { var listener = RecordingErrorListener(); - var reporter = ErrorReporter(listener, - NonExistingSource('/test.dart', toUri('/test.dart'), UriKind.FILE_URI)); + var reporter = ErrorReporter( + listener, + NonExistingSource('/test.dart', toUri('/test.dart'), UriKind.FILE_URI), + isNonNullableByDefault: false, + ); var typeArguments = typeSystem.inferGenericFunctionOrType( typeParameters: ft.typeFormals, diff --git a/pkg/analyzer/test/src/dart/constant/evaluation_test.dart b/pkg/analyzer/test/src/dart/constant/evaluation_test.dart index 1e2aa11f5c59..0f2a4eb60d42 100644 --- a/pkg/analyzer/test/src/dart/constant/evaluation_test.dart +++ b/pkg/analyzer/test/src/dart/constant/evaluation_test.dart @@ -199,7 +199,11 @@ class ConstantVisitorTestSupport extends DriverResolutionTest { var source = this.result.unit.declaredElement.source; var errorListener = GatheringErrorListener(); - var errorReporter = ErrorReporter(errorListener, source); + var errorReporter = ErrorReporter( + errorListener, + source, + isNonNullableByDefault: false, + ); DartObjectImpl result = expression.accept( ConstantVisitor( diff --git a/pkg/analyzer/test/src/lint/lint_rule_test.dart b/pkg/analyzer/test/src/lint/lint_rule_test.dart index 55f62d097259..5d9a51042ded 100644 --- a/pkg/analyzer/test/src/lint/lint_rule_test.dart +++ b/pkg/analyzer/test/src/lint/lint_rule_test.dart @@ -70,7 +70,8 @@ class CollectingReporter extends ErrorReporter { ErrorCode code; CollectingReporter(AnalysisErrorListener listener, Source source) - : super(listener, source); + : super(listener, source, isNonNullableByDefault: false); + void reportErrorForElement(ErrorCode errorCode, Element element, [List arguments]) { code = errorCode; 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 8d5514c15484..991d842e55e1 100644 --- a/pkg/analyzer/test/src/options/options_rule_validator_test.dart +++ b/pkg/analyzer/test/src/options/options_rule_validator_test.dart @@ -38,8 +38,11 @@ class OptionsRuleValidatorTest extends Object with ResourceProviderMixin { */ void assertErrors(String content, List expectedErrorCodes) { GatheringErrorListener listener = GatheringErrorListener(); - ErrorReporter reporter = - ErrorReporter(listener, StringSource(content, 'analysis_options.yaml')); + ErrorReporter reporter = ErrorReporter( + listener, + StringSource(content, 'analysis_options.yaml'), + isNonNullableByDefault: false, + ); validator.validate(reporter, loadYamlNode(content)); listener.assertErrorsWithCodes(expectedErrorCodes); }