Add flag to ignore no-main-error
This commit is contained in:
parent
7c7dde03f9
commit
a1507e14ca
@ -121,7 +121,10 @@ pub fn perform_all_passes<'map>(
|
|||||||
#[cfg(debug_assertions)]
|
#[cfg(debug_assertions)]
|
||||||
println!("{}", &context);
|
println!("{}", &context);
|
||||||
|
|
||||||
let state = context.pass(&mut LinkerPass { module_map })?;
|
let state = context.pass(&mut LinkerPass {
|
||||||
|
module_map,
|
||||||
|
ignore_no_main: true,
|
||||||
|
})?;
|
||||||
|
|
||||||
#[cfg(debug_assertions)]
|
#[cfg(debug_assertions)]
|
||||||
println!("{:-^100}", "LINKER OUTPUT");
|
println!("{:-^100}", "LINKER OUTPUT");
|
||||||
|
@ -63,6 +63,7 @@ pub fn compile_std(
|
|||||||
/// MIR.
|
/// MIR.
|
||||||
pub struct LinkerPass<'map> {
|
pub struct LinkerPass<'map> {
|
||||||
pub module_map: &'map mut ModuleMap,
|
pub module_map: &'map mut ModuleMap,
|
||||||
|
pub ignore_no_main: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
type LinkerPassState<'st, 'sc> = PassState<'st, 'sc, (), ErrorKind>;
|
type LinkerPassState<'st, 'sc> = PassState<'st, 'sc, (), ErrorKind>;
|
||||||
@ -80,14 +81,18 @@ impl<'map> Pass for LinkerPass<'map> {
|
|||||||
state.note_errors(&vec![ErrorKind::MultipleMainsAtStart], Metadata::default());
|
state.note_errors(&vec![ErrorKind::MultipleMainsAtStart], Metadata::default());
|
||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
let Some(main) = mains.first() else {
|
if let Some(main) = mains.first() {
|
||||||
state.note_errors(&vec![ErrorKind::NoMainDefined], Metadata::default());
|
if let None = main.functions.iter().find(|f| f.name == "main") {
|
||||||
return Ok(());
|
if !self.ignore_no_main {
|
||||||
};
|
state.note_errors(&vec![ErrorKind::NoMainFunction], Metadata::default());
|
||||||
|
return Ok(());
|
||||||
let Some(_) = main.functions.iter().find(|f| f.name == "main") else {
|
}
|
||||||
state.note_errors(&vec![ErrorKind::NoMainFunction], Metadata::default());
|
};
|
||||||
return Ok(());
|
} else {
|
||||||
|
if !self.ignore_no_main {
|
||||||
|
state.note_errors(&vec![ErrorKind::NoMainDefined], Metadata::default());
|
||||||
|
return Ok(());
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
let mut modules = HashMap::<String, Rc<RefCell<_>>>::new();
|
let mut modules = HashMap::<String, Rc<RefCell<_>>>::new();
|
||||||
|
Loading…
Reference in New Issue
Block a user