aboutsummaryrefslogtreecommitdiff
path: root/lib/scope.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/scope.js')
-rw-r--r--lib/scope.js12
1 files changed, 11 insertions, 1 deletions
diff --git a/lib/scope.js b/lib/scope.js
index 5e93020f..22fb150d 100644
--- a/lib/scope.js
+++ b/lib/scope.js
@@ -154,7 +154,7 @@ AST_Toplevel.DEFMETHOD("figure_out_scope", function(options){
else if (node instanceof AST_SymbolVar
|| node instanceof AST_SymbolConst) {
var def = defun.def_variable(node);
- def.constant = node instanceof AST_SymbolConst;
+ def.constant = node instanceof AST_SymbolConst || node.has_const_pragma();
def.init = tw.parent().value;
}
else if (node instanceof AST_SymbolCatch) {
@@ -357,6 +357,16 @@ AST_Symbol.DEFMETHOD("global", function(){
return this.definition().global;
});
+AST_Symbol.DEFMETHOD("has_const_pragma", function() {
+ var token = this.scope.body[0] && this.scope.body[0].start;
+ var comments = token && token.comments_before;
+ if (comments && comments.length > 0) {
+ var last = comments[comments.length - 1];
+ return /@const/.test(last.value);
+ }
+ return false;
+})
+
AST_Toplevel.DEFMETHOD("_default_mangler_options", function(options){
return defaults(options, {
except : [],