Add ‘seq’ primop
This commit is contained in:
		
							parent
							
								
									eff120d1b9
								
							
						
					
					
						commit
						a54c263402
					
				
					 4 changed files with 15 additions and 0 deletions
				
			
		|  | @ -383,6 +383,15 @@ static void prim_getEnv(EvalState & state, const Pos & pos, Value * * args, Valu | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | /* Evaluate the first argument, then return the second argument. */ | ||||||
|  | void prim_seq(EvalState & state, const Pos & pos, Value * * args, Value & v) | ||||||
|  | { | ||||||
|  |     state.forceValue(*args[0]); | ||||||
|  |     state.forceValue(*args[1]); | ||||||
|  |     v = *args[1]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| /* Evaluate the first expression and print it on standard error.  Then
 | /* Evaluate the first expression and print it on standard error.  Then
 | ||||||
|    return the second expression.  Useful for debugging. */ |    return the second expression.  Useful for debugging. */ | ||||||
| static void prim_trace(EvalState & state, const Pos & pos, Value * * args, Value & v) | static void prim_trace(EvalState & state, const Pos & pos, Value * * args, Value & v) | ||||||
|  | @ -1424,6 +1433,9 @@ void EvalState::createBaseEnv() | ||||||
|     addPrimOp("__tryEval", 1, prim_tryEval); |     addPrimOp("__tryEval", 1, prim_tryEval); | ||||||
|     addPrimOp("__getEnv", 1, prim_getEnv); |     addPrimOp("__getEnv", 1, prim_getEnv); | ||||||
| 
 | 
 | ||||||
|  |     // Strictness
 | ||||||
|  |     addPrimOp("__seq", 2, prim_seq); | ||||||
|  | 
 | ||||||
|     // Debugging
 |     // Debugging
 | ||||||
|     addPrimOp("__trace", 2, prim_trace); |     addPrimOp("__trace", 2, prim_trace); | ||||||
|     addPrimOp("__gcCanary", 1, prim_gcCanary); |     addPrimOp("__gcCanary", 1, prim_gcCanary); | ||||||
|  |  | ||||||
							
								
								
									
										1
									
								
								tests/lang/eval-fail-seq.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								tests/lang/eval-fail-seq.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | ||||||
|  | builtins.seq (abort "foo") 2 | ||||||
							
								
								
									
										1
									
								
								tests/lang/eval-okay-seq.exp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								tests/lang/eval-okay-seq.exp
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | ||||||
|  | 2 | ||||||
							
								
								
									
										1
									
								
								tests/lang/eval-okay-seq.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								tests/lang/eval-okay-seq.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | ||||||
|  | builtins.seq 1 2 | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue