Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 44e4f39

Browse files
author
Dart CI
committed
Version 2.11.0-171.0.dev
Merge commit '3af963831557ac249730b76aac253539f1be06e0' into 'dev'
2 parents fe83360 + 3af9638 commit 44e4f39

File tree

13 files changed

+84
-83
lines changed

13 files changed

+84
-83
lines changed

pkg/analyzer/lib/dart/ast/ast.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3241,11 +3241,15 @@ abstract class IndexExpression
32413241
/// The auxiliary elements hold the static and propagated elements associated
32423242
/// with the getter context.
32433243
// TODO(brianwilkerson) Replace this API.
3244+
@Deprecated('Use CompoundAssignmentExpression.readElement and/or '
3245+
'CompoundAssignmentExpression.writeElement')
32443246
AuxiliaryElements get auxiliaryElements;
32453247

32463248
/// Set the auxiliary elements associated with this identifier to the given
32473249
/// [elements].
32483250
// TODO(brianwilkerson) Replace this API.
3251+
@Deprecated('Use CompoundAssignmentExpression.readElement and/or '
3252+
'CompoundAssignmentExpression.writeElement')
32493253
set auxiliaryElements(AuxiliaryElements elements);
32503254

32513255
/// Return the expression used to compute the index.

pkg/analyzer/lib/src/dart/ast/ast.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5810,6 +5810,8 @@ class IndexExpressionImpl extends ExpressionImpl
58105810
/// If this expression is both in a getter and setter context, the
58115811
/// [AuxiliaryElements] will be set to hold onto the static element from the
58125812
/// getter context.
5813+
@Deprecated('Use CompoundAssignmentExpression.readElement and/or '
5814+
'CompoundAssignmentExpression.writeElement')
58135815
@override
58145816
AuxiliaryElements auxiliaryElements;
58155817

pkg/analyzer/lib/src/dart/ast/utilities.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4738,6 +4738,7 @@ class ResolutionCopier implements AstVisitor<bool> {
47384738
_isEqualTokens(node.leftBracket, toNode.leftBracket),
47394739
_isEqualNodes(node.index, toNode.index),
47404740
_isEqualTokens(node.rightBracket, toNode.rightBracket))) {
4741+
// ignore: deprecated_member_use_from_same_package
47414742
toNode.auxiliaryElements = node.auxiliaryElements;
47424743
toNode.staticElement = node.staticElement;
47434744
toNode.staticType = node.staticType;

pkg/analyzer/lib/src/generated/error_verifier.dart

Lines changed: 59 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,13 @@ class ErrorVerifier extends RecursiveAstVisitor<void> {
321321
_checkForDeadNullCoalesce(node.readType, node.rightHandSide);
322322
}
323323
_checkForAssignmentToFinal(lhs);
324+
if (lhs is IndexExpression) {
325+
_checkIndexExpressionIndex(
326+
lhs.index,
327+
readElement: node.readElement,
328+
writeElement: node.writeElement,
329+
);
330+
}
324331
super.visitAssignmentExpression(node);
325332
}
326333

@@ -816,28 +823,19 @@ class ErrorVerifier extends RecursiveAstVisitor<void> {
816823

817824
@override
818825
void visitIndexExpression(IndexExpression node) {
819-
void checkIndexExpression(MethodElement method) {
820-
if (method != null) {
821-
var parameters = method.parameters;
822-
if (parameters.isNotEmpty) {
823-
_checkForArgumentTypeNotAssignableForArgument2(
824-
argument: node.index,
825-
parameter: parameters[0],
826-
promoteParameterToNullable: false,
827-
);
828-
}
829-
}
830-
}
831-
832-
checkIndexExpression(node.staticElement);
833-
checkIndexExpression(node.auxiliaryElements?.staticElement);
826+
_checkIndexExpressionIndex(
827+
node.index,
828+
readElement: node.staticElement,
829+
writeElement: null,
830+
);
834831

835832
if (node.isNullAware) {
836833
_checkForUnnecessaryNullAware(
837834
node.realTarget,
838835
node.question ?? node.period ?? node.leftBracket,
839836
);
840837
}
838+
841839
super.visitIndexExpression(node);
842840
}
843841

@@ -989,12 +987,20 @@ class ErrorVerifier extends RecursiveAstVisitor<void> {
989987

990988
@override
991989
void visitPostfixExpression(PostfixExpression node) {
990+
var operand = node.operand;
992991
if (node.operator.type == TokenType.BANG) {
993992
_checkForUseOfVoidResult(node);
994-
_checkForUnnecessaryNullAware(node.operand, node.operator);
993+
_checkForUnnecessaryNullAware(operand, node.operator);
995994
} else {
996-
_checkForAssignmentToFinal(node.operand);
997-
_checkForIntNotAssignable(node.operand);
995+
_checkForAssignmentToFinal(operand);
996+
_checkForIntNotAssignable(operand);
997+
}
998+
if (operand is IndexExpression) {
999+
_checkIndexExpressionIndex(
1000+
operand.index,
1001+
readElement: node.readElement,
1002+
writeElement: node.writeElement,
1003+
);
9981004
}
9991005
super.visitPostfixExpression(node);
10001006
}
@@ -1022,6 +1028,13 @@ class ErrorVerifier extends RecursiveAstVisitor<void> {
10221028
_checkForUseOfVoidResult(operand);
10231029
_checkForIntNotAssignable(operand);
10241030
}
1031+
if (operand is IndexExpression) {
1032+
_checkIndexExpressionIndex(
1033+
operand.index,
1034+
readElement: node.readElement,
1035+
writeElement: node.writeElement,
1036+
);
1037+
}
10251038
super.visitPrefixExpression(node);
10261039
}
10271040

@@ -4809,6 +4822,34 @@ class ErrorVerifier extends RecursiveAstVisitor<void> {
48094822
}
48104823
}
48114824

