================================================================================
Function call with no args
================================================================================

x = compute()

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

(source_file
  (assignment
    left: (identifier)
    right: (call_expression
      (identifier))))

================================================================================
Function call with positional args
================================================================================

x = compute(a, b, c)

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

(source_file
  (assignment
    left: (identifier)
    right: (call_expression
      (identifier)
      (argument_list
        (identifier)
        (identifier)
        (identifier)))))

================================================================================
Function call with keyword argument
================================================================================

x = compute(data, scale=2.0)

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

(source_file
  (assignment
    left: (identifier)
    right: (call_expression
      (identifier)
      (argument_list
        (identifier)
        (keyword_argument
          (identifier)
          (number_literal))))))

================================================================================
Function call with keyword shorthand
================================================================================

x = compute(data, /verbose)

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

(source_file
  (assignment
    left: (identifier)
    right: (call_expression
      (identifier)
      (argument_list
        (identifier)
        (keyword_argument
          (identifier))))))

================================================================================
Procedure call with args
================================================================================

print, 'hello', x, y

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

(source_file
  (procedure_call
    (identifier)
    (argument_list
      (string_literal)
      (identifier)
      (identifier))))

================================================================================
Procedure call with keyword
================================================================================

plot, x, y, color=red, /nodata

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

(source_file
  (procedure_call
    (identifier)
    (argument_list
      (identifier)
      (identifier)
      (keyword_argument
        (identifier)
        (identifier))
      (keyword_argument
        (identifier)))))

================================================================================
Nested function calls
================================================================================

x = outer(inner(a))

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

(source_file
  (assignment
    left: (identifier)
    right: (call_expression
      (identifier)
      (argument_list
        (call_expression
          (identifier)
          (argument_list
            (identifier)))))))
