==================================
dot shorthand - static member access
==================================

void main() {
  Color c = .red;
}

---

(program
  (function_signature
    (void_type)
    (identifier)
    (formal_parameter_list))
  (function_body
    (block
      (local_variable_declaration
        (initialized_variable_definition
          (type_identifier)
          (identifier)
          (dot_shorthand
            (identifier)))))))

==================================
dot shorthand - named constructor call
==================================

void main() {
  Color c = .fromRGB(255, 0, 0);
}

---

(program
  (function_signature
    (void_type)
    (identifier)
    (formal_parameter_list))
  (function_body
    (block
      (local_variable_declaration
        (initialized_variable_definition
          (type_identifier)
          (identifier)
          (method_invocation
            (dot_shorthand
              (identifier))
            (argument_part
              (arguments
                (argument
                  (decimal_integer_literal))
                (argument
                  (decimal_integer_literal))
                (argument
                  (decimal_integer_literal))))))))))

==================================
dot shorthand - default constructor call
==================================

void main() {
  Color c = .new(255);
}

---

(program
  (function_signature
    (void_type)
    (identifier)
    (formal_parameter_list))
  (function_body
    (block
      (local_variable_declaration
        (initialized_variable_definition
          (type_identifier)
          (identifier)
          (method_invocation
            (dot_shorthand)
            (argument_part
              (arguments
                (argument
                  (decimal_integer_literal))))))))))

==================================
dot shorthand - chained member access
==================================

void main() {
  Color c = .red.withOpacity(0.5);
}

---

(program
  (function_signature
    (void_type)
    (identifier)
    (formal_parameter_list))
  (function_body
    (block
      (local_variable_declaration
        (initialized_variable_definition
          (type_identifier)
          (identifier)
          (dot_shorthand
            (identifier))
          (selector
            (unconditional_assignable_selector
              (identifier)))
          (selector
            (argument_part
              (arguments
                (argument
                  (decimal_floating_point_literal))))))))))

==================================
dot shorthand - as named argument
==================================

main() {
  foo(color: .red);
}

---

(program
  (function_signature
    (identifier)
    (formal_parameter_list))
  (function_body
    (block
      (expression_statement
        (method_invocation
          (identifier)
          (argument_part
            (arguments
              (named_argument
                (label
                  (identifier))
                (dot_shorthand
                  (identifier))))))))))

==================================
dot shorthand - with type arguments
==================================

void main() {
  var list = .from<int>([1, 2, 3]);
}

---

(program
  (function_signature
    (void_type)
    (identifier)
    (formal_parameter_list))
  (function_body
    (block
      (local_variable_declaration
        (initialized_variable_definition
          (inferred_type)
          (identifier)
          (method_invocation
            (dot_shorthand
              (identifier))
            (argument_part
              (type_arguments
                (type_identifier))
              (arguments
                (argument
                  (list_literal
                    (decimal_integer_literal)
                    (decimal_integer_literal)
                    (decimal_integer_literal)))))))))))

==================================
dot shorthand - in switch expression
==================================

void main() {
  Color c = switch (x) { 1 => .red, _ => .blue };
}

---

(program
  (function_signature
    (void_type)
    (identifier)
    (formal_parameter_list))
  (function_body
    (block
      (local_variable_declaration
        (initialized_variable_definition
          (type_identifier)
          (identifier)
          (switch_expression
            (parenthesized_expression
              (identifier))
            (switch_expression_case
              (constant_pattern
                (decimal_integer_literal))
              (dot_shorthand
                (identifier)))
            (switch_expression_case
              (constant_pattern
                (identifier))
              (dot_shorthand
                (identifier)))))))))

==================================
dot shorthand - in case pattern
==================================

void main() {
  switch (c) {
    case .red:
      print('r');
    case .new():
      print('n');
  }
}

---

(program
  (function_signature
    (void_type)
    (identifier)
    (formal_parameter_list))
  (function_body
    (block
      (switch_statement
        (parenthesized_expression
          (identifier))
        (switch_block
          (switch_statement_case
            (case_builtin)
            (constant_pattern
              (dot_shorthand
                (identifier)))
            (expression_statement
              (method_invocation
                (identifier)
                (argument_part
                  (arguments
                    (argument
                      (string_literal)))))))
          (switch_statement_case
            (case_builtin)
            (constant_pattern
              (dot_shorthand)
              (arguments))
            (expression_statement
              (method_invocation
                (identifier)
                (argument_part
                  (arguments
                    (argument
                      (string_literal))))))))))))

==================================
dot shorthand - const constructor
==================================

const Box a = const .new();
const Box b = const .named(1);

---

(program
  (const_builtin)
  (type_identifier)
  (static_final_declaration_list
    (static_final_declaration
      (identifier)
      (const_object_expression
        (const_builtin)
        (dot_shorthand)
        (arguments))))
  (const_builtin)
  (type_identifier)
  (static_final_declaration_list
    (static_final_declaration
      (identifier)
      (const_object_expression
        (const_builtin)
        (dot_shorthand
          (identifier))
        (arguments
          (argument
            (decimal_integer_literal)))))))
