aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/compress.js4
-rw-r--r--lib/parse.js8
2 files changed, 10 insertions, 2 deletions
diff --git a/lib/compress.js b/lib/compress.js
index 623fe45e..992d78f8 100644
--- a/lib/compress.js
+++ b/lib/compress.js
@@ -1962,8 +1962,8 @@ merge(Compressor.prototype, {
var prop = self.property;
if (prop instanceof AST_String && compressor.option("properties")) {
prop = prop.getValue();
- if (is_identifier(prop)
- || (compressor.option("screw_ie8") && /^[a-z_$][a-z0-9_$]*$/i.test(prop))) {
+ if (compressor.option("screw_ie8") && RESERVED_WORDS(prop)
+ || !(RESERVED_WORDS(prop)) && is_identifier_string(prop)) {
return make_node(AST_Dot, self, {
expression : self.expression,
property : prop
diff --git a/lib/parse.js b/lib/parse.js
index da39b5b1..b3687201 100644
--- a/lib/parse.js
+++ b/lib/parse.js
@@ -167,6 +167,14 @@ function is_identifier_char(ch) {
;
};
+function is_identifier_string(str){
+ for (var i = str.length; --i >= 0;) {
+ if (!is_identifier_char(str.charAt(i)))
+ return false;
+ }
+ return true;
+};
+
function parse_js_number(num) {
if (RE_HEX_NUMBER.test(num)) {
return parseInt(num.substr(2), 16);