VariableEnvironmentNode should inherit from ParserArenaDeletable because VariableEnvi...
[WebKit-https.git] / Source / JavaScriptCore / parser / Nodes.h
index 0f1954a..a8e3357 100644 (file)
@@ -209,7 +209,7 @@ namespace JSC {
         int m_lastLine;
     };
 
-    class VariableEnvironmentNode {
+    class VariableEnvironmentNode : public ParserArenaDeletable {
     public:
         VariableEnvironmentNode()
         {
@@ -1286,6 +1286,8 @@ namespace JSC {
 
     class BlockNode : public StatementNode, public VariableEnvironmentNode {
     public:
+        using ParserArenaDeletable::operator new;
+
         BlockNode(const JSTokenLocation&, SourceElements*, VariableEnvironment&);
 
         StatementNode* singleStatement() const;
@@ -1398,6 +1400,8 @@ namespace JSC {
 
     class ForNode : public StatementNode, public VariableEnvironmentNode {
     public:
+        using ParserArenaDeletable::operator new;
+
         ForNode(const JSTokenLocation&, ExpressionNode* expr1, ExpressionNode* expr2, ExpressionNode* expr3, StatementNode*, VariableEnvironment&);
 
     private:
@@ -1413,6 +1417,8 @@ namespace JSC {
     
     class EnumerationNode : public StatementNode, public ThrowableExpressionData, public VariableEnvironmentNode {
     public:
+        using ParserArenaDeletable::operator new;
+
         EnumerationNode(const JSTokenLocation&, ExpressionNode*, ExpressionNode*, StatementNode*, VariableEnvironment&);
         
     protected:
@@ -1513,8 +1519,10 @@ namespace JSC {
         ExpressionNode* m_expr;
     };
 
-    class TryNode : public StatementNode {
+    class TryNode : public StatementNode, public VariableEnvironmentNode {
     public:
+        using ParserArenaDeletable::operator new;
+
         TryNode(const JSTokenLocation&, StatementNode* tryBlock, const Identifier& exceptionIdent, StatementNode* catchBlock, VariableEnvironment& catchEnvironment, StatementNode* finallyBlock);
 
     private:
@@ -1524,7 +1532,6 @@ namespace JSC {
         const Identifier& m_thrownValueIdent;
         StatementNode* m_catchBlock;
         StatementNode* m_finallyBlock;
-        VariableEnvironment m_catchEnvironment;
     };
 
     class ScopeNode : public StatementNode, public ParserArenaRoot, public VariableEnvironmentNode {
@@ -2112,6 +2119,8 @@ namespace JSC {
 
     class SwitchNode : public StatementNode, public VariableEnvironmentNode {
     public:
+        using ParserArenaDeletable::operator new;
+
         SwitchNode(const JSTokenLocation&, ExpressionNode*, CaseBlockNode*, VariableEnvironment&);
 
     private: