From 73a447ff5ecf92c9ec27e4d157eb6f5423c8703c Mon Sep 17 00:00:00 2001 From: Erik Verbruggen <erik.verbruggen@nokia.com> Date: Wed, 6 Jan 2010 13:04:58 +0100 Subject: [PATCH] Fixed fix for QTCREATORBUG-509. --- .../qtscripteditor/parser/javascript.g | 14 ++++++---- .../parser/javascriptgrammar.cpp | 14 +++++----- .../parser/javascriptgrammar_p.h | 28 ++++++++----------- .../parser/javascriptparser.cpp | 5 ++-- .../parser/javascriptparser_p.h | 4 +-- 5 files changed, 32 insertions(+), 33 deletions(-) diff --git a/src/plugins/qtscripteditor/parser/javascript.g b/src/plugins/qtscripteditor/parser/javascript.g index 927175edc42..62bd02fa050 100644 --- a/src/plugins/qtscripteditor/parser/javascript.g +++ b/src/plugins/qtscripteditor/parser/javascript.g @@ -167,6 +167,7 @@ // // This file is automatically generated from javascript.g. // Changes will be lost. +// To re-generate, run: qlalr --no-debug --no-lines --qt javascript.g // #ifndef JAVASCRIPTPARSER_P_H @@ -327,6 +328,7 @@ inline void JavaScriptParser::reallocateStack() // // This file is automatically generated from javascript.g. // Changes will be lost. +// To re-generate, run: qlalr --no-debug --no-lines --qt javascript.g // QT_BEGIN_NAMESPACE @@ -2159,11 +2161,13 @@ PropertyNameAndValueListOpt: PropertyNameAndValueList ; } QString msg = QString::fromUtf8("Unexpected token"); - if (const char *tokenSpell = spell[token_buffer[0].token]) { - msg += QLatin1String(": `"); - msg += QLatin1String(tokenSpell); - msg += QLatin1Char('\''); - } + if (token_buffer[0].token >= 0 && token_buffer[0].token < TERMINAL_COUNT) { + if (const char *tokenSpell = spell[token_buffer[0].token]) { + msg += QLatin1String(": `"); + msg += QLatin1String(tokenSpell); + msg += QLatin1Char('\''); + } + } // ### FIXME: at this point, we should give more information than just "Unexpected token". However, we need more error recovery support from qlalr. diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, token_buffer[0].loc.startLine, token_buffer[0].loc.startColumn, msg)); diff --git a/src/plugins/qtscripteditor/parser/javascriptgrammar.cpp b/src/plugins/qtscripteditor/parser/javascriptgrammar.cpp index aca84c8b2e7..8ab893034e0 100644 --- a/src/plugins/qtscripteditor/parser/javascriptgrammar.cpp +++ b/src/plugins/qtscripteditor/parser/javascriptgrammar.cpp @@ -41,7 +41,7 @@ const char *const JavaScriptGrammar::spell [] = { "try", "typeof", "var", "void", "while", "with", "^", "^=", "null", "true", "false", "const", "debugger", "reserved word"}; -const int JavaScriptGrammar::lhs [] = { +const short JavaScriptGrammar::lhs [] = { 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 87, 87, 92, 92, 86, 86, 89, 89, 93, 93, 93, 93, 94, 94, 94, @@ -70,7 +70,7 @@ const int JavaScriptGrammar::lhs [] = { 163, 97, 167, 167, 164, 164, 165, 165, 168, 84, 169, 169, 170, 170, 166, 166, 88, 88, 171}; -const int JavaScriptGrammar:: rhs[] = { +const short JavaScriptGrammar::rhs [] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 5, 3, 4, 3, 2, 4, 1, 2, 0, 1, 3, 5, 1, 1, 1, 1, 1, 1, 1, @@ -99,7 +99,7 @@ const int JavaScriptGrammar:: rhs[] = { 8, 8, 1, 3, 0, 1, 0, 1, 1, 1, 1, 2, 1, 1, 0, 1, 0, 1, 2}; -const int JavaScriptGrammar::action_default [] = { +const short JavaScriptGrammar::action_default [] = { 0, 98, 165, 129, 137, 133, 173, 180, 77, 149, 179, 187, 175, 125, 0, 176, 264, 62, 177, 178, 183, 78, 141, 145, 66, 95, 76, 81, 61, 0, @@ -148,7 +148,7 @@ const int JavaScriptGrammar::action_default [] = { 15, 88, 86, 90, 87, 85, 89, 204, 197, 0, 205, 201, 0, 203, 193, 0, 194, 198}; -const int JavaScriptGrammar::goto_default [] = { +const short JavaScriptGrammar::goto_default [] = { 29, 28, 439, 437, 113, 112, 14, 2, 438, 111, 114, 194, 24, 17, 190, 26, 8, 201, 21, 27, 77, 25, 1, 32, 30, 270, 13, 264, 3, 260, @@ -159,7 +159,7 @@ const int JavaScriptGrammar::goto_default [] = { 460, 324, 395, 399, 402, 398, 397, 417, 418, 16, 100, 107, 96, 99, 106, 108, 33, 0}; -const int JavaScriptGrammar::action_index [] = { +const short JavaScriptGrammar::action_index [] = { 1318, 79, -84, 56, 39, -17, -84, -84, 169, -84, -84, -84, -84, 216, 149, -84, -84, -84, -84, -84, -84, 475, 68, 100, 180, 184, -84, -84, -84, 99, @@ -256,7 +256,7 @@ const int JavaScriptGrammar::action_index [] = { -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, 5, -88, -88, -56, -88, -88}; -const int JavaScriptGrammar::action_info [] = { +const short JavaScriptGrammar::action_info [] = { 305, 307, 109, 400, 400, 400, 273, 105, 416, 302, 297, 295, 293, 423, 273, 151, 313, 321, 406, 407, 424, 295, 422, 198, 420, 149, 313, 353, -47, 396, @@ -447,7 +447,7 @@ const int JavaScriptGrammar::action_info [] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; -const int JavaScriptGrammar::action_check [] = { +const short JavaScriptGrammar::action_check [] = { 61, 60, 55, 5, 5, 5, 1, 33, 33, 61, 8, 76, 48, 29, 1, 8, 2, 29, 55, 7, 60, 76, 36, 8, 20, 7, 2, 16, 7, 33, diff --git a/src/plugins/qtscripteditor/parser/javascriptgrammar_p.h b/src/plugins/qtscripteditor/parser/javascriptgrammar_p.h index ed797cfa601..04c245d6d6e 100644 --- a/src/plugins/qtscripteditor/parser/javascriptgrammar_p.h +++ b/src/plugins/qtscripteditor/parser/javascriptgrammar_p.h @@ -1,3 +1,4 @@ +// This file was generated by qlalr - DO NOT EDIT! /************************************************************************** ** ** This file is part of Qt Creator @@ -141,27 +142,22 @@ public: GOTO_CHECK_OFFSET = 1562 }; - static const char *const spell []; - static const int lhs []; - static const int rhs []; - static const int goto_default []; - static const int action_default []; - static const int action_index []; - static const int action_info []; - static const int action_check []; + static const char *const spell []; + static const short lhs []; + static const short rhs []; + static const short goto_default []; + static const short action_default []; + static const short action_index []; + static const short action_info []; + static const short action_check []; static inline int nt_action (int state, int nt) { - const int *const goto_index = &action_index [GOTO_INDEX_OFFSET]; - const int *const goto_check = &action_check [GOTO_CHECK_OFFSET]; - - const int yyn = goto_index [state] + nt; - - if (yyn < 0 || goto_check [yyn] != nt) + const int yyn = action_index [GOTO_INDEX_OFFSET + state] + nt; + if (yyn < 0 || action_check [GOTO_CHECK_OFFSET + yyn] != nt) return goto_default [nt]; - const int *const goto_info = &action_info [GOTO_INFO_OFFSET]; - return goto_info [yyn]; + return action_info [GOTO_INFO_OFFSET + yyn]; } static inline int t_action (int state, int token) diff --git a/src/plugins/qtscripteditor/parser/javascriptparser.cpp b/src/plugins/qtscripteditor/parser/javascriptparser.cpp index 8931d0f8504..0c8a75070f5 100644 --- a/src/plugins/qtscripteditor/parser/javascriptparser.cpp +++ b/src/plugins/qtscripteditor/parser/javascriptparser.cpp @@ -48,6 +48,7 @@ // // This file is automatically generated from javascript.g. // Changes will be lost. +// To re-generate, run: qlalr --no-debug --no-lines --qt javascript.g // QT_BEGIN_NAMESPACE @@ -1180,13 +1181,13 @@ case 266: { } QString msg = QString::fromUtf8("Unexpected token"); - if (token_buffer[0].token >= 0 && token_buffer[0].token < TERMINAL_COUNT) { // ### FIXME: band-aid, see QTCREATORBUG-509. + if (token_buffer[0].token >= 0 && token_buffer[0].token < TERMINAL_COUNT) { if (const char *tokenSpell = spell[token_buffer[0].token]) { msg += QLatin1String(": `"); msg += QLatin1String(tokenSpell); msg += QLatin1Char('\''); } - } + } // ### FIXME: at this point, we should give more information than just "Unexpected token". However, we need more error recovery support from qlalr. diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, token_buffer[0].loc.startLine, token_buffer[0].loc.startColumn, msg)); diff --git a/src/plugins/qtscripteditor/parser/javascriptparser_p.h b/src/plugins/qtscripteditor/parser/javascriptparser_p.h index 29c54927d65..eb8bffa0d21 100644 --- a/src/plugins/qtscripteditor/parser/javascriptparser_p.h +++ b/src/plugins/qtscripteditor/parser/javascriptparser_p.h @@ -43,15 +43,13 @@ // // This file is automatically generated from javascript.g. // Changes will be lost. +// To re-generate, run: qlalr --no-debug --no-lines --qt javascript.g // #ifndef JAVASCRIPTPARSER_P_H #define JAVASCRIPTPARSER_P_H #include "javascriptgrammar_p.h" - - - #include "javascriptastfwd_p.h" #include <QtCore/QList> -- GitLab