mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-27 05:49:08 +00:00
Move Full from fmt to parse and reorganize confusingly-named Module ast type
This commit is contained in:
parent
698bbc3cf1
commit
d25c048d48
47 changed files with 1759 additions and 1776 deletions
|
@ -14,6 +14,12 @@ use roc_module::called_via::{BinOp, CalledVia, UnaryOp};
|
|||
use roc_module::ident::QualifiedModuleName;
|
||||
use roc_region::all::{Loc, Position, Region};
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct Full<'a> {
|
||||
pub header: SpacesBefore<'a, Header<'a>>,
|
||||
pub defs: Defs<'a>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
|
||||
pub struct Spaces<'a, T> {
|
||||
pub before: &'a [CommentOrNewline<'a>],
|
||||
|
@ -111,15 +117,9 @@ impl<'a, T: ExtractSpaces<'a>> ExtractSpaces<'a> for Loc<T> {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq)]
|
||||
pub struct Module<'a> {
|
||||
pub comments: &'a [CommentOrNewline<'a>],
|
||||
pub header: Header<'a>,
|
||||
}
|
||||
|
||||
impl<'a> Module<'a> {
|
||||
impl<'a> Header<'a> {
|
||||
pub fn upgrade_header_imports(self, arena: &'a Bump) -> (Self, Defs<'a>) {
|
||||
let (header, defs) = match self.header {
|
||||
let (header, defs) = match self {
|
||||
Header::Module(header) => (
|
||||
Header::Module(ModuleHeader {
|
||||
interface_imports: None,
|
||||
|
@ -134,12 +134,10 @@ impl<'a> Module<'a> {
|
|||
}),
|
||||
Self::header_imports_to_defs(arena, header.old_imports),
|
||||
),
|
||||
Header::Package(_) | Header::Platform(_) | Header::Hosted(_) => {
|
||||
(self.header, Defs::default())
|
||||
}
|
||||
Header::Package(_) | Header::Platform(_) | Header::Hosted(_) => (self, Defs::default()),
|
||||
};
|
||||
|
||||
(Module { header, ..self }, defs)
|
||||
(header, defs)
|
||||
}
|
||||
|
||||
pub fn header_imports_to_defs(
|
||||
|
@ -2438,9 +2436,9 @@ pub trait Malformed {
|
|||
fn is_malformed(&self) -> bool;
|
||||
}
|
||||
|
||||
impl<'a> Malformed for Module<'a> {
|
||||
impl<'a> Malformed for Full<'a> {
|
||||
fn is_malformed(&self) -> bool {
|
||||
self.header.is_malformed()
|
||||
self.header.item.is_malformed() || self.defs.is_malformed()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2462,6 +2460,12 @@ impl<'a, T: Malformed> Malformed for Spaces<'a, T> {
|
|||
}
|
||||
}
|
||||
|
||||
impl<'a, T: Malformed> Malformed for SpacesBefore<'a, T> {
|
||||
fn is_malformed(&self) -> bool {
|
||||
self.item.is_malformed()
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> Malformed for Expr<'a> {
|
||||
fn is_malformed(&self) -> bool {
|
||||
use Expr::*;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue