-
Notifications
You must be signed in to change notification settings - Fork 1k
whatDependsOn fails after successful run (String literal cannot be empty) #8094
Copy link
Copy link
Closed
Labels
Description
steps
Tested against SBT 1.10.7 and 1.10.11
- I ran
whatDependsOn org.apache.pekko pekko-http-core_2.13from SBT console and it tells me what depends on the mentioned library. - I ran the same command again, and it fails with error shown in the problem section.
- I then ran
mySubModule1 / whatDependsOn org.apache.pekko pekko-http-core_2.13this will run successfully - I then ran
mySubModule1 / whatDependsOn org.apache.pekko pekko-http-core_2.13this will run successfully ormySubModule2 / whatDependsOn org.apache.pekko pekko-http-core_2.13this will error (on any submodule in the project) with the error shown in the problem.
problem
Stack trace when SBT errors
Stack trace is from version 1.10.11 of SBT
java.lang.RuntimeException: String literal cannot be empty
at scala.sys.package$.error(package.scala:30)
at sbt.internal.util.complete.ParserMain.stringLiteral(Parser.scala:616)
at sbt.internal.util.complete.ParserMain.stringLiteral$(Parser.scala:614)
at sbt.internal.util.complete.DefaultParsers$.stringLiteral(Parsers.scala:351)
at sbt.internal.util.complete.ParserMain.literal(Parser.scala:425)
at sbt.internal.util.complete.ParserMain.literal$(Parser.scala:425)
at sbt.internal.util.complete.DefaultParsers$.literal(Parsers.scala:351)
at sbt.plugins.DependencyTreeSettings$.$anonfun$artifactPatternParser$7(DependencyTreeSettings.scala:275)
at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:286)
at scala.collection.Iterator.foreach(Iterator.scala:943)
at scala.collection.Iterator.foreach$(Iterator.scala:943)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1431)
at scala.collection.IterableLike.foreach(IterableLike.scala:74)
at scala.collection.IterableLike.foreach$(IterableLike.scala:73)
at scala.collection.AbstractIterable.foreach(Iterable.scala:56)
at scala.collection.TraversableLike.map(TraversableLike.scala:286)
at scala.collection.TraversableLike.map$(TraversableLike.scala:279)
at scala.collection.AbstractTraversable.map(Traversable.scala:108)
at sbt.plugins.DependencyTreeSettings$.$anonfun$artifactPatternParser$6(DependencyTreeSettings.scala:274)
at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:286)
at scala.collection.immutable.HashMap$HashMap1.foreach(HashMap.scala:400)
at scala.collection.immutable.HashMap$HashTrieMap.foreach(HashMap.scala:728)
at scala.collection.immutable.HashMap$HashTrieMap.foreach(HashMap.scala:728)
at scala.collection.immutable.HashMap$HashTrieMap.foreach(HashMap.scala:728)
at scala.collection.TraversableLike.map(TraversableLike.scala:286)
at scala.collection.TraversableLike.map$(TraversableLike.scala:279)
at scala.collection.AbstractTraversable.map(Traversable.scala:108)
at sbt.plugins.DependencyTreeSettings$.$anonfun$artifactPatternParser$2(DependencyTreeSettings.scala:271)
at sbt.std.ParserInstance$.$anonfun$map$2(TaskMacro.scala:51)
at sbt.InputTask.$anonfun$mapTask$1(InputTask.scala:21)
at sbt.internal.Aggregation$.$anonfun$applyDynamicTasks$2(Aggregation.scala:171)
at scala.collection.TraversableLike$WithFilter.$anonfun$map$2(TraversableLike.scala:935)
at scala.collection.immutable.List.foreach(List.scala:431)
at scala.collection.TraversableLike$WithFilter.map(TraversableLike.scala:934)
at sbt.internal.Aggregation$.applyDynamicTasks(Aggregation.scala:170)
at sbt.internal.Aggregation$.evaluatingParser(Aggregation.scala:212)
at sbt.internal.Act$.evaluate$1(Act.scala:495)
at sbt.internal.Act$.$anonfun$actParser0$11(Act.scala:505)
at sbt.internal.util.complete.BindParser.derive(Parser.scala:758)
at sbt.internal.util.complete.ParserMain.loop$1(Parser.scala:486)
at sbt.internal.util.complete.ParserMain.result(Parser.scala:488)
at sbt.internal.util.complete.ParserMain.result$(Parser.scala:474)
at sbt.internal.util.complete.Parser$.result(Parser.scala:139)
at sbt.internal.util.complete.ParserMain.parse(Parser.scala:437)
at sbt.internal.util.complete.ParserMain.parse$(Parser.scala:436)
at sbt.internal.util.complete.DefaultParsers$.parse(Parsers.scala:351)
at sbt.Command$.process(Command.scala:193)
at sbt.MainLoop$.$anonfun$processCommand$7(MainLoop.scala:267)
at scala.Option.getOrElse(Option.scala:189)
at sbt.MainLoop$.process$1(MainLoop.scala:267)
at sbt.MainLoop$.processCommand(MainLoop.scala:312)
at sbt.MainLoop$.$anonfun$next$5(MainLoop.scala:171)
at sbt.State$StateOpsImpl$.runCmd$1(State.scala:290)
at sbt.State$StateOpsImpl$.process$extension(State.scala:326)
at sbt.MainLoop$.$anonfun$next$4(MainLoop.scala:171)
at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:24)
at sbt.MainLoop$.next(MainLoop.scala:171)
at sbt.MainLoop$.run(MainLoop.scala:152)
at sbt.MainLoop$.$anonfun$runWithNewLog$1(MainLoop.scala:127)
at sbt.io.Using.apply(Using.scala:41)
at sbt.MainLoop$.runWithNewLog(MainLoop.scala:120)
at sbt.MainLoop$.runAndClearLast(MainLoop.scala:74)
at sbt.MainLoop$.runLoggedLoop(MainLoop.scala:59)
at sbt.MainLoop$.runLogged(MainLoop.scala:50)
at sbt.StandardMain$.runManaged(Main.scala:225)
at sbt.xMain$.$anonfun$run$11(Main.scala:136)
at scala.util.DynamicVariable.withValue(DynamicVariable.scala:62)
at scala.Console$.withIn(Console.scala:230)
at sbt.internal.util.Terminal$.withIn(Terminal.scala:620)
at sbt.internal.util.Terminal$.$anonfun$withStreams$1(Terminal.scala:400)
at scala.util.DynamicVariable.withValue(DynamicVariable.scala:62)
at scala.Console$.withOut(Console.scala:167)
at sbt.internal.util.Terminal$.$anonfun$withOut$2(Terminal.scala:610)
at scala.util.DynamicVariable.withValue(DynamicVariable.scala:62)
at scala.Console$.withErr(Console.scala:196)
at sbt.internal.util.Terminal$.withOut(Terminal.scala:610)
at sbt.internal.util.Terminal$.withStreams(Terminal.scala:400)
at sbt.xMain$.withStreams$1(Main.scala:89)
at sbt.xMain$.run(Main.scala:124)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at sbt.internal.XMainConfiguration.run(XMainConfiguration.java:59)
at sbt.xMain.run(Main.scala:48)
at xsbt.boot.Launch$.$anonfun$run$1(Launch.scala:149)
at xsbt.boot.Launch$.withContextLoader(Launch.scala:176)
at xsbt.boot.Launch$.run(Launch.scala:149)
at xsbt.boot.Launch$.$anonfun$apply$1(Launch.scala:44)
at xsbt.boot.Launch$.launch(Launch.scala:159)
at xsbt.boot.Launch$.apply(Launch.scala:44)
at xsbt.boot.Launch$.apply(Launch.scala:21)
at xsbt.boot.Boot$.runImpl(Boot.scala:78)
at xsbt.boot.Boot$.run(Boot.scala:73)
at xsbt.boot.Boot$.main(Boot.scala:21)
at xsbt.boot.Boot.main(Boot.scala)
expectation
Repeatedly running the same command should yield the same results (and not produce a stack trace error when the command is valid)
notes
- After the successful "first" run,
whatDependsOn org.apache.pekko pekko-http-core_2.13 1.0.1will error (i.e. version is specified) - This error persists through SBT sessions (so after the first run of whatDependsOn, it'll always error even after restarting SBT
- This happens both in console mode and submitting a command to sbt
- Deleting my
~/.sbtfolder does not resolve the issue
The following will resolve the immediate problem so I can run the command again (as described in the steps to reproduce:
EITHER
- From SBT Console, clean the project (
clean).- If you run whatDependsOn before restarting, it will error.
- Restart SBT Console (must do the restart)
- Run whatDependsOn command
OR
- Restart SBT Console
- If you run whatDependsOn before cleaning, it will error.
- Clean the project (
clean) - Run whatDependsOn command
Reactions are currently unavailable