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

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

---

(program
  (function_declaration
    (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_declaration
    (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_declaration
    (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_declaration
    (function_signature
      (void_type)
      (identifier)
      (formal_parameter_list))
    (function_body
      (block
        (local_variable_declaration
          (initialized_variable_definition
            (type_identifier)
            (identifier)
            (method_invocation
              (unconditional_assignable_selector
                (dot_shorthand
                  (identifier))
                (assignable_operator)
                (identifier))
              (argument_part
                (arguments
                  (argument
                    (decimal_floating_point_literal)))))))))))

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

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

---

(program
  (function_declaration
    (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_declaration
    (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_declaration
    (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_declaration
    (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)))))))
