// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

part of dart2js.semantics_visitor_test;

const Map<String, List<Test>> SEND_TESTS = const {
  'Parameters': const [
    // Parameters
    const Test('m(o) => o;',
        const Visit(VisitKind.VISIT_PARAMETER_GET,
                    element: 'parameter(m#o)')),
    const Test('m(o) { o = 42; }',
        const Visit(VisitKind.VISIT_PARAMETER_SET,
                    element: 'parameter(m#o)',
                    rhs:'42')),
    const Test('m(o) { o(null, 42); }',
        const Visit(VisitKind.VISIT_PARAMETER_INVOKE,
                    element: 'parameter(m#o)',
                    arguments: '(null,42)',
                    selector: 'CallStructure(arity=2)')),
    const Test('m(final o) { o = 42; }',
        const Visit(VisitKind.VISIT_FINAL_PARAMETER_SET,
                    element: 'parameter(m#o)',
                    rhs:'42')),
  ],
  'Local variables': const [
    // Local variables
    const Test('m() { var o; return o; }',
        const Visit(VisitKind.VISIT_LOCAL_VARIABLE_GET,
                    element: 'variable(m#o)')),
    const Test('m() { var o; o = 42; }',
        const Visit(VisitKind.VISIT_LOCAL_VARIABLE_SET,
                    element: 'variable(m#o)',
                    rhs:'42')),
    const Test('m() { var o; o(null, 42); }',
        const Visit(VisitKind.VISIT_LOCAL_VARIABLE_INVOKE,
                    element: 'variable(m#o)',
                    arguments: '(null,42)',
                    selector: 'CallStructure(arity=2)')),
    const Test('m() { final o = 0; o = 42; }',
        const Visit(VisitKind.VISIT_FINAL_LOCAL_VARIABLE_SET,
                    element: 'variable(m#o)',
                    rhs:'42')),
    const Test('m() { const o = 0; o = 42; }',
        const Visit(VisitKind.VISIT_FINAL_LOCAL_VARIABLE_SET,
                    element: 'variable(m#o)',
                    rhs:'42')),
  ],
  'Local functions': const [
    // Local functions
    const Test('m() { o(a, b) {}; return o; }',
        const Visit(VisitKind.VISIT_LOCAL_FUNCTION_GET,
                    element: 'function(m#o)')),
    const Test('m() { o(a, b) {}; o(null, 42); }',
        const Visit(VisitKind.VISIT_LOCAL_FUNCTION_INVOKE,
                    element: 'function(m#o)',
                    arguments: '(null,42)',
                    selector: 'CallStructure(arity=2)')),
    const Test('m() { o(a) {}; o(null, 42); }',
        const Visit(VisitKind.VISIT_LOCAL_FUNCTION_INCOMPATIBLE_INVOKE,
                    element: 'function(m#o)',
                    arguments: '(null,42)',
                    selector: 'CallStructure(arity=2)')),
    const Test('m() { o(a, b) {}; o = 42; }',
        const Visit(VisitKind.VISIT_LOCAL_FUNCTION_SET,
                    element: 'function(m#o)',
                    rhs: '42')),
  ],
  'Static fields': const [
    // Static fields
    const Test(
        '''
        class C { static var o; }
        m() => C.o;
        ''',
        const Visit(VisitKind.VISIT_STATIC_FIELD_GET,
                    element: 'field(C#o)')),
    const Test.clazz(
        '''
        class C {
          static var o;
          m() => o;
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_FIELD_GET,
                    element: 'field(C#o)')),
    const Test.clazz(
        '''
        class C {
          static var o;
          m() => C.o;
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_FIELD_GET,
                    element: 'field(C#o)')),
    const Test.prefix(
        '''
        class C {
          static var o;
        }
        ''',
        'm() => p.C.o;',
        const Visit(VisitKind.VISIT_STATIC_FIELD_GET,
                    element: 'field(C#o)')),
    const Test.clazz(
        '''
        class C {
          var o;
          static m() => o;
        }
        ''',
        const Visit(VisitKind.ERROR_INVALID_GET,
                    error: MessageKind.NO_INSTANCE_AVAILABLE)),
    const Test.prefix(
        '''
        class C {
          static var o;
        }
        ''',
        'm() => p.C.o;',
        const [
          const Visit(VisitKind.PREVISIT_DEFERRED_ACCESS,
                      element: 'prefix(p)'),
          const Visit(VisitKind.VISIT_STATIC_FIELD_GET,
                      element: 'field(C#o)'),
        ],
        isDeferred: true),
    const Test(
        '''
        class C {
          var o;
        }
        m() => C.o;
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_GET,
                    name: 'o')),
    const Test(
        '''
        class C {
          var o;
        }
        m() { C.o = 42; }
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_SET,
                    name: 'o',
                    rhs: '42')),
    const Test(
        '''
        class C {
          C.o();
        }
        m() => C.o;
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_GET,
                    name: 'o')),
    const Test.prefix(
        '''
        ''',
        'm() => p.C.o;',
        const [
          const Visit(VisitKind.VISIT_DYNAMIC_PROPERTY_GET,
                      receiver: 'p.C', name: 'o'),
          const Visit(VisitKind.VISIT_UNRESOLVED_GET, name: 'C'),
        ]),
    const Test.prefix(
        '''
        class C {
        }
        ''',
        'm() => p.C.o;',
        const Visit(VisitKind.VISIT_UNRESOLVED_GET, name: 'o')),
    const Test.prefix(
        '''
        ''',
        'm() => p.C.o;',
        const [
          const Visit(VisitKind.VISIT_DYNAMIC_PROPERTY_GET,
                      receiver: 'p.C', name: 'o'),
          const Visit(VisitKind.PREVISIT_DEFERRED_ACCESS,
                      element: 'prefix(p)'),
          const Visit(VisitKind.VISIT_UNRESOLVED_GET,
                      name: 'C'),
        ],
        isDeferred: true),
    const Test.prefix(
        '''
        class C {
        }
        ''',
        'm() => p.C.o;',
        const [
          const Visit(VisitKind.PREVISIT_DEFERRED_ACCESS,
                      element: 'prefix(p)'),
          const Visit(VisitKind.VISIT_UNRESOLVED_GET,
                      name: 'o'),
        ],
        isDeferred: true),
    const Test(
        '''
        class C {}
        m() => C.this;
        ''',
        null),
    const Test(
        '''
        class C {
          static var o;
        }
        m() { C.o = 42; }
        ''',
        const Visit(VisitKind.VISIT_STATIC_FIELD_SET,
                    element: 'field(C#o)',
                    rhs: '42')),
    const Test.clazz(
        '''
        class C {
          static var o;
          m() { o = 42; }
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_FIELD_SET,
                    element: 'field(C#o)',
                    rhs: '42')),
    const Test.clazz(
        '''
        class C {
          static var o;
          m() { C.o = 42; }
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_FIELD_SET,
                    element: 'field(C#o)',
                    rhs: '42')),
    const Test.prefix(
        '''
        class C {
          static var o;
        }
        ''',
        'm() { p.C.o = 42; }',
        const Visit(VisitKind.VISIT_STATIC_FIELD_SET,
                    element: 'field(C#o)',
                    rhs: '42')),
    const Test.clazz(
        '''
        class C {
          var o;
          static m() { o = 42; }
        }
        ''',
        const Visit(VisitKind.ERROR_INVALID_SET,
                    error: MessageKind.NO_INSTANCE_AVAILABLE,
                    rhs: '42')),
    const Test(
        '''
        class C {
          static var o;
        }
        m() { C.o(null, 42); }
        ''',
        const Visit(VisitKind.VISIT_STATIC_FIELD_INVOKE,
                    element: 'field(C#o)',
                    arguments: '(null,42)')),
    const Test.clazz(
        '''
        class C {
          static var o;
          m() { o(null, 42); }
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_FIELD_INVOKE,
                    element: 'field(C#o)',
                    arguments: '(null,42)')),
    const Test.clazz(
        '''
        class C {
          static var o;
          m() { C.o(null, 42); }
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_FIELD_INVOKE,
                    element: 'field(C#o)',
                    arguments: '(null,42)')),
    const Test.clazz(
        '''
        class C {
          var o;
          static m() { o(null, 42); }
        }
        ''',
        const Visit(VisitKind.ERROR_INVALID_INVOKE,
                    error: MessageKind.NO_INSTANCE_AVAILABLE,
                    arguments: '(null,42)')),
    const Test.prefix(
        '''
        class C {
          static var o;
        }
        ''',
        'm() { p.C.o(null, 42); }',
        const Visit(VisitKind.VISIT_STATIC_FIELD_INVOKE,
                    element: 'field(C#o)',
                    arguments: '(null,42)')),
    const Test(
        '''
        class C {}
        m() => C.this(null, 42);
        ''',
        const Visit(VisitKind.ERROR_INVALID_INVOKE,
                    error: MessageKind.THIS_PROPERTY,
                    arguments: '(null,42)')),
    const Test(
        '''
        class C { static final o = 0; }
        m() { C.o = 42; }
        ''',
        const Visit(VisitKind.VISIT_FINAL_STATIC_FIELD_SET,
                    element: 'field(C#o)',
                    rhs: '42')),
    const Test.clazz(
        '''
        class C {
          static final o = 0;
          m() { o = 42; }
        }
        ''',
        const Visit(VisitKind.VISIT_FINAL_STATIC_FIELD_SET,
                    element: 'field(C#o)',
                    rhs: '42')),
    const Test.clazz(
        '''
        class C {
          static final o = 0;
          m() { C.o = 42; }
        }
        ''',
        const Visit(VisitKind.VISIT_FINAL_STATIC_FIELD_SET,
                    element: 'field(C#o)',
                    rhs: '42')),
    const Test.prefix(
        '''
        class C {
          static final o = 0;
        }
        ''',
        'm() { p.C.o = 42; }',
        const Visit(VisitKind.VISIT_FINAL_STATIC_FIELD_SET,
                    element: 'field(C#o)',
                    rhs: '42')),
    const Test(
        '''
        class C { static const o = 0; }
        m() { C.o = 42; }
        ''',
        const Visit(VisitKind.VISIT_FINAL_STATIC_FIELD_SET,
                    element: 'field(C#o)',
                    rhs: '42')),
    const Test.clazz(
        '''
        class C {
          static const o = 0;
          m() { o = 42; }
        }
        ''',
        const Visit(VisitKind.VISIT_FINAL_STATIC_FIELD_SET,
                    element: 'field(C#o)',
                    rhs: '42')),
    const Test.clazz(
        '''
        class C {
          static const o = 0;
          m() { C.o = 42; }
        }
        ''',
        const Visit(VisitKind.VISIT_FINAL_STATIC_FIELD_SET,
                    element: 'field(C#o)',
                    rhs: '42')),
    const Test.prefix(
        '''
        class C {
          static const o = 0;
        }
        ''',
        'm() { p.C.o = 42; }',
        const Visit(VisitKind.VISIT_FINAL_STATIC_FIELD_SET,
                    element: 'field(C#o)',
                    rhs: '42')),
  ],
  'Static properties': const [
    // Static properties
    const Test(
        '''
        class C {
          static get o => null;
        }
        m() => C.o;
        ''',
        const Visit(VisitKind.VISIT_STATIC_GETTER_GET,
                    element: 'getter(C#o)')),
    const Test.clazz(
        '''
        class C {
          static get o => null;
          m() => o;
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_GETTER_GET,
                    element: 'getter(C#o)')),
    const Test.clazz(
        '''
        class C {
          static get o => null;
          m() => C.o;
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_GETTER_GET,
                    element: 'getter(C#o)')),
    const Test.prefix(
        '''
        class C {
          static get o => null;
        }
        ''',
        'm() => p.C.o;',
        const Visit(VisitKind.VISIT_STATIC_GETTER_GET,
                    element: 'getter(C#o)')),
    const Test(
        '''
        class C { static get o => 42; }
        m() { C.o = 42; }
        ''',
        const Visit(VisitKind.VISIT_STATIC_GETTER_SET,
                    element: 'getter(C#o)',
                    rhs: '42')),
    const Test.clazz(
        '''
        class C {
          static get o => 42;
          m() { o = 42; }
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_GETTER_SET,
                    element: 'getter(C#o)',
                    rhs: '42')),
    const Test.clazz(
        '''
        class C {
          static get o => 42;
          m() { C.o = 42; }
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_GETTER_SET,
                    element: 'getter(C#o)',
                    rhs: '42')),
    const Test.prefix(
        '''
        class C {
          static get o => 42;
        }
        ''',
        'm() { p.C.o = 42; }',
        const Visit(VisitKind.VISIT_STATIC_GETTER_SET,
                    element: 'getter(C#o)',
                    rhs: '42')),
    const Test(
        '''
        class C {
          static set o(_) {}
        }
        m() => C.o;
        ''',
        const Visit(VisitKind.VISIT_STATIC_SETTER_GET,
                    element: 'setter(C#o)')),
    const Test.clazz(
        '''
        class C {
          static set o(_) {}
          m() => o;
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_SETTER_GET,
                    element: 'setter(C#o)')),

    const Test.clazz(
        '''
        class C {
          static set o(_) {}
          m() => C.o;
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_SETTER_GET,
                    element: 'setter(C#o)')),
    const Test.prefix(
        '''
        class C {
          static set o(_) {}
        }
        ''',
        'm() => p.C.o;',
        const Visit(VisitKind.VISIT_STATIC_SETTER_GET,
                    element: 'setter(C#o)')),
    const Test(
        '''
        class C { static set o(_) {} }
        m() { C.o = 42; }
        ''',
        const Visit(VisitKind.VISIT_STATIC_SETTER_SET,
                    element: 'setter(C#o)',
                    rhs: '42')),
    const Test.clazz(
        '''
        class C {
          static set o(_) {}
          m() { o = 42; }
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_SETTER_SET,
                    element: 'setter(C#o)',
                    rhs: '42')),
    const Test.clazz(
        '''
        class C {
          static set o(_) {}
          m() { C.o = 42; }
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_SETTER_SET,
                    element: 'setter(C#o)',
                    rhs: '42')),
    const Test.prefix(
        '''
        class C {
          static set o(_) {}
        }
        ''',
        'm() { p.C.o = 42; }',
        const Visit(VisitKind.VISIT_STATIC_SETTER_SET,
                    element: 'setter(C#o)',
                    rhs: '42')),
    const Test(
        '''
        class C { static get o => null; }
        m() => C.o(null, 42);
        ''',
        const Visit(VisitKind.VISIT_STATIC_GETTER_INVOKE,
                    element: 'getter(C#o)',
                    arguments: '(null,42)')),
    const Test.clazz(
        '''
        class C {
          static get o => null;
          m() { o(null, 42); }
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_GETTER_INVOKE,
                    element: 'getter(C#o)',
                    arguments: '(null,42)')),
    const Test.clazz(
        '''
        class C {
          static get o => null;
          m() { C.o(null, 42); }
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_GETTER_INVOKE,
                    element: 'getter(C#o)',
                    arguments: '(null,42)')),
    const Test.prefix(
        '''
        class C {
          static get o => null;
        }
        ''',
        'm() { p.C.o(null, 42); }',
        const Visit(VisitKind.VISIT_STATIC_GETTER_INVOKE,
                    element: 'getter(C#o)',
                    arguments: '(null,42)')),
    const Test(
        '''
        class C { static set o(_) {} }
        m() => C.o(null, 42);
        ''',
        const Visit(VisitKind.VISIT_STATIC_SETTER_INVOKE,
                    element: 'setter(C#o)',
                    arguments: '(null,42)')),
    const Test.clazz(
        '''
        class C {
          static set o(_) {}
          m() { o(null, 42); }
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_SETTER_INVOKE,
                    element: 'setter(C#o)',
                    arguments: '(null,42)')),
    const Test.clazz(
        '''
        class C {
          static set o(_) {}
          m() { C.o(null, 42); }
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_SETTER_INVOKE,
                    element: 'setter(C#o)',
                    arguments: '(null,42)')),
    const Test.prefix(
        '''
        class C {
          static set o(_) {}
        }
        ''',
        'm() { p.C.o(null, 42); }',
        const Visit(VisitKind.VISIT_STATIC_SETTER_INVOKE,
                    element: 'setter(C#o)',
                    arguments: '(null,42)')),
  ],
  'Static functions': const [
    // Static functions
    const Test(
        '''
        class C { static o(a, b) {} }
        m() => C.o;
        ''',
        const Visit(VisitKind.VISIT_STATIC_FUNCTION_GET,
                    element: 'function(C#o)')),
    const Test.clazz(
        '''
        class C {
          static o(a, b) {}
          m() => o;
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_FUNCTION_GET,
                    element: 'function(C#o)')),
    const Test.clazz(
        '''
        class C {
          static o(a, b) {}
          m() => C.o;
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_FUNCTION_GET,
                    element: 'function(C#o)')),
    const Test.prefix(
        '''
        class C { static o(a, b) {} }
        ''',
        '''
        m() => p.C.o;
        ''',
        const Visit(VisitKind.VISIT_STATIC_FUNCTION_GET,
                    element: 'function(C#o)')),
    const Test(
        '''
        class C { static o(a, b) {} }
        m() { C.o = 42; }
        ''',
        const Visit(VisitKind.VISIT_STATIC_FUNCTION_SET,
                    element: 'function(C#o)',
                    rhs: '42')),
    const Test.clazz(
        '''
        class C {
          static o(a, b) {}
          m() { o = 42; }
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_FUNCTION_SET,
                    element: 'function(C#o)',
                    rhs: '42')),
    const Test.clazz(
        '''
        class C {
          static o(a, b) {}
          m() { C.o = 42; }
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_FUNCTION_SET,
                    element: 'function(C#o)',
                    rhs: '42')),
    const Test.prefix(
        '''
        class C { static o(a, b) {} }
        ''',
        '''
        m() { p.C.o = 42; }
        ''',
        const Visit(VisitKind.VISIT_STATIC_FUNCTION_SET,
                    element: 'function(C#o)',
                    rhs: '42')),
    const Test(
        '''
        class C { static o(a, b) {} }
        m() => C.o(null, 42);
        ''',
        const Visit(VisitKind.VISIT_STATIC_FUNCTION_INVOKE,
                    element: 'function(C#o)',
                    arguments: '(null,42)')),
    const Test.clazz(
        '''
        class C {
          static o(a, b) {}
          m() { o(null, 42); }
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_FUNCTION_INVOKE,
                    element: 'function(C#o)',
                    arguments: '(null,42)')),
    const Test.clazz(
        '''
        class C {
          static o(a, b) {}
          m() { C.o(null, 42); }
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_FUNCTION_INVOKE,
                    element: 'function(C#o)',
                    arguments: '(null,42)')),
    const Test.prefix(
        '''
        class C {
          static o(a, b) {}
        }
        ''',
        'm() { p.C.o(null, 42); }',
        const Visit(VisitKind.VISIT_STATIC_FUNCTION_INVOKE,
                    element: 'function(C#o)',
                    arguments: '(null,42)')),
    const Test(
        '''
        class C { static o(a, b) {} }
        m() => C.o(null);
        ''',
        const Visit(VisitKind.VISIT_STATIC_FUNCTION_INCOMPATIBLE_INVOKE,
                    element: 'function(C#o)',
                    arguments: '(null)')),
  ],
  'Top level fields': const [
    // Top level fields
    const Test(
        '''
        var o;
        m() => o;
        ''',
        const Visit(VisitKind.VISIT_TOP_LEVEL_FIELD_GET,
                    element: 'field(o)')),
    const Test.prefix(
        '''
        var o;
        ''',
        'm() => p.o;',
        const Visit(VisitKind.VISIT_TOP_LEVEL_FIELD_GET,
                    element: 'field(o)')),
    const Test.prefix(
        '''
        var o;
        ''',
        'm() => p.o;',
        const [
          const Visit(VisitKind.PREVISIT_DEFERRED_ACCESS,
                      element: 'prefix(p)'),
          const Visit(VisitKind.VISIT_TOP_LEVEL_FIELD_GET,
                      element: 'field(o)'),
        ],
        isDeferred: true),
    const Test.prefix(
        '''
        ''',
        'm() => p.o;',
        const Visit(VisitKind.VISIT_UNRESOLVED_GET,
                    name: 'o')),
    const Test.prefix(
        '''
        ''',
        'm() => p.o;',
        const [
          const Visit(VisitKind.PREVISIT_DEFERRED_ACCESS,
                      element: 'prefix(p)'),
          const Visit(VisitKind.VISIT_UNRESOLVED_GET,
                      name: 'o'),
        ],
        isDeferred: true),
    const Test.prefix(
        '''
        ''',
        'm() => p;',
        const Visit(VisitKind.ERROR_INVALID_GET,
                    error: MessageKind.PREFIX_AS_EXPRESSION)),
    const Test(
        '''
        var o;
        m() { o = 42; }
        ''',
        const Visit(VisitKind.VISIT_TOP_LEVEL_FIELD_SET,
                    element: 'field(o)',
                    rhs: '42')),
    const Test.prefix(
        '''
        var o;
        ''',
        'm() { p.o = 42; }',
        const Visit(VisitKind.VISIT_TOP_LEVEL_FIELD_SET,
                    element: 'field(o)',
                    rhs: '42')),
    const Test.prefix(
        '''
        ''',
        'm() { p = 42; }',
        const Visit(VisitKind.ERROR_INVALID_SET,
                    error: MessageKind.PREFIX_AS_EXPRESSION,
                    rhs: '42')),
    const Test(
        '''
        final o = 0;
        m() { o = 42; }
        ''',
        const Visit(VisitKind.VISIT_FINAL_TOP_LEVEL_FIELD_SET,
                    element: 'field(o)',
                    rhs: '42')),
    const Test.prefix(
        '''
        final o = 0;
        ''',
        'm() { p.o = 42; }',
        const Visit(VisitKind.VISIT_FINAL_TOP_LEVEL_FIELD_SET,
                    element: 'field(o)',
                    rhs: '42')),
    const Test(
        '''
        const o = 0;
        m() { o = 42; }
        ''',
        const Visit(VisitKind.VISIT_FINAL_TOP_LEVEL_FIELD_SET,
                    element: 'field(o)',
                    rhs: '42')),
    const Test.prefix(
        '''
        const o = 0;
        ''',
        'm() { p.o = 42; }',
        const Visit(VisitKind.VISIT_FINAL_TOP_LEVEL_FIELD_SET,
                    element: 'field(o)',
                    rhs: '42')),
    const Test(
        '''
        var o;
        m() { o(null, 42); }
        ''',
        const Visit(VisitKind.VISIT_TOP_LEVEL_FIELD_INVOKE,
                    element: 'field(o)',
                    arguments: '(null,42)')),
    const Test.prefix(
        '''
        var o;
        ''',
        'm() { p.o(null, 42); }',
        const Visit(VisitKind.VISIT_TOP_LEVEL_FIELD_INVOKE,
                    element: 'field(o)',
                    arguments: '(null,42)')),
    const Test.prefix(
        '''
        ''',
        'm() { p(null, 42); }',
        const Visit(VisitKind.ERROR_INVALID_INVOKE,
                    error: MessageKind.PREFIX_AS_EXPRESSION,
                    arguments: '(null,42)')),
    const Test(
        '''
        m() => o;
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_GET,
                    name: 'o')),
    const Test(
        '''
        m() { o = 42; }
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_SET,
                    name: 'o',
                    rhs: '42')),
  ],
  'Top level properties': const [
    // Top level properties
    const Test(
        '''
        get o => null;
        m() => o;
        ''',
        const Visit(VisitKind.VISIT_TOP_LEVEL_GETTER_GET,
                    element: 'getter(o)')),
    const Test.prefix(
        '''
        get o => null;
        ''',
        '''
        m() => p.o;
        ''',
        const Visit(VisitKind.VISIT_TOP_LEVEL_GETTER_GET,
                    element: 'getter(o)')),
    const Test(
        '''
        set o(_) {}
        m() => o;
        ''',
        const Visit(VisitKind.VISIT_TOP_LEVEL_SETTER_GET,
                    element: 'setter(o)')),
    const Test.prefix(
        '''
        set o(_) {}
        ''',
        '''
        m() => p.o;
        ''',
        const Visit(VisitKind.VISIT_TOP_LEVEL_SETTER_GET,
                    element: 'setter(o)')),
    const Test(
        '''
        get o => null;
        m() { o = 42; }
        ''',
        const Visit(VisitKind.VISIT_TOP_LEVEL_GETTER_SET,
                    element: 'getter(o)',
                    rhs: '42')),
    const Test.prefix(
        '''
        get o => null;
        ''',
        'm() { p.o = 42; }',
        const Visit(VisitKind.VISIT_TOP_LEVEL_GETTER_SET,
                    element: 'getter(o)',
                    rhs: '42')),
    const Test(
        '''
        set o(_) {}
        m() { o = 42; }
        ''',
        const Visit(VisitKind.VISIT_TOP_LEVEL_SETTER_SET,
                    element: 'setter(o)',
                    rhs: '42')),
    const Test.prefix(
        '''
        set o(_) {}
        ''',
        'm() { p.o = 42; }',
        const Visit(VisitKind.VISIT_TOP_LEVEL_SETTER_SET,
                    element: 'setter(o)',
                    rhs: '42')),
    const Test(
        '''
        get o => null;
        m() => o(null, 42);
        ''',
        const Visit(VisitKind.VISIT_TOP_LEVEL_GETTER_INVOKE,
                    element: 'getter(o)',
                    arguments: '(null,42)')),
    const Test.prefix(
        '''
        get o => null;
        ''',
        'm() { p.o(null, 42); }',
        const Visit(VisitKind.VISIT_TOP_LEVEL_GETTER_INVOKE,
                    element: 'getter(o)',
                    arguments: '(null,42)')),
    const Test(
        '''
        set o(_) {}
        m() => o(null, 42);
        ''',
        const Visit(VisitKind.VISIT_TOP_LEVEL_SETTER_INVOKE,
                    element: 'setter(o)',
                    arguments: '(null,42)')),
    const Test.prefix(
        '''
        set o(_) {}
        ''',
        'm() { p.o(null, 42); }',
        const Visit(VisitKind.VISIT_TOP_LEVEL_SETTER_INVOKE,
                    element: 'setter(o)',
                    arguments: '(null,42)')),
  ],
  'Top level functions': const [
    // Top level functions
    const Test(
        '''
        o(a, b) {}
        m() => o;
        ''',
        const Visit(VisitKind.VISIT_TOP_LEVEL_FUNCTION_GET,
                    element: 'function(o)')),
    const Test(
        '''
        o(a, b) {}
        m() => o(null, 42);
        ''',
        const Visit(VisitKind.VISIT_TOP_LEVEL_FUNCTION_INVOKE,
                    element: 'function(o)',
                    arguments: '(null,42)')),
    const Test(
        '''
        o(a, b) {}
        m() => o(null);
        ''',
        const Visit(VisitKind.VISIT_TOP_LEVEL_FUNCTION_INCOMPATIBLE_INVOKE,
                    element: 'function(o)',
                    arguments: '(null)')),
    const Test.prefix(
        '''
        o(a, b) {}
        ''',
        'm() { p.o(null, 42); }',
        const Visit(VisitKind.VISIT_TOP_LEVEL_FUNCTION_INVOKE,
                    element: 'function(o)',
                    arguments: '(null,42)')),
    const Test(
        '''
        m() => o(null, 42);
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_INVOKE,
                    name: 'o',
                    arguments: '(null,42)')),
    const Test.prefix(
        '''
        o(a, b) {}
        ''',
        'm() => p.o(null, 42);',
        const [
          const Visit(VisitKind.PREVISIT_DEFERRED_ACCESS,
                      element: 'prefix(p)'),
          const Visit(VisitKind.VISIT_TOP_LEVEL_FUNCTION_INVOKE,
                      element: 'function(o)',
                      arguments: '(null,42)'),
        ],
        isDeferred: true),
    const Test.prefix(
        '''
        ''',
        'm() => p.o(null, 42);',
        const Visit(VisitKind.VISIT_UNRESOLVED_INVOKE,
                    name: 'o',
                    arguments: '(null,42)')),
    const Test.prefix(
        '''
        ''',
        'm() => p.o(null, 42);',
        const [
          const Visit(VisitKind.PREVISIT_DEFERRED_ACCESS,
                      element: 'prefix(p)'),
          const Visit(VisitKind.VISIT_UNRESOLVED_INVOKE,
                      name: 'o',
                      arguments: '(null,42)'),
        ],
        isDeferred: true),
    const Test.prefix(
        '''
        ''',
        'm() => p(null, 42);',
        const Visit(VisitKind.ERROR_INVALID_INVOKE,
                    error: MessageKind.PREFIX_AS_EXPRESSION,
                    arguments: '(null,42)')),
    const Test(
        '''
        o(a, b) {}
        m() { o = 42; }
        ''',
        const Visit(VisitKind.VISIT_TOP_LEVEL_FUNCTION_SET,
                    element: 'function(o)',
                    rhs: '42')),
    const Test.prefix(
        '''
        o(a, b) {}
        ''',
        'm() { p.o = 42; }',
        const Visit(VisitKind.VISIT_TOP_LEVEL_FUNCTION_SET,
                    element: 'function(o)',
                    rhs: '42')),
  ],
  'Dynamic properties': const [
    // Dynamic properties
    const Test('m(o) => o.foo;',
        const [
          const Visit(VisitKind.VISIT_DYNAMIC_PROPERTY_GET,
                      receiver: 'o',
                      name: 'foo'),
          const Visit(VisitKind.VISIT_PARAMETER_GET,
                      element: 'parameter(m#o)'),
        ]),
    const Test('m(o) { o.foo = 42; }',
        const [
          const Visit(VisitKind.VISIT_DYNAMIC_PROPERTY_SET,
                      receiver: 'o',
                      name: 'foo',
                      rhs: '42'),
          const Visit(VisitKind.VISIT_PARAMETER_GET,
                      element: 'parameter(m#o)'),
        ]),
    const Test('m(o) { o.foo(null, 42); }',
        const [
          const Visit(VisitKind.VISIT_DYNAMIC_PROPERTY_INVOKE,
                      receiver: 'o',
                      name: 'foo',
                      arguments: '(null,42)'),
          const Visit(VisitKind.VISIT_PARAMETER_GET,
                      element: 'parameter(m#o)'),
        ]),
  ],
  'This access': const [
    // This access
    const Test.clazz(
        '''
        class C {
          m() => this;
        }
        ''',
        const Visit(VisitKind.VISIT_THIS_GET)),
    const Test.clazz(
        '''
        class C {
          call(a, b) {}
          m() { this(null, 42); }
        }
        ''',
        const Visit(VisitKind.VISIT_THIS_INVOKE,
                    arguments: '(null,42)')),
    const Test.clazz(
        '''
        class C {
          call(a, b) {}
          static m() { this(null, 42); }
        }
        ''',
        const Visit(VisitKind.ERROR_INVALID_INVOKE,
                    error: MessageKind.NO_THIS_AVAILABLE,
                    arguments: '(null,42)')),
  ],
  'This properties': const [
    // This properties
    const Test.clazz(
        '''
        class C {
          var foo;
          m() => foo;
        }
        ''',
        const Visit(VisitKind.VISIT_THIS_PROPERTY_GET,
                    name: 'foo')),
    const Test.clazz(
        '''
        class C {
          var foo;
          m() => this.foo;
        }
        ''',
        const Visit(VisitKind.VISIT_THIS_PROPERTY_GET,
                    name: 'foo')),
    const Test.clazz(
        '''
        class C {
          get foo => null;
          m() => foo;
        }
        ''',
        const Visit(VisitKind.VISIT_THIS_PROPERTY_GET,
                    name: 'foo')),
    const Test.clazz(
        '''
        class C {
          var foo;
          static m() => this.foo;
        }
        ''',
        const Visit(VisitKind.ERROR_INVALID_GET,
                    error: MessageKind.NO_THIS_AVAILABLE)),
    const Test.clazz(
        '''
        class C {
          get foo => null;
          m() => this.foo;
        }
        ''',
        const Visit(VisitKind.VISIT_THIS_PROPERTY_GET,
                    name: 'foo')),
    const Test.clazz(
        '''
        class C {
          var foo;
          m() { foo = 42; }
        }
        ''',
        const Visit(VisitKind.VISIT_THIS_PROPERTY_SET,
                    name: 'foo',
                    rhs: '42')),
    const Test.clazz(
        '''
        class C {
          var foo;
          m() { this.foo = 42; }
        }
        ''',
        const Visit(VisitKind.VISIT_THIS_PROPERTY_SET,
                    name: 'foo',
                    rhs: '42')),
    const Test.clazz(
        '''
        class C {
          set foo(_) {}
          m() { foo = 42; }
        }
        ''',
        const Visit(VisitKind.VISIT_THIS_PROPERTY_SET,
                    name: 'foo',
                    rhs: '42')),
    const Test.clazz(
        '''
        class C {
          set foo(_) {}
          m() { this.foo = 42; }
        }
        ''',
        const Visit(VisitKind.VISIT_THIS_PROPERTY_SET,
                    name: 'foo',
                    rhs: '42')),
    const Test.clazz(
        '''
        class C {
          var foo;
          m() { foo(null, 42); }
        }
        ''',
        const Visit(VisitKind.VISIT_THIS_PROPERTY_INVOKE,
                    name: 'foo',
                    arguments: '(null,42)')),
    const Test.clazz(
        '''
        class C {
          var foo;
          m() { this.foo(null, 42); }
        }
        ''',
        const Visit(VisitKind.VISIT_THIS_PROPERTY_INVOKE,
                    name: 'foo',
                    arguments: '(null,42)')),
    const Test.clazz(
        '''
        class C {
          var foo;
          static m() { this.foo(null, 42); }
        }
        ''',
        const Visit(VisitKind.ERROR_INVALID_INVOKE,
                    error: MessageKind.NO_THIS_AVAILABLE,
                    arguments: '(null,42)')),
  ],
  'Super fields': const [
    // Super fields
    const Test.clazz(
        '''
        class B {
          var o;
        }
        class C extends B {
          m() => super.o;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_FIELD_GET,
                    element: 'field(B#o)')),
    const Test.clazz(
        '''
        class B {
          var o;
        }
        class C extends B {
          m() { super.o = 42; }
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_FIELD_SET,
                    element: 'field(B#o)',
                    rhs: '42')),
    const Test.clazz(
        '''
        class B {
          final o = 0;
        }
        class C extends B {
          m() { super.o = 42; }
        }
        ''',
        const Visit(VisitKind.VISIT_FINAL_SUPER_FIELD_SET,
                    element: 'field(B#o)',
                    rhs: '42')),
    const Test.clazz(
        '''
        class B {
          var o;
        }
        class C extends B {
          m() { super.o(null, 42); }
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_FIELD_INVOKE,
                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
    const Test.clazz(
        '''
        class B {
          get o => null;
        }
        class C extends B {
          m() => super.o;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_GETTER_GET,
                    element: 'getter(B#o)')),
    const Test.clazz(
        '''
        class B {
          set o(_) {}
        }
        class C extends B {
          m() => super.o;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_SETTER_GET,
                    element: 'setter(B#o)')),
    const Test.clazz(
        '''
        class B {
          get o => 0;
        }
        class C extends B {
          m() { super.o = 42; }
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_GETTER_SET,
                    element: 'getter(B#o)',
                    rhs: '42')),
    const Test.clazz(
        '''
        class B {
          set o(_) {}
        }
        class C extends B {
          m() { super.o = 42; }
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_SETTER_SET,
                    element: 'setter(B#o)',
                    rhs: '42')),
    const Test.clazz(
        '''
        class B {
          get o => null;
        }
        class C extends B {
          m() { super.o(null, 42); }
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_GETTER_INVOKE,
                    element: 'getter(B#o)',
                    arguments: '(null,42)')),
    const Test.clazz(
        '''
        class B {
          set o(_) {}
        }
        class C extends B {
          m() { super.o(null, 42); }
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_SETTER_INVOKE,
                    element: 'setter(B#o)',
                    arguments: '(null,42)')),
  ],
  'Super methods': const [
    // Super methods
    const Test.clazz(
        '''
        class B {
          o(a, b) {}
        }
        class C extends B {
          m() => super.o;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_METHOD_GET,
                    element: 'function(B#o)')),
    const Test.clazz(
        '''
        class B {
          o(a, b) {}
        }
        class C extends B {
          m() { super.o = 42; }
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_METHOD_SET,
                    element: 'function(B#o)',
                    rhs: '42')),
    const Test.clazz(
        '''
        class B {
          o(a, b) {}
        }
        class C extends B {
          m() { super.o(null, 42); }
        }
        ''',
        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
    const Test('m() => (a, b){}(null, 42);',
        const Visit(VisitKind.VISIT_EXPRESSION_INVOKE,
                    receiver: '(a,b){}',
                    arguments: '(null,42)')),
  ],
  'Class type literals': const [
    // Class type literals
    const Test(
        '''
        class C {}
        m() => C;
        ''',
        const Visit(VisitKind.VISIT_CLASS_TYPE_LITERAL_GET,
                    constant: 'C')),
    const Test(
        '''
        class C {}
        m() => C(null, 42);
        ''',
        const Visit(VisitKind.VISIT_CLASS_TYPE_LITERAL_INVOKE,
                    constant: 'C',
                    arguments: '(null,42)')),
    const Test(
        '''
        class C {}
        m() => C = 42;
        ''',
        const Visit(VisitKind.VISIT_CLASS_TYPE_LITERAL_SET,
                    constant: 'C',
                    rhs: '42')),
    const Test(
        '''
        class C {}
        m() => C += 42;
        ''',
        const Visit(VisitKind.VISIT_CLASS_TYPE_LITERAL_COMPOUND,
                    constant: 'C',
                    operator: '+=',
                    rhs: '42')),
    const Test(
        '''
        class C {}
        m() => C ??= 42;
        ''',
        const Visit(VisitKind.VISIT_CLASS_TYPE_LITERAL_SET_IF_NULL,
                    constant: 'C',
                    rhs: '42')),
    const Test(
        '''
        class C {}
        m() => ++C;
        ''',
        const Visit(VisitKind.VISIT_CLASS_TYPE_LITERAL_PREFIX,
                    constant: 'C',
                    operator: '++')),
    const Test(
        '''
        class C {}
        m() => C--;
        ''',
        const Visit(VisitKind.VISIT_CLASS_TYPE_LITERAL_POSTFIX,
                    constant: 'C',
                    operator: '--')),
    const Test(
        '''
        class C {}
        m() => (C).hashCode;
        ''',
        const [
          const Visit(VisitKind.VISIT_DYNAMIC_PROPERTY_GET,
                      receiver: '(C)', name: 'hashCode'),
          const Visit(VisitKind.VISIT_CLASS_TYPE_LITERAL_GET,
                      constant: 'C'),
        ]),
  ],
  'Typedef type literals': const [
    // Typedef type literals
    const Test(
        '''
        typedef F();
        m() => F;
        ''',
        const Visit(VisitKind.VISIT_TYPEDEF_TYPE_LITERAL_GET,
                    constant: 'F')),
    const Test(
        '''
        typedef F();
        m() => F(null, 42);
        ''',
        const Visit(VisitKind.VISIT_TYPEDEF_TYPE_LITERAL_INVOKE,
                    constant: 'F',
                    arguments: '(null,42)')),
    const Test(
        '''
        typedef F();
        m() => F = 42;
        ''',
        const Visit(VisitKind.VISIT_TYPEDEF_TYPE_LITERAL_SET,
                    constant: 'F',
                    rhs: '42')),
    const Test(
        '''
        typedef F();
        m() => F += 42;
        ''',
        const Visit(VisitKind.VISIT_TYPEDEF_TYPE_LITERAL_COMPOUND,
                    constant: 'F',
                    operator: '+=',
                    rhs: '42')),
    const Test(
        '''
        typedef F();
        m() => F ??= 42;
        ''',
        const Visit(VisitKind.VISIT_TYPEDEF_TYPE_LITERAL_SET_IF_NULL,
                    constant: 'F',
                    rhs: '42')),
    const Test(
        '''
        typedef F();
        m() => ++F;
        ''',
        const Visit(VisitKind.VISIT_TYPEDEF_TYPE_LITERAL_PREFIX,
                    constant: 'F',
                    operator: '++')),
    const Test(
        '''
        typedef F();
        m() => F--;
        ''',
        const Visit(VisitKind.VISIT_TYPEDEF_TYPE_LITERAL_POSTFIX,
                    constant: 'F',
                    operator: '--')),
  ],
  'Type variable type literals': const [
    // Type variable type literals
    const Test.clazz(
        '''
        class C<T> {
          m() => T;
        }
        ''',
        const Visit(VisitKind.VISIT_TYPE_VARIABLE_TYPE_LITERAL_GET,
                    element: 'type_variable(C#T)')),
    const Test.clazz(
        '''
        class C<T> {
          m() => T(null, 42);
        }
        ''',
        const Visit(VisitKind.VISIT_TYPE_VARIABLE_TYPE_LITERAL_INVOKE,
                    element: 'type_variable(C#T)',
                    arguments: '(null,42)')),
    const Test.clazz(
        '''
        class C<T> {
          m() => T = 42;
        }
        ''',
        const Visit(VisitKind.VISIT_TYPE_VARIABLE_TYPE_LITERAL_SET,
                    element: 'type_variable(C#T)',
                    rhs: '42')),
    const Test.clazz(
        '''
        class C<T> {
          m() => T += 42;
        }
        ''',
        const Visit(VisitKind.VISIT_TYPE_VARIABLE_TYPE_LITERAL_COMPOUND,
                    element: 'type_variable(C#T)',
                    operator: '+=',
                    rhs: '42')),
    const Test.clazz(
        '''
        class C<T> {
          m() => T ??= 42;
        }
        ''',
        const Visit(VisitKind.VISIT_TYPE_VARIABLE_TYPE_LITERAL_SET_IF_NULL,
                    element: 'type_variable(C#T)',
                    rhs: '42')),
    const Test.clazz(
        '''
        class C<T> {
          m() => ++T;
        }
        ''',
        const Visit(VisitKind.VISIT_TYPE_VARIABLE_TYPE_LITERAL_PREFIX,
                    element: 'type_variable(C#T)',
                    operator: '++')),
    const Test.clazz(
        '''
        class C<T> {
          m() => T--;
        }
        ''',
        const Visit(VisitKind.VISIT_TYPE_VARIABLE_TYPE_LITERAL_POSTFIX,
                    element: 'type_variable(C#T)',
                    operator: '--')),
    const Test.clazz(
        '''
        class C<T> {
          static m() => T;
        }
        ''',
        const Visit(VisitKind.ERROR_INVALID_GET,
                    error: MessageKind.TYPE_VARIABLE_WITHIN_STATIC_MEMBER)),
    const Test.clazz(
        '''
        class C<T> {
          static m() => T(null, 42);
        }
        ''',
        const Visit(VisitKind.ERROR_INVALID_INVOKE,
                    error: MessageKind.TYPE_VARIABLE_WITHIN_STATIC_MEMBER,
                    arguments: '(null,42)')),
    const Test.clazz(
        '''
        class C<T> {
          static m() => T ??= 42;
        }
        ''',
        const Visit(VisitKind.ERROR_INVALID_SET_IF_NULL,
                    error: MessageKind.TYPE_VARIABLE_WITHIN_STATIC_MEMBER,
                    rhs: '42')),
    const Test.clazz(
        '''
        class C<T> {
          static m() => T ??= 42;
        }
        ''',
        const Visit(VisitKind.ERROR_INVALID_SET_IF_NULL,
                    error: MessageKind.TYPE_VARIABLE_WITHIN_STATIC_MEMBER,
                    rhs: '42')),
    const Test.clazz(
        '''
        class C<T> {
          static m() => ++T;
        }
        ''',
        const Visit(VisitKind.ERROR_INVALID_PREFIX,
                    error: MessageKind.TYPE_VARIABLE_WITHIN_STATIC_MEMBER,
                    operator: '++')),
    const Test.clazz(
        '''
        class C<T> {
          static m() => T--;
        }
        ''',
        const Visit(VisitKind.ERROR_INVALID_POSTFIX,
                    error: MessageKind.TYPE_VARIABLE_WITHIN_STATIC_MEMBER,
                    operator: '--')),
  ],
  'Dynamic type literals': const [
    // Dynamic type literals
    const Test(
        '''
        m() => dynamic;
        ''',
        const Visit(VisitKind.VISIT_DYNAMIC_TYPE_LITERAL_GET,
                    constant: 'dynamic')),
    // TODO(johnniwinther): Update these to expect the constant to be `dynamic`
    // instead of `Type`. Currently the compile time constant evaluator cannot
    // detect `dynamic` as a constant subexpression.
    const Test(
        '''
        m() { dynamic(null, 42); }
        ''',
        const Visit(VisitKind.VISIT_DYNAMIC_TYPE_LITERAL_INVOKE,
                    constant: 'Type',
                    arguments: '(null,42)')),
    const Test(
        '''
        m() => dynamic = 42;
        ''',
        const Visit(VisitKind.VISIT_DYNAMIC_TYPE_LITERAL_SET,
                    constant: 'dynamic',
                    rhs: '42')),
    const Test(
        '''
        m() => dynamic += 42;
        ''',
        const Visit(VisitKind.VISIT_DYNAMIC_TYPE_LITERAL_COMPOUND,
                    constant: 'dynamic',
                    operator: '+=',
                    rhs: '42')),
    const Test(
        '''
        m() => dynamic ??= 42;
        ''',
        const Visit(VisitKind.VISIT_DYNAMIC_TYPE_LITERAL_SET_IF_NULL,
                    constant: 'dynamic',
                    rhs: '42')),
    const Test(
        '''
        m() => ++dynamic;
        ''',
        const Visit(VisitKind.VISIT_DYNAMIC_TYPE_LITERAL_PREFIX,
                    constant: 'dynamic',
                    operator: '++')),
    const Test(
        '''
        m() => dynamic--;
        ''',
        const Visit(VisitKind.VISIT_DYNAMIC_TYPE_LITERAL_POSTFIX,
                    constant: 'dynamic',
                    operator: '--')),
  ],
  'Assert': const [
    // Assert
    const Test(
        '''
        m() { assert(m()); }
        ''',
        const Visit(VisitKind.VISIT_TOP_LEVEL_FUNCTION_INVOKE,
                    element: 'function(m)',
                    arguments: '()')),
  ],
  'Logical and': const [
    // Logical and
    const Test(
        '''
        m() => true && false;
        ''',
        const Visit(VisitKind.VISIT_LOGICAL_AND, left: 'true', right: 'false')),
  ],
  'Logical or': const [
    // Logical or
    const Test(
        '''
        m() => true || false;
        ''',
        const Visit(VisitKind.VISIT_LOGICAL_OR, left: 'true', right: 'false')),
  ],
  'Is test': const [
    // Is test
    const Test(
        '''
        class C {}
        m() => 0 is C;
        ''',
        const Visit(VisitKind.VISIT_IS, expression: '0', type: 'C')),
  ],
  'Is not test': const [
    // Is not test
    const Test(
        '''
        class C {}
        m() => 0 is! C;
        ''',
        const Visit(VisitKind.VISIT_IS_NOT, expression: '0', type: 'C')),
  ],
  'As test': const [
    // As test
    const Test(
        '''
        class C {}
        m() => 0 as C;
        ''',
        const Visit(VisitKind.VISIT_AS, expression: '0', type: 'C')),
  ],
  'Binary operators': const [
    // Binary operators
    const Test(
        '''
        m() => 2 + 3;
        ''',
        const Visit(VisitKind.VISIT_BINARY,
                    left: '2', operator: '+', right: '3')),
    const Test(
        '''
        m() => 2 - 3;
        ''',
        const Visit(VisitKind.VISIT_BINARY,
                    left: '2', operator: '-', right: '3')),
    const Test(
        '''
        m() => 2 * 3;
        ''',
        const Visit(VisitKind.VISIT_BINARY,
                    left: '2', operator: '*', right: '3')),
    const Test(
        '''
        m() => 2 / 3;
        ''',
        const Visit(VisitKind.VISIT_BINARY,
                    left: '2', operator: '/', right: '3')),
    const Test(
        '''
        m() => 2 ~/ 3;
        ''',
        const Visit(VisitKind.VISIT_BINARY,
                    left: '2', operator: '~/', right: '3')),
    const Test(
        '''
        m() => 2 % 3;
        ''',
        const Visit(VisitKind.VISIT_BINARY,
                    left: '2', operator: '%', right: '3')),
    const Test(
        '''
        m() => 2 << 3;
        ''',
        const Visit(VisitKind.VISIT_BINARY,
                    left: '2', operator: '<<', right: '3')),
    const Test(
        '''
        m() => 2 >> 3;
        ''',
        const Visit(VisitKind.VISIT_BINARY,
                    left: '2', operator: '>>', right: '3')),
    const Test(
        '''
        m() => 2 <= 3;
        ''',
        const Visit(VisitKind.VISIT_BINARY,
                    left: '2', operator: '<=', right: '3')),
    const Test(
        '''
        m() => 2 < 3;
        ''',
        const Visit(VisitKind.VISIT_BINARY,
                    left: '2', operator: '<', right: '3')),
    const Test(
        '''
        m() => 2 >= 3;
        ''',
        const Visit(VisitKind.VISIT_BINARY,
                    left: '2', operator: '>=', right: '3')),
    const Test(
        '''
        m() => 2 > 3;
        ''',
        const Visit(VisitKind.VISIT_BINARY,
                    left: '2', operator: '>', right: '3')),
    const Test(
        '''
        m() => 2 & 3;
        ''',
        const Visit(VisitKind.VISIT_BINARY,
                    left: '2', operator: '&', right: '3')),
    const Test(
        '''
        m() => 2 | 3;
        ''',
        const Visit(VisitKind.VISIT_BINARY,
                    left: '2', operator: '|', right: '3')),
    const Test(
        '''
        m() => 2 ^ 3;
        ''',
        const Visit(VisitKind.VISIT_BINARY,
                    left: '2', operator: '^', right: '3')),
    const Test.clazz(
        '''
        class B {
          operator +(_) => null;
        }
        class C extends B {
          m() => super + 42;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_BINARY,
                    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')),
    const Test(
        '''
        m() => 2 === 3;
        ''',
        const Visit(VisitKind.ERROR_UNDEFINED_BINARY_EXPRESSION,
                    left: '2', operator: '===', right: '3')),
    const Test(
        '''
        m() => 2 !== 3;
        ''',
        const Visit(VisitKind.ERROR_UNDEFINED_BINARY_EXPRESSION,
                    left: '2', operator: '!==', right: '3')),
    const Test.clazz(
        '''
        class B {
          operator +(_) => null;
        }
        class C extends B {
          static m() => super + 42;
        }
        ''',
        const Visit(VisitKind.ERROR_INVALID_BINARY,
                    error: MessageKind.NO_SUPER_IN_STATIC,
                    operator: '+',
                    right: '42')),
  ],
  'Index': const [
    // Index
    const Test(
        '''
        m() => 2[3];
        ''',
        const Visit(VisitKind.VISIT_INDEX,
                    receiver: '2', index: '3')),
    const Test(
        '''
        m() => --2[3];
        ''',
        const Visit(VisitKind.VISIT_INDEX_PREFIX,
                    receiver: '2', index: '3', operator: '--')),
    const Test(
        '''
        m() => 2[3]++;
        ''',
        const Visit(VisitKind.VISIT_INDEX_POSTFIX,
                    receiver: '2', index: '3', operator: '++')),
    const Test.clazz(
        '''
        class B {
          operator [](_) => null;
        }
        class C extends B {
          m() => super[42];
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_INDEX,
                    element: 'function(B#[])',
                    index: '42')),
    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;
        }
        class C extends B {
          static m() => super[42];
        }
        ''',
        const Visit(VisitKind.ERROR_INVALID_INDEX,
                    error: MessageKind.NO_SUPER_IN_STATIC,
                    index: '42')),
    const Test.clazz(
        '''
        class B {
          operator [](_) => null;
          operator []=(a, b) {}
        }
        class C extends B {
          m() => ++super[42];
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_INDEX_PREFIX,
                    getter: 'function(B#[])',
                    setter: 'function(B#[]=)',
                    index: '42',
                    operator: '++')),
    const Test.clazz(
        '''
        class B {
          operator []=(a, b) {}
        }
        class C extends B {
          m() => ++super[42];
        }
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_GETTER_INDEX_PREFIX,
                    setter: 'function(B#[]=)',
                    index: '42',
                    operator: '++')),
    const Test.clazz(
        '''
        class B {
        }
        class C extends B {
          m() => ++super[42];
        }
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_INDEX_PREFIX,
                    index: '42',
                    operator: '++')),
    const Test.clazz(
        '''
        class B {
          operator [](_) => null;
        }
        class C extends B {
          m() => ++super[42];
        }
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_SETTER_INDEX_PREFIX,
                    getter: 'function(B#[])',
                    index: '42',
                    operator: '++')),
    const Test.clazz(
        '''
        class B {
          operator [](_) => null;
          operator []=(a, b) {}
        }
        class C extends B {
          static m() => ++super[42];
        }
        ''',
        const Visit(VisitKind.ERROR_INVALID_INDEX_PREFIX,
                    error: MessageKind.NO_SUPER_IN_STATIC,
                    index: '42',
                    operator: '++')),
    const Test.clazz(
        '''
        class B {
          operator [](_) => null;
          operator []=(a, b) {}
        }
        class C extends B {
          m() => super[42]--;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_INDEX_POSTFIX,
                    getter: 'function(B#[])',
                    setter: 'function(B#[]=)',
                    index: '42',
                    operator: '--')),
    const Test.clazz(
        '''
        class B {
          operator []=(a, b) {}
        }
        class C extends B {
          m() => super[42]--;
        }
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_GETTER_INDEX_POSTFIX,
                    setter: 'function(B#[]=)',
                    index: '42',
                    operator: '--')),
    const Test.clazz(
        '''
        class B {
        }
        class C extends B {
          m() => super[42]--;
        }
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_INDEX_POSTFIX,
                    index: '42',
                    operator: '--')),
    const Test.clazz(
        '''
        class B {
          operator [](_) => null;
        }
        class C extends B {
          m() => super[42]--;
        }
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_SETTER_INDEX_POSTFIX,
                    getter: 'function(B#[])',
                    index: '42',
                    operator: '--')),
    const Test.clazz(
        '''
        class B {
          operator [](_) => null;
          operator []=(a, b) {}
        }
        class C extends B {
          static m() => super[42]--;
        }
        ''',
        const Visit(VisitKind.ERROR_INVALID_INDEX_POSTFIX,
                    error: MessageKind.NO_SUPER_IN_STATIC,
                    index: '42',
                    operator: '--')),
  ],
  'Equals': const [
    // Equals
    const Test(
        '''
        m() => 2 == 3;
        ''',
        const Visit(VisitKind.VISIT_EQUALS,
                    left: '2', right: '3')),
    const Test.clazz(
        '''
        class B {
          operator ==(_) => null;
        }
        class C extends B {
          m() => super == 42;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_EQUALS,
                    element: 'function(B#==)',
                    right: '42')),
    const Test.clazz(
        '''
        class B {
          operator ==(_) => null;
        }
        class C extends B {
          static m() => super == 42;
        }
        ''',
        const Visit(VisitKind.ERROR_INVALID_EQUALS,
                    error: MessageKind.NO_SUPER_IN_STATIC,
                    right: '42')),
  ],
  'Not equals': const [
    // Not equals
    const Test(
        '''
        m() => 2 != 3;
        ''',
        const Visit(VisitKind.VISIT_NOT_EQUALS,
                    left: '2', right: '3')),
    const Test.clazz(
        '''
        class B {
          operator ==(_) => null;
        }
        class C extends B {
          m() => super != 42;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_NOT_EQUALS,
                    element: 'function(B#==)',
                    right: '42')),
    const Test.clazz(
        '''
        class B {
          operator ==(_) => null;
        }
        class C extends B {
          static m() => super != 42;
        }
        ''',
        const Visit(VisitKind.ERROR_INVALID_NOT_EQUALS,
                    error: MessageKind.NO_SUPER_IN_STATIC,
                    right: '42')),
  ],
  'Unary expression': const [
    // Unary expression
    const Test(
        '''
        m() => -false;
        ''',
        const Visit(VisitKind.VISIT_UNARY,
                    expression: 'false', operator: '-')),
    const Test(
        '''
        m() => ~false;
        ''',
        const Visit(VisitKind.VISIT_UNARY,
                    expression: 'false', operator: '~')),
    const Test.clazz(
        '''
        class B {
          operator -() => null;
        }
        class C extends B {
          m() => -super;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_UNARY,
                    element: 'function(B#unary-)', operator: '-')),
    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 {
          m() => ~super;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_UNARY,
                    element: 'function(B#~)', operator: '~')),
    const Test.clazz(
        '''
        class B {
          operator -() => null;
        }
        class C extends B {
          static m() => -super;
        }
        ''',
        const Visit(VisitKind.ERROR_INVALID_UNARY,
                    error: MessageKind.NO_SUPER_IN_STATIC,
                    operator: '-')),
    const Test(
        '''
        m() => !0;
        ''',
        const Visit(VisitKind.VISIT_NOT, expression: '0')),
    const Test(
        '''
        m() => +false;
        ''',
        // TODO(johnniwinther): Should this be an
        // ERROR_UNDEFINED_UNARY_EXPRESSION? Currently the parser just skips
        // the `+`.
        const []),
  ],
  'Index set': const [
    // Index set
    const Test(
        '''
        m() => 0[1] = 2;
        ''',
        const Visit(VisitKind.VISIT_INDEX_SET,
            receiver: '0', index: '1', rhs: '2')),
    const Test.clazz(
        '''
        class B {
          operator []=(a, b) {}
        }
        class C extends B {
          m() => super[1] = 2;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_INDEX_SET,
            element: 'function(B#[]=)', index: '1', rhs: '2')),
    const Test.clazz(
        '''
        class B {
        }
        class C extends B {
          m() => super[1] = 2;
        }
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_INDEX_SET,
            index: '1', rhs: '2')),
    const Test.clazz(
        '''
        class B {
          operator []=(a, b) {}
        }
        class C extends B {
          static m() => super[1] = 2;
        }
        ''',
        const Visit(VisitKind.ERROR_INVALID_INDEX_SET,
            error: MessageKind.NO_SUPER_IN_STATIC, index: '1', rhs: '2')),
  ],
  'Compound assignment': const [
    // Compound assignment
    const Test(
        '''
        m(a) => a.b += 42;
        ''',
        const [
          const Visit(VisitKind.VISIT_DYNAMIC_PROPERTY_COMPOUND,
              receiver: 'a', name: 'b', operator: '+=', rhs: '42'),
          const Visit(VisitKind.VISIT_PARAMETER_GET,
              element: 'parameter(m#a)')
        ]),
    const Test(
        '''
        m(a) => a += 42;
        ''',
        const Visit(VisitKind.VISIT_PARAMETER_COMPOUND,
            element: 'parameter(m#a)', operator: '+=', rhs: '42')),
    const Test(
        '''
        m(final a) => a += 42;
        ''',
        const Visit(VisitKind.VISIT_FINAL_PARAMETER_COMPOUND,
            element: 'parameter(m#a)', operator: '+=', rhs: '42')),
    const Test(
        '''
        m() {
          var a;
          a += 42;
        }
        ''',
        const Visit(VisitKind.VISIT_LOCAL_VARIABLE_COMPOUND,
            element: 'variable(m#a)', operator: '+=', rhs: '42')),
    const Test(
        '''
        m() {
          final a = 0;
          a += 42;
        }
        ''',
        const Visit(VisitKind.VISIT_FINAL_LOCAL_VARIABLE_COMPOUND,
            element: 'variable(m#a)', operator: '+=', rhs: '42')),
    const Test(
        '''
        m() {
          a() {}
          a += 42;
        }
        ''',
        const Visit(VisitKind.VISIT_LOCAL_FUNCTION_COMPOUND,
            element: 'function(m#a)', operator: '+=', rhs: '42')),
    const Test(
        '''
        var a;
        m() => a += 42;
        ''',
        const Visit(VisitKind.VISIT_TOP_LEVEL_FIELD_COMPOUND,
            element: 'field(a)', operator: '+=', rhs: '42')),
    const Test(
        '''
        get a => 0;
        set a(_) {}
        m() => a += 42;
        ''',
        const Visit(VisitKind.VISIT_TOP_LEVEL_GETTER_SETTER_COMPOUND,
            getter: 'getter(a)', setter: 'setter(a)',
            operator: '+=', rhs: '42')),
    const Test(
        '''
        class C {
          static var a;
        }
        m() => C.a += 42;
        ''',
        const Visit(VisitKind.VISIT_STATIC_FIELD_COMPOUND,
            element: 'field(C#a)', operator: '+=', rhs: '42')),
    const Test.clazz(
        '''
        class C {
          static var a;
          m() => C.a += 42;
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_FIELD_COMPOUND,
            element: 'field(C#a)', operator: '+=', rhs: '42')),
    const Test.clazz(
        '''
        class C {
          static var a;
          m() => a += 42;
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_FIELD_COMPOUND,
            element: 'field(C#a)', operator: '+=', rhs: '42')),
    const Test.prefix(
        '''
        class C {
          static var a;
        }
        ''',
        '''
        m() => p.C.a += 42;
        ''',
        const Visit(VisitKind.VISIT_STATIC_FIELD_COMPOUND,
            element: 'field(C#a)', operator: '+=', rhs: '42')),
    const Test.clazz(
        '''
        class C {
          var o;
          static m() { o += 42; }
        }
        ''',
        const Visit(VisitKind.ERROR_INVALID_COMPOUND,
                    error: MessageKind.NO_INSTANCE_AVAILABLE,
                    operator: '+=',
                    rhs: '42')),
    const Test.prefix(
        '''
        ''',
        '''
        m() { p += 42; }
        ''',
        const Visit(VisitKind.ERROR_INVALID_COMPOUND,
                    error: MessageKind.PREFIX_AS_EXPRESSION,
                    operator: '+=',
                    rhs: '42')),
    const Test(
        '''
        class C {
          static get a => 0;
          static set a(_) {}
        }
        m() => C.a += 42;
        ''',
        const Visit(VisitKind.VISIT_STATIC_GETTER_SETTER_COMPOUND,
            getter: 'getter(C#a)', setter: 'setter(C#a)',
            operator: '+=', rhs: '42')),
    const Test.clazz(
        '''
        class C {
          static get a => 0;
          static set a(_) {}
          m() => C.a += 42;
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_GETTER_SETTER_COMPOUND,
            getter: 'getter(C#a)', setter: 'setter(C#a)',
            operator: '+=', rhs: '42')),
    const Test.clazz(
        '''
        class C {
          static get a => 0;
          static set a(_) {}
          m() => a += 42;
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_GETTER_SETTER_COMPOUND,
            getter: 'getter(C#a)', setter: 'setter(C#a)',
            operator: '+=', rhs: '42')),
    const Test.prefix(
        '''
        class C {
          static get a => 0;
          static set a(_) {}
        }
        ''',
        '''
        m() => p.C.a += 42;
        ''',
        const Visit(VisitKind.VISIT_STATIC_GETTER_SETTER_COMPOUND,
            getter: 'getter(C#a)', setter: 'setter(C#a)',
            operator: '+=', rhs: '42')),
    // TODO(johnniwinther): Enable these when dart2js supports method and setter
    // with the same name.
    /*const Test(
        '''
        class C {
          static a() {}
          static set a(_) {}
        }
        m() => C.a += 42;
        ''',
        const Visit(VisitKind.VISIT_STATIC_METHOD_SETTER_COMPOUND,
            getter: 'function(C#a)', setter: 'setter(C#a)',
            operator: '+=', rhs: '42')),
    const Test.clazz(
        '''
        class C {
          static a() {}
          static set a(_) {}
          m() => C.a += 42;
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_METHOD_SETTER_COMPOUND,
            getter: 'function(C#a)', setter: 'setter(C#a)',
            operator: '+=', rhs: '42')),
    const Test.clazz(
        '''
        class C {
          static a() {}
          static set a(_) {}
          m() => a += 42;
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_METHOD_SETTER_COMPOUND,
            getter: 'function(C#a)', setter: 'setter(C#a)',
            operator: '+=', rhs: '42')),
    const Test.prefix(
        '''
        class C {
          static a() {}
          static set a(_) {}
        }
        ''',
        '''
        m() => p.C.a += 42;
        ''',
        const Visit(VisitKind.VISIT_STATIC_METHOD_SETTER_COMPOUND,
            getter: 'function(C#a)', setter: 'setter(C#a)',
            operator: '+=', rhs: '42')),*/
    const Test.clazz(
        '''
        class C {
          var a;
          m() => a += 42;
        }
        ''',
        const Visit(VisitKind.VISIT_THIS_PROPERTY_COMPOUND,
            operator: '+=', name: 'a', rhs: '42')),
    const Test.clazz(
        '''
        class C {
          var a = 0;
          m() => this.a += 42;
        }
        ''',
        const Visit(VisitKind.VISIT_THIS_PROPERTY_COMPOUND,
            name: 'a', operator: '+=', rhs: '42')),
    const Test.clazz(
        '''
        class B {
          var a = 0;
        }
        class C extends B {
          m() => super.a += 42;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_FIELD_COMPOUND,
            element: 'field(B#a)', operator: '+=', rhs: '42')),
    const Test.clazz(
        '''
        class B {
          final a = 0;
        }
        class C extends B {
          m() => super.a += 42;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_FINAL_FIELD_COMPOUND,
            element: 'field(B#a)', operator: '+=', rhs: '42')),
    const Test.clazz(
        '''
        class B {
          get a => 0;
          set a (_) {}
        }
        class C extends B {
          m() => super.a += 42;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_GETTER_SETTER_COMPOUND,
            getter: 'getter(B#a)', setter: 'setter(B#a)',
            operator: '+=', rhs: '42')),
    const Test.clazz(
        '''
        class A {
          get a => 0;
        }
        class B extends A {
          set a (_) {}
        }
        class C extends B {
          m() => super.a += 42;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_GETTER_SETTER_COMPOUND,
            getter: 'getter(A#a)', setter: 'setter(B#a)',
            operator: '+=', rhs: '42')),
    const Test.clazz(
        '''
        class A {
          var a;
        }
        class B extends A {
          get a => 0;
        }

        class C extends B {
          m() => super.a += 42;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_GETTER_FIELD_COMPOUND,
            getter: 'getter(B#a)', setter: 'field(A#a)',
            operator: '+=', rhs: '42')),
    const Test.clazz(
        '''
        class A {
          var a;
        }
        class B extends A {
          set a(_) {}
        }

        class C extends B {
          m() => super.a += 42;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_FIELD_SETTER_COMPOUND,
            getter: 'field(A#a)', setter: 'setter(B#a)',
            operator: '+=', rhs: '42')),
    // TODO(johnniwinther): Enable this when dart2js supports shadow setters.
    /*const Test.clazz(
        '''
        class A {
          var a;
        }
        class B extends A {
          final a = 0;
        }

        class C extends B {
          m() => super.a += 42;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_FIELD_FIELD_COMPOUND,
            getter: 'field(B#a)', setter: 'field(A#a)',
            operator: '+=', rhs: '42')),*/
    const Test.clazz(
        '''
        class B {
          a() {}
        }
        class C extends B {
          m() => super.a += 42;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_METHOD_COMPOUND,
            element: 'function(B#a)',
            operator: '+=', rhs: '42')),
    const Test.clazz(
        '''
        class B {
        }
        class C extends B {
          m() => super.a += 42;
        }
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_COMPOUND,
            operator: '+=', rhs: '42')),
    const Test.clazz(
        '''
        class B {
          set a(_) {}
        }
        class C extends B {
          m() => super.a += 42;
        }
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_GETTER_COMPOUND,
            setter: 'setter(B#a)', operator: '+=', rhs: '42')),
    const Test.clazz(
        '''
        class B {
          get a => 42;
        }
        class C extends B {
          m() => super.a += 42;
        }
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_SETTER_COMPOUND,
            getter: 'getter(B#a)', operator: '+=', rhs: '42')),

    const Test.clazz(
        '''
        class C {
          static set a(var value) { }
          m() => a += 42;
        }
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_STATIC_GETTER_COMPOUND,
            setter: 'setter(C#a)', operator: '+=', rhs: '42')),

    const Test.clazz(
        '''
        class C {
          static get a => 42;
          m() => C.a += 42;
        }
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_STATIC_SETTER_COMPOUND,
            getter: 'getter(C#a)', operator: '+=', rhs: '42')),

    const Test.clazz(
        '''
        class C {
          static final a = 42;
          m() => C.a += 42;
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_FINAL_FIELD_COMPOUND,
            element: 'field(C#a)', operator: '+=', rhs: '42')),

    const Test(
        '''
        class C {
          static a(var value) { }
        }
        m() => C.a += 42;
        ''',
        const Visit(VisitKind.VISIT_STATIC_METHOD_COMPOUND,
            element: 'function(C#a)', operator: '+=', rhs: '42')),

    const Test(
        '''
        set a(var value) { }
        m() => a += 42;
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_TOP_LEVEL_GETTER_COMPOUND,
            setter: 'setter(a)', operator: '+=', rhs: '42')),

    const Test(
        '''
        get a => 42;
        m() => a += 42;
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_TOP_LEVEL_SETTER_COMPOUND,
            getter: 'getter(a)', operator: '+=', rhs: '42')),

    const Test(
        '''
        a(var value) { }
        m() => a += 42;
        ''',
        const Visit(VisitKind.VISIT_TOP_LEVEL_METHOD_COMPOUND,
            element: 'function(a)', operator: '+=', rhs: '42')),

    const Test(
        '''
        final a = 42;
        m() => a += 42;
        ''',
        const Visit(VisitKind.VISIT_TOP_LEVEL_FINAL_FIELD_COMPOUND,
            element: 'field(a)', operator: '+=', rhs: '42')),

    const Test(
        '''
        m() => unresolved += 42;
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_COMPOUND,
            operator: '+=', rhs: '42')),
  ],
  'Compound index assignment': const [
    // Compound index assignment
    const Test(
        '''
        m() => 0[1] += 42;
        ''',
        const Visit(VisitKind.VISIT_COMPOUND_INDEX_SET,
            receiver: '0', index: '1', operator: '+=', rhs: '42')),
    const Test.clazz(
        '''
        class B {
          operator [](_) {}
          operator []=(a, b) {}
        }
        class C extends B {
          m() => super[1] += 42;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_COMPOUND_INDEX_SET,
            getter: 'function(B#[])', setter: 'function(B#[]=)',
            index: '1', operator: '+=', rhs: '42')),
    const Test.clazz(
        '''
        class B {
          operator []=(a, b) {}
        }
        class C extends B {
          m() => super[1] += 42;
        }
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_GETTER_COMPOUND_INDEX_SET,
            setter: 'function(B#[]=)',
            index: '1', operator: '+=', rhs: '42')),
    const Test.clazz(
        '''
        class B {
        }
        class C extends B {
          m() => super[1] += 42;
        }
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_COMPOUND_INDEX_SET,
            index: '1', operator: '+=', rhs: '42')),
    const Test.clazz(
        '''
        class B {
          operator [](_) {}
        }
        class C extends B {
          m() => super[1] += 42;
        }
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_SETTER_COMPOUND_INDEX_SET,
            getter: 'function(B#[])',
            index: '1', operator: '+=', rhs: '42')),
    const Test.clazz(
        '''
        class B {
          operator [](_) {}
          operator []=(a, b) {}
        }
        class C extends B {
          static m() => super[1] += 42;
        }
        ''',
        const Visit(VisitKind.ERROR_INVALID_COMPOUND_INDEX_SET,
            error: MessageKind.NO_SUPER_IN_STATIC,
            index: '1', operator: '+=', rhs: '42')),
  ],
  'Prefix expression': const [
    // Prefix expression
    const Test(
        '''
        m(a) => --a.b;
        ''',
        const [
          const Visit(VisitKind.VISIT_DYNAMIC_PROPERTY_PREFIX,
              receiver: 'a', name: 'b', operator: '--'),
          const Visit(VisitKind.VISIT_PARAMETER_GET,
              element: 'parameter(m#a)')
        ]),
    const Test(
        '''
        m(a) => ++a;
        ''',
        const Visit(VisitKind.VISIT_PARAMETER_PREFIX,
            element: 'parameter(m#a)', operator: '++')),
    const Test(
        '''
        m(final a) => ++a;
        ''',
        const Visit(VisitKind.VISIT_FINAL_PARAMETER_PREFIX,
            element: 'parameter(m#a)', operator: '++')),
    const Test(
        '''
        m() {
          var a;
          --a;
        }
        ''',
        const Visit(VisitKind.VISIT_LOCAL_VARIABLE_PREFIX,
            element: 'variable(m#a)', operator: '--')),
    const Test(
        '''
        m() {
          final a = 42;
          --a;
        }
        ''',
        const Visit(VisitKind.VISIT_FINAL_LOCAL_VARIABLE_PREFIX,
            element: 'variable(m#a)', operator: '--')),
    const Test(
        '''
        m() {
          a() {}
          --a;
        }
        ''',
        const Visit(VisitKind.VISIT_LOCAL_FUNCTION_PREFIX,
            element: 'function(m#a)', operator: '--')),
    const Test(
        '''
        var a;
        m() => ++a;
        ''',
        const Visit(VisitKind.VISIT_TOP_LEVEL_FIELD_PREFIX,
            element: 'field(a)', operator: '++')),
    const Test(
        '''
        get a => 0;
        set a(_) {}
        m() => --a;
        ''',
        const Visit(VisitKind.VISIT_TOP_LEVEL_GETTER_SETTER_PREFIX,
            getter: 'getter(a)', setter: 'setter(a)',
            operator: '--')),
    const Test(
        '''
        class C {
          static var a;
        }
        m() => ++C.a;
        ''',
        const Visit(VisitKind.VISIT_STATIC_FIELD_PREFIX,
            element: 'field(C#a)', operator: '++')),
    const Test.clazz(
        '''
        class C {
          static var a;
          m() => ++C.a;
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_FIELD_PREFIX,
            element: 'field(C#a)', operator: '++')),
    const Test.clazz(
        '''
        class C {
          static var a;
          m() => --a;
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_FIELD_PREFIX,
            element: 'field(C#a)', operator: '--')),
    const Test.prefix(
        '''
        class C {
          static var a;
        }
        ''',
        '''
        m() => --p.C.a;
        ''',
        const Visit(VisitKind.VISIT_STATIC_FIELD_PREFIX,
            element: 'field(C#a)', operator: '--')),
    const Test.clazz(
        '''
        class C {
          var o;
          static m() { ++o; }
        }
        ''',
        const Visit(VisitKind.ERROR_INVALID_PREFIX,
                    error: MessageKind.NO_INSTANCE_AVAILABLE,
                    operator: '++')),
    const Test.prefix(
        '''
        ''',
        '''
        m() { ++p; }
        ''',
        const Visit(VisitKind.ERROR_INVALID_PREFIX,
                    error: MessageKind.PREFIX_AS_EXPRESSION,
                    operator: '++')),
    const Test(
        '''
        class C {
          static get a => 0;
          static set a(_) {}
        }
        m() => ++C.a;
        ''',
        const Visit(VisitKind.VISIT_STATIC_GETTER_SETTER_PREFIX,
            getter: 'getter(C#a)', setter: 'setter(C#a)',
            operator: '++')),
    const Test.clazz(
        '''
        class C {
          static get a => 0;
          static set a(_) {}
          m() => --C.a;
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_GETTER_SETTER_PREFIX,
            getter: 'getter(C#a)', setter: 'setter(C#a)',
            operator: '--')),
    const Test.clazz(
        '''
        class C {
          static get a => 0;
          static set a(_) {}
          m() => --a;
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_GETTER_SETTER_PREFIX,
            getter: 'getter(C#a)', setter: 'setter(C#a)',
            operator: '--')),
    const Test.prefix(
        '''
        class C {
          static get a => 0;
          static set a(_) {}
        }
        ''',
        '''
        m() => ++p.C.a;
        ''',
        const Visit(VisitKind.VISIT_STATIC_GETTER_SETTER_PREFIX,
            getter: 'getter(C#a)', setter: 'setter(C#a)',
            operator: '++')),
    const Test.clazz(
        '''
        class C {
          var a;
          m() => --a;
        }
        ''',
        const Visit(VisitKind.VISIT_THIS_PROPERTY_PREFIX,
            name: 'a', operator: '--')),
    const Test.clazz(
        '''
        class C {
          var a = 0;
          m() => ++this.a;
        }
        ''',
        const Visit(VisitKind.VISIT_THIS_PROPERTY_PREFIX,
            name: 'a', operator: '++')),
    const Test.clazz(
        '''
        class B {
          var a = 0;
        }
        class C extends B {
          m() => --super.a;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_FIELD_PREFIX,
            element: 'field(B#a)', operator: '--')),
    const Test.clazz(
        '''
        class B {
          final a = 0;
        }
        class C extends B {
          m() => --super.a;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_FINAL_FIELD_PREFIX,
            element: 'field(B#a)', operator: '--')),
    const Test.clazz(
        '''
        class B {
          get a => 0;
          set a (_) {}
        }
        class C extends B {
          m() => --super.a;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_GETTER_SETTER_PREFIX,
            getter: 'getter(B#a)', setter: 'setter(B#a)',
            operator: '--')),
    const Test.clazz(
        '''
        class A {
          get a => 0;
        }
        class B extends A {
          set a (_) {}
        }
        class C extends B {
          m() => ++super.a;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_GETTER_SETTER_PREFIX,
            getter: 'getter(A#a)', setter: 'setter(B#a)',
            operator: '++')),
    const Test.clazz(
        '''
        class A {
          var a;
        }
        class B extends A {
          get a => 0;
        }

        class C extends B {
          m() => --super.a;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_GETTER_FIELD_PREFIX,
            getter: 'getter(B#a)', setter: 'field(A#a)',
            operator: '--')),
    const Test.clazz(
        '''
        class A {
          var a;
        }
        class B extends A {
          set a(_) {}
        }

        class C extends B {
          m() => ++super.a;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_FIELD_SETTER_PREFIX,
            getter: 'field(A#a)', setter: 'setter(B#a)',
            operator: '++')),
    const Test.clazz(
        '''
        class B {
          a() {}
        }
        class C extends B {
          m() => ++super.a;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_METHOD_PREFIX,
            element: 'function(B#a)',
            operator: '++')),
    const Test.clazz(
        '''
        class B {
        }
        class C extends B {
          m() => ++super.a;
        }
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_PREFIX,
            operator: '++')),
    const Test.clazz(
        '''
        class B {
          set a(_) {}
        }
        class C extends B {
          m() => ++super.a;
        }
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_GETTER_PREFIX,
            setter: 'setter(B#a)', operator: '++')),
    const Test.clazz(
        '''
        class B {
          get a => 42;
        }
        class C extends B {
          m() => ++super.a;
        }
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_SETTER_PREFIX,
            getter: 'getter(B#a)', operator: '++')),

    const Test.clazz(
        '''
        class C {
          static set a(var value) { }
          m() => ++a;
        }
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_STATIC_GETTER_PREFIX,
            setter: 'setter(C#a)', operator: '++')),

    const Test.clazz(
        '''
        class C {
          static get a => 42;
          m() => ++C.a;
        }
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_STATIC_SETTER_PREFIX,
            getter: 'getter(C#a)', operator: '++')),

    const Test.clazz(
        '''
        class C {
          static final a = 42;
          m() => ++C.a;
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_FINAL_FIELD_PREFIX,
            element: 'field(C#a)', operator: '++')),

    const Test(
        '''
        class C {
          static a(var value) { }
        }
        m() => ++C.a;
        ''',
        const Visit(VisitKind.VISIT_STATIC_METHOD_PREFIX,
            element: 'function(C#a)', operator: '++')),

    const Test(
        '''
        set a(var value) { }
        m() => ++a;
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_TOP_LEVEL_GETTER_PREFIX,
            setter: 'setter(a)', operator: '++')),

    const Test(
        '''
        get a => 42;
        m() => ++a;
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_TOP_LEVEL_SETTER_PREFIX,
            getter: 'getter(a)', operator: '++')),

    const Test(
        '''
        a(var value) { }
        m() => ++a;
        ''',
        const Visit(VisitKind.VISIT_TOP_LEVEL_METHOD_PREFIX,
            element: 'function(a)', operator: '++')),

    const Test(
        '''
        final a = 42;
        m() => ++a;
        ''',
        const Visit(VisitKind.VISIT_TOP_LEVEL_FINAL_FIELD_PREFIX,
            element: 'field(a)', operator: '++')),

    const Test(
        '''
        m() => ++unresolved;
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_PREFIX,
            operator: '++')),
  ],
  'Postfix expression': const [
    // Postfix expression
    const Test(
        '''
        m(a) => a.b--;
        ''',
        const [
          const Visit(VisitKind.VISIT_DYNAMIC_PROPERTY_POSTFIX,
              receiver: 'a', name: 'b', operator: '--'),
          const Visit(VisitKind.VISIT_PARAMETER_GET,
              element: 'parameter(m#a)')
        ]),
    const Test(
        '''
        m(a) => a++;
        ''',
        const Visit(VisitKind.VISIT_PARAMETER_POSTFIX,
            element: 'parameter(m#a)', operator: '++')),
    const Test(
        '''
        m(final a) => a++;
        ''',
        const Visit(VisitKind.VISIT_FINAL_PARAMETER_POSTFIX,
            element: 'parameter(m#a)', operator: '++')),
    const Test(
        '''
        m() {
          var a;
          a--;
        }
        ''',
        const Visit(VisitKind.VISIT_LOCAL_VARIABLE_POSTFIX,
            element: 'variable(m#a)', operator: '--')),
    const Test(
        '''
        m() {
          final a = 42;
          a--;
        }
        ''',
        const Visit(VisitKind.VISIT_FINAL_LOCAL_VARIABLE_POSTFIX,
            element: 'variable(m#a)', operator: '--')),
    const Test(
        '''
        m() {
          a() {}
          a--;
        }
        ''',
        const Visit(VisitKind.VISIT_LOCAL_FUNCTION_POSTFIX,
            element: 'function(m#a)', operator: '--')),
    const Test(
        '''
        var a;
        m() => a++;
        ''',
        const Visit(VisitKind.VISIT_TOP_LEVEL_FIELD_POSTFIX,
            element: 'field(a)', operator: '++')),
    const Test(
        '''
        get a => 0;
        set a(_) {}
        m() => a--;
        ''',
        const Visit(VisitKind.VISIT_TOP_LEVEL_GETTER_SETTER_POSTFIX,
            getter: 'getter(a)', setter: 'setter(a)',
            operator: '--')),
    const Test(
        '''
        class C {
          static var a;
        }
        m() => C.a++;
        ''',
        const Visit(VisitKind.VISIT_STATIC_FIELD_POSTFIX,
            element: 'field(C#a)', operator: '++')),
    const Test.clazz(
        '''
        class C {
          static var a;
          m() => C.a++;
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_FIELD_POSTFIX,
            element: 'field(C#a)', operator: '++')),
    const Test.clazz(
        '''
        class C {
          static var a;
          m() => a--;
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_FIELD_POSTFIX,
            element: 'field(C#a)', operator: '--')),
    const Test.prefix(
        '''
        class C {
          static var a;
        }
        ''',
        '''
        m() => p.C.a--;
        ''',
        const Visit(VisitKind.VISIT_STATIC_FIELD_POSTFIX,
            element: 'field(C#a)', operator: '--')),
    const Test.clazz(
        '''
        class C {
          var o;
          static m() { o--; }
        }
        ''',
        const Visit(VisitKind.ERROR_INVALID_POSTFIX,
                    error: MessageKind.NO_INSTANCE_AVAILABLE,
                    operator: '--')),
    const Test.prefix(
        '''
        ''',
        '''
        m() { p--; }
        ''',
        const Visit(VisitKind.ERROR_INVALID_POSTFIX,
                    error: MessageKind.PREFIX_AS_EXPRESSION,
                    operator: '--')),
    const Test(
        '''
        class C {
          static get a => 0;
          static set a(_) {}
        }
        m() => C.a++;
        ''',
        const Visit(VisitKind.VISIT_STATIC_GETTER_SETTER_POSTFIX,
            getter: 'getter(C#a)', setter: 'setter(C#a)',
            operator: '++')),
    const Test.clazz(
        '''
        class C {
          static get a => 0;
          static set a(_) {}
          m() => C.a--;
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_GETTER_SETTER_POSTFIX,
            getter: 'getter(C#a)', setter: 'setter(C#a)',
            operator: '--')),
    const Test.clazz(
        '''
        class C {
          static get a => 0;
          static set a(_) {}
          m() => a--;
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_GETTER_SETTER_POSTFIX,
            getter: 'getter(C#a)', setter: 'setter(C#a)',
            operator: '--')),
    const Test.prefix(
        '''
        class C {
          static get a => 0;
          static set a(_) {}
        }
        ''',
        '''
        m() => p.C.a++;
        ''',
        const Visit(VisitKind.VISIT_STATIC_GETTER_SETTER_POSTFIX,
            getter: 'getter(C#a)', setter: 'setter(C#a)',
            operator: '++')),
    const Test.clazz(
        '''
        class C {
          var a;
          m() => a--;
        }
        ''',
        const Visit(VisitKind.VISIT_THIS_PROPERTY_POSTFIX,
            name: 'a', operator: '--')),
    const Test.clazz(
        '''
        class C {
          var a = 0;
          m() => this.a++;
        }
        ''',
        const Visit(VisitKind.VISIT_THIS_PROPERTY_POSTFIX,
            name: 'a', operator: '++')),
    const Test.clazz(
        '''
        class B {
          var a = 0;
        }
        class C extends B {
          m() => super.a--;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_FIELD_POSTFIX,
            element: 'field(B#a)', operator: '--')),
    const Test.clazz(
        '''
        class B {
          final a = 0;
        }
        class C extends B {
          m() => super.a--;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_FINAL_FIELD_POSTFIX,
            element: 'field(B#a)', operator: '--')),
    const Test.clazz(
        '''
        class B {
          get a => 0;
          set a (_) {}
        }
        class C extends B {
          m() => super.a--;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_GETTER_SETTER_POSTFIX,
            getter: 'getter(B#a)', setter: 'setter(B#a)',
            operator: '--')),
    const Test.clazz(
        '''
        class A {
          get a => 0;
        }
        class B extends A {
          set a (_) {}
        }
        class C extends B {
          m() => super.a++;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_GETTER_SETTER_POSTFIX,
            getter: 'getter(A#a)', setter: 'setter(B#a)',
            operator: '++')),
    const Test.clazz(
        '''
        class A {
          var a;
        }
        class B extends A {
          get a => 0;
        }

        class C extends B {
          m() => super.a--;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_GETTER_FIELD_POSTFIX,
            getter: 'getter(B#a)', setter: 'field(A#a)',
            operator: '--')),
    const Test.clazz(
        '''
        class A {
          var a;
        }
        class B extends A {
          set a(_) {}
        }

        class C extends B {
          m() => super.a++;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_FIELD_SETTER_POSTFIX,
            getter: 'field(A#a)', setter: 'setter(B#a)',
            operator: '++')),
    const Test.clazz(
        '''
        class B {
          a() {}
        }
        class C extends B {
          m() => super.a++;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_METHOD_POSTFIX,
            element: 'function(B#a)',
            operator: '++')),
    const Test.clazz(
        '''
        class B {
        }
        class C extends B {
          m() => super.a++;
        }
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_POSTFIX,
            operator: '++')),
    const Test.clazz(
        '''
        class B {
          set a(_) {}
        }
        class C extends B {
          m() => super.a++;
        }
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_GETTER_POSTFIX,
            setter: 'setter(B#a)', operator: '++')),
    const Test.clazz(
        '''
        class B {
          get a => 42;
        }
        class C extends B {
          m() => super.a++;
        }
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_SETTER_POSTFIX,
            getter: 'getter(B#a)', operator: '++')),

    const Test.clazz(
        '''
        class C {
          static set a(var value) { }
          m() => a++;
        }
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_STATIC_GETTER_POSTFIX,
            setter: 'setter(C#a)', operator: '++')),

    const Test.clazz(
        '''
        class C {
          static get a => 42;
          m() => C.a++;
        }
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_STATIC_SETTER_POSTFIX,
            getter: 'getter(C#a)', operator: '++')),

    const Test.clazz(
        '''
        class C {
          static final a = 42;
          m() => C.a++;
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_FINAL_FIELD_POSTFIX,
            element: 'field(C#a)', operator: '++')),

    const Test(
        '''
        class C {
          static a(var value) { }
        }
        m() => C.a++;
        ''',
        const Visit(VisitKind.VISIT_STATIC_METHOD_POSTFIX,
            element: 'function(C#a)', operator: '++')),

    const Test(
        '''
        set a(var value) { }
        m() => a++;
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_TOP_LEVEL_GETTER_POSTFIX,
            setter: 'setter(a)', operator: '++')),

    const Test(
        '''
        get a => 42;
        m() => a++;
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_TOP_LEVEL_SETTER_POSTFIX,
            getter: 'getter(a)', operator: '++')),

    const Test(
        '''
        a(var value) { }
        m() => a++;
        ''',
        const Visit(VisitKind.VISIT_TOP_LEVEL_METHOD_POSTFIX,
            element: 'function(a)', operator: '++')),

    const Test(
        '''
        final a = 42;
        m() => a++;
        ''',
        const Visit(VisitKind.VISIT_TOP_LEVEL_FINAL_FIELD_POSTFIX,
            element: 'field(a)', operator: '++')),

    const Test(
        '''
        m() => unresolved++;
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_POSTFIX,
            operator: '++')),
  ],
  'Constructor invocations': const [
    const Test(
        '''
        class Class {
          const Class(a, b);
        }
        m() => const Class(true, 42);
        ''',
        const Visit(VisitKind.VISIT_CONST_CONSTRUCTOR_INVOKE,
            constant: 'const Class(true, 42)')),
    const Test(
        '''
        m() => const bool.fromEnvironment('foo');
        ''',
        const Visit(VisitKind.VISIT_BOOL_FROM_ENVIRONMENT_CONSTRUCTOR_INVOKE,
            constant:
                'const bool.fromEnvironment("foo")')),
    const Test(
        '''
        m() => const bool.fromEnvironment('foo', defaultValue: true);
        ''',
        const Visit(VisitKind.VISIT_BOOL_FROM_ENVIRONMENT_CONSTRUCTOR_INVOKE,
            constant: 'const bool.fromEnvironment("foo", defaultValue: true)')),
    const Test(
        '''
        m() => const int.fromEnvironment('foo');
        ''',
        const Visit(VisitKind.VISIT_INT_FROM_ENVIRONMENT_CONSTRUCTOR_INVOKE,
            constant: 'const int.fromEnvironment("foo")')),
    const Test(
        '''
        m() => const String.fromEnvironment('foo');
        ''',
        const Visit(VisitKind.VISIT_STRING_FROM_ENVIRONMENT_CONSTRUCTOR_INVOKE,
            constant:
                'const String.fromEnvironment("foo")')),
    const Test(
        '''
        class Class {
          Class(a, b);
        }
        m() => const Class(true, 42);
        ''',
        const Visit(VisitKind.ERROR_NON_CONSTANT_CONSTRUCTOR_INVOKE,
            element: 'generative_constructor(Class#)',
            arguments: '(true,42)',
            type: 'Class',
            selector: 'CallStructure(arity=2)')),
    const Test(
        '''
        class Class {}
        m() => new Class();
        ''',
        const Visit(VisitKind.VISIT_GENERATIVE_CONSTRUCTOR_INVOKE,
            element: 'generative_constructor(Class#)',
            arguments: '()',
            type: 'Class',
            selector: 'CallStructure(arity=0)')),
    const Test(
        '''
        class Class {
          Class(a, b);
        }
        m() => new Class(true, 42);
        ''',
        const Visit(VisitKind.VISIT_GENERATIVE_CONSTRUCTOR_INVOKE,
            element: 'generative_constructor(Class#)',
            arguments: '(true,42)',
            type: 'Class',
            selector: 'CallStructure(arity=2)')),
    const Test(
        '''
        class Class {
          Class.named(a, b);
        }
        m() => new Class.named(true, 42);
        ''',
        const Visit(VisitKind.VISIT_GENERATIVE_CONSTRUCTOR_INVOKE,
            element: 'generative_constructor(Class#named)',
            arguments: '(true,42)',
            type: 'Class',
            selector: 'CallStructure(arity=2)')),
    const Test(
        '''
        class Class {}
        m() => new Class(true, 42);
        ''',
        const Visit(VisitKind.VISIT_CONSTRUCTOR_INCOMPATIBLE_INVOKE,
            element: 'generative_constructor(Class#)',
            arguments: '(true,42)',
            type: 'Class',
            selector: 'CallStructure(arity=2)')),
    const Test(
        '''
        class Class {
          Class(a, b) : this._(a, b);
          Class._(a, b);
        }
        m() => new Class(true, 42);
        ''',
        const Visit(VisitKind.VISIT_REDIRECTING_GENERATIVE_CONSTRUCTOR_INVOKE,
            element: 'generative_constructor(Class#)',
            arguments: '(true,42)',
            type: 'Class',
            selector: 'CallStructure(arity=2)')),
    const Test(
        '''
        class Class {
          Class() : this._(true, 42);
          Class._(a, b);
        }
        m() => new Class(true, 42);
        ''',
        const Visit(VisitKind.VISIT_CONSTRUCTOR_INCOMPATIBLE_INVOKE,
            element: 'generative_constructor(Class#)',
            arguments: '(true,42)',
            type: 'Class',
            selector: 'CallStructure(arity=2)')),
    const Test(
        '''
        class Class {
          factory Class(a, b) => new Class._(a, b);
          Class._(a, b);
        }
        m() => new Class(true, 42);
        ''',
        const Visit(VisitKind.VISIT_FACTORY_CONSTRUCTOR_INVOKE,
            element: 'factory_constructor(Class#)',
            arguments: '(true,42)',
            type: 'Class',
            selector: 'CallStructure(arity=2)')),
    const Test(
        '''
        class Class {
          factory Class() => new Class._(true, 42);
          Class._(a, b);
        }
        m() => new Class(true, 42);
        ''',
        const Visit(VisitKind.VISIT_CONSTRUCTOR_INCOMPATIBLE_INVOKE,
            element: 'factory_constructor(Class#)',
            arguments: '(true,42)',
            type: 'Class',
            selector: 'CallStructure(arity=2)')),
    const Test(
        '''
        class Class<T> {
          factory Class(a, b) = Class<int>.a;
          factory Class.a(a, b) = Class<Class<T>>.b;
          Class.b(a, b);
        }
        m() => new Class<double>(true, 42);
        ''',
        const Visit(VisitKind.VISIT_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE,
            element: 'factory_constructor(Class#)',
            arguments: '(true,42)',
            type: 'Class<double>',
            target: 'generative_constructor(Class#b)',
            targetType: 'Class<Class<int>>',
            selector: 'CallStructure(arity=2)')),
    const Test(
        '''
        class Class<T> {
          factory Class(a) = Class<int>.a;
          factory Class.a(a, [b]) = Class<Class<T>>.b;
          Class.b(a, [b]);
        }
        m() => new Class<double>(true, 42);
        ''',
        const Visit(VisitKind.VISIT_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE,
            element: 'factory_constructor(Class#)',
            arguments: '(true,42)',
            type: 'Class<double>',
            target: 'generative_constructor(Class#b)',
            targetType: 'Class<Class<int>>',
            selector: 'CallStructure(arity=2)')),
    const Test(
        '''
        class Class {
          factory Class() = Class._;
          Class._();
        }
        m() => new Class(true, 42);
        ''',
        const Visit(
            VisitKind.VISIT_UNRESOLVED_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE,
            element: 'factory_constructor(Class#)',
            arguments: '(true,42)',
            type: 'Class',
            selector: 'CallStructure(arity=2)')),
    const Test(
        '''
        class Class<T> {
          factory Class(a, b) = Class<int>.a;
          factory Class.a(a, b) = Class<Class<T>>.b;
          Class.b(a);
        }
        m() => new Class<double>(true, 42);
        ''',
        const Visit(
            VisitKind.VISIT_UNRESOLVED_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE,
            element: 'factory_constructor(Class#)',
            arguments: '(true,42)',
            type: 'Class<double>',
            selector: 'CallStructure(arity=2)')),
    const Test(
        '''
        class Class {
          Class(a, b);
        }
        m() => new Class.unresolved(true, 42);
        ''',
        const Visit(
            VisitKind.VISIT_UNRESOLVED_CONSTRUCTOR_INVOKE,
            arguments: '(true,42)')),
    const Test(
        '''
        m() => new Unresolved(true, 42);
        ''',
        const Visit(
            VisitKind.VISIT_UNRESOLVED_CLASS_CONSTRUCTOR_INVOKE,
            arguments: '(true,42)')),
    const Test(
        '''
        abstract class AbstractClass {}
        m() => new AbstractClass();
        ''',
        const Visit(
            VisitKind.VISIT_ABSTRACT_CLASS_CONSTRUCTOR_INVOKE,
            element: 'generative_constructor(AbstractClass#)',
            type: 'AbstractClass',
            arguments: '()',
            selector: 'CallStructure(arity=0)')),
    const Test(
        '''
        class Class {
          factory Class(a, b) = Unresolved;
        }
        m() => new Class(true, 42);
        ''',
        const Visit(
            VisitKind.VISIT_UNRESOLVED_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE,
            element: 'factory_constructor(Class#)',
            arguments: '(true,42)',
            type: 'Class',
            selector: 'CallStructure(arity=2)')),
    const Test(
        '''
        class Class {
          factory Class(a, b) = Class.named;
        }
        m() => new Class(true, 42);
        ''',
        const Visit(
            VisitKind.VISIT_UNRESOLVED_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE,
            element: 'factory_constructor(Class#)',
            arguments: '(true,42)',
            type: 'Class',
            selector: 'CallStructure(arity=2)')),
    const Test(
        '''
        class Class {
          factory Class(a, b) = Class.named;
          factory Class.named(a, b) = Class.unresolved;
        }
        m() => new Class(true, 42);
        ''',
        const Visit(
            VisitKind.VISIT_UNRESOLVED_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE,
            element: 'factory_constructor(Class#)',
            arguments: '(true,42)',
            type: 'Class',
            selector: 'CallStructure(arity=2)')),
    const Test(
        '''
        abstract class AbstractClass {
          AbstractClass(a, b);
        }
        class Class {
          factory Class(a, b) = AbstractClass;
        }
        m() => new Class(true, 42);
        ''',
        const Visit(
            VisitKind.VISIT_UNRESOLVED_REDIRECTING_FACTORY_CONSTRUCTOR_INVOKE,
            element: 'factory_constructor(Class#)',
            arguments: '(true,42)',
            type: 'Class',
            selector: 'CallStructure(arity=2)')),
  ],
  'If not null expressions': const [
    const Test(
        '''
        m(a) => a?.b;
        ''',
        const [
          const Visit(
              VisitKind.VISIT_IF_NOT_NULL_DYNAMIC_PROPERTY_GET,
              receiver: 'a',
              name: 'b'),
          const Visit(
              VisitKind.VISIT_PARAMETER_GET,
              element: 'parameter(m#a)'),
        ]),
    const Test(
        '''
        class C {
          static var b;
        }
        m(a) => C?.b;
        ''',
        const Visit(
            VisitKind.VISIT_STATIC_FIELD_GET,
            element: 'field(C#b)')),
    const Test(
        '''
        m(a) => a?.b = 42;
        ''',
        const [
          const Visit(
              VisitKind.VISIT_IF_NOT_NULL_DYNAMIC_PROPERTY_SET,
              receiver: 'a',
              name: 'b',
              rhs: '42'),
          const Visit(
              VisitKind.VISIT_PARAMETER_GET,
              element: 'parameter(m#a)'),
        ]),
    const Test(
        '''
        m(a) => a?.b(42, true);
        ''',
        const [
          const Visit(
              VisitKind.VISIT_IF_NOT_NULL_DYNAMIC_PROPERTY_INVOKE,
              receiver: 'a',
              arguments: '(42,true)',
              selector: 'Selector(call, b, arity=2)'),
          const Visit(
              VisitKind.VISIT_PARAMETER_GET,
              element: 'parameter(m#a)'),
        ]),
    const Test(
        '''
        m(a) => ++a?.b;
        ''',
        const [
          const Visit(
              VisitKind.VISIT_IF_NOT_NULL_DYNAMIC_PROPERTY_PREFIX,
              receiver: 'a', name: 'b', operator: '++'),
          const Visit(
              VisitKind.VISIT_PARAMETER_GET,
              element: 'parameter(m#a)'),
        ]),
    const Test(
        '''
        m(a) => a?.b--;
        ''',
        const [
          const Visit(
              VisitKind.VISIT_IF_NOT_NULL_DYNAMIC_PROPERTY_POSTFIX,
              receiver: 'a', name: 'b', operator: '--'),
          const Visit(
              VisitKind.VISIT_PARAMETER_GET,
              element: 'parameter(m#a)'),
        ]),
    const Test(
        '''
        m(a) => a?.b *= 42;
        ''',
        const [
          const Visit(
              VisitKind.VISIT_IF_NOT_NULL_DYNAMIC_PROPERTY_COMPOUND,
              receiver: 'a', name: 'b', operator: '*=', rhs: '42'),
          const Visit(
              VisitKind.VISIT_PARAMETER_GET,
              element: 'parameter(m#a)'),
        ]),
    const Test(
        '''
        m(a) => a?.b ??= 42;
        ''',
        const [
          const Visit(
              VisitKind.VISIT_IF_NOT_NULL_DYNAMIC_PROPERTY_SET_IF_NULL,
              receiver: 'a', name: 'b', rhs: '42'),
          const Visit(
              VisitKind.VISIT_PARAMETER_GET,
              element: 'parameter(m#a)'),
        ]),
    const Test(
        '''
        m(a, b) => a ?? b;
        ''',
        const [
          const Visit(VisitKind.VISIT_IF_NULL,
                      left: 'a', right: 'b'),
          const Visit(
              VisitKind.VISIT_PARAMETER_GET,
              element: 'parameter(m#a)'),
          const Visit(
              VisitKind.VISIT_PARAMETER_GET,
              element: 'parameter(m#b)'),
       ]),
    const Test(
        '''
        m(a) => a ??= 42;
        ''',
        const Visit(
            VisitKind.VISIT_PARAMETER_SET_IF_NULL,
            element: 'parameter(m#a)',
            rhs: '42')),
    const Test.prefix(
        '''
        var o;
        ''',
        'm() => p?.o;',
        const Visit(VisitKind.ERROR_INVALID_GET,
            error: MessageKind.PREFIX_AS_EXPRESSION)),
  ],
  'Set if null': const [
    const Test(
        '''
        m(a) => a.b ??= 42;
        ''',
        const [
          const Visit(VisitKind.VISIT_DYNAMIC_PROPERTY_SET_IF_NULL,
              receiver: 'a', name: 'b', rhs: '42'),
          const Visit(VisitKind.VISIT_PARAMETER_GET,
              element: 'parameter(m#a)')
        ]),
    const Test(
        '''
        m(a) => a ??= 42;
        ''',
        const Visit(VisitKind.VISIT_PARAMETER_SET_IF_NULL,
            element: 'parameter(m#a)', rhs: '42')),
    const Test(
        '''
        m(final a) => a ??= 42;
        ''',
        const Visit(VisitKind.VISIT_FINAL_PARAMETER_SET_IF_NULL,
            element: 'parameter(m#a)', rhs: '42')),
    const Test(
        '''
        m() {
          var a;
          a ??= 42;
        }
        ''',
        const Visit(VisitKind.VISIT_LOCAL_VARIABLE_SET_IF_NULL,
            element: 'variable(m#a)', rhs: '42')),
    const Test(
        '''
        m() {
          final a = 0;
          a ??= 42;
        }
        ''',
        const Visit(VisitKind.VISIT_FINAL_LOCAL_VARIABLE_SET_IF_NULL,
            element: 'variable(m#a)', rhs: '42')),
    const Test(
        '''
        m() {
          a() {}
          a ??= 42;
        }
        ''',
        const Visit(VisitKind.VISIT_LOCAL_FUNCTION_SET_IF_NULL,
            element: 'function(m#a)', rhs: '42')),
    const Test(
        '''
        var a;
        m() => a ??= 42;
        ''',
        const Visit(VisitKind.VISIT_TOP_LEVEL_FIELD_SET_IF_NULL,
            element: 'field(a)', rhs: '42')),
    const Test(
        '''
        get a => 0;
        set a(_) {}
        m() => a ??= 42;
        ''',
        const Visit(VisitKind.VISIT_TOP_LEVEL_GETTER_SETTER_SET_IF_NULL,
            getter: 'getter(a)', setter: 'setter(a)',
            rhs: '42')),
    const Test(
        '''
        class C {
          static var a;
        }
        m() => C.a ??= 42;
        ''',
        const Visit(VisitKind.VISIT_STATIC_FIELD_SET_IF_NULL,
            element: 'field(C#a)', rhs: '42')),
    const Test.clazz(
        '''
        class C {
          static var a;
          m() => C.a ??= 42;
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_FIELD_SET_IF_NULL,
            element: 'field(C#a)', rhs: '42')),
    const Test.clazz(
        '''
        class C {
          static var a;
          m() => a ??= 42;
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_FIELD_SET_IF_NULL,
            element: 'field(C#a)', rhs: '42')),
    const Test.prefix(
        '''
        class C {
          static var a;
        }
        ''',
        '''
        m() => p.C.a ??= 42;
        ''',
        const Visit(VisitKind.VISIT_STATIC_FIELD_SET_IF_NULL,
            element: 'field(C#a)', rhs: '42')),
    const Test.clazz(
        '''
        class C {
          var o;
          static m() { o ??= 42; }
        }
        ''',
        const Visit(VisitKind.ERROR_INVALID_SET_IF_NULL,
                    error: MessageKind.NO_INSTANCE_AVAILABLE,
                    rhs: '42')),
    const Test.prefix(
        '''
        ''',
        '''
        m() { p ??= 42; }
        ''',
        const Visit(VisitKind.ERROR_INVALID_SET_IF_NULL,
                    error: MessageKind.PREFIX_AS_EXPRESSION,
                    rhs: '42')),
    const Test(
        '''
        class C {
          static get a => 0;
          static set a(_) {}
        }
        m() => C.a ??= 42;
        ''',
        const Visit(VisitKind.VISIT_STATIC_GETTER_SETTER_SET_IF_NULL,
            getter: 'getter(C#a)', setter: 'setter(C#a)',
            rhs: '42')),
    const Test.clazz(
        '''
        class C {
          static get a => 0;
          static set a(_) {}
          m() => C.a ??= 42;
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_GETTER_SETTER_SET_IF_NULL,
            getter: 'getter(C#a)', setter: 'setter(C#a)',
            rhs: '42')),
    const Test.clazz(
        '''
        class C {
          static get a => 0;
          static set a(_) {}
          m() => a ??= 42;
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_GETTER_SETTER_SET_IF_NULL,
            getter: 'getter(C#a)', setter: 'setter(C#a)',
            rhs: '42')),
    const Test.prefix(
        '''
        class C {
          static get a => 0;
          static set a(_) {}
        }
        ''',
        '''
        m() => p.C.a ??= 42;
        ''',
        const Visit(VisitKind.VISIT_STATIC_GETTER_SETTER_SET_IF_NULL,
            getter: 'getter(C#a)', setter: 'setter(C#a)',
            rhs: '42')),
    // TODO(johnniwinther): Enable these when dart2js supports method and setter
    // with the same name.
    /*const Test(
        '''
        class C {
          static a() {}
          static set a(_) {}
        }
        m() => C.a ??= 42;
        ''',
        const Visit(VisitKind.VISIT_STATIC_METHOD_SETTER_SET_IF_NULL,
            getter: 'function(C#a)', setter: 'setter(C#a)',
            rhs: '42')),
    const Test.clazz(
        '''
        class C {
          static a() {}
          static set a(_) {}
          m() => C.a ??= 42;
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_METHOD_SETTER_SET_IF_NULL,
            getter: 'function(C#a)', setter: 'setter(C#a)',
            rhs: '42')),
    const Test.clazz(
        '''
        class C {
          static a() {}
          static set a(_) {}
          m() => a ??= 42;
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_METHOD_SETTER_SET_IF_NULL,
            getter: 'function(C#a)', setter: 'setter(C#a)',
            rhs: '42')),
    const Test.prefix(
        '''
        class C {
          static a() {}
          static set a(_) {}
        }
        ''',
        '''
        m() => p.C.a ??= 42;
        ''',
        const Visit(VisitKind.VISIT_STATIC_METHOD_SETTER_SET_IF_NULL,
            getter: 'function(C#a)', setter: 'setter(C#a)',
            rhs: '42')),*/
    const Test.clazz(
        '''
        class C {
          var a;
          m() => a ??= 42;
        }
        ''',
        const Visit(VisitKind.VISIT_THIS_PROPERTY_SET_IF_NULL,
            name: 'a', rhs: '42')),
    const Test.clazz(
        '''
        class C {
          var a = 0;
          m() => this.a ??= 42;
        }
        ''',
        const Visit(VisitKind.VISIT_THIS_PROPERTY_SET_IF_NULL,
            name: 'a', rhs: '42')),
    const Test.clazz(
        '''
        class B {
          var a = 0;
        }
        class C extends B {
          m() => super.a ??= 42;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_FIELD_SET_IF_NULL,
            element: 'field(B#a)', rhs: '42')),
    const Test.clazz(
        '''
        class B {
          final a = 0;
        }
        class C extends B {
          m() => super.a ??= 42;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_FINAL_FIELD_SET_IF_NULL,
            element: 'field(B#a)', rhs: '42')),
    const Test.clazz(
        '''
        class B {
          get a => 0;
          set a (_) {}
        }
        class C extends B {
          m() => super.a ??= 42;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_GETTER_SETTER_SET_IF_NULL,
            getter: 'getter(B#a)', setter: 'setter(B#a)',
            rhs: '42')),
    const Test.clazz(
        '''
        class A {
          get a => 0;
        }
        class B extends A {
          set a (_) {}
        }
        class C extends B {
          m() => super.a ??= 42;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_GETTER_SETTER_SET_IF_NULL,
            getter: 'getter(A#a)', setter: 'setter(B#a)',
            rhs: '42')),
    const Test.clazz(
        '''
        class A {
          var a;
        }
        class B extends A {
          get a => 0;
        }

        class C extends B {
          m() => super.a ??= 42;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_GETTER_FIELD_SET_IF_NULL,
            getter: 'getter(B#a)', setter: 'field(A#a)',
            rhs: '42')),
    const Test.clazz(
        '''
        class A {
          var a;
        }
        class B extends A {
          set a(_) {}
        }

        class C extends B {
          m() => super.a ??= 42;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_FIELD_SETTER_SET_IF_NULL,
            getter: 'field(A#a)', setter: 'setter(B#a)',
            rhs: '42')),
    // TODO(johnniwinther): Enable this when dart2js supports shadow setters.
    /*const Test.clazz(
        '''
        class A {
          var a;
        }
        class B extends A {
          final a = 0;
        }

        class C extends B {
          m() => super.a ??= 42;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_FIELD_FIELD_SET_IF_NULL,
            getter: 'field(B#a)', setter: 'field(A#a)',
            rhs: '42')),*/
    const Test.clazz(
        '''
        class B {
          a() {}
        }
        class C extends B {
          m() => super.a ??= 42;
        }
        ''',
        const Visit(VisitKind.VISIT_SUPER_METHOD_SET_IF_NULL,
            element: 'function(B#a)',
            rhs: '42')),
    const Test.clazz(
        '''
        class B {
        }
        class C extends B {
          m() => super.a ??= 42;
        }
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_SET_IF_NULL,
            name: 'a', rhs: '42')),
    const Test.clazz(
        '''
        class B {
          set a(_) {}
        }
        class C extends B {
          m() => super.a ??= 42;
        }
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_GETTER_SET_IF_NULL,
            setter: 'setter(B#a)', rhs: '42')),
    const Test.clazz(
        '''
        class B {
          get a => 42;
        }
        class C extends B {
          m() => super.a ??= 42;
        }
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_SETTER_SET_IF_NULL,
            getter: 'getter(B#a)', rhs: '42')),

    const Test.clazz(
        '''
        class C {
          static set a(var value) { }
          m() => a ??= 42;
        }
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_STATIC_GETTER_SET_IF_NULL,
            setter: 'setter(C#a)', rhs: '42')),

    const Test.clazz(
        '''
        class C {
          static get a => 42;
          m() => C.a ??= 42;
        }
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_STATIC_SETTER_SET_IF_NULL,
            getter: 'getter(C#a)', rhs: '42')),

    const Test.clazz(
        '''
        class C {
          static final a = 42;
          m() => C.a ??= 42;
        }
        ''',
        const Visit(VisitKind.VISIT_STATIC_FINAL_FIELD_SET_IF_NULL,
            element: 'field(C#a)', rhs: '42')),

    const Test(
        '''
        class C {
          static a(var value) { }
        }
        m() => C.a ??= 42;
        ''',
        const Visit(VisitKind.VISIT_STATIC_METHOD_SET_IF_NULL,
            element: 'function(C#a)', rhs: '42')),

    const Test(
        '''
        set a(var value) { }
        m() => a ??= 42;
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_TOP_LEVEL_GETTER_SET_IF_NULL,
            setter: 'setter(a)', rhs: '42')),

    const Test(
        '''
        get a => 42;
        m() => a ??= 42;
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_TOP_LEVEL_SETTER_SET_IF_NULL,
            getter: 'getter(a)', rhs: '42')),

    const Test(
        '''
        a(var value) { }
        m() => a ??= 42;
        ''',
        const Visit(VisitKind.VISIT_TOP_LEVEL_METHOD_SET_IF_NULL,
            element: 'function(a)', rhs: '42')),

    const Test(
        '''
        final a = 42;
        m() => a ??= 42;
        ''',
        const Visit(VisitKind.VISIT_TOP_LEVEL_FINAL_FIELD_SET_IF_NULL,
            element: 'field(a)', rhs: '42')),

    const Test(
        '''
        m() => unresolved ??= 42;
        ''',
        const Visit(VisitKind.VISIT_UNRESOLVED_SET_IF_NULL,
            name: 'unresolved', rhs: '42')),
  ],
};
