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