feat: support module-qualified constructor patterns in match expressions (issue 3)
Added module: Option<Ident> to Pattern::Constructor, updated parser to handle module.Constructor(args) syntax in patterns, exported ADT constructors from modules, and copied type definitions during module import so types like Shape are usable in importing files. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -772,12 +772,22 @@ impl Formatter {
|
||||
Pattern::Wildcard(_) => "_".to_string(),
|
||||
Pattern::Var(ident) => ident.name.clone(),
|
||||
Pattern::Literal(lit) => self.format_literal(lit),
|
||||
Pattern::Constructor { name, fields, .. } => {
|
||||
Pattern::Constructor {
|
||||
module,
|
||||
name,
|
||||
fields,
|
||||
..
|
||||
} => {
|
||||
let prefix = match module {
|
||||
Some(m) => format!("{}.", m.name),
|
||||
None => String::new(),
|
||||
};
|
||||
if fields.is_empty() {
|
||||
name.name.clone()
|
||||
format!("{}{}", prefix, name.name)
|
||||
} else {
|
||||
format!(
|
||||
"{}({})",
|
||||
"{}{}({})",
|
||||
prefix,
|
||||
name.name,
|
||||
fields
|
||||
.iter()
|
||||
|
||||
Reference in New Issue
Block a user