mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-30 22:46:05 +00:00
47 lines
1.7 KiB
C++
47 lines
1.7 KiB
C++
//===------- SemaTemplateVariadic.cpp - C++ Variadic Templates ------------===/
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//===----------------------------------------------------------------------===/
|
|
//
|
|
// This file implements semantic analysis for C++0x variadic templates.
|
|
//===----------------------------------------------------------------------===/
|
|
|
|
#include "clang/Sema/Sema.h"
|
|
#include "clang/Sema/SemaInternal.h"
|
|
#include "clang/AST/Expr.h"
|
|
#include "clang/AST/TypeLoc.h"
|
|
|
|
using namespace clang;
|
|
|
|
bool Sema::DiagnoseUnexpandedParameterPack(SourceLocation Loc,
|
|
TypeSourceInfo *T,
|
|
UnexpandedParameterPackContext UPPC) {
|
|
// C++0x [temp.variadic]p5:
|
|
// An appearance of a name of a parameter pack that is not expanded is
|
|
// ill-formed.
|
|
if (!T->getType()->containsUnexpandedParameterPack())
|
|
return false;
|
|
|
|
// FIXME: Provide the names and locations of the unexpanded parameter packs.
|
|
Diag(Loc, diag::err_unexpanded_parameter_pack)
|
|
<< (int)UPPC << T->getTypeLoc().getSourceRange();
|
|
return true;
|
|
}
|
|
|
|
bool Sema::DiagnoseUnexpandedParameterPack(Expr *E,
|
|
UnexpandedParameterPackContext UPPC) {
|
|
// C++0x [temp.variadic]p5:
|
|
// An appearance of a name of a parameter pack that is not expanded is
|
|
// ill-formed.
|
|
if (!E->containsUnexpandedParameterPack())
|
|
return false;
|
|
|
|
// FIXME: Provide the names and locations of the unexpanded parameter packs.
|
|
Diag(E->getSourceRange().getBegin(), diag::err_unexpanded_parameter_pack)
|
|
<< (int)UPPC << E->getSourceRange();
|
|
return true;
|
|
}
|