trying to fix stack tracing
This commit is contained in:
parent
2d87115d2d
commit
36e3fb39cf
|
@ -419,12 +419,33 @@ var invokeMainModule = function() {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
function(MACHINE, e) {
|
function(MACHINE, e) {
|
||||||
|
var contMarkSet, appNames, i, appName;
|
||||||
// On main module invokation failure
|
// On main module invokation failure
|
||||||
if (console && console.log) {
|
if (console && console.log) {
|
||||||
console.log(e.stack || e);
|
console.log(e.stack || e);
|
||||||
}
|
}
|
||||||
|
|
||||||
MACHINE.params.currentErrorDisplayer(
|
MACHINE.params.currentErrorDisplayer(
|
||||||
MACHINE, $(plt.baselib.format.toDomNode(e.stack || e)).css('color', 'red'));
|
MACHINE, $(plt.baselib.format.toDomNode(e.stack || e)).css('color', 'red'));
|
||||||
|
|
||||||
|
if (e.hasOwnProperty('racketError') &&
|
||||||
|
plt.baselib.exceptions.isExn(e.racketError)) {
|
||||||
|
contMarkSet = plt.baselib.exceptions.exnContMarks(e.racketError);
|
||||||
|
if (contMarkSet) {
|
||||||
|
appNames = contMarkSet.ref(plt.runtime.getTracedAppKey(MACHINE));
|
||||||
|
while (plt.baselib.lists.isPair(appNames)) {
|
||||||
|
appName = appNames.first;
|
||||||
|
console.log(appName);
|
||||||
|
MACHINE.params.currentErrorDisplayer(
|
||||||
|
MACHINE,
|
||||||
|
$('<div/>').text(' at ' + appName.elts[0] +
|
||||||
|
', line ' + appName.elts[2] +
|
||||||
|
', column ' + appName.elts[3])
|
||||||
|
.css('color', 'red'));
|
||||||
|
appNames = appNames.rest;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
})},
|
})},
|
||||||
function() {
|
function() {
|
||||||
// On module loading failure
|
// On module loading failure
|
||||||
|
|
|
@ -28,9 +28,10 @@
|
||||||
ContinuationMarkSet.prototype.ref = function(key) {
|
ContinuationMarkSet.prototype.ref = function(key) {
|
||||||
var i, j;
|
var i, j;
|
||||||
var result = [];
|
var result = [];
|
||||||
|
var kvlist;
|
||||||
for (i = 0; i < this.kvlists.length; i++) {
|
for (i = 0; i < this.kvlists.length; i++) {
|
||||||
var kvlist = this.kvlists[i];
|
kvlist = this.kvlists[i];
|
||||||
for (j = 0; j < this.kvlist.length; j++) {
|
for (j = 0; j < kvlist.length; j++) {
|
||||||
if (baselib.equality.equals(kvlist[j][0], key)) {
|
if (baselib.equality.equals(kvlist[j][0], key)) {
|
||||||
result.push(kvlist[j][1]);
|
result.push(kvlist[j][1]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -509,6 +509,14 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Try to get the continuation mark key used for procedure application tracing.
|
||||||
|
var getTracedAppKey = function(MACHINE) {
|
||||||
|
if (MACHINE.modules['whalesong/lang/private/traced-app.rkt']) {
|
||||||
|
return MACHINE.modules['whalesong/lang/private/traced-app.rkt'].namespace['traced-app-key'];
|
||||||
|
}
|
||||||
|
return undefined;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -746,5 +754,6 @@
|
||||||
exports['Struct'] = Struct;
|
exports['Struct'] = Struct;
|
||||||
exports['StructType'] = StructType;
|
exports['StructType'] = StructType;
|
||||||
|
|
||||||
|
exports['getTracedAppKey'] = getTracedAppKey;
|
||||||
|
|
||||||
}(this.plt, this.plt.baselib));
|
}(this.plt, this.plt.baselib));
|
Loading…
Reference in New Issue
Block a user