Fix using custom type-labels for e.g. return type
This commit is contained in:
		
							parent
							
								
									0f782dcb96
								
							
						
					
					
						commit
						ce2278ce45
					
				| @ -39,7 +39,7 @@ impl Parse for Type { | |||||||
|                     "u64" => TypeKind::U64, |                     "u64" => TypeKind::U64, | ||||||
|                     "u128" => TypeKind::U128, |                     "u128" => TypeKind::U128, | ||||||
|                     "string" => TypeKind::String, |                     "string" => TypeKind::String, | ||||||
|                     _ => Err(stream.expected_err("known type identifier")?)?, |                     _ => TypeKind::Custom(ident), | ||||||
|                 } |                 } | ||||||
|             } else { |             } else { | ||||||
|                 return Err(stream.expected_err("type identifier")?)?; |                 return Err(stream.expected_err("type identifier")?)?; | ||||||
|  | |||||||
| @ -275,7 +275,7 @@ impl From<ast::TypeKind> for mir::TypeKind { | |||||||
|                 mir::TypeKind::Array(Box::new(mir::TypeKind::from(*type_kind.clone())), *length) |                 mir::TypeKind::Array(Box::new(mir::TypeKind::from(*type_kind.clone())), *length) | ||||||
|             } |             } | ||||||
|             ast::TypeKind::String => mir::TypeKind::StringPtr, |             ast::TypeKind::String => mir::TypeKind::StringPtr, | ||||||
|             ast::TypeKind::Custom(_) => todo!("Add processing for custom types"), |             ast::TypeKind::Custom(name) => mir::TypeKind::CustomType(name.clone()), | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -5,19 +5,24 @@ struct Test { | |||||||
|     second: [u32; 4] |     second: [u32; 4] | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| fn main() -> v u32 { | fn test() -> [Test; 1] { | ||||||
|     let mut value = [Test { |     let value = [Test { | ||||||
|         field: 5, |         field: 5, | ||||||
|         second: [6, 3, "hello", 8], |         second: [6, 3, 4, 8], | ||||||
|     }]; |     }]; | ||||||
|  |     return value; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | fn main() -> u32 { | ||||||
|  |     let mut value = test(); | ||||||
| 
 | 
 | ||||||
|     let val1 = 0; |     let val1 = 0; | ||||||
|     let val2 = 1; |     let val2 = 1; | ||||||
| 
 | 
 | ||||||
|     // value[val1].second[val2 + 1] = 99; |     // value[val1].second[val2 + 1] = 99; | ||||||
| 
 | 
 | ||||||
|     let mut b = valude[val1]; |     let mut b = value[val1]; | ||||||
|     b.second[2] = 99; |     b.second[2] = 99; | ||||||
| 
 | 
 | ||||||
|     return value[val1].sezcond[2]; |     return value[val1].second[2]; | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user