Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/4.4' into 4.5
Browse files Browse the repository at this point in the history
Change-Id: I9b7cb3d845628abf69a73a279f5a79202c0976c2
  • Loading branch information
orgads committed Oct 4, 2017
2 parents 2966b73 + 6afdb8b commit 5e8e619
Show file tree
Hide file tree
Showing 19 changed files with 1,686 additions and 1,571 deletions.
66 changes: 66 additions & 0 deletions dist/changes-4.4.1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
Qt Creator version 4.4.1 contains bug fixes.

The most important changes are listed in this document. For a complete
list of changes, see the Git log for the Qt Creator sources that
you can check out from the public Git repository. For example:

git clone git://code.qt.io/qt-creator/qt-creator.git
git log --cherry-pick --pretty=oneline v4.4.0..v4.4.1

FakeVim

* Fixed recognition of shortened `tabnext` and `tabprevious` commands
(QTCREATORBUG-18843)

All Projects

* Fixed `Add Existing Files` for top-level project nodes (QTCREATORBUG-18896)

C++ Support

* Improved handling of parsing failures (QTCREATORBUG-18864)
* Fixed crash with invalid raw string literal (QTCREATORBUG-18941)
* Fixed that code model did not use sysroot as reported from the build system
(QTCREATORBUG-18633)
* Fixed highlighting of `float` in C files (QTCREATORBUG-18879)
* Fixed `Convert to Camel Case` (QTCREATORBUG-18947)

Debugging

* Fixed that custom `solib-search-path` startup commands were ignored
(QTCREATORBUG-18812)
* Fixed `Run in terminal` when debugging external application
(QTCREATORBUG-18912)
* Fixed pretty printing of `CHAR` and `WCHAR`

Clang Static Analyzer

* Fixed options passed to analyzer on Windows

Qt Quick Designer

* Fixed usage of `shift` modifier when reparenting layouts

SCXML Editor

* Fixed eventless transitions (QTCREATORBUG-18345)

Test Integration

* Fixed test result output when debugging

Platform Specific

Windows

* Fixed auto-detection of CMake 3.9 and later

Android

* Fixed issues with new Android SDK (26.1.1) (QTCREATORBUG-18962)
* Fixed search path for QML modules when debugging

QNX

* Fixed debugging (QTCREATORBUG-18804, QTCREATORBUG-17901)
* Fixed QML profiler startup (QTCREATORBUG-18954)
2 changes: 2 additions & 0 deletions qbs/modules/qbsbuildconfig/qbsbuildconfig.qbs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import qbs.FileInfo
Module {
Depends { name: "qtc" }

property bool priority: 1 // TODO: Remove declaration after 1.11 is out.

property bool enableUnitTests: false
property bool enableProjectFileUpdates: true
property bool installApiHeaders: false
Expand Down
1 change: 1 addition & 0 deletions scripts/createDevPackage.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ def parse_arguments():
r"^doc/.*$", # include everything under doc/
r"^.*\.pri$", # .pri files in all directories that are looked into
r"^.*\.h$", # .h files in all directories that are looked into
r"^.*\.hpp$" # .hpp files in all directories that are looked into
]

