UNPKG

openfl

Version:

A fast, productive library for 2D cross-platform development.

181 lines (163 loc) 4.66 kB
// Class: haxe.CallStack var $global = typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : this $global.Object.defineProperty(exports, "__esModule", {value: true}); var __map_reserved = {}; // Imports var $hxClasses = require("./../hxClasses_stub").default; var $hxEnums = require("./../hxEnums_stub").default; var $import = require("./../import_stub").default; function HxOverrides() {return require("./../HxOverrides");} function haxe_StackItem() {return require("./../haxe/StackItem");} function js__$Boot_HaxeError() {return require("./../js/_Boot/HaxeError");} function StringBuf() {return require("./../StringBuf");} function EReg() {return require("./../EReg");} function Std() {return require("./../Std");} function StringTools() {return require("./../StringTools");} // Constructor var CallStack = function(){} // Meta CallStack.__name__ = "haxe.CallStack"; CallStack.__isInterface__ = false; CallStack.prototype = { }; CallStack.prototype.__class__ = CallStack.prototype.constructor = $hxClasses["haxe.CallStack"] = CallStack; // Init // Statics CallStack.getStack = function(e) { if(e == null) { return []; } var oldValue = Error.prepareStackTrace; Error.prepareStackTrace = function(error,callsites) { var stack = []; var _g = 0; while(_g < callsites.length) { var site = callsites[_g]; ++_g; if(CallStack.wrapCallSite != null) { site = CallStack.wrapCallSite(site); } var method = null; var fullName = site.getFunctionName(); if(fullName != null) { var idx = fullName.lastIndexOf("."); if(idx >= 0) { var className = (HxOverrides().default).substr(fullName,0,idx); var methodName = (HxOverrides().default).substr(fullName,idx + 1,null); method = (haxe_StackItem().default).Method(className,methodName); } } var fileName = site.getFileName(); var fileAddr = fileName == null ? -1 : fileName.indexOf("file:"); if(CallStack.wrapCallSite != null && fileAddr > 0) { fileName = (HxOverrides().default).substr(fileName,fileAddr + 6,null); } stack.push((haxe_StackItem().default).FilePos(method,fileName,site.getLineNumber(),site.getColumnNumber())); } return stack; }; var a = CallStack.makeStack(e.stack); Error.prepareStackTrace = oldValue; return a; } CallStack.callStack = function() { try { throw new Error(); } catch( e ) { CallStack.lastException = e; var e1 = ((e) instanceof (js__$Boot_HaxeError().default)) ? e.val : e; var a = CallStack.getStack(e); a.shift(); return a; } } CallStack.exceptionStack = function() { return CallStack.getStack(CallStack.lastException); } CallStack.toString = function(stack) { var b = new (StringBuf().default)(); var _g = 0; while(_g < stack.length) { var s = stack[_g]; ++_g; b.add("\nCalled from "); CallStack.itemToString(b,s); } return b.toString(); } CallStack.itemToString = function(b,s) { switch(s._hx_index) { case 0: b.add("a C function"); break; case 1: var m = s.m; b.add("module "); b.add(m); break; case 2: var col = s.column; var line = s.line; var file = s.file; var s1 = s.s; if(s1 != null) { CallStack.itemToString(b,s1); b.add(" ("); } b.add(file); b.add(" line "); b.add(line); if(col != null) { b.add(" column "); b.add(col); } if(s1 != null) { b.add(")"); } break; case 3: var meth = s.method; var cname = s.classname; b.add(cname == null ? "<unknown>" : cname); b.add("."); b.add(meth); break; case 4: var n = s.v; b.add("local function #"); b.add(n); break; } } CallStack.makeStack = function(s) { if(s == null) { return []; } else if(typeof(s) == "string") { var stack = s.split("\n"); if(stack[0] == "Error") { stack.shift(); } var m = []; var rie10 = new (EReg().default)("^ at ([A-Za-z0-9_. ]+) \\(([^)]+):([0-9]+):([0-9]+)\\)$",""); var _g = 0; while(_g < stack.length) { var line = stack[_g]; ++_g; if(rie10.match(line)) { var path = rie10.matched(1).split("."); var meth = path.pop(); var file = rie10.matched(2); var line1 = (Std().default).parseInt(rie10.matched(3)); var column = (Std().default).parseInt(rie10.matched(4)); m.push((haxe_StackItem().default).FilePos(meth == "Anonymous function" ? (haxe_StackItem().default).LocalFunction() : meth == "Global code" ? null : (haxe_StackItem().default).Method(path.join("."),meth),file,line1,column)); } else { m.push((haxe_StackItem().default).Module((StringTools().default).trim(line))); } } return m; } else { return s; } } // Export exports.default = CallStack;