mirror of
https://github.com/jashkenas/coffeescript.git
synced 2026-02-19 03:44:23 -05:00
fixing issue #745 ... precedence of huh operator.
This commit is contained in:
19
lib/lexer.js
19
lib/lexer.js
@@ -313,7 +313,7 @@
|
||||
return true;
|
||||
};
|
||||
Lexer.prototype.literalToken = function() {
|
||||
var match, prev, ptag, pval, tag, value;
|
||||
var _ref2, match, prev, tag, value;
|
||||
if (match = OPERATOR.exec(this.chunk)) {
|
||||
value = match[0];
|
||||
if (CODE.test(value)) {
|
||||
@@ -324,15 +324,14 @@
|
||||
}
|
||||
this.i += value.length;
|
||||
tag = value;
|
||||
prev = last(this.tokens);
|
||||
if (value === '=') {
|
||||
pval = this.value();
|
||||
if (!pval.reserved && include(JS_FORBIDDEN, pval)) {
|
||||
if (!prev[1].reserved && include(JS_FORBIDDEN, prev[1])) {
|
||||
this.assignmentError();
|
||||
}
|
||||
if (('or' === pval || 'and' === pval)) {
|
||||
prev = last(this.tokens);
|
||||
if (('or' === (_ref2 = prev[1]) || 'and' === _ref2)) {
|
||||
prev[0] = 'COMPOUND_ASSIGN';
|
||||
prev[1] = COFFEE_ALIASES[pval] + '=';
|
||||
prev[1] = COFFEE_ALIASES[prev[1]] + '=';
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -350,15 +349,17 @@
|
||||
tag = 'UNARY';
|
||||
} else if (include(SHIFT, value)) {
|
||||
tag = 'SHIFT';
|
||||
} else if ((prev = last(this.tokens)) && !prev.spaced && include(CALLABLE, ptag = prev[0])) {
|
||||
} else if (value === '?' && prev.spaced) {
|
||||
tag = 'LOGIC';
|
||||
} else if (prev && !prev.spaced && include(CALLABLE, prev[0])) {
|
||||
if (value === '(') {
|
||||
if (ptag === '?') {
|
||||
if (prev[0] === '?') {
|
||||
prev[0] = 'FUNC_EXIST';
|
||||
}
|
||||
tag = 'CALL_START';
|
||||
} else if (value === '[') {
|
||||
tag = 'INDEX_START';
|
||||
switch (ptag) {
|
||||
switch (prev[0]) {
|
||||
case '?':
|
||||
prev[0] = 'INDEX_SOAK';
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user