Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: break infinite recursion in renderTreeNode #33

Merged
merged 2 commits into from Oct 17, 2023

Conversation

patriknw
Copy link
Contributor

  • can be reproduced with libraryDependencies += "io.grpc" % "grpc-core" % "1.58.0"
  • normal dependencyTree looks good, so I don't know what is wrong with the grpc dependency or if there is something else missing in this traversal?

* can be reproduced with
  libraryDependencies += "io.grpc" % "grpc-core" % "1.58.0"
* normal dependencyTree looks good, so I don't know what is wrong with the
  grpc dependency or if there is something else missing in this traversal?
if (n.evictedByVersion.isEmpty) {
private def renderTreeNode(p: Printer, graph: ModuleGraph, n: Module): Unit = {
// not useful with too many indents and that may be infinite recursion
if (p.indent < 100 && n.evictedByVersion.isEmpty) {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

libraryDependencies += "io.grpc" % "grpc-core" % "1.58.0"

dependenyTree looks good:

sbt:happy-path> dependencyTree
[info] default:happy-path_2.12:0.1.0-SNAPSHOT [S]
[info]   +-io.grpc:grpc-core:1.58.0
[info]     +-com.google.android:annotations:4.1.1.4
[info]     +-com.google.code.gson:gson:2.10.1
[info]     +-com.google.errorprone:error_prone_annotations:2.20.0
[info]     +-com.google.guava:guava:32.0.1-android
[info]     | +-com.google.code.findbugs:jsr305:3.0.2
[info]     | +-com.google.errorprone:error_prone_annotations:2.18.0 (evicted by: 2.20..
[info]     | +-com.google.errorprone:error_prone_annotations:2.20.0
[info]     | +-com.google.guava:failureaccess:1.0.1
[info]     | +-com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-..
[info]     | +-com.google.j2objc:j2objc-annotations:2.8
[info]     | +-org.checkerframework:checker-qual:3.33.0
[info]     |
[info]     +-io.grpc:grpc-api:1.58.0
[info]     | +-com.google.code.findbugs:jsr305:3.0.2
[info]     | +-com.google.errorprone:error_prone_annotations:2.20.0
[info]     | +-com.google.guava:guava:32.0.1-android
[info]     |   +-com.google.code.findbugs:jsr305:3.0.2
[info]     |   +-com.google.errorprone:error_prone_annotations:2.18.0 (evicted by: 2...
[info]     |   +-com.google.errorprone:error_prone_annotations:2.20.0
[info]     |   +-com.google.guava:failureaccess:1.0.1
[info]     |   +-com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-wit..
[info]     |   +-com.google.j2objc:j2objc-annotations:2.8
[info]     |   +-org.checkerframework:checker-qual:3.33.0
[info]     |
[info]     +-io.grpc:grpc-context:1.58.0
[info]     | +-io.grpc:grpc-api:1.58.0
[info]     |   +-com.google.code.findbugs:jsr305:3.0.2
[info]     |   +-com.google.errorprone:error_prone_annotations:2.20.0
[info]     |   +-com.google.guava:guava:32.0.1-android
[info]     |     +-com.google.code.findbugs:jsr305:3.0.2
[info]     |     +-com.google.errorprone:error_prone_annotations:2.18.0 (evicted by: ..
[info]     |     +-com.google.errorprone:error_prone_annotations:2.20.0
[info]     |     +-com.google.guava:failureaccess:1.0.1
[info]     |     +-com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-w..
[info]     |     +-com.google.j2objc:j2objc-annotations:2.8
[info]     |     +-org.checkerframework:checker-qual:3.33.0
[info]     |
[info]     +-io.grpc:grpc-util:1.58.0
[info]     | +-com.google.guava:guava:32.0.1-android
[info]     | | +-com.google.code.findbugs:jsr305:3.0.2
[info]     | | +-com.google.errorprone:error_prone_annotations:2.18.0 (evicted by: 2...
[info]     | | +-com.google.errorprone:error_prone_annotations:2.20.0
[info]     | | +-com.google.guava:failureaccess:1.0.1
[info]     | | +-com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-wit..
[info]     | | +-com.google.j2objc:j2objc-annotations:2.8
[info]     | | +-org.checkerframework:checker-qual:3.33.0
[info]     | |
[info]     | #-io.grpc:grpc-core:1.58.0 (cycle)
[info]     | +-org.codehaus.mojo:animal-sniffer-annotations:1.23
[info]     |
[info]     +-io.perfmark:perfmark-api:0.26.0
[info]     +-org.codehaus.mojo:animal-sniffer-annotations:1.23

when debugging this with a println for each renderTreeNode indent:

#0 renderTreeNode grpc-core 1.58.0
#4 renderTreeNode annotations 4.1.1.4
#4 renderTreeNode gson 2.10.1
#4 renderTreeNode error_prone_annotations 2.20.0
#4 renderTreeNode guava 32.0.1-android
#8 renderTreeNode jsr305 3.0.2
#8 renderTreeNode error_prone_annotations 2.20.0
#8 renderTreeNode failureaccess 1.0.1
#8 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#8 renderTreeNode j2objc-annotations 2.8
#8 renderTreeNode checker-qual 3.33.0
#4 renderTreeNode grpc-api 1.58.0
#8 renderTreeNode jsr305 3.0.2
#8 renderTreeNode error_prone_annotations 2.20.0
#8 renderTreeNode guava 32.0.1-android
#12 renderTreeNode jsr305 3.0.2
#12 renderTreeNode error_prone_annotations 2.20.0
#12 renderTreeNode failureaccess 1.0.1
#12 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#12 renderTreeNode j2objc-annotations 2.8
#12 renderTreeNode checker-qual 3.33.0
#4 renderTreeNode grpc-context 1.58.0
#8 renderTreeNode grpc-api 1.58.0
#12 renderTreeNode jsr305 3.0.2
#12 renderTreeNode error_prone_annotations 2.20.0
#12 renderTreeNode guava 32.0.1-android
#16 renderTreeNode jsr305 3.0.2
#16 renderTreeNode error_prone_annotations 2.20.0
#16 renderTreeNode failureaccess 1.0.1
#16 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#16 renderTreeNode j2objc-annotations 2.8
#16 renderTreeNode checker-qual 3.33.0
#4 renderTreeNode grpc-util 1.58.0
#8 renderTreeNode guava 32.0.1-android
#12 renderTreeNode jsr305 3.0.2
#12 renderTreeNode error_prone_annotations 2.20.0
#12 renderTreeNode failureaccess 1.0.1
#12 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#12 renderTreeNode j2objc-annotations 2.8
#12 renderTreeNode checker-qual 3.33.0
#8 renderTreeNode grpc-core 1.58.0
#12 renderTreeNode annotations 4.1.1.4
#12 renderTreeNode gson 2.10.1
#12 renderTreeNode error_prone_annotations 2.20.0
#12 renderTreeNode guava 32.0.1-android
#16 renderTreeNode jsr305 3.0.2
#16 renderTreeNode error_prone_annotations 2.20.0
#16 renderTreeNode failureaccess 1.0.1
#16 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#16 renderTreeNode j2objc-annotations 2.8
#16 renderTreeNode checker-qual 3.33.0
#12 renderTreeNode grpc-api 1.58.0
#16 renderTreeNode jsr305 3.0.2
#16 renderTreeNode error_prone_annotations 2.20.0
#16 renderTreeNode guava 32.0.1-android
#20 renderTreeNode jsr305 3.0.2
#20 renderTreeNode error_prone_annotations 2.20.0
#20 renderTreeNode failureaccess 1.0.1
#20 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#20 renderTreeNode j2objc-annotations 2.8
#20 renderTreeNode checker-qual 3.33.0
#12 renderTreeNode grpc-context 1.58.0
#16 renderTreeNode grpc-api 1.58.0
#20 renderTreeNode jsr305 3.0.2
#20 renderTreeNode error_prone_annotations 2.20.0
#20 renderTreeNode guava 32.0.1-android
#24 renderTreeNode jsr305 3.0.2
#24 renderTreeNode error_prone_annotations 2.20.0
#24 renderTreeNode failureaccess 1.0.1
#24 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#24 renderTreeNode j2objc-annotations 2.8
#24 renderTreeNode checker-qual 3.33.0
#12 renderTreeNode grpc-util 1.58.0
#16 renderTreeNode guava 32.0.1-android
#20 renderTreeNode jsr305 3.0.2
#20 renderTreeNode error_prone_annotations 2.20.0
#20 renderTreeNode failureaccess 1.0.1
#20 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#20 renderTreeNode j2objc-annotations 2.8
#20 renderTreeNode checker-qual 3.33.0
#16 renderTreeNode grpc-core 1.58.0
#20 renderTreeNode annotations 4.1.1.4
#20 renderTreeNode gson 2.10.1
#20 renderTreeNode error_prone_annotations 2.20.0
#20 renderTreeNode guava 32.0.1-android
#24 renderTreeNode jsr305 3.0.2
#24 renderTreeNode error_prone_annotations 2.20.0
#24 renderTreeNode failureaccess 1.0.1
#24 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#24 renderTreeNode j2objc-annotations 2.8
#24 renderTreeNode checker-qual 3.33.0
#20 renderTreeNode grpc-api 1.58.0
#24 renderTreeNode jsr305 3.0.2
#24 renderTreeNode error_prone_annotations 2.20.0
#24 renderTreeNode guava 32.0.1-android
#28 renderTreeNode jsr305 3.0.2
#28 renderTreeNode error_prone_annotations 2.20.0
#28 renderTreeNode failureaccess 1.0.1
#28 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#28 renderTreeNode j2objc-annotations 2.8
#28 renderTreeNode checker-qual 3.33.0
#20 renderTreeNode grpc-context 1.58.0
#24 renderTreeNode grpc-api 1.58.0
#28 renderTreeNode jsr305 3.0.2
#28 renderTreeNode error_prone_annotations 2.20.0
#28 renderTreeNode guava 32.0.1-android
#32 renderTreeNode jsr305 3.0.2
#32 renderTreeNode error_prone_annotations 2.20.0
#32 renderTreeNode failureaccess 1.0.1
#32 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#32 renderTreeNode j2objc-annotations 2.8
#32 renderTreeNode checker-qual 3.33.0
#20 renderTreeNode grpc-util 1.58.0
#24 renderTreeNode guava 32.0.1-android
#28 renderTreeNode jsr305 3.0.2
#28 renderTreeNode error_prone_annotations 2.20.0
#28 renderTreeNode failureaccess 1.0.1
#28 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#28 renderTreeNode j2objc-annotations 2.8
#28 renderTreeNode checker-qual 3.33.0
#24 renderTreeNode grpc-core 1.58.0
#28 renderTreeNode annotations 4.1.1.4
#28 renderTreeNode gson 2.10.1
#28 renderTreeNode error_prone_annotations 2.20.0
#28 renderTreeNode guava 32.0.1-android
#32 renderTreeNode jsr305 3.0.2
#32 renderTreeNode error_prone_annotations 2.20.0
#32 renderTreeNode failureaccess 1.0.1
#32 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#32 renderTreeNode j2objc-annotations 2.8
#32 renderTreeNode checker-qual 3.33.0
#28 renderTreeNode grpc-api 1.58.0
#32 renderTreeNode jsr305 3.0.2
#32 renderTreeNode error_prone_annotations 2.20.0
#32 renderTreeNode guava 32.0.1-android
#36 renderTreeNode jsr305 3.0.2
#36 renderTreeNode error_prone_annotations 2.20.0
#36 renderTreeNode failureaccess 1.0.1
#36 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#36 renderTreeNode j2objc-annotations 2.8
#36 renderTreeNode checker-qual 3.33.0
#28 renderTreeNode grpc-context 1.58.0
#32 renderTreeNode grpc-api 1.58.0
#36 renderTreeNode jsr305 3.0.2
#36 renderTreeNode error_prone_annotations 2.20.0
#36 renderTreeNode guava 32.0.1-android
#40 renderTreeNode jsr305 3.0.2
#40 renderTreeNode error_prone_annotations 2.20.0
#40 renderTreeNode failureaccess 1.0.1
#40 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#40 renderTreeNode j2objc-annotations 2.8
#40 renderTreeNode checker-qual 3.33.0
#28 renderTreeNode grpc-util 1.58.0
#32 renderTreeNode guava 32.0.1-android
#36 renderTreeNode jsr305 3.0.2
#36 renderTreeNode error_prone_annotations 2.20.0
#36 renderTreeNode failureaccess 1.0.1
#36 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#36 renderTreeNode j2objc-annotations 2.8
#36 renderTreeNode checker-qual 3.33.0
#32 renderTreeNode grpc-core 1.58.0
#36 renderTreeNode annotations 4.1.1.4
#36 renderTreeNode gson 2.10.1
#36 renderTreeNode error_prone_annotations 2.20.0
#36 renderTreeNode guava 32.0.1-android
#40 renderTreeNode jsr305 3.0.2
#40 renderTreeNode error_prone_annotations 2.20.0
#40 renderTreeNode failureaccess 1.0.1
#40 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#40 renderTreeNode j2objc-annotations 2.8
#40 renderTreeNode checker-qual 3.33.0
#36 renderTreeNode grpc-api 1.58.0
#40 renderTreeNode jsr305 3.0.2
#40 renderTreeNode error_prone_annotations 2.20.0
#40 renderTreeNode guava 32.0.1-android
#44 renderTreeNode jsr305 3.0.2
#44 renderTreeNode error_prone_annotations 2.20.0
#44 renderTreeNode failureaccess 1.0.1
#44 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#44 renderTreeNode j2objc-annotations 2.8
#44 renderTreeNode checker-qual 3.33.0
#36 renderTreeNode grpc-context 1.58.0
#40 renderTreeNode grpc-api 1.58.0
#44 renderTreeNode jsr305 3.0.2
#44 renderTreeNode error_prone_annotations 2.20.0
#44 renderTreeNode guava 32.0.1-android
#48 renderTreeNode jsr305 3.0.2
#48 renderTreeNode error_prone_annotations 2.20.0
#48 renderTreeNode failureaccess 1.0.1
#48 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#48 renderTreeNode j2objc-annotations 2.8
#48 renderTreeNode checker-qual 3.33.0
#36 renderTreeNode grpc-util 1.58.0
#40 renderTreeNode guava 32.0.1-android
#44 renderTreeNode jsr305 3.0.2
#44 renderTreeNode error_prone_annotations 2.20.0
#44 renderTreeNode failureaccess 1.0.1
#44 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#44 renderTreeNode j2objc-annotations 2.8
#44 renderTreeNode checker-qual 3.33.0
#40 renderTreeNode grpc-core 1.58.0
#44 renderTreeNode annotations 4.1.1.4
#44 renderTreeNode gson 2.10.1
#44 renderTreeNode error_prone_annotations 2.20.0
#44 renderTreeNode guava 32.0.1-android
#48 renderTreeNode jsr305 3.0.2
#48 renderTreeNode error_prone_annotations 2.20.0
#48 renderTreeNode failureaccess 1.0.1
#48 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#48 renderTreeNode j2objc-annotations 2.8
#48 renderTreeNode checker-qual 3.33.0
#44 renderTreeNode grpc-api 1.58.0
#48 renderTreeNode jsr305 3.0.2
#48 renderTreeNode error_prone_annotations 2.20.0
#48 renderTreeNode guava 32.0.1-android
#52 renderTreeNode jsr305 3.0.2
#52 renderTreeNode error_prone_annotations 2.20.0
#52 renderTreeNode failureaccess 1.0.1
#52 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#52 renderTreeNode j2objc-annotations 2.8
#52 renderTreeNode checker-qual 3.33.0
#44 renderTreeNode grpc-context 1.58.0
#48 renderTreeNode grpc-api 1.58.0
#52 renderTreeNode jsr305 3.0.2
#52 renderTreeNode error_prone_annotations 2.20.0
#52 renderTreeNode guava 32.0.1-android
#56 renderTreeNode jsr305 3.0.2
#56 renderTreeNode error_prone_annotations 2.20.0
#56 renderTreeNode failureaccess 1.0.1
#56 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#56 renderTreeNode j2objc-annotations 2.8
#56 renderTreeNode checker-qual 3.33.0
#44 renderTreeNode grpc-util 1.58.0
#48 renderTreeNode guava 32.0.1-android
#52 renderTreeNode jsr305 3.0.2
#52 renderTreeNode error_prone_annotations 2.20.0
#52 renderTreeNode failureaccess 1.0.1
#52 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#52 renderTreeNode j2objc-annotations 2.8
#52 renderTreeNode checker-qual 3.33.0
#48 renderTreeNode grpc-core 1.58.0
#52 renderTreeNode annotations 4.1.1.4
#52 renderTreeNode gson 2.10.1
#52 renderTreeNode error_prone_annotations 2.20.0
#52 renderTreeNode guava 32.0.1-android
#56 renderTreeNode jsr305 3.0.2
#56 renderTreeNode error_prone_annotations 2.20.0
#56 renderTreeNode failureaccess 1.0.1
#56 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#56 renderTreeNode j2objc-annotations 2.8
#56 renderTreeNode checker-qual 3.33.0
#52 renderTreeNode grpc-api 1.58.0
#56 renderTreeNode jsr305 3.0.2
#56 renderTreeNode error_prone_annotations 2.20.0
#56 renderTreeNode guava 32.0.1-android
#60 renderTreeNode jsr305 3.0.2
#60 renderTreeNode error_prone_annotations 2.20.0
#60 renderTreeNode failureaccess 1.0.1
#60 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#60 renderTreeNode j2objc-annotations 2.8
#60 renderTreeNode checker-qual 3.33.0
#52 renderTreeNode grpc-context 1.58.0
#56 renderTreeNode grpc-api 1.58.0
#60 renderTreeNode jsr305 3.0.2
#60 renderTreeNode error_prone_annotations 2.20.0
#60 renderTreeNode guava 32.0.1-android
#64 renderTreeNode jsr305 3.0.2
#64 renderTreeNode error_prone_annotations 2.20.0
#64 renderTreeNode failureaccess 1.0.1
#64 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#64 renderTreeNode j2objc-annotations 2.8
#64 renderTreeNode checker-qual 3.33.0
#52 renderTreeNode grpc-util 1.58.0
#56 renderTreeNode guava 32.0.1-android
#60 renderTreeNode jsr305 3.0.2
#60 renderTreeNode error_prone_annotations 2.20.0
#60 renderTreeNode failureaccess 1.0.1
#60 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#60 renderTreeNode j2objc-annotations 2.8
#60 renderTreeNode checker-qual 3.33.0
#56 renderTreeNode grpc-core 1.58.0
#60 renderTreeNode annotations 4.1.1.4
#60 renderTreeNode gson 2.10.1
#60 renderTreeNode error_prone_annotations 2.20.0
#60 renderTreeNode guava 32.0.1-android
#64 renderTreeNode jsr305 3.0.2
#64 renderTreeNode error_prone_annotations 2.20.0
#64 renderTreeNode failureaccess 1.0.1
#64 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#64 renderTreeNode j2objc-annotations 2.8
#64 renderTreeNode checker-qual 3.33.0
#60 renderTreeNode grpc-api 1.58.0
#64 renderTreeNode jsr305 3.0.2
#64 renderTreeNode error_prone_annotations 2.20.0
#64 renderTreeNode guava 32.0.1-android
#68 renderTreeNode jsr305 3.0.2
#68 renderTreeNode error_prone_annotations 2.20.0
#68 renderTreeNode failureaccess 1.0.1
#68 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#68 renderTreeNode j2objc-annotations 2.8
#68 renderTreeNode checker-qual 3.33.0
#60 renderTreeNode grpc-context 1.58.0
#64 renderTreeNode grpc-api 1.58.0
#68 renderTreeNode jsr305 3.0.2
#68 renderTreeNode error_prone_annotations 2.20.0
#68 renderTreeNode guava 32.0.1-android
#72 renderTreeNode jsr305 3.0.2
#72 renderTreeNode error_prone_annotations 2.20.0
#72 renderTreeNode failureaccess 1.0.1
#72 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#72 renderTreeNode j2objc-annotations 2.8
#72 renderTreeNode checker-qual 3.33.0
#60 renderTreeNode grpc-util 1.58.0
#64 renderTreeNode guava 32.0.1-android
#68 renderTreeNode jsr305 3.0.2
#68 renderTreeNode error_prone_annotations 2.20.0
#68 renderTreeNode failureaccess 1.0.1
#68 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#68 renderTreeNode j2objc-annotations 2.8
#68 renderTreeNode checker-qual 3.33.0
#64 renderTreeNode grpc-core 1.58.0
#68 renderTreeNode annotations 4.1.1.4
#68 renderTreeNode gson 2.10.1
#68 renderTreeNode error_prone_annotations 2.20.0
#68 renderTreeNode guava 32.0.1-android
#72 renderTreeNode jsr305 3.0.2
#72 renderTreeNode error_prone_annotations 2.20.0
#72 renderTreeNode failureaccess 1.0.1
#72 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#72 renderTreeNode j2objc-annotations 2.8
#72 renderTreeNode checker-qual 3.33.0
#68 renderTreeNode grpc-api 1.58.0
#72 renderTreeNode jsr305 3.0.2
#72 renderTreeNode error_prone_annotations 2.20.0
#72 renderTreeNode guava 32.0.1-android
#76 renderTreeNode jsr305 3.0.2
#76 renderTreeNode error_prone_annotations 2.20.0
#76 renderTreeNode failureaccess 1.0.1
#76 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#76 renderTreeNode j2objc-annotations 2.8
#76 renderTreeNode checker-qual 3.33.0
#68 renderTreeNode grpc-context 1.58.0
#72 renderTreeNode grpc-api 1.58.0
#76 renderTreeNode jsr305 3.0.2
#76 renderTreeNode error_prone_annotations 2.20.0
#76 renderTreeNode guava 32.0.1-android
#80 renderTreeNode jsr305 3.0.2
#80 renderTreeNode error_prone_annotations 2.20.0
#80 renderTreeNode failureaccess 1.0.1
#80 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#80 renderTreeNode j2objc-annotations 2.8
#80 renderTreeNode checker-qual 3.33.0
#68 renderTreeNode grpc-util 1.58.0
#72 renderTreeNode guava 32.0.1-android
#76 renderTreeNode jsr305 3.0.2
#76 renderTreeNode error_prone_annotations 2.20.0
#76 renderTreeNode failureaccess 1.0.1
#76 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#76 renderTreeNode j2objc-annotations 2.8
#76 renderTreeNode checker-qual 3.33.0
#72 renderTreeNode grpc-core 1.58.0
#76 renderTreeNode annotations 4.1.1.4
#76 renderTreeNode gson 2.10.1
#76 renderTreeNode error_prone_annotations 2.20.0
#76 renderTreeNode guava 32.0.1-android
#80 renderTreeNode jsr305 3.0.2
#80 renderTreeNode error_prone_annotations 2.20.0
#80 renderTreeNode failureaccess 1.0.1
#80 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#80 renderTreeNode j2objc-annotations 2.8
#80 renderTreeNode checker-qual 3.33.0
#76 renderTreeNode grpc-api 1.58.0
#80 renderTreeNode jsr305 3.0.2
#80 renderTreeNode error_prone_annotations 2.20.0
#80 renderTreeNode guava 32.0.1-android
#84 renderTreeNode jsr305 3.0.2
#84 renderTreeNode error_prone_annotations 2.20.0
#84 renderTreeNode failureaccess 1.0.1
#84 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#84 renderTreeNode j2objc-annotations 2.8
#84 renderTreeNode checker-qual 3.33.0
#76 renderTreeNode grpc-context 1.58.0
#80 renderTreeNode grpc-api 1.58.0
#84 renderTreeNode jsr305 3.0.2
#84 renderTreeNode error_prone_annotations 2.20.0
#84 renderTreeNode guava 32.0.1-android
#88 renderTreeNode jsr305 3.0.2
#88 renderTreeNode error_prone_annotations 2.20.0
#88 renderTreeNode failureaccess 1.0.1
#88 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#88 renderTreeNode j2objc-annotations 2.8
#88 renderTreeNode checker-qual 3.33.0
#76 renderTreeNode grpc-util 1.58.0
#80 renderTreeNode guava 32.0.1-android
#84 renderTreeNode jsr305 3.0.2
#84 renderTreeNode error_prone_annotations 2.20.0
#84 renderTreeNode failureaccess 1.0.1
#84 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#84 renderTreeNode j2objc-annotations 2.8
#84 renderTreeNode checker-qual 3.33.0
#80 renderTreeNode grpc-core 1.58.0
#84 renderTreeNode annotations 4.1.1.4
#84 renderTreeNode gson 2.10.1
#84 renderTreeNode error_prone_annotations 2.20.0
#84 renderTreeNode guava 32.0.1-android
#88 renderTreeNode jsr305 3.0.2
#88 renderTreeNode error_prone_annotations 2.20.0
#88 renderTreeNode failureaccess 1.0.1
#88 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#88 renderTreeNode j2objc-annotations 2.8
#88 renderTreeNode checker-qual 3.33.0
#84 renderTreeNode grpc-api 1.58.0
#88 renderTreeNode jsr305 3.0.2
#88 renderTreeNode error_prone_annotations 2.20.0
#88 renderTreeNode guava 32.0.1-android
#92 renderTreeNode jsr305 3.0.2
#92 renderTreeNode error_prone_annotations 2.20.0
#92 renderTreeNode failureaccess 1.0.1
#92 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#92 renderTreeNode j2objc-annotations 2.8
#92 renderTreeNode checker-qual 3.33.0
#84 renderTreeNode grpc-context 1.58.0
#88 renderTreeNode grpc-api 1.58.0
#92 renderTreeNode jsr305 3.0.2
#92 renderTreeNode error_prone_annotations 2.20.0
#92 renderTreeNode guava 32.0.1-android
#96 renderTreeNode jsr305 3.0.2
#96 renderTreeNode error_prone_annotations 2.20.0
#96 renderTreeNode failureaccess 1.0.1
#96 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#96 renderTreeNode j2objc-annotations 2.8
#96 renderTreeNode checker-qual 3.33.0
#84 renderTreeNode grpc-util 1.58.0
#88 renderTreeNode guava 32.0.1-android
#92 renderTreeNode jsr305 3.0.2
#92 renderTreeNode error_prone_annotations 2.20.0
#92 renderTreeNode failureaccess 1.0.1
#92 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#92 renderTreeNode j2objc-annotations 2.8
#92 renderTreeNode checker-qual 3.33.0
#88 renderTreeNode grpc-core 1.58.0
#92 renderTreeNode annotations 4.1.1.4
#92 renderTreeNode gson 2.10.1
#92 renderTreeNode error_prone_annotations 2.20.0
#92 renderTreeNode guava 32.0.1-android
#96 renderTreeNode jsr305 3.0.2
#96 renderTreeNode error_prone_annotations 2.20.0
#96 renderTreeNode failureaccess 1.0.1
#96 renderTreeNode listenablefuture 9999.0-empty-to-avoid-conflict-with-guava
#96 renderTreeNode j2objc-annotations 2.8
#96 renderTreeNode checker-qual 3.33.0
#92 renderTreeNode grpc-api 1.58.0
#96 renderTreeNode jsr305 3.0.2
#96 renderTreeNode error_prone_annotations 2.20.0
#96 renderTreeNode guava 32.0.1-android
#92 renderTreeNode grpc-context 1.58.0
#96 renderTreeNode grpc-api 1.58.0
#92 renderTreeNode grpc-util 1.58.0
#96 renderTreeNode guava 32.0.1-android
#96 renderTreeNode grpc-core 1.58.0
#96 renderTreeNode animal-sniffer-annotations 1.23
#92 renderTreeNode perfmark-api 0.26.0
#92 renderTreeNode animal-sniffer-annotations 1.23
#88 renderTreeNode animal-sniffer-annotations 1.23
#84 renderTreeNode perfmark-api 0.26.0
#84 renderTreeNode animal-sniffer-annotations 1.23
#80 renderTreeNode animal-sniffer-annotations 1.23
#76 renderTreeNode perfmark-api 0.26.0
#76 renderTreeNode animal-sniffer-annotations 1.23
#72 renderTreeNode animal-sniffer-annotations 1.23
#68 renderTreeNode perfmark-api 0.26.0
#68 renderTreeNode animal-sniffer-annotations 1.23
#64 renderTreeNode animal-sniffer-annotations 1.23
#60 renderTreeNode perfmark-api 0.26.0
#60 renderTreeNode animal-sniffer-annotations 1.23
#56 renderTreeNode animal-sniffer-annotations 1.23
#52 renderTreeNode perfmark-api 0.26.0
#52 renderTreeNode animal-sniffer-annotations 1.23
#48 renderTreeNode animal-sniffer-annotations 1.23
#44 renderTreeNode perfmark-api 0.26.0
#44 renderTreeNode animal-sniffer-annotations 1.23
#40 renderTreeNode animal-sniffer-annotations 1.23
#36 renderTreeNode perfmark-api 0.26.0
#36 renderTreeNode animal-sniffer-annotations 1.23
#32 renderTreeNode animal-sniffer-annotations 1.23
#28 renderTreeNode perfmark-api 0.26.0
#28 renderTreeNode animal-sniffer-annotations 1.23
#24 renderTreeNode animal-sniffer-annotations 1.23
#20 renderTreeNode perfmark-api 0.26.0
#20 renderTreeNode animal-sniffer-annotations 1.23
#16 renderTreeNode animal-sniffer-annotations 1.23
#12 renderTreeNode perfmark-api 0.26.0
#12 renderTreeNode animal-sniffer-annotations 1.23
#8 renderTreeNode animal-sniffer-annotations 1.23
#4 renderTreeNode perfmark-api 0.26.0
#4 renderTreeNode animal-sniffer-annotations 1.23
#0 renderTreeNode scala-library 2.12.18

if (n.evictedByVersion.isEmpty) {
private def renderTreeNode(p: Printer, graph: ModuleGraph, n: Module, parents: Set[Module]): Unit =
// avoid cycles by checking if in parents
if (n.evictedByVersion.isEmpty && !parents.contains(n)) {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now fixed in a more proper way. This was also fixed in dependencyTree ascii rendering sbt/sbt-dependency-graph@0c3cf98

The reason is that grpc-core has a dependency to grpc-util, which has a compile scope dependency back to grpc-core https://repo1.maven.org/maven2/io/grpc/grpc-util/1.58.0/grpc-util-1.58.0.pom

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice, that's better.

if (n.evictedByVersion.isEmpty) {
private def renderTreeNode(p: Printer, graph: ModuleGraph, n: Module, parents: Set[Module]): Unit =
// avoid cycles by checking if in parents
if (n.evictedByVersion.isEmpty && !parents.contains(n)) {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice, that's better.

@patriknw patriknw merged commit a0b8f9d into main Oct 17, 2023
7 checks passed
@patriknw patriknw deleted the wip-infinite-recursion-patriknw branch October 17, 2023 12:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants