add AST_SymbolConst for names defined with const
This commit is contained in:
@@ -599,7 +599,11 @@ var AST_SymbolDeclaration = DEFNODE("SymbolDeclaration", "init", {
|
|||||||
}, AST_Symbol);
|
}, AST_Symbol);
|
||||||
|
|
||||||
var AST_SymbolVar = DEFNODE("SymbolVar", null, {
|
var AST_SymbolVar = DEFNODE("SymbolVar", null, {
|
||||||
$documentation: "Symbol defining a variable or constant",
|
$documentation: "Symbol defining a variable",
|
||||||
|
}, AST_SymbolDeclaration);
|
||||||
|
|
||||||
|
var AST_SymbolConst = DEFNODE("SymbolConst", null, {
|
||||||
|
$documentation: "A constant declaration"
|
||||||
}, AST_SymbolDeclaration);
|
}, AST_SymbolDeclaration);
|
||||||
|
|
||||||
var AST_SymbolFunarg = DEFNODE("SymbolFunarg", null, {
|
var AST_SymbolFunarg = DEFNODE("SymbolFunarg", null, {
|
||||||
|
|||||||
@@ -1105,12 +1105,12 @@ function parse($TEXT, options) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
function vardefs(no_in) {
|
function vardefs(no_in, in_const) {
|
||||||
var a = [];
|
var a = [];
|
||||||
for (;;) {
|
for (;;) {
|
||||||
a.push(new AST_VarDef({
|
a.push(new AST_VarDef({
|
||||||
start : S.token,
|
start : S.token,
|
||||||
name : as_symbol(AST_SymbolVar),
|
name : as_symbol(in_const ? AST_SymbolConst : AST_SymbolVar),
|
||||||
value : is("operator", "=") ? (next(), expression(false, no_in)) : null,
|
value : is("operator", "=") ? (next(), expression(false, no_in)) : null,
|
||||||
end : prev()
|
end : prev()
|
||||||
}));
|
}));
|
||||||
@@ -1124,7 +1124,7 @@ function parse($TEXT, options) {
|
|||||||
var var_ = function(no_in) {
|
var var_ = function(no_in) {
|
||||||
return new AST_Var({
|
return new AST_Var({
|
||||||
start : prev(),
|
start : prev(),
|
||||||
definitions : vardefs(no_in),
|
definitions : vardefs(no_in, false),
|
||||||
end : prev()
|
end : prev()
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@@ -1132,7 +1132,7 @@ function parse($TEXT, options) {
|
|||||||
var const_ = function() {
|
var const_ = function() {
|
||||||
return new AST_Const({
|
return new AST_Const({
|
||||||
start : prev(),
|
start : prev(),
|
||||||
definitions : vardefs(),
|
definitions : vardefs(false, true),
|
||||||
end : prev()
|
end : prev()
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ function SymbolDef(scope, orig) {
|
|||||||
this.global = false;
|
this.global = false;
|
||||||
this.mangled_name = null;
|
this.mangled_name = null;
|
||||||
this.undeclared = false;
|
this.undeclared = false;
|
||||||
|
this.constant = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
SymbolDef.prototype = {
|
SymbolDef.prototype = {
|
||||||
@@ -144,9 +145,11 @@ AST_Toplevel.DEFMETHOD("figure_out_scope", function(){
|
|||||||
(node.scope = scope.parent_scope).def_function(node);
|
(node.scope = scope.parent_scope).def_function(node);
|
||||||
node.init.push(tw.parent());
|
node.init.push(tw.parent());
|
||||||
}
|
}
|
||||||
else if (node instanceof AST_SymbolVar) {
|
else if (node instanceof AST_SymbolVar
|
||||||
scope.def_variable(node);
|
|| node instanceof AST_SymbolConst) {
|
||||||
var def = tw.parent();
|
var def = scope.def_variable(node);
|
||||||
|
def.constant = node instanceof AST_SymbolConst;
|
||||||
|
def = tw.parent();
|
||||||
if (def.value) node.init.push(def);
|
if (def.value) node.init.push(def);
|
||||||
}
|
}
|
||||||
else if (node instanceof AST_SymbolCatch) {
|
else if (node instanceof AST_SymbolCatch) {
|
||||||
|
|||||||
Reference in New Issue
Block a user