Tighten up @const regex.
authorSamuel Reed <samuel.trace.reed@gmail.com>
Wed, 20 Jan 2016 17:35:45 +0000 (11:35 -0600)
committerSamuel Reed <samuel.trace.reed@gmail.com>
Wed, 20 Jan 2016 17:35:45 +0000 (11:35 -0600)
lib/scope.js
test/compress/dead-code.js

index 794254d..4cea517 100644 (file)
@@ -364,7 +364,7 @@ AST_Symbol.DEFMETHOD("global", function(){
 AST_Var.DEFMETHOD("has_const_pragma", function() {
     var comments_before = this.start && this.start.comments_before;
     var lastComment = comments_before && comments_before[comments_before.length - 1];
-    return lastComment && /@const/.test(lastComment.value);
+    return lastComment && /@const\b/.test(lastComment.value);
 });
 
 AST_Toplevel.DEFMETHOD("_default_mangler_options", function(options){
index 8aad336..fa4b37d 100644 (file)
@@ -138,6 +138,29 @@ dead_code_const_annotation: {
     }\r
 }\r
 \r
+dead_code_const_annotation_regex: {\r
+    options = {\r
+        dead_code    : true,\r
+        loops        : true,\r
+        booleans     : true,\r
+        conditionals : true,\r
+        evaluate     : true\r
+    };\r
+    input: {\r
+        var unused;\r
+        // @constraint this shouldn't be a constant\r
+        var CONST_FOO_ANN = false;\r
+        if (CONST_FOO_ANN) {\r
+            console.log("reachable");\r
+        }\r
+    }\r
+    expect: {\r
+        var unused;\r
+        var CONST_FOO_ANN = !1;\r
+        CONST_FOO_ANN && console.log('reachable');\r
+    }\r
+}\r
+\r
 dead_code_const_annotation_complex_scope: {\r
     options = {\r
         dead_code    : true,\r
@@ -149,7 +172,8 @@ dead_code_const_annotation_complex_scope: {
     input: {\r
         var unused_var;\r
         /** @const */ var test = 'test';\r
-        /** @const */ var CONST_FOO_ANN = false;\r
+        // @const\r
+        var CONST_FOO_ANN = false;\r
         var unused_var_2;\r
         if (CONST_FOO_ANN) {\r
             console.log("unreachable");\r