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

Unified Diff: lib/kernel_visitor.dart

Issue 2061393004: Implement more super calls. (Closed) Base URL: git@github.com:dart-lang/rasta.git@exports
Patch Set: Renamed file to avoid getting picked up by analyzer. Created 4 years, 6 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
« no previous file with comments | « no previous file | test/kernel/regression/super_operator.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/kernel_visitor.dart
diff --git a/lib/kernel_visitor.dart b/lib/kernel_visitor.dart
index a8a9598493011b1773742c2df0ff186b4560e48b..3d5222b2538b438609f2d2320f2d8ff6365d0261 100644
--- a/lib/kernel_visitor.dart
+++ b/lib/kernel_visitor.dart
@@ -2344,17 +2344,19 @@ class KernelVisitor extends Object
}
@override
- ir.Throw visitSuperBinary(
+ ir.SuperMethodInvocation visitSuperBinary(
Send node,
FunctionElement function,
BinaryOperator operator,
Node argument,
_) {
- return buildUnsupported(node, "SuperBinary");
+ return new ir.SuperMethodInvocation(
+ kernel.functionToIr(function),
+ new ir.Arguments(<ir.Expression>[argument.accept(this)]));
}
@override
- ir.Throw visitSuperCompoundIndexSet(
+ ir.Expression visitSuperCompoundIndexSet(
SendSet node,
MethodElement getter,
MethodElement setter,
@@ -2362,7 +2364,10 @@ class KernelVisitor extends Object
AssignmentOperator operator,
Node rhs,
_) {
- return buildUnsupported(node, "SuperCompoundIndexSet");
+ return
+ buildSuperIndexAccessor(index, getter, setter).buildCompoundAssignment(
+ kernel.irName(operator.selectorName, currentElement),
+ rhs.accept(this));
}
@override
@@ -2510,12 +2515,16 @@ class KernelVisitor extends Object
Accessor buildSuperIndexAccessor(
Expression index,
- Element read,
- [Element write]) {
+ Element getter,
+ [Element setter]) {
+ if (setter == null && getter.isField && !getter.isFinal &&
+ !getter.isConst) {
+ setter = getter;
+ }
return new SuperIndexAccessor(
index.accept(this),
- kernel.elementToIr(read),
- (write == null) ? null : kernel.elementToIr(write));
+ (getter == null) ? null : kernel.elementToIr(getter),
+ (setter == null) ? null : kernel.elementToIr(setter));
}
@override
« no previous file with comments | « no previous file | test/kernel/regression/super_operator.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698