forked from OSchip/llvm-project
move a semantic check out of the parser into sema.
llvm-svn: 49273
This commit is contained in:
parent
371ed4e7a9
commit
784903e4c1
|
@ -1304,19 +1304,6 @@ void Parser::ParseFunctionDeclarator(SourceLocation LParenLoc, Declarator &D) {
|
|||
if (Tok.is(tok::kw___attribute))
|
||||
ParmDecl.AddAttributes(ParseAttributes());
|
||||
|
||||
// Verify C99 6.7.5.3p2: The only SCS allowed is 'register'.
|
||||
if (DS.getStorageClassSpec() != DeclSpec::SCS_unspecified &&
|
||||
DS.getStorageClassSpec() != DeclSpec::SCS_register) {
|
||||
Diag(DS.getStorageClassSpecLoc(),
|
||||
diag::err_invalid_storage_class_in_func_decl);
|
||||
DS.ClearStorageClassSpecs();
|
||||
}
|
||||
if (DS.isThreadSpecified()) {
|
||||
Diag(DS.getThreadSpecLoc(),
|
||||
diag::err_invalid_storage_class_in_func_decl);
|
||||
DS.ClearStorageClassSpecs();
|
||||
}
|
||||
|
||||
// Remember this parsed parameter in ParamInfo.
|
||||
IdentifierInfo *ParmII = ParmDecl.getIdentifier();
|
||||
|
||||
|
|
|
@ -504,10 +504,29 @@ Sema::TypeResult Sema::ActOnTypeName(Scope *S, Declarator &D) {
|
|||
return T.getAsOpaquePtr();
|
||||
}
|
||||
|
||||
// Called from Parser::ParseParenDeclarator().
|
||||
/// ActOnParamDeclaratorType - Called from Parser::ParseFunctionDeclarator()
|
||||
/// when analyzing function prototypes.
|
||||
///
|
||||
/// Note: parameters have identifiers, but we don't care about them here, we
|
||||
/// just want the type converted.
|
||||
///
|
||||
Sema::TypeResult Sema::ActOnParamDeclaratorType(Scope *S, Declarator &D) {
|
||||
// Note: parameters have identifiers, but we don't care about them here, we
|
||||
// just want the type converted.
|
||||
DeclSpec &DS = D.getDeclSpec();
|
||||
|
||||
// Verify C99 6.7.5.3p2: The only SCS allowed is 'register'.
|
||||
if (DS.getStorageClassSpec() != DeclSpec::SCS_unspecified &&
|
||||
DS.getStorageClassSpec() != DeclSpec::SCS_register) {
|
||||
Diag(DS.getStorageClassSpecLoc(),
|
||||
diag::err_invalid_storage_class_in_func_decl);
|
||||
DS.ClearStorageClassSpecs();
|
||||
}
|
||||
if (DS.isThreadSpecified()) {
|
||||
Diag(DS.getThreadSpecLoc(),
|
||||
diag::err_invalid_storage_class_in_func_decl);
|
||||
DS.ClearStorageClassSpecs();
|
||||
}
|
||||
|
||||
|
||||
QualType T = GetTypeForDeclarator(D, S);
|
||||
|
||||
assert(!T.isNull() && "GetTypeForDeclarator() returned null type");
|
||||
|
|
Loading…
Reference in New Issue