Separate class expressions from class declarations and their symbols like defuns
This commit is contained in:
14
lib/parse.js
14
lib/parse.js
@@ -856,7 +856,7 @@ function parse($TEXT, options) {
|
||||
return for_();
|
||||
|
||||
case "class":
|
||||
return class_();
|
||||
return class_(AST_DefClass);
|
||||
|
||||
case "function":
|
||||
return function_(AST_Defun);
|
||||
@@ -1379,7 +1379,7 @@ function parse($TEXT, options) {
|
||||
}
|
||||
if (is("keyword", "class")) {
|
||||
next();
|
||||
var cls = class_();
|
||||
var cls = class_(AST_ClassExpression);
|
||||
cls.start = start;
|
||||
cls.end = prev();
|
||||
return subscripts(cls, allow_calls);
|
||||
@@ -1497,11 +1497,15 @@ function parse($TEXT, options) {
|
||||
return new AST_Object({ properties: a })
|
||||
});
|
||||
|
||||
function class_() {
|
||||
function class_(KindOfClass) {
|
||||
var start, method, class_name, name, extends_, a = [];
|
||||
|
||||
if (S.token.type == "name" && S.token.value != "extends") {
|
||||
class_name = as_symbol(AST_SymbolClassName)
|
||||
class_name = as_symbol(KindOfClass === AST_DefClass ? AST_SymbolDefClass : AST_SymbolClass);
|
||||
}
|
||||
|
||||
if (KindOfClass === AST_DefClass && !class_name) {
|
||||
croak();
|
||||
}
|
||||
|
||||
if (S.token.value == "extends") {
|
||||
@@ -1523,7 +1527,7 @@ function parse($TEXT, options) {
|
||||
|
||||
next();
|
||||
|
||||
return new AST_Class({
|
||||
return new KindOfClass({
|
||||
start: start,
|
||||
name: class_name,
|
||||
extends: extends_,
|
||||
|
||||
Reference in New Issue
Block a user