================================================================================
simple string
================================================================================

let x = "test"

--------------------------------------------------------------------------------

(file
  (value_declaration
    (function_or_value_defn
      (value_declaration_left
        (identifier_pattern
          (long_identifier
            (identifier))))
      (const
        (string)))))

================================================================================
verbatim string
================================================================================

let x = @"\"

--------------------------------------------------------------------------------

(file
  (value_declaration
    (function_or_value_defn
      (value_declaration_left
        (identifier_pattern
          (long_identifier
            (identifier))))
      (const
        (verbatim_string)))))

================================================================================
int
================================================================================

let x = 1

--------------------------------------------------------------------------------

(file
  (value_declaration
    (function_or_value_defn
      (value_declaration_left
        (identifier_pattern
          (long_identifier
            (identifier))))
      (const
        (int)))))

================================================================================
int64
================================================================================

let x = 1L

--------------------------------------------------------------------------------

(file
  (value_declaration
    (function_or_value_defn
      (value_declaration_left
        (identifier_pattern
          (long_identifier
            (identifier))))
      (const
        (int64
          (int))))))

================================================================================
int32
================================================================================

let x = 1l

--------------------------------------------------------------------------------

(file
  (value_declaration
    (function_or_value_defn
      (value_declaration_left
        (identifier_pattern
          (long_identifier
            (identifier))))
      (const
        (int32
          (int))))))

================================================================================
int16
================================================================================

let x = 1s

--------------------------------------------------------------------------------

(file
  (value_declaration
    (function_or_value_defn
      (value_declaration_left
        (identifier_pattern
          (long_identifier
            (identifier))))
      (const
        (int16
          (int))))))

================================================================================
sbyte
================================================================================

let x = 1y

--------------------------------------------------------------------------------

(file
  (value_declaration
    (function_or_value_defn
      (value_declaration_left
        (identifier_pattern
          (long_identifier
            (identifier))))
      (const
        (sbyte
          (int))))))

================================================================================
byte
================================================================================

let x = 1uy

--------------------------------------------------------------------------------

(file
  (value_declaration
    (function_or_value_defn
      (value_declaration_left
        (identifier_pattern
          (long_identifier
            (identifier))))
      (const
        (byte
          (int))))))

================================================================================
uint16
================================================================================

let x = 1us

--------------------------------------------------------------------------------

(file
  (value_declaration
    (function_or_value_defn
      (value_declaration_left
        (identifier_pattern
          (long_identifier
            (identifier))))
      (const
        (uint16
          (int))))))

================================================================================
uint32
================================================================================

let x = 1u

--------------------------------------------------------------------------------

(file
  (value_declaration
    (function_or_value_defn
      (value_declaration_left
        (identifier_pattern
          (long_identifier
            (identifier))))
      (const
        (uint32
          (int))))))

================================================================================
uint32 alternative
================================================================================

let x = 1ul

--------------------------------------------------------------------------------

(file
  (value_declaration
    (function_or_value_defn
      (value_declaration_left
        (identifier_pattern
          (long_identifier
            (identifier))))
      (const
        (uint32
          (int))))))

================================================================================
uint64
================================================================================

let x = 1UL

--------------------------------------------------------------------------------

(file
  (value_declaration
    (function_or_value_defn
      (value_declaration_left
        (identifier_pattern
          (long_identifier
            (identifier))))
      (const
        (uint64
          (int))))))

================================================================================
uint64 alternative
================================================================================

let x = 1uL

--------------------------------------------------------------------------------

(file
  (value_declaration
    (function_or_value_defn
      (value_declaration_left
        (identifier_pattern
          (long_identifier
            (identifier))))
      (const
        (uint64
          (int))))))

================================================================================
nativeint
================================================================================

do
  1n
  0b1n

--------------------------------------------------------------------------------

(file
  (value_declaration
    (do
      (sequential_expression
        (const
          (nativeint
            (int)))
        (const
          (nativeint
            (xint)))))))

================================================================================
unativeint
================================================================================

do
  1un
  0b1un

--------------------------------------------------------------------------------

(file
  (value_declaration
    (do
      (sequential_expression
        (const
          (unativeint
            (int)))
        (const
          (unativeint
            (xint)))))))

================================================================================
ieee32
================================================================================

let x = 1.f

--------------------------------------------------------------------------------

(file
  (value_declaration
    (function_or_value_defn
      (value_declaration_left
        (identifier_pattern
          (long_identifier
            (identifier))))
      (const
        (ieee32
          (float))))))

================================================================================
ieee32 alternative
================================================================================

let x = 0b1lf

--------------------------------------------------------------------------------

(file
  (value_declaration
    (function_or_value_defn
      (value_declaration_left
        (identifier_pattern
          (long_identifier
            (identifier))))
      (const
        (ieee32
          (xint))))))

================================================================================
ieee64
================================================================================

let x = 0b0LF

--------------------------------------------------------------------------------

(file
  (value_declaration
    (function_or_value_defn
      (value_declaration_left
        (identifier_pattern
          (long_identifier
            (identifier))))
      (const
        (ieee64
          (xint))))))

================================================================================
bignum
================================================================================

do
  1Q
  1R
  1Z
  1I
  1N
  1G

--------------------------------------------------------------------------------

(file
  (value_declaration
    (do
      (sequential_expression
        (const
          (bignum
            (int)))
        (sequential_expression
          (const
            (bignum
              (int)))
          (sequential_expression
            (const
              (bignum
                (int)))
            (sequential_expression
              (const
                (bignum
                  (int)))
              (sequential_expression
                (const
                  (bignum
                    (int)))
                (const
                  (bignum
                    (int)))))))))))

================================================================================
decimal
================================================================================

do
  1.0M
  1.M
  1M
  1.0m
  1.m
  1m

--------------------------------------------------------------------------------

(file
  (value_declaration
    (do
      (sequential_expression
        (const
          (decimal
            (float)))
        (sequential_expression
          (const
            (decimal
              (float)))
          (sequential_expression
            (const
              (decimal
                (int)))
            (sequential_expression
              (const
                (decimal
                  (float)))
              (sequential_expression
                (const
                  (decimal
                    (float)))
                (const
                  (decimal
                    (int)))))))))))

================================================================================
string with escaped quote
================================================================================

let str = "name: \"name\""

--------------------------------------------------------------------------------

(file
  (value_declaration
    (function_or_value_defn
      (value_declaration_left
        (identifier_pattern
          (long_identifier
            (identifier))))
      (const
        (string)))))

================================================================================
format string
================================================================================

let x =
  $"int: {2 + 2}"

--------------------------------------------------------------------------------

(file
  (value_declaration
    (function_or_value_defn
      (value_declaration_left
        (identifier_pattern
          (long_identifier
            (identifier))))
      (const
        (string
          (format_string
            (format_string_eval
              (infix_expression
                (const
                  (int))
                (infix_op)
                (const
                  (int))))))))))

================================================================================
triple quoted format string
================================================================================

let x =
  $"""int: {2 + 2}"""

--------------------------------------------------------------------------------

(file
  (value_declaration
    (function_or_value_defn
      (value_declaration_left
        (identifier_pattern
          (long_identifier
            (identifier))))
      (const
        (triple_quoted_string
          (format_triple_quoted_string))))))
