* New primop: abort "error message".
This commit is contained in:
		
							parent
							
								
									4a053bfdfd
								
							
						
					
					
						commit
						38f18aa6d4
					
				
					 4 changed files with 12 additions and 2 deletions
				
			
		|  | @ -515,7 +515,7 @@ Expr evalExpr2(EvalState & state, Expr e) | |||
|         try { | ||||
|             return concatStrings(state, args); | ||||
|         } catch (Error & e) { | ||||
|             e.addPrefix(format("in a string concatenation: ")); | ||||
|             e.addPrefix(format("in a string concatenation:\n")); | ||||
|             throw; | ||||
|         } | ||||
|     } | ||||
|  | @ -527,7 +527,7 @@ Expr evalExpr2(EvalState & state, Expr e) | |||
|             ATermList l2 = evalList(state, e2); | ||||
|             return makeList(ATconcat(l1, l2)); | ||||
|         } catch (Error & e) { | ||||
|             e.addPrefix(format("in a list concatenation: ")); | ||||
|             e.addPrefix(format("in a list concatenation:\n")); | ||||
|             throw; | ||||
|         } | ||||
|     } | ||||
|  |  | |||
|  | @ -11,6 +11,7 @@ | |||
| 
 | ||||
| MakeError(EvalError, Error) | ||||
| MakeError(AssertionError, EvalError) | ||||
| MakeError(Abort, EvalError) | ||||
| MakeError(TypeError, EvalError) | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
|  | @ -629,6 +629,13 @@ static Expr primDependencyClosure(EvalState & state, const ATermVector & args) | |||
| } | ||||
| 
 | ||||
| 
 | ||||
| static Expr primAbort(EvalState & state, const ATermVector & args) | ||||
| { | ||||
|     throw Abort(format("evaluation aborted with the following error message: %1%") % | ||||
|         evalString(state, args[0])); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| /* Apply a function to every element of a list. */ | ||||
| static Expr primMap(EvalState & state, const ATermVector & args) | ||||
| { | ||||
|  | @ -700,6 +707,7 @@ void EvalState::addPrimOps() | |||
|     addPrimOp("toString", 1, primToString); | ||||
|     addPrimOp("isNull", 1, primIsNull); | ||||
|     addPrimOp("dependencyClosure", 1, primDependencyClosure); | ||||
|     addPrimOp("abort", 1, primAbort); | ||||
| 
 | ||||
|     addPrimOp("map", 2, primMap); | ||||
|     addPrimOp("removeAttrs", 2, primRemoveAttrs); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue