=========================================
Foreign Import Declarations
=========================================

foreign import ccall example :: Example
foreign import stdcall example :: Example
foreign import cplusplus example :: Example
foreign import jvm example :: Example
foreign import dotnet example :: Example

---

(module
  (foreign_import_declaration (calling_convention)
    (type_signature (variable_identifier) (annotation) (type_constructor_identifier)))
  (foreign_import_declaration (calling_convention)
    (type_signature (variable_identifier) (annotation) (type_constructor_identifier)))
  (foreign_import_declaration (calling_convention)
    (type_signature (variable_identifier) (annotation) (type_constructor_identifier)))
  (foreign_import_declaration (calling_convention)
    (type_signature (variable_identifier) (annotation) (type_constructor_identifier)))
  (foreign_import_declaration (calling_convention)
    (type_signature (variable_identifier) (annotation) (type_constructor_identifier))))

=========================================
Foreign Import Declarations With Safety
=========================================

foreign import ccall safe "safe import" example :: Example
foreign import stdcall unsafe "unsafe import" example :: Example
foreign import cplusplus safe "safe import" example :: Example
foreign import jvm unsafe "unsafe import" example :: Example
foreign import dotnet unsafe "unsafe import" example :: Example

---

(module
  (foreign_import_declaration (calling_convention) (safety) (string)
    (type_signature (variable_identifier) (annotation) (type_constructor_identifier)))
  (foreign_import_declaration (calling_convention) (safety) (string)
    (type_signature (variable_identifier) (annotation) (type_constructor_identifier)))
  (foreign_import_declaration (calling_convention) (safety) (string)
    (type_signature (variable_identifier) (annotation) (type_constructor_identifier)))
  (foreign_import_declaration (calling_convention) (safety) (string)
    (type_signature (variable_identifier) (annotation) (type_constructor_identifier)))
  (foreign_import_declaration (calling_convention) (safety) (string)
    (type_signature (variable_identifier) (annotation) (type_constructor_identifier))))

=========================================
Foreign Export Declarations
=========================================

foreign export ccall example :: Example
foreign export stdcall example :: Example
foreign export cplusplus example :: Example
foreign export jvm example :: Example
foreign export dotnet example :: Example

---

(module
  (foreign_export_declaration (calling_convention)
    (type_signature (variable_identifier) (annotation) (type_constructor_identifier)))
  (foreign_export_declaration (calling_convention)
    (type_signature (variable_identifier) (annotation) (type_constructor_identifier)))
  (foreign_export_declaration (calling_convention)
    (type_signature (variable_identifier) (annotation) (type_constructor_identifier)))
  (foreign_export_declaration (calling_convention)
    (type_signature (variable_identifier) (annotation) (type_constructor_identifier)))
  (foreign_export_declaration (calling_convention)
    (type_signature (variable_identifier) (annotation) (type_constructor_identifier))))
