This commit is contained in:
Janggun Lee
2025-02-11 16:11:31 +09:00
parent 0758005eac
commit a8e0aa5e69
8 changed files with 22 additions and 27 deletions

View File

@@ -86,9 +86,11 @@ pub enum Dtype {
/// TODO(document)
Struct {
/// TODO(document)
// FIXME: Why is this an option?
name: Option<String>,
/// TODO(document)
// FIXME: Just use vec for empty set of fields, no need for option?
fields: Option<Vec<Named<Dtype>>>,
/// TODO(document)

View File

@@ -3,7 +3,7 @@
use std::collections::HashMap;
use crate::ir::*;
use crate::{some_or, Translate};
use crate::Translate;
#[derive(Default, Debug)]
pub struct Visualizer {
@@ -29,7 +29,9 @@ impl Translate<TranslationUnit> for Visualizer {
signature,
definition,
} => {
let definition = some_or!(definition, continue);
let Some(definition) = definition else {
continue;
};
let subgraph = self.translate_function(name, signature, definition)?;
subgraphs.push(subgraph);
}
@@ -41,7 +43,9 @@ impl Translate<TranslationUnit> for Visualizer {
// Add edges between subgraphs
for (name, decl) in &source.decls {
if let Declaration::Function { definition, .. } = decl {
let definition = some_or!(definition, continue);
let Some(definition) = definition else {
continue;
};
for (bid, block) in &definition.blocks {
for (iid, instruction) in block.instructions.iter().enumerate() {

View File

@@ -2,7 +2,6 @@ use std::io::{Result, Write};
use crate::ir::*;
use crate::write_base::*;
use crate::*;
impl WriteLine for TranslationUnit {
fn write_line(&self, indent: usize, write: &mut dyn Write) -> Result<()> {
@@ -36,14 +35,16 @@ impl WriteLine for TranslationUnit {
}
for (name, decl) in &self.decls {
let _ = some_or!(decl.get_variable(), continue);
(name, decl).write_line(indent, write)?;
if decl.get_variable().is_some() {
(name, decl).write_line(indent, write)?;
}
}
for (name, decl) in &self.decls {
let _ = some_or!(decl.get_function(), continue);
writeln!(write)?;
(name, decl).write_line(indent, write)?;
if decl.get_function().is_some() {
writeln!(write)?;
(name, decl).write_line(indent, write)?;
}
}
Ok(())