Update how types are formatted
This commit is contained in:
		
							parent
							
								
									ce645519ce
								
							
						
					
					
						commit
						f55040ad00
					
				| @ -74,12 +74,12 @@ impl Display for FunctionDefinition { | ||||
|     fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | ||||
|         write!( | ||||
|             f, | ||||
|             "{}fn {}({}) -> {} ", | ||||
|             "{}fn {}({}) -> {:#} ", | ||||
|             if self.is_pub { "pub " } else { "" }, | ||||
|             self.name, | ||||
|             self.parameters | ||||
|                 .iter() | ||||
|                 .map(|(n, t)| format!("{}: {}", n, t)) | ||||
|                 .map(|(n, t)| format!("{}: {:#}", n, t)) | ||||
|                 .collect::<Vec<_>>() | ||||
|                 .join(", "), | ||||
|             self.return_type | ||||
| @ -166,7 +166,7 @@ impl Display for ExprKind { | ||||
|             ExprKind::Block(block) => Display::fmt(block, f), | ||||
|             ExprKind::Indexed(expression, elem_ty, idx_expr) => { | ||||
|                 Display::fmt(&expression, f)?; | ||||
|                 write!(f, "<{}>", elem_ty)?; | ||||
|                 write!(f, "<{:#}>", elem_ty)?; | ||||
|                 write_index(f, idx_expr) | ||||
|             } | ||||
|             ExprKind::Array(expressions) => { | ||||
| @ -228,7 +228,7 @@ impl Display for IfExpression { | ||||
| 
 | ||||
| impl Display for FunctionCall { | ||||
|     fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | ||||
|         write!(f, "{}<{}>(", self.name, self.return_type)?; | ||||
|         write!(f, "{}<{:#}>(", self.name, self.return_type)?; | ||||
|         for (i, param) in self.parameters.iter().enumerate() { | ||||
|             Display::fmt(param, f)?; | ||||
|             if i < (self.parameters.len() - 1) { | ||||
| @ -241,7 +241,7 @@ impl Display for FunctionCall { | ||||
| 
 | ||||
| impl Display for NamedVariableRef { | ||||
|     fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | ||||
|         write!(f, "v(\"{}\", {})", &self.1, &self.0) | ||||
|         write!(f, "v(\"{}\", {:#})", &self.1, &self.0) | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| @ -312,3 +312,62 @@ fn write_access(f: &mut std::fmt::Formatter<'_>, name: &String) -> std::fmt::Res | ||||
|     f.write_char('.')?; | ||||
|     Display::fmt(name, f) | ||||
| } | ||||
| 
 | ||||
| impl Display for TypeKind { | ||||
|     fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | ||||
|         match self { | ||||
|             TypeKind::Bool => write!(f, "bool"), | ||||
|             TypeKind::I8 => write!(f, "i8"), | ||||
|             TypeKind::I16 => write!(f, "i16"), | ||||
|             TypeKind::I32 => write!(f, "i32"), | ||||
|             TypeKind::I64 => write!(f, "i64"), | ||||
|             TypeKind::I128 => write!(f, "i128"), | ||||
|             TypeKind::U8 => write!(f, "u8"), | ||||
|             TypeKind::U16 => write!(f, "u16"), | ||||
|             TypeKind::U32 => write!(f, "u32"), | ||||
|             TypeKind::U64 => write!(f, "u64"), | ||||
|             TypeKind::U128 => write!(f, "u128"), | ||||
|             TypeKind::Void => write!(f, "void"), | ||||
|             TypeKind::StringPtr => write!(f, "string"), | ||||
|             TypeKind::Array(type_kind, len) => { | ||||
|                 f.write_char('[')?; | ||||
|                 Display::fmt(type_kind, f)?; | ||||
|                 write!(f, "; ")?; | ||||
|                 Display::fmt(len, f)?; | ||||
|                 f.write_char(']') | ||||
|             } | ||||
|             TypeKind::CustomType(name) => write!(f, "{}", name), | ||||
|             TypeKind::Borrow(type_kind, false) => { | ||||
|                 write!(f, "&")?; | ||||
|                 Display::fmt(type_kind, f) | ||||
|             } | ||||
|             TypeKind::Borrow(type_kind, true) => { | ||||
|                 write!(f, "&mut ")?; | ||||
|                 Display::fmt(type_kind, f) | ||||
|             } | ||||
|             TypeKind::Ptr(type_kind) => { | ||||
|                 write!(f, "*")?; | ||||
|                 Display::fmt(type_kind, f) | ||||
|             } | ||||
|             TypeKind::Vague(vague_type) => Display::fmt(vague_type, f), | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| impl Display for VagueType { | ||||
|     fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | ||||
|         if f.alternate() { | ||||
|             match self { | ||||
|                 VagueType::Unknown => write!(f, "Unknown"), | ||||
|                 VagueType::Number => write!(f, "Number"), | ||||
|                 VagueType::TypeRef(id) => write!(f, "TypeRef({0})", id), | ||||
|             } | ||||
|         } else { | ||||
|             match self { | ||||
|                 VagueType::Unknown => write!(f, "{{unknown}}"), | ||||
|                 VagueType::Number => write!(f, "Number"), | ||||
|                 VagueType::TypeRef(_) => write!(f, "{{unknown}}"), | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -77,53 +77,32 @@ impl TokenRange { | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| #[derive(Debug, Clone, PartialEq, Eq, thiserror::Error, PartialOrd, Ord, Hash)] | ||||
| #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] | ||||
| pub enum TypeKind { | ||||
|     #[error("bool")] | ||||
|     Bool, | ||||
|     #[error("i8")] | ||||
|     I8, | ||||
|     #[error("i16")] | ||||
|     I16, | ||||
|     #[error("i32")] | ||||
|     I32, | ||||
|     #[error("i64")] | ||||
|     I64, | ||||
|     #[error("i128")] | ||||
|     I128, | ||||
|     #[error("u8")] | ||||
|     U8, | ||||
|     #[error("u16")] | ||||
|     U16, | ||||
|     #[error("u32")] | ||||
|     U32, | ||||
|     #[error("u64")] | ||||
|     U64, | ||||
|     #[error("u128")] | ||||
|     U128, | ||||
|     #[error("void")] | ||||
|     Void, | ||||
|     #[error("string")] | ||||
|     StringPtr, | ||||
|     #[error("[{0}; {1}]")] | ||||
|     Array(Box<TypeKind>, u64), | ||||
|     #[error("{0}")] | ||||
|     CustomType(String), | ||||
|     #[error("Borrow({0}, {1})")] | ||||
|     Borrow(Box<TypeKind>, bool), | ||||
|     #[error("Ptr({0})")] | ||||
|     Ptr(Box<TypeKind>), | ||||
|     #[error(transparent)] | ||||
|     Vague(#[from] VagueType), | ||||
|     Vague(VagueType), | ||||
| } | ||||
| 
 | ||||
| #[derive(Debug, Clone, Copy, PartialEq, Eq, thiserror::Error, PartialOrd, Ord, Hash)] | ||||
| #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] | ||||
| pub enum VagueType { | ||||
|     #[error("Unknown")] | ||||
|     Unknown, | ||||
|     #[error("Number")] | ||||
|     Number, | ||||
|     #[error("TypeRef({0})")] | ||||
|     TypeRef(usize), | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -5,9 +5,9 @@ fn changer(param: &mut u32) { | ||||
| } | ||||
| 
 | ||||
| fn main() -> u32 { | ||||
|   let value = 6; | ||||
|   let mut value = 6; | ||||
| 
 | ||||
|   let mut a = &value; | ||||
|   changer(&mut value); | ||||
| 
 | ||||
|   return value; | ||||
| } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user