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

let x = "test"

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

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

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

let x = @"\"

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

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

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

let x = 1

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

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

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

let x = 1L

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

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

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

let x = 1l

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

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

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

let x = 1s

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

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

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

let x = 1y

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

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

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

let x = 1uy

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

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

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

let x = 1us

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

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

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

let x = 1u

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

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

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

let x = 1ul

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

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

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

let x = 1UL

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

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

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

let x = 1uL

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

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

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

do
  1n
  0b1n

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

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

================================================================================
xint
================================================================================

do
  0x1f
  0X1f

  0o66
  0O66

  0b01
  0B01

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

(file
  (value_declaration
    (do
      (sequential_expression
        (const
          (xint))
        (sequential_expression
          (const
            (xint))
          (sequential_expression
            (const
              (xint))
            (sequential_expression
              (const
                (xint))
              (sequential_expression
                (const
                  (xint))
                (const
                  (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_or_op
            (identifier))))
      (const
        (ieee32
          (float))))))

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

let x = 0b1lf

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

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

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

let x = 0b0LF

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

(file
  (value_declaration
    (function_or_value_defn
      (value_declaration_left
        (identifier_pattern
          (long_identifier_or_op
            (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)))))))))))

================================================================================
float
================================================================================

do
  1.
  1.1
  1e+12
  1e-12
  1.2e+12

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

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

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

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

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

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

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

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

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

(file
  (value_declaration
    (function_or_value_defn
      (value_declaration_left
        (identifier_pattern
          (long_identifier_or_op
            (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_or_op
            (identifier))))
      (const
        (triple_quoted_string
          (format_triple_quoted_string))))))

================================================================================
underscores in numeric literal
================================================================================

do
  1_0
  10_000
  10_000_000
  0xDEAD_BEEF
  0b1101_1110_1010_1101_1011_1110_1110_1111

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

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

================================================================================
underindented verbatim string
================================================================================

let johnDoeAsXml = @"<?xml version=""1.0"" encoding=""utf-8""?>
<Person xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
  <FirstName>John</FirstName>
  <LastName>Doe</LastName>
  <BirthDate>1990-07-12T00:00:00</BirthDate>
  <Height>1.85</Height>
  <Piercings>
    <string>ear</string>
    <string>nose</string>
  </Piercings>
</Person>"

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

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