From 838e4a22d0c9b8b61b5e721a992416f002194fc6 Mon Sep 17 00:00:00 2001 From: Konstantin Shcheglov Date: Fri, 19 Jul 2024 20:32:37 +0000 Subject: [PATCH] Revert "[analyzer][null-aware-elements] Add NullAwareElement AST node" This reverts commit 2bc2f894db15d62a46edbbafd03a42c2e205eb1d. Reason for revert: breaks Flutter HHH Original change's description: > [analyzer][null-aware-elements] Add NullAwareElement AST node > > Closes https://github.com/dart-lang/sdk/issues/56267 > > Part of https://github.com/dart-lang/sdk/issues/56266 > Part of https://github.com/dart-lang/sdk/issues/55949 > > Change-Id: I7c79d6be312f579e95291f2c2d21e3f996500b87 > Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/376101 > Reviewed-by: Keerti Parthasarathy > Reviewed-by: Konstantin Shcheglov > Commit-Queue: Chloe Stefantsova Change-Id: I31e35eec14585818baccb1d34b823f7f2b6bc4f4 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/376800 Auto-Submit: Konstantin Shcheglov Reviewed-by: Siva Annamalai Commit-Queue: Siva Annamalai Bot-Commit: Rubber Stamper --- pkg/analyzer/lib/dart/ast/ast.dart | 1 - pkg/analyzer/lib/dart/ast/visitor.dart | 27 ----- pkg/analyzer/lib/src/dart/ast/ast.dart | 84 +-------------- .../lib/src/dart/ast/to_source_visitor.dart | 6 -- pkg/analyzer/lib/src/dart/ast/utilities.dart | 16 --- .../lib/src/dart/constant/evaluation.dart | 36 ------- pkg/analyzer/lib/src/fasta/ast_builder.dart | 14 +-- pkg/analyzer/lib/src/generated/resolver.dart | 15 --- pkg/analyzer/lib/src/lint/linter_visitor.dart | 7 -- .../lib/src/summary2/ast_binary_reader.dart | 13 --- .../lib/src/summary2/ast_binary_tag.dart | 1 - .../lib/src/summary2/ast_binary_writer.dart | 10 -- .../lib/src/test_utilities/find_node.dart | 2 - pkg/analyzer/messages.yaml | 2 +- .../dart/parser/null_aware_elements_test.dart | 101 ------------------ .../test/src/dart/parser/test_all.dart | 2 - .../src/summary/resolved_ast_printer.dart | 8 -- .../omit_obvious_local_variable_types.dart | 6 -- 18 files changed, 5 insertions(+), 346 deletions(-) delete mode 100644 pkg/analyzer/test/src/dart/parser/null_aware_elements_test.dart diff --git a/pkg/analyzer/lib/dart/ast/ast.dart b/pkg/analyzer/lib/dart/ast/ast.dart index 2d4a2fd075d0..5717bdd609b5 100644 --- a/pkg/analyzer/lib/dart/ast/ast.dart +++ b/pkg/analyzer/lib/dart/ast/ast.dart @@ -180,7 +180,6 @@ export 'package:analyzer/src/dart/ast/ast.dart' NodeList, NormalFormalParameter, NullAssertPattern, - NullAwareElement, NullCheckPattern, NullLiteral, NullShortableExpression, diff --git a/pkg/analyzer/lib/dart/ast/visitor.dart b/pkg/analyzer/lib/dart/ast/visitor.dart index 9750e661bccb..960a3f7be393 100644 --- a/pkg/analyzer/lib/dart/ast/visitor.dart +++ b/pkg/analyzer/lib/dart/ast/visitor.dart @@ -559,10 +559,6 @@ class GeneralizingAstVisitor implements AstVisitor { @override R? visitNullAssertPattern(NullAssertPattern node) => visitDartPattern(node); - @override - R? visitNullAwareElement(NullAwareElement node) => - visitCollectionElement(node); - @override R? visitNullCheckPattern(NullCheckPattern node) => visitDartPattern(node); @@ -1475,12 +1471,6 @@ class RecursiveAstVisitor implements AstVisitor { return null; } - @override - R? visitNullAwareElement(NullAwareElement node) { - node.visitChildren(this); - return null; - } - @override R? visitNullCheckPattern(NullCheckPattern node) { node.visitChildren(this); @@ -2219,9 +2209,6 @@ class SimpleAstVisitor implements AstVisitor { @override R? visitNullAssertPattern(NullAssertPattern node) => null; - @override - R? visitNullAwareElement(NullAwareElement node) => null; - @override R? visitNullCheckPattern(NullCheckPattern node) => null; @@ -2783,9 +2770,6 @@ class ThrowingAstVisitor implements AstVisitor { @override R? visitNullAssertPattern(NullAssertPattern node) => _throw(node); - @override - R? visitNullAwareElement(NullAwareElement node) => _throw(node); - @override R? visitNullCheckPattern(NullCheckPattern node) => _throw(node); @@ -3896,14 +3880,6 @@ class TimedAstVisitor implements AstVisitor { return result; } - @override - T? visitNullAwareElement(NullAwareElement node) { - stopwatch.start(); - T? result = _baseVisitor.visitNullAwareElement(node); - stopwatch.stop(); - return result; - } - @override T? visitNullCheckPattern(NullCheckPattern node) { stopwatch.start(); @@ -4796,9 +4772,6 @@ class UnifyingAstVisitor implements AstVisitor { @override R? visitNullAssertPattern(NullAssertPattern node) => visitNode(node); - @override - R? visitNullAwareElement(NullAwareElement node) => visitNode(node); - @override R? visitNullCheckPattern(NullCheckPattern node) => visitNode(node); diff --git a/pkg/analyzer/lib/src/dart/ast/ast.dart b/pkg/analyzer/lib/src/dart/ast/ast.dart index 37526d8dfd28..f7eb6a9b0132 100644 --- a/pkg/analyzer/lib/src/dart/ast/ast.dart +++ b/pkg/analyzer/lib/src/dart/ast/ast.dart @@ -1442,8 +1442,6 @@ abstract class AstVisitor { R? visitNullAssertPattern(NullAssertPattern node); - R? visitNullAwareElement(NullAwareElement node); - R? visitNullCheckPattern(NullCheckPattern node); R? visitNullLiteral(NullLiteral node); @@ -11270,47 +11268,31 @@ final class LogicalOrPatternImpl extends DartPatternImpl /// A single key/value pair in a map literal. /// /// mapLiteralEntry ::= -/// '?'? [Expression] ':' '?'? [Expression] +/// [Expression] ':' [Expression] abstract final class MapLiteralEntry implements CollectionElement { /// The expression computing the key with which the value is associated. Expression get key; - /// The question prefix for the key that may present in null-aware map - /// entries. - Token? get keyQuestion; - /// The colon that separates the key from the value. Token get separator; /// The expression computing the value that is associated with the key. Expression get value; - - /// The question prefix for the value that may present in null-aware map - /// entries. - Token? get valueQuestion; } final class MapLiteralEntryImpl extends CollectionElementImpl implements MapLiteralEntry { - @override - final Token? keyQuestion; - ExpressionImpl _key; @override final Token separator; - @override - final Token? valueQuestion; - ExpressionImpl _value; /// Initializes a newly created map literal entry. MapLiteralEntryImpl({ - required this.keyQuestion, required ExpressionImpl key, required this.separator, - required this.valueQuestion, required ExpressionImpl value, }) : _key = key, _value = value { @@ -11319,7 +11301,7 @@ final class MapLiteralEntryImpl extends CollectionElementImpl } @override - Token get beginToken => keyQuestion ?? _key.beginToken; + Token get beginToken => _key.beginToken; @override Token get endToken => _value.endToken; @@ -11340,10 +11322,8 @@ final class MapLiteralEntryImpl extends CollectionElementImpl @override ChildEntities get _childEntities => ChildEntities() - ..addToken('keyQuestion', keyQuestion) ..addNode('key', key) ..addToken('separator', separator) - ..addToken('valueQuestion', valueQuestion) ..addNode('value', value); @override @@ -12839,66 +12819,6 @@ final class NullAssertPatternImpl extends DartPatternImpl } } -/// A null-aware element in a list or set literal. -/// -/// ::= '?' -abstract final class NullAwareElement implements CollectionElement { - /// The question mark before the expression. - Token get question; - - /// The expression computing the value that is associated with the element. - Expression get value; -} - -final class NullAwareElementImpl extends CollectionElementImpl - implements NullAwareElement { - @override - final Token question; - - ExpressionImpl _value; - - /// Initializes a newly created null-aware element. - NullAwareElementImpl({ - required this.question, - required ExpressionImpl value, - }) : _value = value { - _becomeParentOf(_value); - } - - @override - Token get beginToken => question; - - @override - Token get endToken => _value.endToken; - - @override - ExpressionImpl get value => _value; - - set value(ExpressionImpl expression) { - _value = _becomeParentOf(expression); - } - - @override - ChildEntities get _childEntities => ChildEntities() - ..addToken('question', question) - ..addNode('value', value); - - @override - E? accept(AstVisitor visitor) => visitor.visitNullAwareElement(this); - - @override - void resolveElement( - ResolverVisitor resolver, CollectionLiteralContext? context) { - // resolver.visitNullAwareElement(this, context: context); - resolver.pushRewrite(null); - } - - @override - void visitChildren(AstVisitor visitor) { - _value.accept(visitor); - } -} - /// A null-check pattern. /// /// nullCheckPattern ::= 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 624c3129f0da..fc5f0d2160bf 100644 --- a/pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart +++ b/pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart @@ -984,12 +984,6 @@ class ToSourceVisitor implements AstVisitor { sink.write(node.operator.lexeme); } - @override - void visitNullAwareElement(NullAwareElement node) { - sink.write(node.question.lexeme); - _visitNode(node.value); - } - @override void visitNullCheckPattern(NullCheckPattern node) { _visitNode(node.pattern); diff --git a/pkg/analyzer/lib/src/dart/ast/utilities.dart b/pkg/analyzer/lib/src/dart/ast/utilities.dart index 086c5eb02572..41dd7c17c32e 100644 --- a/pkg/analyzer/lib/src/dart/ast/utilities.dart +++ b/pkg/analyzer/lib/src/dart/ast/utilities.dart @@ -1114,13 +1114,6 @@ class AstComparator implements AstVisitor { isEqualTokens(node.operator, other.operator); } - @override - bool visitNullAwareElement(NullAwareElement node) { - NullAwareElement other = _other as NullAwareElement; - return isEqualTokens(node.question, other.question) && - isEqualNodes(node.value, other.value); - } - @override bool visitNullCheckPattern(NullCheckPattern node) { var other = _other as NullCheckPattern; @@ -3049,15 +3042,6 @@ class NodeReplacer extends ThrowingAstVisitor { return visitNode(node); } - @override - bool visitNullAwareElement(NullAwareElement node) { - if (identical(node.value, _oldNode)) { - (node as NullAwareElementImpl).value = _newNode as ExpressionImpl; - return true; - } - return visitNode(node); - } - @override bool visitNullLiteral(NullLiteral node) => visitNode(node); diff --git a/pkg/analyzer/lib/src/dart/constant/evaluation.dart b/pkg/analyzer/lib/src/dart/constant/evaluation.dart index 3e42fcf12bb7..23869f0bb9b3 100644 --- a/pkg/analyzer/lib/src/dart/constant/evaluation.dart +++ b/pkg/analyzer/lib/src/dart/constant/evaluation.dart @@ -1440,24 +1440,6 @@ class ConstantVisitor extends UnifyingAstVisitor { } list.addAll(listValue); } - case NullAwareElement(): - var value = evaluateConstant(element.value); - switch (value) { - case InvalidConstant(): - return value; - case DartObjectImpl(): - if (value.isNull) { - continue; - } - var result = _buildListConstant( - list, - [element.value], - typeSystem, - listType, - elementType, - ); - return result; - } } } @@ -1548,11 +1530,6 @@ class ConstantVisitor extends UnifyingAstVisitor { } map.addAll(mapValue); } - case NullAwareElement(): - // TODO(cstefantsova): Should it rather be its own code, for example, - // `CompileTimeErrorCode.NULL_AWARE_ELEMENT_IN_MAP`? - return InvalidConstant.forEntity( - element, CompileTimeErrorCode.EXPRESSION_IN_MAP); } } @@ -1630,19 +1607,6 @@ class ConstantVisitor extends UnifyingAstVisitor { } set.addAll(setValue); } - case NullAwareElement(): - var value = evaluateConstant(element.value); - switch (value) { - case InvalidConstant(): - return value; - case DartObjectImpl(): - if (value.isNull) { - continue; - } - var result = - _buildSetConstant(set, [element.value], typeSystem, setType); - return result; - } } } diff --git a/pkg/analyzer/lib/src/fasta/ast_builder.dart b/pkg/analyzer/lib/src/fasta/ast_builder.dart index bfa2769dbb9a..83ee5e3929fb 100644 --- a/pkg/analyzer/lib/src/fasta/ast_builder.dart +++ b/pkg/analyzer/lib/src/fasta/ast_builder.dart @@ -4829,24 +4829,21 @@ class AstBuilder extends StackListener { assert(optional(':', colon)); debugEvent("LiteralMapEntry"); + // TODO(cstefantsova): Handle null-aware map entries. if (!enableNullAwareElements && (nullAwareKeyToken != null || nullAwareValueToken != null)) { _reportFeatureNotEnabled( feature: ExperimentalFeatures.null_aware_elements, startToken: nullAwareKeyToken ?? nullAwareValueToken!, ); - nullAwareKeyToken = null; - nullAwareValueToken = null; } var value = pop() as ExpressionImpl; var key = pop() as ExpressionImpl; push( MapLiteralEntryImpl( - keyQuestion: nullAwareKeyToken, key: key, separator: colon, - valueQuestion: nullAwareValueToken, value: value, ), ); @@ -5142,19 +5139,12 @@ class AstBuilder extends StackListener { @override void handleNullAwareElement(Token nullAwareElement) { debugEvent('NullAwareElement'); + // TODO(cstefantsova): Handle null-aware elements. if (!enableNullAwareElements) { _reportFeatureNotEnabled( feature: ExperimentalFeatures.null_aware_elements, startToken: nullAwareElement, ); - } else { - var expression = pop() as ExpressionImpl; - push( - NullAwareElementImpl( - question: nullAwareElement, - value: expression, - ), - ); } } diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart index 3b17ec9bf3f8..668bc1539118 100644 --- a/pkg/analyzer/lib/src/generated/resolver.dart +++ b/pkg/analyzer/lib/src/generated/resolver.dart @@ -3249,21 +3249,6 @@ class ResolverVisitor extends ThrowingAstVisitor return imposedType ?? typeProvider.dynamicType; } - @override - void visitNullAwareElement(NullAwareElement node, - {CollectionLiteralContext? context}) { - inferenceLogWriter?.enterElement(node); - - var elementType = context?.elementType; - if (elementType != null) { - elementType = typeSystem.makeNullable(elementType); - } - - analyzeExpression(node.value, elementType ?? UnknownInferredType.instance); - - inferenceLogWriter?.exitElement(node); - } - @override void visitNullLiteral(NullLiteral node, {DartType contextType = UnknownInferredType.instance}) { diff --git a/pkg/analyzer/lib/src/lint/linter_visitor.dart b/pkg/analyzer/lib/src/lint/linter_visitor.dart index 91019ec2fd57..afa4892f8987 100644 --- a/pkg/analyzer/lib/src/lint/linter_visitor.dart +++ b/pkg/analyzer/lib/src/lint/linter_visitor.dart @@ -687,12 +687,6 @@ class LinterVisitor implements AstVisitor { node.visitChildren(this); } - @override - void visitNullAwareElement(NullAwareElement node) { - _runSubscriptions(node, registry._forNullAwareElement); - node.visitChildren(this); - } - @override void visitNullCheckPattern(NullCheckPattern node) { _runSubscriptions(node, registry._forNullCheckPattern); @@ -1250,7 +1244,6 @@ class NodeLintRegistry { final List<_Subscription> _forNativeClause = []; final List<_Subscription> _forNativeFunctionBody = []; final List<_Subscription> _forNullAssertPattern = []; - final List<_Subscription> _forNullAwareElement = []; final List<_Subscription> _forNullCheckPattern = []; final List<_Subscription> _forNullLiteral = []; final List<_Subscription> diff --git a/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart b/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart index 3e007e166c41..3faa3757dc49 100644 --- a/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart +++ b/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart @@ -124,8 +124,6 @@ class AstBinaryReader { return _readMethodInvocation(); case Tag.NamedExpression: return _readNamedExpression(); - case Tag.NullAwareElement: - return _readNullAwareElement(); case Tag.NullLiteral: return _readNullLiteral(); case Tag.InstanceCreationExpression: @@ -878,17 +876,11 @@ class AstBinaryReader { } MapLiteralEntry _readMapLiteralEntry() { - var keyFlags = _readByte(); var key = readNode() as ExpressionImpl; - var valueFlags = _readByte(); var value = readNode() as ExpressionImpl; return MapLiteralEntryImpl( - keyQuestion: - AstBinaryFlags.hasQuestion(keyFlags) ? Tokens.question() : null, key: key, separator: Tokens.colon(), - valueQuestion: - AstBinaryFlags.hasQuestion(valueFlags) ? Tokens.question() : null, value: value, ); } @@ -961,11 +953,6 @@ class AstBinaryReader { return List.generate(length, (_) => readNode() as T); } - NullAwareElement _readNullAwareElement() { - var value = readNode() as ExpressionImpl; - return NullAwareElementImpl(question: Tokens.question(), value: value); - } - NullLiteral _readNullLiteral() { var node = NullLiteralImpl( literal: Tokens.null_(), diff --git a/pkg/analyzer/lib/src/summary2/ast_binary_tag.dart b/pkg/analyzer/lib/src/summary2/ast_binary_tag.dart index 7b24c7d98e4f..7c734868e4ba 100644 --- a/pkg/analyzer/lib/src/summary2/ast_binary_tag.dart +++ b/pkg/analyzer/lib/src/summary2/ast_binary_tag.dart @@ -97,7 +97,6 @@ class Tag { static const int MethodInvocation = 59; static const int NamedExpression = 60; static const int NamedType = 39; - static const int NullAwareElement = 44; static const int NullLiteral = 49; static const int ParenthesizedExpression = 53; static const int PostfixExpression = 94; diff --git a/pkg/analyzer/lib/src/summary2/ast_binary_writer.dart b/pkg/analyzer/lib/src/summary2/ast_binary_writer.dart index 2917191d48f7..2dcf435ef999 100644 --- a/pkg/analyzer/lib/src/summary2/ast_binary_writer.dart +++ b/pkg/analyzer/lib/src/summary2/ast_binary_writer.dart @@ -502,11 +502,7 @@ class AstBinaryWriter extends ThrowingAstVisitor { @override void visitMapLiteralEntry(MapLiteralEntry node) { _writeByte(Tag.MapLiteralEntry); - _writeByte(AstBinaryFlags.encode( - hasQuestion: node.keyQuestion?.type == TokenType.QUESTION)); _writeNode(node.key); - _writeByte(AstBinaryFlags.encode( - hasQuestion: node.valueQuestion?.type == TokenType.QUESTION)); _writeNode(node.value); } @@ -560,12 +556,6 @@ class AstBinaryWriter extends ThrowingAstVisitor { _sink.writeType(node.type); } - @override - void visitNullAwareElement(NullAwareElement node) { - _writeByte(Tag.NullAwareElement); - _writeNode(node.value); - } - @override void visitNullLiteral(NullLiteral node) { _writeByte(Tag.NullLiteral); diff --git a/pkg/analyzer/lib/src/test_utilities/find_node.dart b/pkg/analyzer/lib/src/test_utilities/find_node.dart index 6c4d4199a08b..a63857b2e491 100644 --- a/pkg/analyzer/lib/src/test_utilities/find_node.dart +++ b/pkg/analyzer/lib/src/test_utilities/find_node.dart @@ -138,8 +138,6 @@ class FindNode { NamedType get singleNamedType => _single(); - NullAwareElement get singleNullAwareElement => _single(); - ParenthesizedExpression get singleParenthesizedExpression => _single(); PartDirective get singlePartDirective => _single(); diff --git a/pkg/analyzer/messages.yaml b/pkg/analyzer/messages.yaml index 1c955d0e2860..66d79e95540e 100644 --- a/pkg/analyzer/messages.yaml +++ b/pkg/analyzer/messages.yaml @@ -27597,4 +27597,4 @@ WarningCode: If the URI was mistyped or invalid, then correct the URI. - If the URI is correct, then create the file. + If the URI is correct, then create the file. \ No newline at end of file diff --git a/pkg/analyzer/test/src/dart/parser/null_aware_elements_test.dart b/pkg/analyzer/test/src/dart/parser/null_aware_elements_test.dart deleted file mode 100644 index 5d5ae11b1360..000000000000 --- a/pkg/analyzer/test/src/dart/parser/null_aware_elements_test.dart +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright (c) 2024, 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:test_reflective_loader/test_reflective_loader.dart'; - -import '../../diagnostics/parser_diagnostics.dart'; - -main() { - defineReflectiveSuite(() { - defineReflectiveTests(NullAwareElementsParserTest); - }); -} - -@reflectiveTest -class NullAwareElementsParserTest extends ParserDiagnosticsTest { - test_simple_list_literal() { - var parserResult = parseStringWithErrors(r''' -f(int? x) => [?x]; -'''); - parserResult.assertNoErrors(); - - var node = parserResult.findNode.singleNullAwareElement; - assertParsedNodeText(node, r''' -NullAwareElement - question: ? - value: SimpleIdentifier - token: x -'''); - } - - test_simple_map_literal_both_null_aware() { - var parserResult = parseStringWithErrors(r''' -f(int? x, String? y) => {?x: ?y}; -'''); - parserResult.assertNoErrors(); - - var node = parserResult.findNode.mapLiteralEntry('?x: ?y'); - assertParsedNodeText(node, r''' -MapLiteralEntry - keyQuestion: ? - key: SimpleIdentifier - token: x - separator: : - valueQuestion: ? - value: SimpleIdentifier - token: y -'''); - } - - test_simple_map_literal_null_aware_key() { - var parserResult = parseStringWithErrors(r''' -f(num? x, bool y) => {?x: y}; -'''); - parserResult.assertNoErrors(); - - var node = parserResult.findNode.mapLiteralEntry("?x: y"); - assertParsedNodeText(node, r''' -MapLiteralEntry - keyQuestion: ? - key: SimpleIdentifier - token: x - separator: : - value: SimpleIdentifier - token: y -'''); - } - - test_simple_map_literal_null_aware_value() { - var parserResult = parseStringWithErrors(r''' -f(String x, double? y) => {x: ?y}; -'''); - parserResult.assertNoErrors(); - - var node = parserResult.findNode.mapLiteralEntry("x: ?y"); - assertParsedNodeText(node, r''' -MapLiteralEntry - key: SimpleIdentifier - token: x - separator: : - valueQuestion: ? - value: SimpleIdentifier - token: y -'''); - } - - test_simple_set_literal() { - var parserResult = parseStringWithErrors(r''' -f(String? x) => {?x}; -'''); - parserResult.assertNoErrors(); - - var node = parserResult.findNode.singleNullAwareElement; - assertParsedNodeText(node, r''' -NullAwareElement - question: ? - value: SimpleIdentifier - token: x -'''); - } -} diff --git a/pkg/analyzer/test/src/dart/parser/test_all.dart b/pkg/analyzer/test/src/dart/parser/test_all.dart index ce9966584c69..6dabf3cebea7 100644 --- a/pkg/analyzer/test/src/dart/parser/test_all.dart +++ b/pkg/analyzer/test/src/dart/parser/test_all.dart @@ -17,7 +17,6 @@ import 'import_directive_test.dart' as import_directive; import 'library_augmentation_directive_test.dart' as library_augmentation_directive; import 'mixin_test.dart' as mixin_; -import 'null_aware_elements_test.dart' as null_aware_elements_test; import 'part_directive_test.dart' as part_directive; import 'top_level_function_test.dart' as top_level_function; import 'top_level_variable_test.dart' as top_level_variable; @@ -39,7 +38,6 @@ main() { import_directive.main(); library_augmentation_directive.main(); mixin_.main(); - null_aware_elements_test.main(); part_directive.main(); top_level_function.main(); top_level_variable.main(); diff --git a/pkg/analyzer/test/src/summary/resolved_ast_printer.dart b/pkg/analyzer/test/src/summary/resolved_ast_printer.dart index d420a86a6392..3865fe64b31b 100644 --- a/pkg/analyzer/test/src/summary/resolved_ast_printer.dart +++ b/pkg/analyzer/test/src/summary/resolved_ast_printer.dart @@ -1097,14 +1097,6 @@ class ResolvedAstPrinter extends ThrowingAstVisitor { }); } - @override - void visitNullAwareElement(NullAwareElement node) { - _sink.writeln('NullAwareElement'); - _sink.withIndent(() { - _writeNamedChildEntities(node); - }); - } - @override void visitNullCheckPattern(NullCheckPattern node) { _sink.writeln('NullCheckPattern'); diff --git a/pkg/linter/lib/src/rules/omit_obvious_local_variable_types.dart b/pkg/linter/lib/src/rules/omit_obvious_local_variable_types.dart index 3a258fd6291f..c9f52f4d3f7d 100644 --- a/pkg/linter/lib/src/rules/omit_obvious_local_variable_types.dart +++ b/pkg/linter/lib/src/rules/omit_obvious_local_variable_types.dart @@ -169,10 +169,6 @@ extension on CollectionElement { return self.staticType; case SpreadElement(): return self.expression.staticType.elementTypeOfIterable; - case NullAwareElement(): - // This should be the non-nullable version of `self.value.staticType`, - // but since it requires computation, we return null. - return null; } } @@ -190,8 +186,6 @@ extension on CollectionElement { return self.hasObviousType; case SpreadElement(): return self.expression.hasObviousType; - case NullAwareElement(): - return self.value.hasObviousType; } } }