[Pkg-javascript-commits] [uglifyjs] 28/77: Track ending lines/columns; fix end locations in Mozilla AST.
Jonas Smedegaard
dr at jones.dk
Tue May 19 00:02:29 UTC 2015
This is an automated email from the git hooks/post-receive script.
js pushed a commit to tag v2.4.18
in repository uglifyjs.
commit ae5366a31de7d65964400ffc7b2f05132e2538b6
Author: Ingvar Stepanyan <me at rreverser.com>
Date: Fri Aug 8 14:15:43 2014 +0300
Track ending lines/columns; fix end locations in Mozilla AST.
---
lib/ast.js | 2 +-
lib/mozilla-ast.js | 37 ++++++++++++++++---------------------
lib/parse.js | 19 +++++++++++--------
3 files changed, 28 insertions(+), 30 deletions(-)
diff --git a/lib/ast.js b/lib/ast.js
index 2eb8cc8..5aa1be3 100644
--- a/lib/ast.js
+++ b/lib/ast.js
@@ -84,7 +84,7 @@ function DEFNODE(type, props, methods, base) {
return ctor;
};
-var AST_Token = DEFNODE("Token", "type value line col pos endpos nlb comments_before file", {
+var AST_Token = DEFNODE("Token", "type value line col pos endline endcol endpos nlb comments_before file", {
}, null);
var AST_Node = DEFNODE("Node", "start end", {
diff --git a/lib/mozilla-ast.js b/lib/mozilla-ast.js
index 602ef0e..5056ffe 100644
--- a/lib/mozilla-ast.js
+++ b/lib/mozilla-ast.js
@@ -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;
diff --git a/lib/parse.js b/lib/parse.js
index c3f0822..f463526 100644
--- a/lib/parse.js
+++ b/lib/parse.js
@@ -267,14 +267,16 @@ function tokenizer($TEXT, filename, html5_comments) {
(type == "punc" && PUNC_BEFORE_EXPRESSION(value)));
prev_was_dot = (type == "punc" && value == ".");
var ret = {
- type : type,
- value : value,
- line : S.tokline,
- col : S.tokcol,
- pos : S.tokpos,
- endpos : S.pos,
- nlb : S.newline_before,
- file : filename
+ type : type,
+ value : value,
+ line : S.tokline,
+ col : S.tokcol,
+ pos : S.tokpos,
+ endline : S.line,
+ endcol : S.col,
+ endpos : S.pos,
+ nlb : S.newline_before,
+ file : filename
};
if (!is_comment) {
ret.comments_before = S.comments_before;
@@ -397,6 +399,7 @@ function tokenizer($TEXT, filename, html5_comments) {
ret = S.text.substring(S.pos, i);
S.pos = i;
}
+ S.col = S.tokcol + (S.pos - S.tokpos);
S.comments_before.push(token(type, ret, true));
S.regex_allowed = regex_allowed;
return next_token();
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/uglifyjs.git
More information about the Pkg-javascript-commits
mailing list