mirror of
https://github.com/erg-lang/erg.git
synced 2025-10-02 21:44:34 +00:00
chore(els): impl Display for ASTDiff/HIRDiff
This commit is contained in:
parent
28a6dd72eb
commit
df5b3bb7d0
2 changed files with 25 additions and 2 deletions
|
@ -1,4 +1,5 @@
|
|||
use std::cmp::Ordering::*;
|
||||
use std::fmt;
|
||||
|
||||
use erg_common::traits::Stream;
|
||||
use erg_compiler::erg_parser::ast;
|
||||
|
@ -15,6 +16,17 @@ pub enum ASTDiff {
|
|||
Nop,
|
||||
}
|
||||
|
||||
impl fmt::Display for ASTDiff {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
match self {
|
||||
Self::Deletion(idx) => write!(f, "Deletion({idx})"),
|
||||
Self::Addition(idx, expr) => write!(f, "Addition({idx}, {expr})"),
|
||||
Self::Modification(idx, expr) => write!(f, "Modification({idx}, {expr})"),
|
||||
Self::Nop => write!(f, "Nop"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// diff(old: {x, y, z}, new: {x, a, y, z}) => ASTDiff::Addition(1)
|
||||
/// diff(old: {x, y}, new: {x, y, a}) => ASTDiff::Addition(2)
|
||||
/// diff(old: {x, y}, new: {x}) => ASTDiff::Deletion(1)
|
||||
|
@ -57,6 +69,17 @@ pub enum HIRDiff {
|
|||
Nop,
|
||||
}
|
||||
|
||||
impl fmt::Display for HIRDiff {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
match self {
|
||||
Self::Deletion(idx) => write!(f, "Deletion({idx})"),
|
||||
Self::Addition(idx, expr) => write!(f, "Addition({idx}, {expr})"),
|
||||
Self::Modification(idx, expr) => write!(f, "Modification({idx}, {expr})"),
|
||||
Self::Nop => write!(f, "Nop"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl HIRDiff {
|
||||
pub fn new(diff: ASTDiff, lowerer: &mut ASTLowerer) -> Option<Self> {
|
||||
match diff {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue