================================================================================
line comment
================================================================================

// comment
let x = 1

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

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

================================================================================
block comment
================================================================================

(* comment *)
let x = 1

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

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

================================================================================
multi-line block comment
================================================================================

(*
 * comment
 *)
let x = 1

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

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

================================================================================
docstring
================================================================================

/// <c>code</c>
let x = 1

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

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

================================================================================
comment in simple string
================================================================================

let x = "//comment in string"

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

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

================================================================================
comment in triple-quoted string
================================================================================

let x = """
//comment in string
"""

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

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

================================================================================
comment in verbatim string
================================================================================

let x = @"//comment in string"

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

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

================================================================================
url in simple string
================================================================================

let x = "http://www.test.com"

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

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

================================================================================
url in format string
================================================================================

let x = $"http://www.{baseurl}.com"

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

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

================================================================================
xml docstring
================================================================================

/// <summary>
/// super important function
/// </summary>
let f x = x + 1

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

(file
  (xml_doc
    (xml_doc_content))
  (xml_doc
    (xml_doc_content))
  (xml_doc
    (xml_doc_content))
  (value_declaration
    (function_or_value_defn
      (function_declaration_left
        (identifier)
        (argument_patterns
          (long_identifier
            (identifier))))
      (infix_expression
        (long_identifier_or_op
          (identifier))
        (infix_op)
        (const
          (int))))))

================================================================================
json payload in multi-line string
================================================================================

namespace test

module Json =
  [<Literal>]
  let MyPayload =
    """
    {
      "prop1": []
      "prop2": {
        "prop3": true,
        "prop4": 1,
      },
    }
    """

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

(file
  (namespace
    (long_identifier
      (identifier))
    (module_defn
      (identifier)
      (value_declaration
        (attributes
          (attribute_set
            (attribute
              (object_construction
                (type
                  (long_identifier
                    (identifier)))))))
        (function_or_value_defn
          (value_declaration_left
            (identifier_pattern
              (long_identifier_or_op
                (identifier))))
          (const
            (triple_quoted_string)))))))

================================================================================
json payload in multi-line format string
================================================================================

namespace test

module Json =
  let myPayloadBuilder x =
    $"""
    {
      "prop1": []
      "prop2": {
        "prop3": {x},
        "prop4": 1,
      },
    }
    """

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

(file
  (namespace
    (long_identifier
      (identifier))
    (module_defn
      (identifier)
      (value_declaration
        (function_or_value_defn
          (function_declaration_left
            (identifier)
            (argument_patterns
              (long_identifier
                (identifier))))
          (const
            (triple_quoted_string
              (format_triple_quoted_string))))))))

================================================================================
empty line comment
================================================================================

do
  //
  1

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

(file
  (value_declaration
    (do
      (line_comment)
      (const
        (int)))))
