Track ending lines/columns; fix end locations in Mozilla AST.

This commit is contained in:
Ingvar Stepanyan
2014-08-08 14:15:43 +03:00
committed by Richard van Velzen
parent 6b23cbc852
commit ae5366a31d
3 changed files with 28 additions and 30 deletions

View File

@@ -370,26 +370,28 @@
/* -----[ tools ]----- */
function my_start_token(moznode) {
var loc = moznode.loc;
var loc = moznode.loc, start = loc && loc.start;
var range = moznode.range;
return new AST_Token({
file : loc && loc.source,
line : loc && loc.start.line,
col : loc && loc.start.column,
line : start && start.line,
col : start && start.column,
pos : range ? range[0] : moznode.start,
endpos : range ? range[0] : moznode.start
});
};
function my_end_token(moznode) {
var loc = moznode.loc;
var loc = moznode.loc, end = loc && loc.end;
var range = moznode.range;
return new AST_Token({
file : loc && loc.source,
line : loc && loc.end.line,
col : loc && loc.end.column,
pos : range ? range[1] : moznode.end,
endpos : range ? range[1] : moznode.end
file : loc && loc.source,
line : end && end.line,
col : end && end.column,
pos : range ? range[1] : moznode.end,
endline : end && end.line,
endcol : end && end.column,
endpos : range ? range[1] : moznode.end
});
};
@@ -465,23 +467,16 @@
return ast;
};
function moz_sub_loc(token) {
return token.line ? {
line: token.line,
column: token.col
} : null;
};
function set_moz_loc(mynode, moznode) {
function set_moz_loc(mynode, moznode, myparent) {
var start = mynode.start;
var end = mynode.end;
if (start.pos != null && end.pos != null) {
moznode.range = [start.pos, end.pos];
if (start.pos != null && end.endpos != null) {
moznode.range = [start.pos, end.endpos];
}
if (start.line) {
moznode.loc = {
start: moz_sub_loc(start),
end: moz_sub_loc(end)
start: {line: start.line, column: start.col},
end: end.endline ? {line: end.endline, column: end.endcol} : null
};
if (start.file) {
moznode.loc.source = start.file;