feat(tvix/eval): implement generator-based Nix equality logic
Adds a `Value::neo_nix_eq` method (the `neo_` prefix will be dropped when we flip over to the generator implementation of the VM) which implements Nix equality semantics using async, generator-based comparisons. Instead of tracking the "kind" of equality that is being compared (see the pointer-equality doc) through a pair of booleans, I've introduced an enum that explicitly lists the possible comparisons. Change-Id: I3354cc1470eeccb3000a5ae24f2418db1a7a2edc Reviewed-on: https://cl.tvl.fyi/c/depot/+/8241 Tested-by: BuildkiteCI Reviewed-by: Adam Joseph <adam@westernsemico.com>
This commit is contained in:
		
							parent
							
								
									cd447e1859
								
							
						
					
					
						commit
						cbb4137dc0
					
				
					 2 changed files with 182 additions and 6 deletions
				
			
		|  | @ -14,17 +14,13 @@ use smol_str::SmolStr; | |||
| use std::fmt::Display; | ||||
| use std::future::Future; | ||||
| 
 | ||||
| use crate::value::SharedThunkSet; | ||||
| use crate::value::{PointerEquality, SharedThunkSet}; | ||||
| use crate::warnings::WarningKind; | ||||
| use crate::FileType; | ||||
| use crate::NixString; | ||||
| 
 | ||||
| use super::*; | ||||
| 
 | ||||
| /// Dummy type, before the actual implementation is in place.
 | ||||
| #[derive(Debug)] | ||||
| pub struct PointerEquality {} | ||||
| 
 | ||||
| // -- Implementation of generic generator logic.
 | ||||
| 
 | ||||
| /// States that a generator can be in while being driven by the VM.
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue