* New primop `unsafeDiscardStringContext' to get rid of string
contexts. Needed to prevent unnecessary dependencies when building the NixOS manual.
This commit is contained in:
		
							parent
							
								
									895c953817
								
							
						
					
					
						commit
						7d0f6aed59
					
				
					 3 changed files with 17 additions and 0 deletions
				
			
		|  | @ -942,6 +942,14 @@ static Expr prim_stringLength(EvalState & state, const ATermVector & args) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | static Expr prim_unsafeDiscardStringContext(EvalState & state, const ATermVector & args) | ||||||
|  | { | ||||||
|  |     PathSet context; | ||||||
|  |     string s = coerceToString(state, args[0], context); | ||||||
|  |     return makeStr(s, PathSet()); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| /*************************************************************
 | /*************************************************************
 | ||||||
|  * Primop registration |  * Primop registration | ||||||
|  *************************************************************/ |  *************************************************************/ | ||||||
|  | @ -1009,6 +1017,8 @@ void EvalState::addPrimOps() | ||||||
|     addPrimOp("toString", 1, prim_toString); |     addPrimOp("toString", 1, prim_toString); | ||||||
|     addPrimOp("__substring", 3, prim_substring); |     addPrimOp("__substring", 3, prim_substring); | ||||||
|     addPrimOp("__stringLength", 1, prim_stringLength); |     addPrimOp("__stringLength", 1, prim_stringLength); | ||||||
|  |     addPrimOp("__unsafeDiscardStringContext", 1, prim_unsafeDiscardStringContext); | ||||||
|  |      | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										1
									
								
								tests/lang/eval-okay-context.exp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								tests/lang/eval-okay-context.exp
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | ||||||
|  | Str("foo eval-okay-context.nix bar",[]) | ||||||
							
								
								
									
										6
									
								
								tests/lang/eval-okay-context.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								tests/lang/eval-okay-context.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,6 @@ | ||||||
|  | let s = "foo ${builtins.substring 33 100 (baseNameOf ./eval-okay-context.nix)} bar"; | ||||||
|  | in | ||||||
|  |   if s == "foo eval-okay-context.nix bar" | ||||||
|  |   then abort "context not discarded" | ||||||
|  |   else builtins.unsafeDiscardStringContext s | ||||||
|  | 
 | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue