rust-code-analysis 0.0.18

Tool to compute and export code metrics
Documentation
=======================================
Class field declarations
=======================================

class A {
  public readonly int _B;
  Int64 D_e_f, g;
  Tuple<char, Nullable<int>> z;
}

---

(compilation_unit
  (class_declaration
    (identifier)
    (declaration_list
      (field_declaration
        (modifier) (modifier)
        (variable_declaration
          (predefined_type)
          (variable_declarator (identifier))))
      (field_declaration
        (variable_declaration
          (identifier)
          (variable_declarator (identifier))
          (variable_declarator (identifier))))
      (field_declaration
        (variable_declaration
          (generic_name (identifier) (type_argument_list
            (predefined_type)
            (generic_name (identifier) (type_argument_list (predefined_type)))))
          (variable_declarator (identifier)))))))

=======================================
Struct field declarations
=======================================

struct A {
  private readonly int c_;
}

---

(compilation_unit
  (struct_declaration
    (identifier)
    (declaration_list
      (field_declaration
        (modifier) (modifier)
        (variable_declaration
          (predefined_type)
          (variable_declarator (identifier)))))))

=======================================
Class field nullable type
=======================================

class A {
  public readonly int? i;
  private Byte? b;
}

---

(compilation_unit
  (class_declaration
    (identifier)
    (declaration_list
      (field_declaration
        (modifier) (modifier)
        (variable_declaration
          (nullable_type (predefined_type))
          (variable_declarator (identifier))))
      (field_declaration
        (modifier)
        (variable_declaration
          (nullable_type (identifier))
          (variable_declarator (identifier)))))))

=======================================
Class field pointer type
=======================================

class A {
  public readonly int* i;
  private Byte* b;
}

---

(compilation_unit
  (class_declaration
    (identifier)
    (declaration_list
      (field_declaration
        (modifier) (modifier)
        (variable_declaration
          (pointer_type (predefined_type))
          (variable_declarator (identifier))))
      (field_declaration
        (modifier)
        (variable_declaration
          (pointer_type (identifier))
          (variable_declarator (identifier)))))))

=======================================
Ref readonly
=======================================

class A {
  ref readonly Point Origin => ref origin;
}

---

(compilation_unit
  (class_declaration
    (identifier)
    (declaration_list
      (property_declaration
        (modifier)
        (modifier)
        (identifier)
        (identifier)
          (arrow_expression_clause (ref_expression (identifier)))))))

=======================================
Nullable reference types
=======================================

class A {
  string? a;
  A? a;
}

---

(compilation_unit
  (class_declaration
    (identifier)
    (declaration_list
      (field_declaration
        (variable_declaration
          (nullable_type (predefined_type))
          (variable_declarator (identifier))))
      (field_declaration
        (variable_declaration
          (nullable_type (identifier))
          (variable_declarator (identifier)))))))

=======================================
Tuple types
=======================================

class A {
  (int, string str) a;
  (B b, C c, D d) a;
}

---

(compilation_unit
  (class_declaration
    (identifier)
    (declaration_list
      (field_declaration
        (variable_declaration
          (tuple_type
            (tuple_element (predefined_type))
            (tuple_element (predefined_type) (identifier)))
          (variable_declarator (identifier))))
      (field_declaration
        (variable_declaration
          (tuple_type
            (tuple_element (identifier) (identifier))
            (tuple_element (identifier) (identifier))
            (tuple_element (identifier) (identifier)))
          (variable_declarator (identifier)))))))