================================================================================
basic/trace
================================================================================

amends "../snippetTest.pkl"

examples {
  ["trace different values"] {
    trace(1)
    trace(true)
    trace("Barn Owl")
    trace("""
      Bird
      Barn Owl
      """)
    trace(List(1, 2, 3))
    trace(Set(1, 2, 3))
    trace(Map(1, "one", 2, "two"))
    trace(new {
      name = "Barn Owl"
      age = 42
    })
    trace(new {
      "Parrot"
      "Barn Owl"
      "Pigeon"
    })
    trace(new {
      ["Parrot"] {
        name = "Parrot"
        age = 42
      }
    })
  }
}

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

(module
  (moduleHeader
    (extendsOrAmendsClause
      (stringConstant)))
  (classProperty
    (identifier)
    (objectBody
      (objectEntry
        (slStringLiteral)
        (objectBody
          (objectElement
            (traceExpr
              (parenthesizedExpr
                (intLiteral))))
          (objectElement
            (traceExpr
              (parenthesizedExpr
                (trueLiteral))))
          (objectElement
            (traceExpr
              (parenthesizedExpr
                (slStringLiteral))))
          (objectElement
            (traceExpr
              (parenthesizedExpr
                (mlStringLiteral))))
          (objectElement
            (traceExpr
              (parenthesizedExpr
                (methodCallExpr
                  (identifier)
                  (argumentList
                    (intLiteral)
                    (intLiteral)
                    (intLiteral))))))
          (objectElement
            (traceExpr
              (parenthesizedExpr
                (methodCallExpr
                  (identifier)
                  (argumentList
                    (intLiteral)
                    (intLiteral)
                    (intLiteral))))))
          (objectElement
            (traceExpr
              (parenthesizedExpr
                (methodCallExpr
                  (identifier)
                  (argumentList
                    (intLiteral)
                    (slStringLiteral)
                    (intLiteral)
                    (slStringLiteral))))))
          (objectElement
            (traceExpr
              (parenthesizedExpr
                (newExpr
                  (objectBody
                    (objectProperty
                      (identifier)
                      (slStringLiteral))
                    (objectProperty
                      (identifier)
                      (intLiteral)))))))
          (objectElement
            (traceExpr
              (parenthesizedExpr
                (newExpr
                  (objectBody
                    (objectElement
                      (slStringLiteral))
                    (objectElement
                      (slStringLiteral))
                    (objectElement
                      (slStringLiteral)))))))
          (objectElement
            (traceExpr
              (parenthesizedExpr
                (newExpr
                  (objectBody
                    (objectEntry
                      (slStringLiteral)
                      (objectBody
                        (objectProperty
                          (identifier)
                          (slStringLiteral))
                        (objectProperty
                          (identifier)
                          (intLiteral))))))))))))))
