From 931f79dacb64be2c1af32030058fd3243ef1aef5 Mon Sep 17 00:00:00 2001 From: Nicolas Cannasse Date: Fri, 11 Aug 2017 11:03:29 +0200 Subject: [PATCH] move error formating to Printer --- hscript/Expr.hx | 33 +-------------------------------- hscript/Printer.hx | 21 ++++++++++++++++++++- 2 files changed, 21 insertions(+), 33 deletions(-) diff --git a/hscript/Expr.hx b/hscript/Expr.hx index 968c6dc..50dc806 100644 --- a/hscript/Expr.hx +++ b/hscript/Expr.hx @@ -95,39 +95,8 @@ class Error { this.origin = origin; this.line = line; } - - private function errorDefToString(): String { - switch (e) { - case EInvalidChar(c): - return "Invalid character: '"+String.fromCharCode(c)+"' ("+c+")"; - - case EUnexpected(s): - return "Unexpected token: \""+s+"\""; - - case EUnterminatedString: - return "Unterminated string"; - - case EUnterminatedComment: - return "Unterminated comment"; - - case EUnknownVariable(v): - return "Unknown variable: "+v; - - case EInvalidIterator(v): - return "Invalid iterator: "+v; - - case EInvalidOp(op): - return "Invalid operator: "+op; - - case EInvalidAccess(f): - return "Invalid access to field "+f; - } - } - public function toString(): String { - var message = errorDefToString(); - message = origin + ":" + line + ": " + message; - return message; + return Printer.errorToString(this); } } enum ErrorDef { diff --git a/hscript/Printer.hx b/hscript/Printer.hx index 90360ed..fb5b24e 100644 --- a/hscript/Printer.hx +++ b/hscript/Printer.hx @@ -300,4 +300,23 @@ class Printer { return new Printer().exprToString(e); } -} \ No newline at end of file + public static function errorToString( e : Expr.Error ) { + var message = switch( #if hscriptPos e.e #else e #end ) { + case EInvalidChar(c): "Invalid character: '"+String.fromCharCode(c)+"' ("+c+")"; + case EUnexpected(s): "Unexpected token: \""+s+"\""; + case EUnterminatedString: "Unterminated string"; + case EUnterminatedComment: "Unterminated comment"; + case EUnknownVariable(v): "Unknown variable: "+v; + case EInvalidIterator(v): "Invalid iterator: "+v; + case EInvalidOp(op): "Invalid operator: "+op; + case EInvalidAccess(f): "Invalid access to field "+f; + }; + #if hscriptPos + return e.origin + ":" + e.line + ": " + message; + #else + return message; + #end + } + + +}