build_include_patterns = [
Expand Down
35 changes: 25 additions & 10 deletions src/libs/glsl/glsl.g
Original file line number Diff line number Diff line change
Expand Up @@ -321,7 +321,7 @@ private:
inline int consumeToken() {
if (_index < int(_tokens.size()))
return _index++;
return _tokens.size() - 1;
return static_cast<int>(_tokens.size()) - 1;
}
inline const Token &tokenAt(int index) const {
if (index == 0)
Expand Down Expand Up @@ -468,30 +468,30 @@ Parser::Parser(Engine *engine, const char *source, unsigned size, int variant)

switch (tk.kind) {
case T_LEFT_PAREN:
parenStack.push(_tokens.size());
parenStack.push(static_cast<int>(_tokens.size()));
break;
case T_LEFT_BRACKET:
bracketStack.push(_tokens.size());
bracketStack.push(static_cast<int>(_tokens.size()));
break;
case T_LEFT_BRACE:
braceStack.push(_tokens.size());
braceStack.push(static_cast<int>(_tokens.size()));
break;

case T_RIGHT_PAREN:
if (! parenStack.empty()) {
_tokens[parenStack.top()].matchingBrace = _tokens.size();
_tokens[parenStack.top()].matchingBrace = static_cast<int>(_tokens.size());
parenStack.pop();
}
break;
case T_RIGHT_BRACKET:
if (! bracketStack.empty()) {
_tokens[bracketStack.top()].matchingBrace = _tokens.size();
_tokens[bracketStack.top()].matchingBrace = static_cast<int>(_tokens.size());
bracketStack.pop();
}
break;
case T_RIGHT_BRACE:
if (! braceStack.empty()) {
_tokens[braceStack.top()].matchingBrace = _tokens.size();
_tokens[braceStack.top()].matchingBrace = static_cast<int>(_tokens.size());
braceStack.pop();
}
break;
Expand Down Expand Up @@ -519,9 +519,13 @@ AST *Parser::parse(int startToken)
_recovered = false;
_tos = -1;
_startToken.kind = startToken;
int recoveryAttempts = 0;


do {
again:
recoveryAttempts = 0;

againAfterRecovery:
if (unsigned(++_tos) == _stateStack.size()) {
_stateStack.resize(_tos * 2);
_locationStack.resize(_tos * 2);
Expand Down Expand Up @@ -564,6 +568,7 @@ AST *Parser::parse(int startToken)
reduce(ruleno);
action = nt_action(_stateStack[_tos], lhs[ruleno] - TERMINAL_COUNT);
} else if (action == 0) {
++recoveryAttempts;
const int line = _tokens[yyloc].line + 1;
QString message = QLatin1String("Syntax error");
if (yytoken != -1) {
Expand All @@ -574,14 +579,24 @@ AST *Parser::parse(int startToken)
for (; _tos; --_tos) {
const int state = _stateStack[_tos];

static int tks[] = {
static int tks1[] = {
T_RIGHT_BRACE, T_RIGHT_PAREN, T_RIGHT_BRACKET,
T_SEMICOLON, T_COLON, T_COMMA,
T_NUMBER, T_TYPE_NAME, T_IDENTIFIER,
T_LEFT_BRACE, T_LEFT_PAREN, T_LEFT_BRACKET,
T_WHILE,
0
};
static int tks2[] = {
T_RIGHT_BRACE, T_RIGHT_PAREN, T_RIGHT_BRACKET,
T_SEMICOLON, T_COLON, T_COMMA,
0
};
int *tks;
if (recoveryAttempts < 2)
tks = tks1;
else
tks = tks2; // Avoid running into an endless loop for e.g.: for(int x=0; x y

for (int *tptr = tks; *tptr; ++tptr) {
const int next = t_action(state, *tptr);
Expand All @@ -604,7 +619,7 @@ AST *Parser::parse(int startToken)
yytoken = -1;

action = next;
goto again;
goto againAfterRecovery;
}
}
}
Expand Down
23 changes: 19 additions & 4 deletions src/libs/glsl/glslparser.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

#line 423 "./glsl.g"
#line 413 "./glsl.g"

/****************************************************************************
**
Expand Down Expand Up @@ -109,9 +109,13 @@ AST *Parser::parse(int startToken)
_recovered = false;
_tos = -1;
_startToken.kind = startToken;
int recoveryAttempts = 0;


do {
again:
recoveryAttempts = 0;

againAfterRecovery:
if (unsigned(++_tos) == _stateStack.size()) {
_stateStack.resize(_tos * 2);
_locationStack.resize(_tos * 2);
Expand Down Expand Up @@ -154,6 +158,7 @@ AST *Parser::parse(int startToken)
reduce(ruleno);
action = nt_action(_stateStack[_tos], lhs[ruleno] - TERMINAL_COUNT);
} else if (action == 0) {
++recoveryAttempts;
const int line = _tokens[yyloc].line + 1;
QString message = QLatin1String("Syntax error");
if (yytoken != -1) {
Expand All @@ -164,14 +169,24 @@ AST *Parser::parse(int startToken)
for (; _tos; --_tos) {
const int state = _stateStack[_tos];

static int tks[] = {
static int tks1[] = {
T_RIGHT_BRACE, T_RIGHT_PAREN, T_RIGHT_BRACKET,
T_SEMICOLON, T_COLON, T_COMMA,
T_NUMBER, T_TYPE_NAME, T_IDENTIFIER,
T_LEFT_BRACE, T_LEFT_PAREN, T_LEFT_BRACKET,
T_WHILE,
0
};
static int tks2[] = {
T_RIGHT_BRACE, T_RIGHT_PAREN, T_RIGHT_BRACKET,
T_SEMICOLON, T_COLON, T_COMMA,
0
};
int *tks;
if (recoveryAttempts < 2)
tks = tks1;
else
tks = tks2; // Avoid running into an endless loop for e.g.: for(int x=0; x y

for (int *tptr = tks; *tptr; ++tptr) {
const int next = t_action(state, *tptr);
Expand All @@ -194,7 +209,7 @@ AST *Parser::parse(int startToken)
yytoken = -1;

action = next;
goto again;
goto againAfterRecovery;
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/libs/glsl/glslparser.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

#line 215 "./glsl.g"
#line 210 "./glsl.g"

/****************************************************************************
**
Expand Down
Loading

0 comments on commit 5e8e619

Please sign in to comment.