1use crate::exposing::Exposing;
2use crate::ident::ModuleName;
3use crate::node::Spanned;
4
5#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
7#[derive(Clone, Debug, PartialEq, Eq)]
8pub enum ModuleHeader {
9 Normal {
11 name: Spanned<ModuleName>,
12 exposing: Spanned<Exposing>,
13 },
14
15 Port {
17 name: Spanned<ModuleName>,
18 exposing: Spanned<Exposing>,
19 },
20
21 Effect {
25 name: Spanned<ModuleName>,
26 exposing: Spanned<Exposing>,
27 command: Option<Spanned<String>>,
28 subscription: Option<Spanned<String>>,
29 },
30}