From 3dec4fa40418ca0859d86e8854f94caa5399b57a Mon Sep 17 00:00:00 2001 From: Juraj Kirchheim Date: Thu, 30 Nov 2017 13:04:07 +0100 Subject: [PATCH] Improve position reporting. --- src/tink/macro/Positions.hx | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/tink/macro/Positions.hx b/src/tink/macro/Positions.hx index d39cd04..161576d 100644 --- a/src/tink/macro/Positions.hx +++ b/src/tink/macro/Positions.hx @@ -12,7 +12,7 @@ class Positions { return switch outcome { case Success(d): d; - case Failure(f): sanitize(pos).error(f); + case Failure(f): pos.error(f); } static public function makeBlankType(pos:Position):ComplexType @@ -32,7 +32,17 @@ class Positions { static public function error(pos:Position, error:Dynamic):Dynamic - return errorFunc(sanitize(pos), Std.string(error)); + return + switch Std.instance(error, tink.core.Error) { + case null: errorFunc(sanitize(pos), Std.string(error)); + case error: + errorFunc( + error.pos, + error.message + + if (pos == null) '' + else ' (referenced from ' + Std.string(pos).substr(5) + ); + } static function contextError(pos:Position, error:String):Dynamic return Context.fatalError(error, pos);