forked from OSchip/llvm-project
[Modules] Don't swallow errors when parsing optional attributes.
Differential Revision: http://reviews.llvm.org/D17787 llvm-svn: 262789
This commit is contained in:
parent
cf1a8d6912
commit
5d29dee003
|
@ -1402,7 +1402,9 @@ void ModuleMapParser::parseModuleDecl() {
|
|||
|
||||
// Parse the optional attribute list.
|
||||
Attributes Attrs;
|
||||
parseOptionalAttributes(Attrs);
|
||||
if (parseOptionalAttributes(Attrs))
|
||||
return;
|
||||
|
||||
|
||||
// Parse the opening brace.
|
||||
if (!Tok.is(MMToken::LBrace)) {
|
||||
|
@ -2067,7 +2069,9 @@ void ModuleMapParser::parseConfigMacros() {
|
|||
|
||||
// Parse the optional attributes.
|
||||
Attributes Attrs;
|
||||
parseOptionalAttributes(Attrs);
|
||||
if (parseOptionalAttributes(Attrs))
|
||||
return;
|
||||
|
||||
if (Attrs.IsExhaustive && !ActiveModule->Parent) {
|
||||
ActiveModule->ConfigMacrosExhaustive = true;
|
||||
}
|
||||
|
@ -2215,7 +2219,8 @@ void ModuleMapParser::parseInferredModuleDecl(bool Framework, bool Explicit) {
|
|||
|
||||
// Parse optional attributes.
|
||||
Attributes Attrs;
|
||||
parseOptionalAttributes(Attrs);
|
||||
if (parseOptionalAttributes(Attrs))
|
||||
return;
|
||||
|
||||
if (ActiveModule) {
|
||||
// Note that we have an inferred submodule.
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
// RUN: rm -rf %t.modules
|
||||
// RUN: not %clang_cc1 -fmodules -fmodules-cache-path=%t.modules \
|
||||
// RUN: -fmodule-map-file=%s -I%S -include "Inputs/empty.h" \
|
||||
// RUN: -fsyntax-only -x c++ /dev/null 2>&1 | FileCheck %s
|
||||
|
||||
// CHECK: error: expected ']' to close attribute
|
||||
// CHECK-NOT: error: expected '{' to start module 'A'
|
||||
|
||||
module A [system {
|
||||
header "Inputs/empty.h"
|
||||
private header "Inputs/empty.h"
|
||||
}
|
Loading…
Reference in New Issue