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)] | ||||
|     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)] | ||||
|     println!("{:-^100}", "LINKER OUTPUT"); | ||||
|  | ||||
| @ -63,6 +63,7 @@ pub fn compile_std( | ||||
| /// MIR.
 | ||||
| pub struct LinkerPass<'map> { | ||||
|     pub module_map: &'map mut ModuleMap, | ||||
|     pub ignore_no_main: bool, | ||||
| } | ||||
| 
 | ||||
| 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()); | ||||
|             return Ok(()); | ||||
|         } | ||||
|         let Some(main) = mains.first() else { | ||||
|             state.note_errors(&vec![ErrorKind::NoMainDefined], 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(()); | ||||
|         if let Some(main) = mains.first() { | ||||
|             if let None = main.functions.iter().find(|f| f.name == "main") { | ||||
|                 if !self.ignore_no_main { | ||||
|                     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(); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user