Merge fe819011e2 into 5538ec7bd8
This commit is contained in:
commit
7d68934bb1
|
|
@ -81,11 +81,12 @@ function OutputStream(options) {
|
||||||
while (code.length < 4) code = "0" + code;
|
while (code.length < 4) code = "0" + code;
|
||||||
return "\\u" + code;
|
return "\\u" + code;
|
||||||
}
|
}
|
||||||
});
|
}).replace(/\x0B/g, "\\x0B");
|
||||||
};
|
};
|
||||||
|
|
||||||
function make_string(str) {
|
function make_string(str) {
|
||||||
var dq = 0, sq = 0;
|
var dq = 0, sq = 0;
|
||||||
|
|
||||||
str = str.replace(/[\\\b\f\n\r\t\x22\x27\u2028\u2029\0]/g, function(s){
|
str = str.replace(/[\\\b\f\n\r\t\x22\x27\u2028\u2029\0]/g, function(s){
|
||||||
switch (s) {
|
switch (s) {
|
||||||
case "\\": return "\\\\";
|
case "\\": return "\\\\";
|
||||||
|
|
@ -279,12 +280,52 @@ function OutputStream(options) {
|
||||||
|
|
||||||
var add_mapping = options.source_map ? function(token, name) {
|
var add_mapping = options.source_map ? function(token, name) {
|
||||||
try {
|
try {
|
||||||
if (token) options.source_map.add(
|
if (token) {
|
||||||
token.file || "?",
|
var remainder = 0;
|
||||||
current_line, current_col,
|
var offset = 0;
|
||||||
token.line, token.col,
|
var tokenName;
|
||||||
(!name && token.type == "name") ? token.value : name
|
var tokenChars;
|
||||||
);
|
var escapable = [
|
||||||
|
{find:'\n', replace:'\\n'},
|
||||||
|
{find:'\r', replace:'\\r'},
|
||||||
|
{find:'\t', replace:'\\t'},
|
||||||
|
{find:'\b', replace:'\\b'},
|
||||||
|
{find:'\f', replace:'\\f'},
|
||||||
|
{find:'\v', replace:'\\v'},
|
||||||
|
{find:'\\', replace:'\\\\'},
|
||||||
|
{find:'\u2028', replace:'\\u2028'},
|
||||||
|
{find:'\u2029', replace:'\\u2029'}
|
||||||
|
];
|
||||||
|
|
||||||
|
tokenName = (!name && token.type == "name") ? token.value : name;
|
||||||
|
|
||||||
|
if(tokenName) {
|
||||||
|
// Cast to a string, it might be a number
|
||||||
|
tokenName = new String(tokenName);
|
||||||
|
|
||||||
|
// Fixes offsets for escaped chars in keys of object literals
|
||||||
|
tokenChars = tokenName.split('');
|
||||||
|
for(var i=0, ii=tokenChars.length; i<ii; i++) {
|
||||||
|
for(var y=0, yy=escapable.length; y<yy; y++) {
|
||||||
|
if(tokenChars[i] === escapable[y].find && (i===0 || tokenChars[i-1] != '\\')) {
|
||||||
|
tokenChars[i] = escapable[y].replace;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
tokenName = tokenChars.join('');
|
||||||
|
|
||||||
|
// Fixes offsets for quoted keys of object literals
|
||||||
|
remainder = token.endpos - token.pos - tokenName.length;
|
||||||
|
offset = remainder === 0 ? 0 : 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
options.source_map.add(
|
||||||
|
token.file || "?",
|
||||||
|
current_line, current_col,
|
||||||
|
token.line, token.col + offset,
|
||||||
|
tokenName
|
||||||
|
);
|
||||||
|
}
|
||||||
} catch(ex) {
|
} catch(ex) {
|
||||||
AST_Node.warn("Couldn't figure out mapping for {file}:{line},{col} → {cline},{ccol} [{name}]", {
|
AST_Node.warn("Couldn't figure out mapping for {file}:{line},{col} → {cline},{ccol} [{name}]", {
|
||||||
file: token.file,
|
file: token.file,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user