<html>
    <head>
      <base href="https://llvm.org/bugs/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - modulemap umbrellas check for folder existence"
   href="https://llvm.org/bugs/show_bug.cgi?id=30508">30508</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>modulemap umbrellas check for folder existence
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>clang
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>unspecified
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>Modules
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedclangbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>vvasilev@cern.ch
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>dgregor@apple.com, llvm-bugs@lists.llvm.org
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr></table>
      <p>
        <div>
        <pre>cat T.cxx 
#include "A.h"
int i;

cat includes/A.h 
cat includes/module.modulemap 
module NonExistent1 {
  umbrella "NonExistent"
  module * { export * }
}

module NonExistent2 {
  module H1 { header "NonExistent/H1" export * }
  module H2 { header "NonExistent/H2" export * }
}

clang++ -I includes -fmodules -fsyntax-only T.cxx 
includes/module.modulemap:2:12: error: umbrella directory 'NonExistent' not
found umbrella "NonExistent"

If I comment out module NonExistent1 but leave NonExistent2 it compiles just
fine, even if the folder NonExistent does not exist.

IMO, the umbrella module NonExistent1 should behave as NonExistent2, i.e. not
complain if the folder doesn't exist.

This would help users (including our frameworks) shorten the modulemaps, adding
umbrella modules for optional components.</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>