4825+
void _checkIndexExpressionIndex(
4826+
Expression index, {
4827+
@required ExecutableElement readElement,
4828+
@required ExecutableElement writeElement,
4829+
}) {
4830+
if (readElement is MethodElement) {
4831+
var parameters = readElement.parameters;
4832+
if (parameters.isNotEmpty) {
4833+
_checkForArgumentTypeNotAssignableForArgument2(
4834+
argument: index,
4835+
parameter: parameters[0],
4836+
promoteParameterToNullable: false,
4837+
);
4838+
}
4839+
}
4840+
4841+
if (writeElement is MethodElement) {
4842+
var parameters = writeElement.parameters;
4843+
if (parameters.isNotEmpty) {
4844+
_checkForArgumentTypeNotAssignableForArgument2(
4845+
argument: index,
4846+
parameter: parameters[0],
4847+
promoteParameterToNullable: false,
4848+
);
4849+
}
4850+
}
4851+
}
4852+
48124853
void _checkMixinInference(
48134854
NamedCompilationUnitMember node, WithClause withClause) {
48144855
if (withClause == null) {

pkg/analyzer/lib/src/generated/resolver.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -658,6 +658,7 @@ class ResolverVisitor extends ScopedVisitor {
658658
if (left is IndexExpression) {
659659
if (hasRead) {
660660
left.staticElement = assignment.writeElement;
661+
// ignore: deprecated_member_use_from_same_package
661662
left.auxiliaryElements = AuxiliaryElements(assignment.readElement);
662663
} else {
663664
left.staticElement = assignment.writeElement;

pkg/analyzer/test/src/dart/ast/utilities_test.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -568,6 +568,7 @@ class ResolutionCopierTest with ElementsTypesMixin {
568568
MethodElement staticElement = ElementFactory.methodElement(
569569
"m", interfaceTypeStar(ElementFactory.classElement2('C')));
570570
AuxiliaryElements auxiliaryElements = AuxiliaryElements(staticElement);
571+
// ignore: deprecated_member_use_from_same_package
571572
fromNode.auxiliaryElements = auxiliaryElements;
572573
fromNode.staticElement = staticElement;
573574
DartType staticType = interfaceTypeStar(ElementFactory.classElement2('C'));
@@ -577,6 +578,7 @@ class ResolutionCopierTest with ElementsTypesMixin {
577578
index: AstTestFactory.integer(0),
578579
);
579580
ResolutionCopier.copyResolutionData(fromNode, toNode);
581+
// ignore: deprecated_member_use_from_same_package
580582
expect(toNode.auxiliaryElements, same(auxiliaryElements));
581583
expect(toNode.staticElement, same(staticElement));
582584
expect(toNode.staticType, same(staticType));

pkg/analyzer/test/src/dart/resolution/resolution.dart

Lines changed: 1 addition & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -112,23 +112,6 @@ mixin ResolutionTest implements ResourceProviderMixin {
112112
assertType(node, type);
113113
}
114114

115-
void assertAuxElement(AstNode node, Element expected) {
116-
var auxElements = getNodeAuxElements(node);
117-
expect(auxElements?.staticElement, same(expected));
118-
}
119-
120-
void assertAuxMember(
121-
Expression node,
122-
Element expectedBase,
123-
Map<String, String> expectedSubstitution,
124-
) {
125-
var actual = getNodeAuxElements(node)?.staticElement as ExecutableMember;
126-
127-
expect(actual.declaration, same(expectedBase));
128-
129-
assertSubstitution(actual.substitution, expectedSubstitution);
130-
}
131-
132115
void assertBinaryExpression(
133116
BinaryExpression node, {
134117
@required Object element,
@@ -397,6 +380,7 @@ mixin ResolutionTest implements ResourceProviderMixin {
397380
var isRead = node.inGetterContext();
398381
var isWrite = node.inSetterContext();
399382
if (isRead && isWrite) {
383+
// ignore: deprecated_member_use_from_same_package
400384
assertElement(node.auxiliaryElements?.staticElement, readElement);
401385
assertElement(node.staticElement, writeElement);
402386
} else if (isRead) {
@@ -824,14 +808,6 @@ mixin ResolutionTest implements ResourceProviderMixin {
824808
}
825809
}
826810

827-
AuxiliaryElements getNodeAuxElements(AstNode node) {
828-
if (node is IndexExpression) {
829-
return node.auxiliaryElements;
830-
} else {
831-
fail('Unsupported node: (${node.runtimeType}) $node');
832-
}
833-
}
834-
835811
Element getNodeElement(AstNode node) {
836812
if (node is Annotation) {
837813
return node.element;

pkg/analyzer/test/src/diagnostics/argument_type_not_assignable_test.dart

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,8 +194,12 @@ class A {
194194
}
195195
f(A a) {
196196
a['0'] += 0;
197+
++a['0'];
198+
a['0']++;
197199
}''', [
198200
error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 103, 3),
201+
error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 120, 3),
202+
error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 130, 3),
199203
]);
200204
}
201205

@@ -219,8 +223,12 @@ class A {
219223
}
220224
f(A a) {
221225
a['0'] += 0;
226+
++a['0'];
227+
a['0']++;
222228
}''', [
223229
error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 103, 3),
230+
error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 120, 3),
231+
error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 130, 3),
224232
]);
225233
}
226234

pkg/analyzer/test/src/summary/resolved_ast_printer.dart

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -770,10 +770,6 @@ class ResolvedAstPrinter extends ThrowingAstVisitor<void> {
770770
_writeln('IndexExpression');
771771
_withIndent(() {
772772
var properties = _Properties();
773-
properties.addAuxiliaryElements(
774-
'auxiliaryElements',
775-
node.auxiliaryElements,
776-
);
777773
properties.addNode('index', node.index);
778774
properties.addToken('period', node.period);
779775
properties.addNode('target', node.target);
@@ -1801,17 +1797,6 @@ class ResolvedAstPrinter extends ThrowingAstVisitor<void> {
18011797
}
18021798
}
18031799

1804-
class _AuxiliaryElementsProperty extends _Property {
1805-
final AuxiliaryElements elements;
1806-
1807-
_AuxiliaryElementsProperty(String name, this.elements) : super(name);
1808-
1809-
@override
1810-
void write(ResolvedAstPrinter printer) {
1811-
printer._writeAuxiliaryElements(name, elements);
1812-
}
1813-
}
1814-
18151800
class _ElementProperty extends _Property {
18161801
final Element element;
18171802

@@ -1848,12 +1833,6 @@ class _NodeProperty extends _Property {
18481833
class _Properties {
18491834
final properties = <_Property>[];
18501835

1851-
void addAuxiliaryElements(String name, AuxiliaryElements elements) {
1852-
properties.add(
1853-
_AuxiliaryElementsProperty(name, elements),
1854-
);
1855-
}
1856-
18571836
void addElement(String name, Element element) {
18581837
properties.add(
18591838
_ElementProperty(name, element),

sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -732,8 +732,8 @@ class StringBuffer {
732732
@patch
733733
String toString() => Primitives.flattenString(_contents);
734734

735-
void _writeString(String str) {
736-
_contents = Primitives.stringConcatUnchecked(_contents, str);
735+
void _writeString(@notNull String str) {
736+
_contents = JS<String>('!', '# + #', _contents, str);
737737
}
738738

739739
static String _writeAll(String string, Iterable objects, String separator) {
@@ -753,8 +753,8 @@ class StringBuffer {
753753
return string;
754754
}
755755

756-
static String _writeOne(String string, Object? obj) {
757-
return Primitives.stringConcatUnchecked(string, '$obj');
756+
static String _writeOne(@notNull String string, Object? obj) {
757+
return JS<String>('!', '# + #', string, '$obj');
758758
}
759759
}
760760

0 commit comments

Comments
 (0)