aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/coreSQLiteStudio/parser/lempar.c
diff options
context:
space:
mode:
Diffstat (limited to 'SQLiteStudio3/coreSQLiteStudio/parser/lempar.c')
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/lempar.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/lempar.c b/SQLiteStudio3/coreSQLiteStudio/parser/lempar.c
index 4f9cd5c..2d0e610 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/lempar.c
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/lempar.c
@@ -717,7 +717,11 @@ static void yy_reduce(
{
tokens.clear();
const char* fieldName = yyTokenName[yypParser->yystack[i].major];
- if (parserContext->isManagedToken(yypParser->yystack[i].minor.yy0))
+
+ // Adding token being subject of this reduction. It's usually not includes in the inherited tokens,
+ // although if inheriting from simple statements, like "FAIL" or "ROLLBACK", this tends to be redundant with the inherited tokens.
+ // That's why we're checking if it's not contained in the inherited tokens and add it only then.
+ if (parserContext->isManagedToken(yypParser->yystack[i].minor.yy0) && !yypParser->yystack[i].tokens->contains(yypParser->yystack[i].minor.yy0))
tokens += yypParser->yystack[i].minor.yy0;
tokens += *(yypParser->yystack[i].tokens);