Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(663)

Unified Diff: tests/compiler/dart2js/equivalence/id_equivalence_test.dart

Issue 3007903002: Support annotations on assignment and postfix operations (Closed)
Patch Set: Updated cf. comments Created 3 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tests/compiler/dart2js/equivalence/id_equivalence_test.dart
diff --git a/tests/compiler/dart2js/equivalence/id_equivalence_test.dart b/tests/compiler/dart2js/equivalence/id_equivalence_test.dart
index 8512dca5ed691a778e573f289af9e0cfdd478773..ffd2cc7c045c352918e80cf09f0ca6da12db2b10 100644
--- a/tests/compiler/dart2js/equivalence/id_equivalence_test.dart
+++ b/tests/compiler/dart2js/equivalence/id_equivalence_test.dart
@@ -26,11 +26,14 @@ const List<String> dataDirectories = const <String>[
'../jumps/data',
];
-main() {
+main(List<String> args) {
asyncTest(() async {
for (String path in dataDirectories) {
Directory dataDir = new Directory.fromUri(Platform.script.resolve(path));
await for (FileSystemEntity entity in dataDir.list()) {
+ if (args.isNotEmpty && !args.contains(entity.uri.pathSegments.last)) {
+ continue;
+ }
print('Checking ${entity.uri}');
String annotatedCode =
await new File.fromUri(entity.uri).readAsString();
@@ -41,8 +44,8 @@ main() {
annotatedCode, computeIrMemberData, compileFromDill,
options: [Flags.disableTypeInference]);
data1.actualMap.forEach((Id id, ActualData actualData1) {
- String value1 = actualData1.value;
- String value2 = data2.actualMap[id]?.value;
+ IdValue value1 = actualData1.value;
+ IdValue value2 = data2.actualMap[id]?.value;
if (value1 != value2) {
reportHere(data1.compiler.reporter, actualData1.sourceSpan,
'$id: from source:${value1},from dill:${value2}');
@@ -53,8 +56,8 @@ main() {
Expect.equals(value1, value2, 'Value mismatch for $id');
});
data2.actualMap.forEach((Id id, ActualData actualData2) {
- String value2 = actualData2.value;
- String value1 = data1.actualMap[id]?.value;
+ IdValue value2 = actualData2.value;
+ IdValue value1 = data1.actualMap[id]?.value;
if (value1 != value2) {
reportHere(data2.compiler.reporter, actualData2.sourceSpan,
'$id: from source:${value1},from dill:${value2}');
@@ -104,6 +107,10 @@ class ComputerMixin {
return 'invoke:$propertyName';
}
+ String computeSetName(String propertyName) {
+ return 'set:$propertyName';
+ }
+
String get loopName => 'loop';
String get gotoName => 'goto';
@@ -120,7 +127,7 @@ class ResolvedAstComputer extends AstDataExtractor with ComputerMixin {
: super(reporter, actualMap, resolvedAst);
@override
- String computeNodeValue(ast.Node node, AstElement element) {
+ String computeNodeValue(Id id, ast.Node node, AstElement element) {
if (element != null && element.isLocal) {
return computeLocalName(element.name);
}
@@ -170,6 +177,23 @@ class ResolvedAstComputer extends AstDataExtractor with ComputerMixin {
String dynamicName = getDynamicName();
if (dynamicName != null) return computeInvokeName(dynamicName);
break;
+ case SendStructureKind.SET:
+ String dynamicName = getDynamicName();
+ if (dynamicName != null) return computeSetName(dynamicName);
+ break;
+ case SendStructureKind.POSTFIX:
+ String dynamicName = getDynamicName();
+ if (dynamicName != null) {
+ if (id.kind == IdKind.update) {
+ return computeSetName(dynamicName);
+ } else if (id.kind == IdKind.invoke) {
+ return computeInvokeName(
+ sendStructure.operator.binaryOperator.name);
+ } else {
+ return computeGetName(dynamicName);
+ }
+ }
+ break;
default:
}
}
@@ -180,7 +204,7 @@ class ResolvedAstComputer extends AstDataExtractor with ComputerMixin {
}
@override
- String computeElementValue(AstElement element) {
+ String computeElementValue(Id id, AstElement element) {
return computeMemberName(element.enclosingClass?.name, element.name);
}
}
@@ -198,15 +222,16 @@ void computeIrMemberData(
MemberDefinition definition = elementMap.getMemberDefinition(member);
assert(definition.kind == MemberKind.regular,
failedAt(member, "Unexpected member definition $definition"));
- new IrComputer(actualMap).run(definition.node);
+ new IrComputer(compiler.reporter, actualMap).run(definition.node);
}
/// IR visitor for computing a descriptive mapping of the [Id]s in a member.
class IrComputer extends IrDataExtractor with ComputerMixin {
- IrComputer(Map<Id, ActualData> actualMap) : super(actualMap);
+ IrComputer(DiagnosticReporter reporter, Map<Id, ActualData> actualMap)
+ : super(reporter, actualMap);
@override
- String computeNodeValue(ir.TreeNode node) {
+ String computeNodeValue(Id id, ir.TreeNode node) {
if (node is ir.VariableDeclaration) {
return computeLocalName(node.name);
} else if (node is ir.FunctionDeclaration) {
@@ -217,8 +242,12 @@ class IrComputer extends IrDataExtractor with ComputerMixin {
return computeInvokeName(node.name.name);
} else if (node is ir.PropertyGet) {
return computeGetName(node.name.name);
+ } else if (node is ir.PropertySet) {
+ return computeSetName(node.name.name);
} else if (node is ir.VariableGet) {
return computeGetName(node.variable.name);
+ } else if (node is ir.VariableSet) {
+ return computeSetName(node.variable.name);
} else if (node is ir.DoStatement) {
return loopName;
} else if (node is ir.ForStatement) {
@@ -240,7 +269,7 @@ class IrComputer extends IrDataExtractor with ComputerMixin {
}
@override
- String computeMemberValue(ir.Member member) {
+ String computeMemberValue(Id id, ir.Member member) {
return computeMemberName(member.enclosingClass?.name, member.name.name);
}
}
« no previous file with comments | « tests/compiler/dart2js/equivalence/id_equivalence_helper.dart ('k') | tests/compiler/dart2js/inference/data/async_marker.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698