Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions clang/include/clang/Basic/DiagnosticLexKinds.td
Original file line number Diff line number Diff line change
Expand Up @@ -915,8 +915,10 @@ def err_mmap_expected_attribute : Error<"expected an attribute name">;
def warn_mmap_link_redeclaration : Warning<"redeclaration of link library '%0'">,
InGroup<DiagGroup<"module-link-redeclaration">>, DefaultError;
def note_mmap_prev_link_declaration : Note<"previously declared here">;
def err_mmap_submodule_link_decl
: Error<"link declaration is not allowed in submodules">;
def warn_mmap_submodule_link_decl
: Warning<"link declaration is not allowed in submodules">,
InGroup<DiagGroup<"module-submodule-link-decl">>,
DefaultError;
def warn_mmap_unknown_attribute : Warning<"unknown attribute '%0'">,
InGroup<IgnoredAttributes>;
def warn_mmap_mismatched_private_submodule : Warning<
Expand Down
6 changes: 1 addition & 5 deletions clang/lib/Lex/ModuleMapFile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -856,18 +856,14 @@ std::optional<LinkDecl> ModuleMapFileParser::parseLinkDecl(
// Make sure we eat all the tokens when we report the errors so parsing
// can continue.
if (!Allowed) {
Diags.Report(LD.Location, diag::err_mmap_submodule_link_decl);
HadError = true;
return std::nullopt;
Diags.Report(LD.Location, diag::warn_mmap_submodule_link_decl);
}

auto [It, Inserted] =
SeenLinkDecl.insert(std::make_pair(Library, LD.Location));
if (!Inserted) {
Diags.Report(LD.Location, diag::warn_mmap_link_redeclaration) << Library;
Diags.Report(It->second, diag::note_mmap_prev_link_declaration);
HadError = true;
return std::nullopt;
}

return std::move(LD);
Expand Down
2 changes: 1 addition & 1 deletion clang/test/ClangScanDeps/link-libraries-diag-dup.c
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ module C {

// Note that module D does not report an error because it is explicit.
// Therefore we can use CHECK-NEXT for the redeclaration error on line 15.
// CHECK: module.modulemap:6:5: error: link declaration is not allowed in submodules
// CHECK: module.modulemap:6:5: error: link declaration is not allowed in submodules [-Wmodule-submodule-link-decl]
// CHECK-NEXT: module.modulemap:15:3: error: redeclaration of link library 'libraryA' [-Wmodule-link-redeclaration]
// CHECK-NEXT: module.modulemap:14:3: note: previously declared here
// CHECK-NOT: module.modulemap:20:3: error: redeclaration of link library 'libraryA'