| Index: tests/compiler/dart2js/semantic_visitor_test.dart
|
| diff --git a/tests/compiler/dart2js/semantic_visitor_test.dart b/tests/compiler/dart2js/semantic_visitor_test.dart
|
| index 9e8dc9bd17330061e301e408c9c7d8da03779aad..402ec30e54dd149bdad4e9bf6ae7f089f0089bd2 100644
|
| --- a/tests/compiler/dart2js/semantic_visitor_test.dart
|
| +++ b/tests/compiler/dart2js/semantic_visitor_test.dart
|
| @@ -814,8 +814,17 @@ const Map<String, List<Test>> SEND_TESTS = const {
|
| }
|
| ''',
|
| const Visit(VisitKind.VISIT_SUPER_FIELD_INVOKE,
|
| - element: 'field(B#o)',
|
| - arguments: '(null,42)')),
|
| + element: 'field(B#o)',
|
| + arguments: '(null,42)')),
|
| + const Test.clazz(
|
| + '''
|
| + class B {
|
| + }
|
| + class C extends B {
|
| + m() => super.o;
|
| + }
|
| + ''',
|
| + const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_GET)),
|
| ],
|
| 'Super properties': const [
|
| // Super properties
|
| @@ -880,6 +889,28 @@ const Map<String, List<Test>> SEND_TESTS = const {
|
| const Visit(VisitKind.VISIT_SUPER_METHOD_INVOKE,
|
| element: 'function(B#o)',
|
| arguments: '(null,42)')),
|
| + const Test.clazz(
|
| + '''
|
| + class B {
|
| + o(a, b) {}
|
| + }
|
| + class C extends B {
|
| + m() { super.o(null); }
|
| + }
|
| + ''',
|
| + const Visit(VisitKind.VISIT_SUPER_METHOD_INCOMPATIBLE_INVOKE,
|
| + element: 'function(B#o)',
|
| + arguments: '(null)')),
|
| + const Test.clazz(
|
| + '''
|
| + class B {
|
| + }
|
| + class C extends B {
|
| + m() => super.o(null, 42);
|
| + }
|
| + ''',
|
| + const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_INVOKE,
|
| + arguments: '(null,42)')),
|
| ],
|
| 'Expression invoke': const [
|
| // Expression invoke
|
| @@ -1119,6 +1150,16 @@ const Map<String, List<Test>> SEND_TESTS = const {
|
| element: 'function(B#+)',
|
| operator: '+',
|
| right: '42')),
|
| + const Test.clazz(
|
| + '''
|
| + class B {}
|
| + class C extends B {
|
| + m() => super + 42;
|
| + }
|
| + ''',
|
| + const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_BINARY,
|
| + operator: '+',
|
| + right: '42')),
|
| ],
|
| 'Index': const [
|
| // Index
|
| @@ -1155,6 +1196,16 @@ const Map<String, List<Test>> SEND_TESTS = const {
|
| const Test.clazz(
|
| '''
|
| class B {
|
| + }
|
| + class C extends B {
|
| + m() => super[42];
|
| + }
|
| + ''',
|
| + const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_INDEX,
|
| + index: '42')),
|
| + const Test.clazz(
|
| + '''
|
| + class B {
|
| operator [](_) => null;
|
| operator []=(a, b) {}
|
| }
|
| @@ -1254,6 +1305,16 @@ const Map<String, List<Test>> SEND_TESTS = const {
|
| const Test.clazz(
|
| '''
|
| class B {
|
| + }
|
| + class C extends B {
|
| + m() => -super;
|
| + }
|
| + ''',
|
| + const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_UNARY,
|
| + operator: '-')),
|
| + const Test.clazz(
|
| + '''
|
| + class B {
|
| operator ~() => null;
|
| }
|
| class C extends B {
|
| @@ -3619,11 +3680,24 @@ class SemanticSendTestVisitor extends SemanticTestVisitor {
|
| Node argument,
|
| arg) {
|
| visits.add(new Visit(VisitKind.VISIT_SUPER_BINARY,
|
| - element: function, operator: operator, right: argument));
|
| + element: function, operator: operator, right: argument));
|
| apply(argument, arg);
|
| }
|
|
|
| @override
|
| + visitUnresolvedSuperBinary(
|
| + Send node,
|
| + Element element,
|
| + BinaryOperator operator,
|
| + Node argument,
|
| + arg) {
|
| + visits.add(new Visit(VisitKind.VISIT_UNRESOLVED_SUPER_BINARY,
|
| + operator: operator, right: argument));
|
| + apply(argument, arg);
|
| + }
|
| +
|
| +
|
| + @override
|
| visitSuperIndex(
|
| Send node,
|
| FunctionElement function,
|
| @@ -3635,6 +3709,17 @@ class SemanticSendTestVisitor extends SemanticTestVisitor {
|
| }
|
|
|
| @override
|
| + visitUnresolvedSuperIndex(
|
| + Send node,
|
| + Element element,
|
| + Node index,
|
| + arg) {
|
| + visits.add(new Visit(VisitKind.VISIT_UNRESOLVED_SUPER_INDEX,
|
| + index: index));
|
| + apply(index, arg);
|
| + }
|
| +
|
| + @override
|
| visitSuperNotEquals(
|
| Send node,
|
| FunctionElement function,
|
| @@ -3868,6 +3953,14 @@ class SemanticSendTestVisitor extends SemanticTestVisitor {
|
| }
|
|
|
| @override
|
| + visitUnresolvedSuperGet(
|
| + Send node,
|
| + Element element,
|
| + arg) {
|
| + visits.add(new Visit(VisitKind.VISIT_UNRESOLVED_SUPER_GET));
|
| + }
|
| +
|
| + @override
|
| visitSuperFieldInvoke(
|
| Send node,
|
| FieldElement field,
|
| @@ -3880,6 +3973,18 @@ class SemanticSendTestVisitor extends SemanticTestVisitor {
|
| }
|
|
|
| @override
|
| + visitUnresolvedSuperInvoke(
|
| + Send node,
|
| + Element element,
|
| + NodeList arguments,
|
| + Selector selector,
|
| + arg) {
|
| + visits.add(new Visit(VisitKind.VISIT_UNRESOLVED_SUPER_INVOKE,
|
| + arguments: arguments));
|
| + apply(arguments, arg);
|
| + }
|
| +
|
| + @override
|
| visitSuperFieldSet(
|
| SendSet node,
|
| FieldElement field,
|
| @@ -3911,6 +4016,18 @@ class SemanticSendTestVisitor extends SemanticTestVisitor {
|
| }
|
|
|
| @override
|
| + visitSuperMethodIncompatibleInvoke(
|
| + Send node,
|
| + MethodElement method,
|
| + NodeList arguments,
|
| + CallStructure callStructure,
|
| + arg) {
|
| + visits.add(new Visit(VisitKind.VISIT_SUPER_METHOD_INCOMPATIBLE_INVOKE,
|
| + element: method, arguments: arguments));
|
| + apply(arguments, arg);
|
| + }
|
| +
|
| + @override
|
| visitSuperGetterGet(
|
| Send node,
|
| FunctionElement getter,
|
| @@ -3952,6 +4069,16 @@ class SemanticSendTestVisitor extends SemanticTestVisitor {
|
| }
|
|
|
| @override
|
| + visitUnresolvedSuperUnary(
|
| + Send node,
|
| + UnaryOperator operator,
|
| + Element element,
|
| + arg) {
|
| + visits.add(new Visit(VisitKind.VISIT_UNRESOLVED_SUPER_UNARY,
|
| + operator: operator));
|
| + }
|
| +
|
| + @override
|
| visitEquals(
|
| Send node,
|
| Node left,
|
| @@ -5003,16 +5130,6 @@ class SemanticSendTestVisitor extends SemanticTestVisitor {
|
| }
|
|
|
| @override
|
| - errorUnresolvedSuperBinary(
|
| - Send node,
|
| - ErroneousElement element,
|
| - BinaryOperator operator,
|
| - Node argument,
|
| - arg) {
|
| - // TODO: implement errorUnresolvedSuperBinary
|
| - }
|
| -
|
| - @override
|
| errorUnresolvedSuperCompoundIndexSet(
|
| Send node,
|
| ErroneousElement element,
|
| @@ -5034,24 +5151,6 @@ class SemanticSendTestVisitor extends SemanticTestVisitor {
|
| }
|
|
|
| @override
|
| - errorUnresolvedSuperUnary(
|
| - Send node,
|
| - UnaryOperator operator,
|
| - ErroneousElement element,
|
| - arg) {
|
| - // TODO: implement errorUnresolvedSuperUnary
|
| - }
|
| -
|
| - @override
|
| - errorUnresolvedSuperIndex(
|
| - Send node,
|
| - Element element,
|
| - Node index,
|
| - arg) {
|
| - // TODO: implement errorUnresolvedSuperIndex
|
| - }
|
| -
|
| - @override
|
| errorUnresolvedSuperIndexPostfix(
|
| Send node,
|
| Element function,
|
| @@ -6000,6 +6099,10 @@ enum VisitKind {
|
|
|
| VISIT_SUPER_METHOD_GET,
|
| VISIT_SUPER_METHOD_INVOKE,
|
| + VISIT_SUPER_METHOD_INCOMPATIBLE_INVOKE,
|
| +
|
| + VISIT_UNRESOLVED_SUPER_GET,
|
| + VISIT_UNRESOLVED_SUPER_INVOKE,
|
|
|
| VISIT_BINARY,
|
| VISIT_INDEX,
|
| @@ -6009,7 +6112,9 @@ enum VisitKind {
|
| VISIT_INDEX_POSTFIX,
|
|
|
| VISIT_SUPER_BINARY,
|
| + VISIT_UNRESOLVED_SUPER_BINARY,
|
| VISIT_SUPER_INDEX,
|
| + VISIT_UNRESOLVED_SUPER_INDEX,
|
| VISIT_SUPER_EQUALS,
|
| VISIT_SUPER_NOT_EQUALS,
|
| VISIT_SUPER_INDEX_PREFIX,
|
| @@ -6017,6 +6122,7 @@ enum VisitKind {
|
|
|
| VISIT_UNARY,
|
| VISIT_SUPER_UNARY,
|
| + VISIT_UNRESOLVED_SUPER_UNARY,
|
| VISIT_NOT,
|
|
|
| VISIT_EXPRESSION_INVOKE,
|
|
|