Version 2.15.0-33.0.dev
Merge commit '01212e32624ae371274d3acbdb0048f04e3b439c' into 'dev'
diff --git a/pkg/front_end/parser_testcases/no-triple-shift/triple_shift_not_triple_shift.dart b/pkg/front_end/parser_testcases/no-triple-shift/triple_shift_not_triple_shift.dart
new file mode 100644
index 0000000..bb5247d
--- /dev/null
+++ b/pkg/front_end/parser_testcases/no-triple-shift/triple_shift_not_triple_shift.dart
@@ -0,0 +1,11 @@
+// From https://github.com/dart-lang/sdk/issues/46886
+extension on Symbol {
+ String operator >(_) => "Greater Than used";
+ String call(_) => "Called";
+}
+
+void main() {
+ print(#>>>(2));
+}
+
+abstract class Foo extends List<List<List<String>>> {}
diff --git a/pkg/front_end/parser_testcases/no-triple-shift/triple_shift_not_triple_shift.dart.expect b/pkg/front_end/parser_testcases/no-triple-shift/triple_shift_not_triple_shift.dart.expect
new file mode 100644
index 0000000..616d7b4
--- /dev/null
+++ b/pkg/front_end/parser_testcases/no-triple-shift/triple_shift_not_triple_shift.dart.expect
@@ -0,0 +1,120 @@
+beginCompilationUnit(extension)
+ beginMetadataStar(extension)
+ endMetadataStar(0)
+ beginExtensionDeclarationPrelude(extension)
+ handleNoTypeVariables(on)
+ beginExtensionDeclaration(extension, null)
+ handleIdentifier(Symbol, typeReference)
+ handleNoTypeArguments({)
+ handleType(Symbol, null)
+ beginClassOrMixinBody(DeclarationKind.Extension, {)
+ beginMetadataStar(String)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, operator)
+ handleIdentifier(String, typeReference)
+ handleNoTypeArguments(operator)
+ handleType(String, null)
+ handleOperatorName(operator, >)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.ExtensionNonStaticMethod)
+ beginMetadataStar(_)
+ endMetadataStar(0)
+ beginFormalParameter(_, MemberKind.ExtensionNonStaticMethod, null, null, null)
+ handleNoType(()
+ handleIdentifier(_, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, _, null, null, FormalParameterKind.mandatory, MemberKind.ExtensionNonStaticMethod)
+ endFormalParameters(1, (, ), MemberKind.ExtensionNonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginLiteralString("Greater Than used")
+ endLiteralString(0, ;)
+ handleExpressionFunctionBody(=>, ;)
+ endExtensionMethod(null, String, (, null, ;)
+ endMember()
+ beginMetadataStar(String)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, call)
+ handleIdentifier(String, typeReference)
+ handleNoTypeArguments(call)
+ handleType(String, null)
+ handleIdentifier(call, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.ExtensionNonStaticMethod)
+ beginMetadataStar(_)
+ endMetadataStar(0)
+ beginFormalParameter(_, MemberKind.ExtensionNonStaticMethod, null, null, null)
+ handleNoType(()
+ handleIdentifier(_, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, _, null, null, FormalParameterKind.mandatory, MemberKind.ExtensionNonStaticMethod)
+ endFormalParameters(1, (, ), MemberKind.ExtensionNonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginLiteralString("Called")
+ endLiteralString(0, ;)
+ handleExpressionFunctionBody(=>, ;)
+ endExtensionMethod(null, String, (, null, ;)
+ endMember()
+ endClassOrMixinBody(DeclarationKind.Extension, 2, {, })
+ endExtensionDeclaration(extension, null, on, })
+ endTopLevelDeclaration(void)
+ beginMetadataStar(void)
+ endMetadataStar(0)
+ beginTopLevelMember(void)
+ beginTopLevelMethod(}, null)
+ handleVoidKeyword(void)
+ handleIdentifier(main, topLevelFunctionDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.TopLevelMethod)
+ endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ handleIdentifier(print, expression)
+ handleNoTypeArguments(()
+ beginArguments(()
+ beginLiteralSymbol(#)
+ handleOperator(>>)
+ endLiteralSymbol(#, 1)
+ beginBinaryExpression(>)
+ handleLiteralInt(2)
+ handleParenthesizedExpression(()
+ endBinaryExpression(>)
+ endArguments(1, (, ))
+ handleSend(print, ;)
+ handleExpressionStatement(;)
+ endBlockFunctionBody(1, {, })
+ endTopLevelMethod(void, null, })
+ endTopLevelDeclaration(abstract)
+ beginMetadataStar(abstract)
+ endMetadataStar(0)
+ beginClassOrNamedMixinApplicationPrelude(abstract)
+ handleIdentifier(Foo, classOrMixinDeclaration)
+ handleNoTypeVariables(extends)
+ beginClassDeclaration(abstract, abstract, Foo)
+ handleIdentifier(List, typeReference)
+ beginTypeArguments(<)
+ handleIdentifier(List, typeReference)
+ beginTypeArguments(<)
+ handleIdentifier(List, typeReference)
+ beginTypeArguments(<)
+ handleIdentifier(String, typeReference)
+ handleNoTypeArguments(>)
+ handleType(String, null)
+ endTypeArguments(1, <, >)
+ handleType(List, null)
+ endTypeArguments(1, <, >)
+ handleType(List, null)
+ endTypeArguments(1, <, >)
+ handleType(List, null)
+ handleClassExtends(extends, 1)
+ handleClassNoWithClause()
+ handleClassOrMixinImplements(null, 0)
+ handleClassHeader(abstract, class, null)
+ beginClassOrMixinBody(DeclarationKind.Class, {)
+ endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+ endClassDeclaration(abstract, })
+ endTopLevelDeclaration()
+endCompilationUnit(3, )
diff --git a/pkg/front_end/parser_testcases/no-triple-shift/triple_shift_not_triple_shift.dart.intertwined.expect b/pkg/front_end/parser_testcases/no-triple-shift/triple_shift_not_triple_shift.dart.intertwined.expect
new file mode 100644
index 0000000..aea9af2
--- /dev/null
+++ b/pkg/front_end/parser_testcases/no-triple-shift/triple_shift_not_triple_shift.dart.intertwined.expect
@@ -0,0 +1,251 @@
+parseUnit(extension)
+ skipErrorTokens(extension)
+ listener: beginCompilationUnit(extension)
+ syntheticPreviousToken(extension)
+ parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+ parseMetadataStar()
+ listener: beginMetadataStar(extension)
+ listener: endMetadataStar(0)
+ parseTopLevelKeywordDeclaration(, extension, Instance of 'DirectiveContext')
+ parseTopLevelKeywordModifiers(, extension)
+ parseExtension(extension)
+ listener: beginExtensionDeclarationPrelude(extension)
+ listener: handleNoTypeVariables(on)
+ listener: beginExtensionDeclaration(extension, null)
+ listener: handleIdentifier(Symbol, typeReference)
+ listener: handleNoTypeArguments({)
+ listener: handleType(Symbol, null)
+ parseClassOrMixinOrExtensionBody(Symbol, DeclarationKind.Extension, null)
+ listener: beginClassOrMixinBody(DeclarationKind.Extension, {)
+ notEofOrValue(}, String)
+ parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Extension, null)
+ parseMetadataStar({)
+ listener: beginMetadataStar(String)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod({, null, null, null, null, null, null, {, Instance of 'SimpleType', null, operator, DeclarationKind.Extension, null, false)
+ listener: beginMethod(null, null, null, null, null, operator)
+ listener: handleIdentifier(String, typeReference)
+ listener: handleNoTypeArguments(operator)
+ listener: handleType(String, null)
+ parseOperatorName(String)
+ listener: handleOperatorName(operator, >)
+ parseMethodTypeVar(>)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(>, operator, false, MemberKind.ExtensionNonStaticMethod)
+ parseFormalParameters(>, MemberKind.ExtensionNonStaticMethod)
+ parseFormalParametersRest((, MemberKind.ExtensionNonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.ExtensionNonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.ExtensionNonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(_)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(_, MemberKind.ExtensionNonStaticMethod, null, null, null)
+ listener: handleNoType(()
+ ensureIdentifier((, formalParameterDeclaration)
+ listener: handleIdentifier(_, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, _, null, null, FormalParameterKind.mandatory, MemberKind.ExtensionNonStaticMethod)
+ listener: endFormalParameters(1, (, ), MemberKind.ExtensionNonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ parseExpressionFunctionBody(=>, false)
+ parseExpression(=>)
+ parsePrecedenceExpression(=>, 1, true)
+ parseUnaryExpression(=>, true)
+ parsePrimary(=>, expression)
+ parseLiteralString(=>)
+ parseSingleLiteralString(=>)
+ listener: beginLiteralString("Greater Than used")
+ listener: endLiteralString(0, ;)
+ ensureSemicolon("Greater Than used")
+ listener: handleExpressionFunctionBody(=>, ;)
+ inGenerator()
+ listener: endExtensionMethod(null, String, (, null, ;)
+ listener: endMember()
+ notEofOrValue(}, String)
+ parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Extension, null)
+ parseMetadataStar(;)
+ listener: beginMetadataStar(String)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', null, call, DeclarationKind.Extension, null, false)
+ listener: beginMethod(null, null, null, null, null, call)
+ listener: handleIdentifier(String, typeReference)
+ listener: handleNoTypeArguments(call)
+ listener: handleType(String, null)
+ ensureIdentifierPotentiallyRecovered(String, methodDeclaration, false)
+ listener: handleIdentifier(call, methodDeclaration)
+ parseQualifiedRestOpt(call, methodDeclarationContinuation)
+ parseMethodTypeVar(call)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(call, call, false, MemberKind.ExtensionNonStaticMethod)
+ parseFormalParameters(call, MemberKind.ExtensionNonStaticMethod)
+ parseFormalParametersRest((, MemberKind.ExtensionNonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.ExtensionNonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.ExtensionNonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(_)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(_, MemberKind.ExtensionNonStaticMethod, null, null, null)
+ listener: handleNoType(()
+ ensureIdentifier((, formalParameterDeclaration)
+ listener: handleIdentifier(_, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, _, null, null, FormalParameterKind.mandatory, MemberKind.ExtensionNonStaticMethod)
+ listener: endFormalParameters(1, (, ), MemberKind.ExtensionNonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ parseExpressionFunctionBody(=>, false)
+ parseExpression(=>)
+ parsePrecedenceExpression(=>, 1, true)
+ parseUnaryExpression(=>, true)
+ parsePrimary(=>, expression)
+ parseLiteralString(=>)
+ parseSingleLiteralString(=>)
+ listener: beginLiteralString("Called")
+ listener: endLiteralString(0, ;)
+ ensureSemicolon("Called")
+ listener: handleExpressionFunctionBody(=>, ;)
+ inGenerator()
+ listener: endExtensionMethod(null, String, (, null, ;)
+ listener: endMember()
+ notEofOrValue(}, })
+ listener: endClassOrMixinBody(DeclarationKind.Extension, 2, {, })
+ listener: endExtensionDeclaration(extension, null, on, })
+ listener: endTopLevelDeclaration(void)
+ parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+ parseMetadataStar(})
+ listener: beginMetadataStar(void)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl(})
+ listener: beginTopLevelMember(void)
+ parseTopLevelMethod(}, null, }, Instance of 'VoidType', null, main, false)
+ listener: beginTopLevelMethod(}, null)
+ listener: handleVoidKeyword(void)
+ ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
+ listener: handleIdentifier(main, topLevelFunctionDeclaration)
+ parseMethodTypeVar(main)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(main, main, false, MemberKind.TopLevelMethod)
+ parseFormalParameters(main, MemberKind.TopLevelMethod)
+ parseFormalParametersRest((, MemberKind.TopLevelMethod)
+ listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+ listener: endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ parseFunctionBody(), false, false)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, print)
+ parseStatement({)
+ parseStatementX({)
+ parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+ looksLikeLocalFunction(print)
+ parseExpressionStatement({)
+ parseExpression({)
+ parsePrecedenceExpression({, 1, true)
+ parseUnaryExpression({, true)
+ parsePrimary({, expression)
+ parseSendOrFunctionLiteral({, expression)
+ looksLikeFunctionBody(;)
+ parseSend({, expression)
+ isNextIdentifier({)
+ ensureIdentifier({, expression)
+ listener: handleIdentifier(print, expression)
+ listener: handleNoTypeArguments(()
+ parseArgumentsOpt(print)
+ parseArguments(print)
+ parseArgumentsRest(()
+ listener: beginArguments(()
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true)
+ parseUnaryExpression((, true)
+ parsePrimary((, expression)
+ parseLiteralSymbol(()
+ listener: beginLiteralSymbol(#)
+ listener: handleOperator(>>)
+ listener: endLiteralSymbol(#, 1)
+ listener: beginBinaryExpression(>)
+ parsePrecedenceExpression(>, 9, true)
+ parseUnaryExpression(>, true)
+ parsePrimary(>, expression)
+ parseParenthesizedExpressionOrFunctionLiteral(>)
+ parseParenthesizedExpression(>)
+ parseExpressionInParenthesis(>)
+ parseExpressionInParenthesisRest(()
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true)
+ parseUnaryExpression((, true)
+ parsePrimary((, expression)
+ parseLiteralInt(()
+ listener: handleLiteralInt(2)
+ ensureCloseParen(2, ()
+ listener: handleParenthesizedExpression(()
+ listener: endBinaryExpression(>)
+ listener: endArguments(1, (, ))
+ listener: handleSend(print, ;)
+ ensureSemicolon())
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endTopLevelMethod(void, null, })
+ listener: endTopLevelDeclaration(abstract)
+ parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+ parseMetadataStar(})
+ listener: beginMetadataStar(abstract)
+ listener: endMetadataStar(0)
+ parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
+ parseClassDeclarationModifiers(}, class)
+ parseTopLevelKeywordModifiers(abstract, class)
+ parseClassOrNamedMixinApplication(abstract, class)
+ listener: beginClassOrNamedMixinApplicationPrelude(abstract)
+ ensureIdentifier(class, classOrMixinDeclaration)
+ listener: handleIdentifier(Foo, classOrMixinDeclaration)
+ listener: handleNoTypeVariables(extends)
+ listener: beginClassDeclaration(abstract, abstract, Foo)
+ parseClass(Foo, abstract, class, Foo)
+ parseClassHeaderOpt(Foo, abstract, class)
+ parseClassExtendsOpt(Foo)
+ parseClassExtendsSeenExtendsClause(extends, Foo)
+ ensureIdentifier(extends, typeReference)
+ listener: handleIdentifier(List, typeReference)
+ listener: beginTypeArguments(<)
+ ensureIdentifier(<, typeReference)
+ listener: handleIdentifier(List, typeReference)
+ listener: beginTypeArguments(<)
+ listener: handleIdentifier(List, typeReference)
+ listener: beginTypeArguments(<)
+ listener: handleIdentifier(String, typeReference)
+ listener: handleNoTypeArguments(>)
+ listener: handleType(String, null)
+ listener: endTypeArguments(1, <, >)
+ listener: handleType(List, null)
+ listener: endTypeArguments(1, <, >)
+ listener: handleType(List, null)
+ listener: endTypeArguments(1, <, >)
+ listener: handleType(List, null)
+ listener: handleClassExtends(extends, 1)
+ parseWithClauseOpt(>)
+ listener: handleClassNoWithClause()
+ parseClassOrMixinImplementsOpt(>)
+ listener: handleClassOrMixinImplements(null, 0)
+ listener: handleClassHeader(abstract, class, null)
+ parseClassOrMixinOrExtensionBody(>, DeclarationKind.Class, Foo)
+ listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+ notEofOrValue(}, })
+ listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+ listener: endClassDeclaration(abstract, })
+ listener: endTopLevelDeclaration()
+ reportAllErrorTokens(extension)
+ listener: endCompilationUnit(3, )
diff --git a/pkg/front_end/parser_testcases/no-triple-shift/triple_shift_not_triple_shift.dart.parser.expect b/pkg/front_end/parser_testcases/no-triple-shift/triple_shift_not_triple_shift.dart.parser.expect
new file mode 100644
index 0000000..94cc726
--- /dev/null
+++ b/pkg/front_end/parser_testcases/no-triple-shift/triple_shift_not_triple_shift.dart.parser.expect
@@ -0,0 +1,25 @@
+NOTICE: Stream was rewritten by parser!
+
+extension on Symbol {
+String operator >(_) => "Greater Than used";
+String call(_) => "Called";
+}
+
+void main() {
+print(#>>>(2));
+}
+
+abstract class Foo extends List<List<List<String>>> {}
+
+
+extension[KeywordToken] on[KeywordToken] Symbol[StringToken] {[BeginToken]
+String[StringToken] operator[KeywordToken] >[SimpleToken]([BeginToken]_[StringToken])[SimpleToken] =>[SimpleToken] "Greater Than used"[StringToken];[SimpleToken]
+String[StringToken] call[StringToken]([BeginToken]_[StringToken])[SimpleToken] =>[SimpleToken] "Called"[StringToken];[SimpleToken]
+}[SimpleToken]
+
+void[KeywordToken] main[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+print[StringToken]([BeginToken]#[SimpleToken]>>[SimpleToken]>[SimpleToken]([BeginToken]2[StringToken])[SimpleToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+abstract[KeywordToken] class[KeywordToken] Foo[StringToken] extends[KeywordToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]String[StringToken]>[SimpleToken]>[SimpleToken]>[SimpleToken] {[BeginToken]}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/no-triple-shift/triple_shift_not_triple_shift.dart.scanner.expect b/pkg/front_end/parser_testcases/no-triple-shift/triple_shift_not_triple_shift.dart.scanner.expect
new file mode 100644
index 0000000..a0d2fdf
--- /dev/null
+++ b/pkg/front_end/parser_testcases/no-triple-shift/triple_shift_not_triple_shift.dart.scanner.expect
@@ -0,0 +1,23 @@
+extension on Symbol {
+String operator >(_) => "Greater Than used";
+String call(_) => "Called";
+}
+
+void main() {
+print(#>>>(2));
+}
+
+abstract class Foo extends List<List<List<String>>> {}
+
+
+extension[KeywordToken] on[KeywordToken] Symbol[StringToken] {[BeginToken]
+String[StringToken] operator[KeywordToken] >[SimpleToken]([BeginToken]_[StringToken])[SimpleToken] =>[SimpleToken] "Greater Than used"[StringToken];[SimpleToken]
+String[StringToken] call[StringToken]([BeginToken]_[StringToken])[SimpleToken] =>[SimpleToken] "Called"[StringToken];[SimpleToken]
+}[SimpleToken]
+
+void[KeywordToken] main[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+print[StringToken]([BeginToken]#[SimpleToken]>>[SimpleToken]>[SimpleToken]([BeginToken]2[StringToken])[SimpleToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+abstract[KeywordToken] class[KeywordToken] Foo[StringToken] extends[KeywordToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]String[StringToken]>>[SimpleToken]>[SimpleToken] {[BeginToken]}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/test/parser_suite.dart b/pkg/front_end/test/parser_suite.dart
index f415263..86afab8 100644
--- a/pkg/front_end/test/parser_suite.dart
+++ b/pkg/front_end/test/parser_suite.dart
@@ -95,6 +95,12 @@
enableExtensionMethods: true,
enableNonNullable: false);
+ScannerConfiguration scannerConfigurationNonTripleShift =
+ new ScannerConfiguration(
+ enableTripleShift: false,
+ enableExtensionMethods: true,
+ enableNonNullable: true);
+
class Context extends ChainContext with MatchContext {
final bool updateExpectations;
@@ -407,6 +413,8 @@
String firstDir = shortName.split("/")[0];
if (firstDir == "non-nnbd") {
config = scannerConfigurationNonNNBD;
+ } else if (firstDir == "no-triple-shift") {
+ config = scannerConfigurationNonTripleShift;
} else {
config = scannerConfiguration;
}
diff --git a/tools/VERSION b/tools/VERSION
index 6975322..82414b5 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 15
PATCH 0
-PRERELEASE 32
+PRERELEASE 33
PRERELEASE_PATCH 0
\ No newline at end of file