This commit is contained in:
Fábio Santos
2015-08-07 02:44:53 +01:00
parent ddd30eeaaa
commit e80ed38772
4 changed files with 13 additions and 1 deletions

View File

@@ -940,6 +940,10 @@ var AST_This = DEFNODE("This", null, {
$documentation: "The `this` symbol",
}, AST_Symbol);
var AST_Super = DEFNODE("Super", null, {
$documentation: "The `super` symbol",
}, AST_Symbol);
var AST_Constant = DEFNODE("Constant", null, {
$documentation: "Base class for all constants",
getValue: function() {

View File

@@ -1151,6 +1151,9 @@ function OutputStream(options) {
DEFPRINT(AST_This, function(self, output){
output.print("this");
});
DEFPRINT(AST_Super, function(self, output){
output.print("super");
});
DEFPRINT(AST_Constant, function(self, output){
output.print(self.getValue());
});

View File

@@ -1361,7 +1361,9 @@ function parse($TEXT, options) {
function _make_symbol(type) {
var name = S.token.value;
return new (name == "this" ? AST_This : type)({
return new (name == "this" ? AST_This :
name == "super" ? AST_Super :
type)({
name : String(name),
start : S.token,
end : S.token
@@ -1481,6 +1483,7 @@ function parse($TEXT, options) {
function is_assignable(expr) {
if (!options.strict) return true;
if (expr instanceof AST_This) return false;
if (expr instanceof AST_Super) return false;
return (expr instanceof AST_PropAccess || expr instanceof AST_Symbol);
};

View File

@@ -472,6 +472,8 @@ AST_Toplevel.DEFMETHOD("compute_char_frequency", function(options){
base54.consider("new");
else if (node instanceof AST_This)
base54.consider("this");
else if (node instanceof AST_Super)
base54.consider("super");
else if (node instanceof AST_Try)
base54.consider("try");
else if (node instanceof AST_Catch)