[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