Super!
This commit is contained in:
@@ -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() {
|
||||
|
||||
@@ -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());
|
||||
});
|
||||
|
||||
@@ -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);
|
||||
};
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user