diff -r 4bb6e0871bf7 -r 2626982cf4f7 make/jdk/src/classes/build/tools/jigsaw/ModuleSummary.java --- a/make/jdk/src/classes/build/tools/jigsaw/ModuleSummary.java Wed Dec 12 14:48:34 2018 -0800 +++ b/make/jdk/src/classes/build/tools/jigsaw/ModuleSummary.java Wed Dec 12 15:01:29 2018 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -36,11 +36,13 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.util.Arrays; +import java.util.ArrayList; import java.util.Comparator; import java.util.Date; import java.util.Enumeration; import java.util.HashMap; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; import java.util.stream.Collectors; @@ -552,6 +554,21 @@ return sb.toString(); } + private String providesEntry(Provides p) { + StringBuilder sb = new StringBuilder(); + sb.append(String.format("provides %s
\n", p.service())); + List pvs = new ArrayList<>(p.providers()); + pvs.sort(Comparator.naturalOrder()); + for (int i = 0; i < pvs.size(); i++) { // My kingdom for Stream::zip ... + String fmt = ((i == 0) + ? "    with %s" + : ",
         %s"); + sb.append(String.format(fmt, pvs.get(i))); + } + sb.append("\n"); + return sb.toString(); + } + public String servicesColumn() { StringBuilder sb = new StringBuilder(); sb.append(String.format(" ", CODE)); @@ -560,8 +577,7 @@ .forEach(s -> sb.append("uses ").append(s).append("
").append("\n")); ms.descriptor().provides().stream() .sorted(Comparator.comparing(Provides::service)) - .map(p -> String.format("provides %s
    with %s", - p.service(), p.providers())) + .map(this::providesEntry) .forEach(p -> sb.append(p).append("
").append("\n")); sb.append(""); return sb.toString();