From bdbcd61f8b2dbb7110926aba48516175dbfc8607 Mon Sep 17 00:00:00 2001
From: Martijn Hoekstra <martijnhoekstra@gmail.com>
Date: Fri, 10 Dec 2021 12:07:03 +0100
Subject: [PATCH] fix(manager/sbt): support more seq constructors (#12541)

---
 .../sbt/__fixtures__/dependency-file.scala      |  2 +-
 lib/manager/sbt/extract.ts                      | 17 +++++++++++------
 2 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/lib/manager/sbt/__fixtures__/dependency-file.scala b/lib/manager/sbt/__fixtures__/dependency-file.scala
index bdd6f9fcd0..605a9a9bff 100644
--- a/lib/manager/sbt/__fixtures__/dependency-file.scala
+++ b/lib/manager/sbt/__fixtures__/dependency-file.scala
@@ -16,5 +16,5 @@ object Dependencies {
     "com.abc" % "abc-b" % abcVersion
   )
 
-  val aloneDepInSeq = Seq("com.abc" % "abc-c" % abcVersion)
+  val aloneDepInSeq = List("com.abc" % "abc-c" % abcVersion)
 }
diff --git a/lib/manager/sbt/extract.ts b/lib/manager/sbt/extract.ts
index 25d11b30cd..65dd05a6ec 100644
--- a/lib/manager/sbt/extract.ts
+++ b/lib/manager/sbt/extract.ts
@@ -75,11 +75,16 @@ const getScalaVersionVariable = (str: string): string =>
 
 const isResolver = (str: string): boolean =>
   regEx(
-    /^\s*(resolvers\s*\+\+?=\s*(Seq\()?)?"[^"]*"\s*at\s*"[^"]*"[\s,)]*$/
+    /^\s*(resolvers\s*\+\+?=\s*((Seq|List|Stream)\()?)?"[^"]*"\s*at\s*"[^"]*"[\s,)]*$/
   ).test(str);
 const getResolverUrl = (str: string): string =>
   str
-    .replace(regEx(/^\s*(resolvers\s*\+\+?=\s*(Seq\()?)?"[^"]*"\s*at\s*"/), '')
+    .replace(
+      regEx(
+        /^\s*(resolvers\s*\+\+?=\s*((Seq|List|Stream)\()?)?"[^"]*"\s*at\s*"/
+      ),
+      ''
+    )
     .replace(regEx(/"[\s,)]*$/), '');
 
 const isVarDependency = (str: string): boolean =>
@@ -94,12 +99,12 @@ const isVarDef = (str: string): boolean =>
 
 const isVarSeqSingleLine = (str: string): boolean =>
   regEx(
-    /^\s*(private\s*)?(lazy\s*)?val\s+[_a-zA-Z][_a-zA-Z0-9]*\s*=\s*Seq\(.*\).*\s*$/
+    /^\s*(private\s*)?(lazy\s*)?val\s+[_a-zA-Z][_a-zA-Z0-9]*\s*=\s*(Seq|List|Stream)\(.*\).*\s*$/
   ).test(str);
 
 const isVarSeqMultipleLine = (str: string): boolean =>
   regEx(
-    /^\s*(private\s*)?(lazy\s*)?val\s+[_a-zA-Z][_a-zA-Z0-9]*\s*=\s*Seq\(.*[^)]*.*$/
+    /^\s*(private\s*)?(lazy\s*)?val\s+[_a-zA-Z][_a-zA-Z0-9]*\s*=\s*(Seq|List|Stream)\(.*[^)]*.*$/
   ).test(str);
 
 const getVarName = (str: string): string =>
@@ -250,14 +255,14 @@ function parseSbtLine(
     } else if (isVarSeqSingleLine(line)) {
       isMultiDeps = false;
       const depExpr = line
-        .replace(regEx(/^.*Seq\(\s*/), '')
+        .replace(regEx(/^.*(Seq|List|Stream)\(\s*/), '')
         .replace(regEx(/\).*$/), '');
       dep = parseDepExpr(depExpr, {
         ...ctx,
       });
     } else if (isVarSeqMultipleLine(line)) {
       isMultiDeps = true;
-      const depExpr = line.replace(regEx(/^.*Seq\(\s*/), '');
+      const depExpr = line.replace(regEx(/^.*(Seq|List|Stream)\(\s*/), '');
       dep = parseDepExpr(depExpr, {
         ...ctx,
       });
-- 
GitLab