summaryrefslogtreecommitdiffstats
path: root/src/script/api/qscriptengine.cpp
diff options
context:
space:
mode:
authorJedrzej Nowacki <jedrzej.nowacki@nokia.com>2009-07-10 15:09:58 (GMT)
committerJedrzej Nowacki <jedrzej.nowacki@nokia.com>2009-07-13 08:10:14 (GMT)
commitf6304c909b074a951dc33c39bc2b9d75536b1c22 (patch)
tree523e04ca570f4ad6cfa1da64b55c5b7232de576f /src/script/api/qscriptengine.cpp
parentf3355474c05a29c05deb3de989387213de2485f0 (diff)
downloadQt-f6304c909b074a951dc33c39bc2b9d75536b1c22.zip
Qt-f6304c909b074a951dc33c39bc2b9d75536b1c22.tar.gz
Qt-f6304c909b074a951dc33c39bc2b9d75536b1c22.tar.bz2
fix checkSyntax autotest.
Diffstat (limited to 'src/script/api/qscriptengine.cpp')
-rw-r--r--src/script/api/qscriptengine.cpp55
1 files changed, 38 insertions, 17 deletions
diff --git a/src/script/api/qscriptengine.cpp b/src/script/api/qscriptengine.cpp
index b64844e..97a1c61 100644
--- a/src/script/api/qscriptengine.cpp
+++ b/src/script/api/qscriptengine.cpp
@@ -282,6 +282,19 @@ QT_BEGIN_NAMESPACE
\value SkipMethodsInEnumeration Don't include methods (signals and slots) when enumerating the object's properties.
*/
+class QScriptSyntaxCheckResultPrivate
+{
+public:
+ QScriptSyntaxCheckResultPrivate() { ref = 0; }
+ ~QScriptSyntaxCheckResultPrivate() {}
+
+ QScriptSyntaxCheckResult::State state;
+ int errorColumnNumber;
+ int errorLineNumber;
+ QString errorMessage;
+ QBasicAtomicInt ref;
+};
+
class QScriptTypeInfo
{
public:
@@ -1961,12 +1974,33 @@ bool QScriptEnginePrivate::canEvaluate(const QString &program)
*/
QScriptSyntaxCheckResult QScriptEngine::checkSyntax(const QString &program)
{
- qWarning("QScriptEngine::checkSyntax() not implemented");
- // use our own parser or JSC::Interpreter::checkSyntax()
- Q_UNUSED(program);
- return QScriptSyntaxCheckResult();
+ return QScriptEnginePrivate::checkSyntax(program);
+}
+
+QScriptSyntaxCheckResult QScriptEnginePrivate::checkSyntax(const QString &program)
+{
+ QScript::SyntaxChecker checker;
+ QScript::SyntaxChecker::Result result = checker.checkSyntax(program);
+ QScriptSyntaxCheckResultPrivate *p = new QScriptSyntaxCheckResultPrivate();
+ switch (result.state) {
+ case QScript::SyntaxChecker::Error:
+ p->state = QScriptSyntaxCheckResult::Error;
+ break;
+ case QScript::SyntaxChecker::Intermediate:
+ p->state = QScriptSyntaxCheckResult::Intermediate;
+ break;
+ case QScript::SyntaxChecker::Valid:
+ p->state = QScriptSyntaxCheckResult::Valid;
+ break;
+ }
+ p->errorLineNumber = result.errorLineNumber;
+ p->errorColumnNumber = result.errorColumnNumber;
+ p->errorMessage = result.errorMessage;
+ return QScriptSyntaxCheckResult(p);
}
+
+
/*!
Evaluates \a program, using \a lineNumber as the base line number,
and returns the result of the evaluation.
@@ -3444,19 +3478,6 @@ QScriptValue QScriptEngine::objectById(qint64 id) const
\value Valid The program is a syntactically correct Qt Script program.
*/
-class QScriptSyntaxCheckResultPrivate
-{
-public:
- QScriptSyntaxCheckResultPrivate() { ref = 0; }
- ~QScriptSyntaxCheckResultPrivate() {}
-
- QScriptSyntaxCheckResult::State state;
- int errorColumnNumber;
- int errorLineNumber;
- QString errorMessage;
- QBasicAtomicInt ref;
-};
-
/*!
Constructs a new QScriptSyntaxCheckResult from the \a other result.
*/