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

Unified Diff: pkg/compiler/lib/src/kernel/unresolved.dart

Issue 2621433002: dart2js-kernel: handle top-level / static unresolved methods / getters / setters (Closed)
Patch Set: remove print Created 3 years, 11 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: pkg/compiler/lib/src/kernel/unresolved.dart
diff --git a/pkg/compiler/lib/src/kernel/unresolved.dart b/pkg/compiler/lib/src/kernel/unresolved.dart
index 7560ccbb3997d4d153205ef6e571a8e9743904b2..8a984ed822bb5ef5d10b58bea89a327839930758 100644
--- a/pkg/compiler/lib/src/kernel/unresolved.dart
+++ b/pkg/compiler/lib/src/kernel/unresolved.dart
@@ -30,6 +30,7 @@ abstract class UnresolvedVisitor {
bool get isVoidContext;
ir.Arguments buildArguments(NodeList arguments);
ir.TreeNode visitForValue(Expression node);
+ void associateCompoundComponents(Accessor accessor, Node node);
// TODO(ahe): Delete this method.
ir.InvalidExpression handleUnresolved(Node node);
@@ -124,6 +125,7 @@ abstract class UnresolvedVisitor {
}
ir.Expression buildThrowUnresolvedSuperGetter(String name) {
+ // TODO(sra): This is incorrect when the superclass defines noSuchMethod.
return buildThrowNoSuchMethodError(kernel.getUnresolvedSuperGetterBuilder(),
new ir.ThisExpression(), name, new ir.Arguments.empty());
}
@@ -269,16 +271,22 @@ abstract class UnresolvedVisitor {
MethodElement getter, Element element, IncDecOperator operator, _) {
var accessor = new ClassStaticAccessor(
this, getter.name, possiblyErroneousFunctionToIr(getter), null);
- return accessor.buildPostfixIncrement(new ir.Name(operator.selectorName),
+ var result = accessor.buildPostfixIncrement(
+ new ir.Name(operator.selectorName),
voidContext: isVoidContext);
+ associateCompoundComponents(accessor, node);
+ return result;
}
ir.Expression visitUnresolvedStaticSetterPrefix(Send node,
MethodElement getter, Element element, IncDecOperator operator, _) {
var accessor = new ClassStaticAccessor(
this, getter.name, possiblyErroneousFunctionToIr(getter), null);
- return accessor.buildPrefixIncrement(new ir.Name(operator.selectorName),
+ var result = accessor.buildPrefixIncrement(
+ new ir.Name(operator.selectorName),
voidContext: isVoidContext);
+ associateCompoundComponents(accessor, node);
+ return result;
}
ir.Expression visitUnresolvedStaticSetterSetIfNull(
@@ -291,6 +299,7 @@ abstract class UnresolvedVisitor {
ir.Expression visitUnresolvedSuperBinary(
Send node, Element element, BinaryOperator operator, Node argument, _) {
+ // TODO(sra): This is incorrect when the superclass defines noSuchMethod.
return buildThrowNoSuchMethodError(
kernel.getUnresolvedSuperMethodBuilder(),
new ir.ThisExpression(),
@@ -521,25 +530,33 @@ abstract class UnresolvedVisitor {
_) {
var accessor = new TopLevelStaticAccessor(
this, getter.name, possiblyErroneousFunctionToIr(getter), null);
- return accessor.buildCompoundAssignment(
+ var result = accessor.buildCompoundAssignment(
new ir.Name(operator.selectorName), visitForValue(rhs),
voidContext: isVoidContext);
+ associateCompoundComponents(accessor, node);
+ return result;
}
ir.Expression visitUnresolvedTopLevelSetterPostfix(Send node,
MethodElement getter, Element element, IncDecOperator operator, _) {
var accessor = new TopLevelStaticAccessor(
this, getter.name, possiblyErroneousFunctionToIr(getter), null);
- return accessor.buildPostfixIncrement(new ir.Name(operator.selectorName),
+ var result = accessor.buildPostfixIncrement(
+ new ir.Name(operator.selectorName),
voidContext: isVoidContext);
+ associateCompoundComponents(accessor, node);
+ return result;
}
ir.Expression visitUnresolvedTopLevelSetterPrefix(Send node,
MethodElement getter, Element element, IncDecOperator operator, _) {
var accessor = new TopLevelStaticAccessor(
this, getter.name, possiblyErroneousFunctionToIr(getter), null);
- return accessor.buildPrefixIncrement(new ir.Name(operator.selectorName),
+ var result = accessor.buildPrefixIncrement(
+ new ir.Name(operator.selectorName),
voidContext: isVoidContext);
+ associateCompoundComponents(accessor, node);
+ return result;
}
ir.Expression visitUnresolvedTopLevelSetterSetIfNull(

Powered by Google App Engine
This is Rietveld 408576698