[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdelibs/kjs
From:       Harri Porten <porten () kde ! org>
Date:       2005-07-24 18:05:01
Message-ID: 1122228301.506694.18619.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 438245 by porten:

harmonize diverging return-outside-of-function checks


 M  +5 -0      ChangeLog  
 M  +0 -2      function.cpp  
 M  +0 -2      internal.cpp  
 M  +6 -11     nodes.cpp  
 M  +0 -5      nodes.h  


--- trunk/KDE/kdelibs/kjs/ChangeLog #438244:438245
@@ -1,3 +1,8 @@
+2005-07-24  Harri Porten  <porten@kde.org>
+
+	* nodes.cpp: the return-outside-of-function check got duplicated
+	in JSC. Harmonize them.
+
 2005-06-22  Harri Porten  <porten@kde.org>
 
 	* function.cpp: pre-process var declaration in eval() 
--- trunk/KDE/kdelibs/kjs/function.cpp #438244:438245
@@ -778,8 +778,6 @@
 #endif
       SourceCode *source;
       FunctionBodyNode *progNode = Parser::parse(s.data(),s.size(),&source,&errLine,&errMsg);
-      if (progNode)
-	progNode->setProgram(true);
 
       // notify debugger that source has been parsed
       Debugger *dbg = exec->interpreter()->imp()->debugger();
--- trunk/KDE/kdelibs/kjs/internal.cpp #438244:438245
@@ -830,8 +830,6 @@
   UString errMsg;
   SourceCode *source;
   FunctionBodyNode *progNode = Parser::parse(code.data(),code.size(),&source,&errLine,&errMsg);
-  if (progNode)
-    progNode->setProgram(true);
 
   // notify debugger that source has been parsed
   if (dbg) {
--- trunk/KDE/kdelibs/kjs/nodes.cpp #438244:438245
@@ -2390,6 +2390,11 @@
 {
   KJS_BREAKPOINT;
 
+  CodeType codeType = exec->context().imp()->codeType();
+  if (codeType != FunctionCode) {
+    return Completion(Throw, throwError(exec, SyntaxError, "Invalid return statement."));    
+  }
+
   if (!value)
     return Completion(ReturnValue, Undefined());
 
@@ -2930,7 +2935,7 @@
 
 
 FunctionBodyNode::FunctionBodyNode(SourceElementsNode *s)
-  : BlockNode(s), program(false)
+  : BlockNode(s)
 {
   //fprintf(stderr,"FunctionBodyNode::FunctionBodyNode %p\n",this);
 }
@@ -2941,16 +2946,6 @@
     source->processFuncDecl(exec);
 }
 
-Completion FunctionBodyNode::execute(ExecState *exec)
-{
-  Completion c = BlockNode::execute(exec);
-  if (program && c.complType() == ReturnValue)
-    return Completion(Throw,
-		      throwError(exec, SyntaxError, "return outside of function body"));
-  else
-    return c;
-}
-
 // ----------------------------- FuncDeclNode ---------------------------------
 
 void FuncDeclNode::ref()
--- trunk/KDE/kdelibs/kjs/nodes.h #438244:438245
@@ -1023,11 +1023,6 @@
   public:
     FunctionBodyNode(SourceElementsNode *s);
     virtual void processFuncDecl(ExecState *exec);
-    virtual Completion execute(ExecState *exec);
-    void setProgram(bool _program) { program = _program; }
-    bool isProgram() const { return program; }
-  private:
-    bool program;
   };
 
   class FuncDeclNode : public StatementNode {
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic