Sema.cpp revision 13489673b84fafaaf49cf5ae4e3bb9a945524dcb
1//===--- Sema.cpp - AST Builder and Semantic Analysis Implementation ------===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This file implements the actions class which performs semantic analysis and
11// builds an AST out of a parse stream.
12//
13//===----------------------------------------------------------------------===//
14
15#include "clang/Sema/SemaInternal.h"
16#include "clang/Sema/DelayedDiagnostic.h"
17#include "TargetAttributesSema.h"
18#include "llvm/ADT/DenseMap.h"
19#include "llvm/ADT/SmallSet.h"
20#include "llvm/ADT/APFloat.h"
21#include "llvm/Support/CrashRecoveryContext.h"
22#include "clang/Sema/CXXFieldCollector.h"
23#include "clang/Sema/TemplateDeduction.h"
24#include "clang/Sema/ExternalSemaSource.h"
25#include "clang/Sema/ObjCMethodList.h"
26#include "clang/Sema/PrettyDeclStackTrace.h"
27#include "clang/Sema/Scope.h"
28#include "clang/Sema/ScopeInfo.h"
29#include "clang/Sema/SemaConsumer.h"
30#include "clang/AST/ASTContext.h"
31#include "clang/AST/ASTDiagnostic.h"
32#include "clang/AST/DeclCXX.h"
33#include "clang/AST/DeclObjC.h"
34#include "clang/AST/Expr.h"
35#include "clang/AST/ExprCXX.h"
36#include "clang/AST/StmtCXX.h"
37#include "clang/Lex/HeaderSearch.h"
38#include "clang/Lex/Preprocessor.h"
39#include "clang/Basic/FileManager.h"
40#include "clang/Basic/PartialDiagnostic.h"
41#include "clang/Basic/TargetInfo.h"
42using namespace clang;
43using namespace sema;
44
45FunctionScopeInfo::~FunctionScopeInfo() { }
46
47void FunctionScopeInfo::Clear() {
48  HasBranchProtectedScope = false;
49  HasBranchIntoScope = false;
50  HasIndirectGoto = false;
51
52  SwitchStack.clear();
53  Returns.clear();
54  ErrorTrap.reset();
55  PossiblyUnreachableDiags.clear();
56}
57
58BlockScopeInfo::~BlockScopeInfo() { }
59LambdaScopeInfo::~LambdaScopeInfo() { }
60
61PrintingPolicy Sema::getPrintingPolicy(const ASTContext &Context,
62                                       const Preprocessor &PP) {
63  PrintingPolicy Policy = Context.getPrintingPolicy();
64  Policy.Bool = Context.getLangOpts().Bool;
65  if (!Policy.Bool) {
66    if (MacroInfo *BoolMacro = PP.getMacroInfo(&Context.Idents.get("bool"))) {
67      Policy.Bool = BoolMacro->isObjectLike() &&
68        BoolMacro->getNumTokens() == 1 &&
69        BoolMacro->getReplacementToken(0).is(tok::kw__Bool);
70    }
71  }
72
73  return Policy;
74}
75
76void Sema::ActOnTranslationUnitScope(Scope *S) {
77  TUScope = S;
78  PushDeclContext(S, Context.getTranslationUnitDecl());
79
80  VAListTagName = PP.getIdentifierInfo("__va_list_tag");
81}
82
83Sema::Sema(Preprocessor &pp, ASTContext &ctxt, ASTConsumer &consumer,
84           TranslationUnitKind TUKind,
85           CodeCompleteConsumer *CodeCompleter)
86  : TheTargetAttributesSema(0), FPFeatures(pp.getLangOpts()),
87    LangOpts(pp.getLangOpts()), PP(pp), Context(ctxt), Consumer(consumer),
88    Diags(PP.getDiagnostics()), SourceMgr(PP.getSourceManager()),
89    CollectStats(false), ExternalSource(0), CodeCompleter(CodeCompleter),
90    CurContext(0), OriginalLexicalContext(0),
91    PackContext(0), MSStructPragmaOn(false), VisContext(0),
92    ExprNeedsCleanups(false), LateTemplateParser(0), OpaqueParser(0),
93    IdResolver(pp), StdInitializerList(0), CXXTypeInfoDecl(0), MSVCGuidDecl(0),
94    NSNumberDecl(0),
95    NSStringDecl(0), StringWithUTF8StringMethod(0),
96    NSArrayDecl(0), ArrayWithObjectsMethod(0),
97    NSDictionaryDecl(0), DictionaryWithObjectsMethod(0),
98    GlobalNewDeleteDeclared(false),
99    ObjCShouldCallSuperDealloc(false),
100    ObjCShouldCallSuperFinalize(false),
101    TUKind(TUKind),
102    NumSFINAEErrors(0), InFunctionDeclarator(0),
103    AccessCheckingSFINAE(false), InNonInstantiationSFINAEContext(false),
104    NonInstantiationEntries(0), ArgumentPackSubstitutionIndex(-1),
105    CurrentInstantiationScope(0), TyposCorrected(0),
106    AnalysisWarnings(*this)
107{
108  TUScope = 0;
109
110  LoadedExternalKnownNamespaces = false;
111  for (unsigned I = 0; I != NSAPI::NumNSNumberLiteralMethods; ++I)
112    NSNumberLiteralMethods[I] = 0;
113
114  if (getLangOpts().ObjC1)
115    NSAPIObj.reset(new NSAPI(Context));
116
117  if (getLangOpts().CPlusPlus)
118    FieldCollector.reset(new CXXFieldCollector());
119
120  // Tell diagnostics how to render things from the AST library.
121  PP.getDiagnostics().SetArgToStringFn(&FormatASTNodeDiagnosticArgument,
122                                       &Context);
123
124  ExprEvalContexts.push_back(
125        ExpressionEvaluationContextRecord(PotentiallyEvaluated, 0,
126                                          false, 0, false));
127
128  FunctionScopes.push_back(new FunctionScopeInfo(Diags));
129}
130
131void Sema::Initialize() {
132  // Tell the AST consumer about this Sema object.
133  Consumer.Initialize(Context);
134
135  // FIXME: Isn't this redundant with the initialization above?
136  if (SemaConsumer *SC = dyn_cast<SemaConsumer>(&Consumer))
137    SC->InitializeSema(*this);
138
139  // Tell the external Sema source about this Sema object.
140  if (ExternalSemaSource *ExternalSema
141      = dyn_cast_or_null<ExternalSemaSource>(Context.getExternalSource()))
142    ExternalSema->InitializeSema(*this);
143
144  // Initialize predefined 128-bit integer types, if needed.
145  if (PP.getTargetInfo().getPointerWidth(0) >= 64) {
146    // If either of the 128-bit integer types are unavailable to name lookup,
147    // define them now.
148    DeclarationName Int128 = &Context.Idents.get("__int128_t");
149    if (IdResolver.begin(Int128) == IdResolver.end())
150      PushOnScopeChains(Context.getInt128Decl(), TUScope);
151
152    DeclarationName UInt128 = &Context.Idents.get("__uint128_t");
153    if (IdResolver.begin(UInt128) == IdResolver.end())
154      PushOnScopeChains(Context.getUInt128Decl(), TUScope);
155  }
156
157
158  // Initialize predefined Objective-C types:
159  if (PP.getLangOpts().ObjC1) {
160    // If 'SEL' does not yet refer to any declarations, make it refer to the
161    // predefined 'SEL'.
162    DeclarationName SEL = &Context.Idents.get("SEL");
163    if (IdResolver.begin(SEL) == IdResolver.end())
164      PushOnScopeChains(Context.getObjCSelDecl(), TUScope);
165
166    // If 'id' does not yet refer to any declarations, make it refer to the
167    // predefined 'id'.
168    DeclarationName Id = &Context.Idents.get("id");
169    if (IdResolver.begin(Id) == IdResolver.end())
170      PushOnScopeChains(Context.getObjCIdDecl(), TUScope);
171
172    // Create the built-in typedef for 'Class'.
173    DeclarationName Class = &Context.Idents.get("Class");
174    if (IdResolver.begin(Class) == IdResolver.end())
175      PushOnScopeChains(Context.getObjCClassDecl(), TUScope);
176
177    // Create the built-in forward declaratino for 'Protocol'.
178    DeclarationName Protocol = &Context.Idents.get("Protocol");
179    if (IdResolver.begin(Protocol) == IdResolver.end())
180      PushOnScopeChains(Context.getObjCProtocolDecl(), TUScope);
181  }
182}
183
184Sema::~Sema() {
185  if (PackContext) FreePackedContext();
186  if (VisContext) FreeVisContext();
187  delete TheTargetAttributesSema;
188  MSStructPragmaOn = false;
189  // Kill all the active scopes.
190  for (unsigned I = 1, E = FunctionScopes.size(); I != E; ++I)
191    delete FunctionScopes[I];
192  if (FunctionScopes.size() == 1)
193    delete FunctionScopes[0];
194
195  // Tell the SemaConsumer to forget about us; we're going out of scope.
196  if (SemaConsumer *SC = dyn_cast<SemaConsumer>(&Consumer))
197    SC->ForgetSema();
198
199  // Detach from the external Sema source.
200  if (ExternalSemaSource *ExternalSema
201        = dyn_cast_or_null<ExternalSemaSource>(Context.getExternalSource()))
202    ExternalSema->ForgetSema();
203}
204
205/// makeUnavailableInSystemHeader - There is an error in the current
206/// context.  If we're still in a system header, and we can plausibly
207/// make the relevant declaration unavailable instead of erroring, do
208/// so and return true.
209bool Sema::makeUnavailableInSystemHeader(SourceLocation loc,
210                                         StringRef msg) {
211  // If we're not in a function, it's an error.
212  FunctionDecl *fn = dyn_cast<FunctionDecl>(CurContext);
213  if (!fn) return false;
214
215  // If we're in template instantiation, it's an error.
216  if (!ActiveTemplateInstantiations.empty())
217    return false;
218
219  // If that function's not in a system header, it's an error.
220  if (!Context.getSourceManager().isInSystemHeader(loc))
221    return false;
222
223  // If the function is already unavailable, it's not an error.
224  if (fn->hasAttr<UnavailableAttr>()) return true;
225
226  fn->addAttr(new (Context) UnavailableAttr(loc, Context, msg));
227  return true;
228}
229
230ASTMutationListener *Sema::getASTMutationListener() const {
231  return getASTConsumer().GetASTMutationListener();
232}
233
234/// \brief Print out statistics about the semantic analysis.
235void Sema::PrintStats() const {
236  llvm::errs() << "\n*** Semantic Analysis Stats:\n";
237  llvm::errs() << NumSFINAEErrors << " SFINAE diagnostics trapped.\n";
238
239  BumpAlloc.PrintStats();
240  AnalysisWarnings.PrintStats();
241}
242
243/// ImpCastExprToType - If Expr is not of type 'Type', insert an implicit cast.
244/// If there is already an implicit cast, merge into the existing one.
245/// The result is of the given category.
246ExprResult Sema::ImpCastExprToType(Expr *E, QualType Ty,
247                                   CastKind Kind, ExprValueKind VK,
248                                   const CXXCastPath *BasePath,
249                                   CheckedConversionKind CCK) {
250#ifndef NDEBUG
251  if (VK == VK_RValue && !E->isRValue()) {
252    switch (Kind) {
253    default:
254      assert(0 && "can't implicitly cast lvalue to rvalue with this cast kind");
255    case CK_LValueToRValue:
256    case CK_ArrayToPointerDecay:
257    case CK_FunctionToPointerDecay:
258    case CK_ToVoid:
259      break;
260    }
261  }
262  assert((VK == VK_RValue || !E->isRValue()) && "can't cast rvalue to lvalue");
263#endif
264
265  QualType ExprTy = Context.getCanonicalType(E->getType());
266  QualType TypeTy = Context.getCanonicalType(Ty);
267
268  if (ExprTy == TypeTy)
269    return Owned(E);
270
271  if (getLangOpts().ObjCAutoRefCount)
272    CheckObjCARCConversion(SourceRange(), Ty, E, CCK);
273
274  // If this is a derived-to-base cast to a through a virtual base, we
275  // need a vtable.
276  if (Kind == CK_DerivedToBase &&
277      BasePathInvolvesVirtualBase(*BasePath)) {
278    QualType T = E->getType();
279    if (const PointerType *Pointer = T->getAs<PointerType>())
280      T = Pointer->getPointeeType();
281    if (const RecordType *RecordTy = T->getAs<RecordType>())
282      MarkVTableUsed(E->getLocStart(),
283                     cast<CXXRecordDecl>(RecordTy->getDecl()));
284  }
285
286  if (ImplicitCastExpr *ImpCast = dyn_cast<ImplicitCastExpr>(E)) {
287    if (ImpCast->getCastKind() == Kind && (!BasePath || BasePath->empty())) {
288      ImpCast->setType(Ty);
289      ImpCast->setValueKind(VK);
290      return Owned(E);
291    }
292  }
293
294  return Owned(ImplicitCastExpr::Create(Context, Ty, Kind, E, BasePath, VK));
295}
296
297/// ScalarTypeToBooleanCastKind - Returns the cast kind corresponding
298/// to the conversion from scalar type ScalarTy to the Boolean type.
299CastKind Sema::ScalarTypeToBooleanCastKind(QualType ScalarTy) {
300  switch (ScalarTy->getScalarTypeKind()) {
301  case Type::STK_Bool: return CK_NoOp;
302  case Type::STK_CPointer: return CK_PointerToBoolean;
303  case Type::STK_BlockPointer: return CK_PointerToBoolean;
304  case Type::STK_ObjCObjectPointer: return CK_PointerToBoolean;
305  case Type::STK_MemberPointer: return CK_MemberPointerToBoolean;
306  case Type::STK_Integral: return CK_IntegralToBoolean;
307  case Type::STK_Floating: return CK_FloatingToBoolean;
308  case Type::STK_IntegralComplex: return CK_IntegralComplexToBoolean;
309  case Type::STK_FloatingComplex: return CK_FloatingComplexToBoolean;
310  }
311  return CK_Invalid;
312}
313
314/// \brief Used to prune the decls of Sema's UnusedFileScopedDecls vector.
315static bool ShouldRemoveFromUnused(Sema *SemaRef, const DeclaratorDecl *D) {
316  if (D->isUsed())
317    return true;
318
319  if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(D)) {
320    // UnusedFileScopedDecls stores the first declaration.
321    // The declaration may have become definition so check again.
322    const FunctionDecl *DeclToCheck;
323    if (FD->hasBody(DeclToCheck))
324      return !SemaRef->ShouldWarnIfUnusedFileScopedDecl(DeclToCheck);
325
326    // Later redecls may add new information resulting in not having to warn,
327    // so check again.
328    DeclToCheck = FD->getMostRecentDecl();
329    if (DeclToCheck != FD)
330      return !SemaRef->ShouldWarnIfUnusedFileScopedDecl(DeclToCheck);
331  }
332
333  if (const VarDecl *VD = dyn_cast<VarDecl>(D)) {
334    // UnusedFileScopedDecls stores the first declaration.
335    // The declaration may have become definition so check again.
336    const VarDecl *DeclToCheck = VD->getDefinition();
337    if (DeclToCheck)
338      return !SemaRef->ShouldWarnIfUnusedFileScopedDecl(DeclToCheck);
339
340    // Later redecls may add new information resulting in not having to warn,
341    // so check again.
342    DeclToCheck = VD->getMostRecentDecl();
343    if (DeclToCheck != VD)
344      return !SemaRef->ShouldWarnIfUnusedFileScopedDecl(DeclToCheck);
345  }
346
347  return false;
348}
349
350namespace {
351  struct UndefinedInternal {
352    NamedDecl *decl;
353    FullSourceLoc useLoc;
354
355    UndefinedInternal(NamedDecl *decl, FullSourceLoc useLoc)
356      : decl(decl), useLoc(useLoc) {}
357  };
358
359  bool operator<(const UndefinedInternal &l, const UndefinedInternal &r) {
360    return l.useLoc.isBeforeInTranslationUnitThan(r.useLoc);
361  }
362}
363
364/// checkUndefinedInternals - Check for undefined objects with internal linkage.
365static void checkUndefinedInternals(Sema &S) {
366  if (S.UndefinedInternals.empty()) return;
367
368  // Collect all the still-undefined entities with internal linkage.
369  SmallVector<UndefinedInternal, 16> undefined;
370  for (llvm::DenseMap<NamedDecl*,SourceLocation>::iterator
371         i = S.UndefinedInternals.begin(), e = S.UndefinedInternals.end();
372       i != e; ++i) {
373    NamedDecl *decl = i->first;
374
375    // Ignore attributes that have become invalid.
376    if (decl->isInvalidDecl()) continue;
377
378    // __attribute__((weakref)) is basically a definition.
379    if (decl->hasAttr<WeakRefAttr>()) continue;
380
381    if (FunctionDecl *fn = dyn_cast<FunctionDecl>(decl)) {
382      if (fn->isPure() || fn->hasBody())
383        continue;
384    } else {
385      if (cast<VarDecl>(decl)->hasDefinition() != VarDecl::DeclarationOnly)
386        continue;
387    }
388
389    // We build a FullSourceLoc so that we can sort with array_pod_sort.
390    FullSourceLoc loc(i->second, S.Context.getSourceManager());
391    undefined.push_back(UndefinedInternal(decl, loc));
392  }
393
394  if (undefined.empty()) return;
395
396  // Sort (in order of use site) so that we're not (as) dependent on
397  // the iteration order through an llvm::DenseMap.
398  llvm::array_pod_sort(undefined.begin(), undefined.end());
399
400  for (SmallVectorImpl<UndefinedInternal>::iterator
401         i = undefined.begin(), e = undefined.end(); i != e; ++i) {
402    NamedDecl *decl = i->decl;
403    S.Diag(decl->getLocation(), diag::warn_undefined_internal)
404      << isa<VarDecl>(decl) << decl;
405    S.Diag(i->useLoc, diag::note_used_here);
406  }
407}
408
409void Sema::LoadExternalWeakUndeclaredIdentifiers() {
410  if (!ExternalSource)
411    return;
412
413  SmallVector<std::pair<IdentifierInfo *, WeakInfo>, 4> WeakIDs;
414  ExternalSource->ReadWeakUndeclaredIdentifiers(WeakIDs);
415  for (unsigned I = 0, N = WeakIDs.size(); I != N; ++I) {
416    llvm::DenseMap<IdentifierInfo*,WeakInfo>::iterator Pos
417      = WeakUndeclaredIdentifiers.find(WeakIDs[I].first);
418    if (Pos != WeakUndeclaredIdentifiers.end())
419      continue;
420
421    WeakUndeclaredIdentifiers.insert(WeakIDs[I]);
422  }
423}
424
425/// ActOnEndOfTranslationUnit - This is called at the very end of the
426/// translation unit when EOF is reached and all but the top-level scope is
427/// popped.
428void Sema::ActOnEndOfTranslationUnit() {
429  assert(DelayedDiagnostics.getCurrentPool() == NULL
430         && "reached end of translation unit with a pool attached?");
431
432  // Only complete translation units define vtables and perform implicit
433  // instantiations.
434  if (TUKind == TU_Complete) {
435    DiagnoseUseOfUnimplementedSelectors();
436
437    // If any dynamic classes have their key function defined within
438    // this translation unit, then those vtables are considered "used" and must
439    // be emitted.
440    for (DynamicClassesType::iterator I = DynamicClasses.begin(ExternalSource),
441                                      E = DynamicClasses.end();
442         I != E; ++I) {
443      assert(!(*I)->isDependentType() &&
444             "Should not see dependent types here!");
445      if (const CXXMethodDecl *KeyFunction = Context.getKeyFunction(*I)) {
446        const FunctionDecl *Definition = 0;
447        if (KeyFunction->hasBody(Definition))
448          MarkVTableUsed(Definition->getLocation(), *I, true);
449      }
450    }
451
452    // If DefinedUsedVTables ends up marking any virtual member functions it
453    // might lead to more pending template instantiations, which we then need
454    // to instantiate.
455    DefineUsedVTables();
456
457    // C++: Perform implicit template instantiations.
458    //
459    // FIXME: When we perform these implicit instantiations, we do not
460    // carefully keep track of the point of instantiation (C++ [temp.point]).
461    // This means that name lookup that occurs within the template
462    // instantiation will always happen at the end of the translation unit,
463    // so it will find some names that should not be found. Although this is
464    // common behavior for C++ compilers, it is technically wrong. In the
465    // future, we either need to be able to filter the results of name lookup
466    // or we need to perform template instantiations earlier.
467    PerformPendingInstantiations();
468  }
469
470  // Remove file scoped decls that turned out to be used.
471  UnusedFileScopedDecls.erase(std::remove_if(UnusedFileScopedDecls.begin(0,
472                                                                         true),
473                                             UnusedFileScopedDecls.end(),
474                              std::bind1st(std::ptr_fun(ShouldRemoveFromUnused),
475                                           this)),
476                              UnusedFileScopedDecls.end());
477
478  if (TUKind == TU_Prefix) {
479    // Translation unit prefixes don't need any of the checking below.
480    TUScope = 0;
481    return;
482  }
483
484  // Check for #pragma weak identifiers that were never declared
485  // FIXME: This will cause diagnostics to be emitted in a non-determinstic
486  // order!  Iterating over a densemap like this is bad.
487  LoadExternalWeakUndeclaredIdentifiers();
488  for (llvm::DenseMap<IdentifierInfo*,WeakInfo>::iterator
489       I = WeakUndeclaredIdentifiers.begin(),
490       E = WeakUndeclaredIdentifiers.end(); I != E; ++I) {
491    if (I->second.getUsed()) continue;
492
493    Diag(I->second.getLocation(), diag::warn_weak_identifier_undeclared)
494      << I->first;
495  }
496
497  if (TUKind == TU_Module) {
498    // If we are building a module, resolve all of the exported declarations
499    // now.
500    if (Module *CurrentModule = PP.getCurrentModule()) {
501      ModuleMap &ModMap = PP.getHeaderSearchInfo().getModuleMap();
502
503      llvm::SmallVector<Module *, 2> Stack;
504      Stack.push_back(CurrentModule);
505      while (!Stack.empty()) {
506        Module *Mod = Stack.back();
507        Stack.pop_back();
508
509        // Resolve the exported declarations.
510        // FIXME: Actually complain, once we figure out how to teach the
511        // diagnostic client to deal with complains in the module map at this
512        // point.
513        ModMap.resolveExports(Mod, /*Complain=*/false);
514
515        // Queue the submodules, so their exports will also be resolved.
516        for (Module::submodule_iterator Sub = Mod->submodule_begin(),
517                                     SubEnd = Mod->submodule_end();
518             Sub != SubEnd; ++Sub) {
519          Stack.push_back(*Sub);
520        }
521      }
522    }
523
524    // Modules don't need any of the checking below.
525    TUScope = 0;
526    return;
527  }
528
529  // C99 6.9.2p2:
530  //   A declaration of an identifier for an object that has file
531  //   scope without an initializer, and without a storage-class
532  //   specifier or with the storage-class specifier static,
533  //   constitutes a tentative definition. If a translation unit
534  //   contains one or more tentative definitions for an identifier,
535  //   and the translation unit contains no external definition for
536  //   that identifier, then the behavior is exactly as if the
537  //   translation unit contains a file scope declaration of that
538  //   identifier, with the composite type as of the end of the
539  //   translation unit, with an initializer equal to 0.
540  llvm::SmallSet<VarDecl *, 32> Seen;
541  for (TentativeDefinitionsType::iterator
542            T = TentativeDefinitions.begin(ExternalSource),
543         TEnd = TentativeDefinitions.end();
544       T != TEnd; ++T)
545  {
546    VarDecl *VD = (*T)->getActingDefinition();
547
548    // If the tentative definition was completed, getActingDefinition() returns
549    // null. If we've already seen this variable before, insert()'s second
550    // return value is false.
551    if (VD == 0 || VD->isInvalidDecl() || !Seen.insert(VD))
552      continue;
553
554    if (const IncompleteArrayType *ArrayT
555        = Context.getAsIncompleteArrayType(VD->getType())) {
556      if (RequireCompleteType(VD->getLocation(),
557                              ArrayT->getElementType(),
558                              diag::err_tentative_def_incomplete_type_arr)) {
559        VD->setInvalidDecl();
560        continue;
561      }
562
563      // Set the length of the array to 1 (C99 6.9.2p5).
564      Diag(VD->getLocation(), diag::warn_tentative_incomplete_array);
565      llvm::APInt One(Context.getTypeSize(Context.getSizeType()), true);
566      QualType T = Context.getConstantArrayType(ArrayT->getElementType(),
567                                                One, ArrayType::Normal, 0);
568      VD->setType(T);
569    } else if (RequireCompleteType(VD->getLocation(), VD->getType(),
570                                   diag::err_tentative_def_incomplete_type))
571      VD->setInvalidDecl();
572
573    // Notify the consumer that we've completed a tentative definition.
574    if (!VD->isInvalidDecl())
575      Consumer.CompleteTentativeDefinition(VD);
576
577  }
578
579  if (LangOpts.CPlusPlus0x &&
580      Diags.getDiagnosticLevel(diag::warn_delegating_ctor_cycle,
581                               SourceLocation())
582        != DiagnosticsEngine::Ignored)
583    CheckDelegatingCtorCycles();
584
585  // If there were errors, disable 'unused' warnings since they will mostly be
586  // noise.
587  if (!Diags.hasErrorOccurred()) {
588    // Output warning for unused file scoped decls.
589    for (UnusedFileScopedDeclsType::iterator
590           I = UnusedFileScopedDecls.begin(ExternalSource),
591           E = UnusedFileScopedDecls.end(); I != E; ++I) {
592      if (ShouldRemoveFromUnused(this, *I))
593        continue;
594
595      if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(*I)) {
596        const FunctionDecl *DiagD;
597        if (!FD->hasBody(DiagD))
598          DiagD = FD;
599        if (DiagD->isDeleted())
600          continue; // Deleted functions are supposed to be unused.
601        if (DiagD->isReferenced()) {
602          if (isa<CXXMethodDecl>(DiagD))
603            Diag(DiagD->getLocation(), diag::warn_unneeded_member_function)
604                  << DiagD->getDeclName();
605          else
606            Diag(DiagD->getLocation(), diag::warn_unneeded_internal_decl)
607                  << /*function*/0 << DiagD->getDeclName();
608        } else {
609          Diag(DiagD->getLocation(),
610               isa<CXXMethodDecl>(DiagD) ? diag::warn_unused_member_function
611                                         : diag::warn_unused_function)
612                << DiagD->getDeclName();
613        }
614      } else {
615        const VarDecl *DiagD = cast<VarDecl>(*I)->getDefinition();
616        if (!DiagD)
617          DiagD = cast<VarDecl>(*I);
618        if (DiagD->isReferenced()) {
619          Diag(DiagD->getLocation(), diag::warn_unneeded_internal_decl)
620                << /*variable*/1 << DiagD->getDeclName();
621        } else {
622          Diag(DiagD->getLocation(), diag::warn_unused_variable)
623                << DiagD->getDeclName();
624        }
625      }
626    }
627
628    checkUndefinedInternals(*this);
629  }
630
631  // Check we've noticed that we're no longer parsing the initializer for every
632  // variable. If we miss cases, then at best we have a performance issue and
633  // at worst a rejects-valid bug.
634  assert(ParsingInitForAutoVars.empty() &&
635         "Didn't unmark var as having its initializer parsed");
636
637  TUScope = 0;
638}
639
640
641//===----------------------------------------------------------------------===//
642// Helper functions.
643//===----------------------------------------------------------------------===//
644
645DeclContext *Sema::getFunctionLevelDeclContext() {
646  DeclContext *DC = CurContext;
647
648  while (true) {
649    if (isa<BlockDecl>(DC) || isa<EnumDecl>(DC)) {
650      DC = DC->getParent();
651    } else if (isa<CXXMethodDecl>(DC) &&
652               cast<CXXMethodDecl>(DC)->getOverloadedOperator() == OO_Call &&
653               cast<CXXRecordDecl>(DC->getParent())->isLambda()) {
654      DC = DC->getParent()->getParent();
655    }
656    else break;
657  }
658
659  return DC;
660}
661
662/// getCurFunctionDecl - If inside of a function body, this returns a pointer
663/// to the function decl for the function being parsed.  If we're currently
664/// in a 'block', this returns the containing context.
665FunctionDecl *Sema::getCurFunctionDecl() {
666  DeclContext *DC = getFunctionLevelDeclContext();
667  return dyn_cast<FunctionDecl>(DC);
668}
669
670ObjCMethodDecl *Sema::getCurMethodDecl() {
671  DeclContext *DC = getFunctionLevelDeclContext();
672  return dyn_cast<ObjCMethodDecl>(DC);
673}
674
675NamedDecl *Sema::getCurFunctionOrMethodDecl() {
676  DeclContext *DC = getFunctionLevelDeclContext();
677  if (isa<ObjCMethodDecl>(DC) || isa<FunctionDecl>(DC))
678    return cast<NamedDecl>(DC);
679  return 0;
680}
681
682void Sema::EmitCurrentDiagnostic(unsigned DiagID) {
683  // FIXME: It doesn't make sense to me that DiagID is an incoming argument here
684  // and yet we also use the current diag ID on the DiagnosticsEngine. This has
685  // been made more painfully obvious by the refactor that introduced this
686  // function, but it is possible that the incoming argument can be
687  // eliminnated. If it truly cannot be (for example, there is some reentrancy
688  // issue I am not seeing yet), then there should at least be a clarifying
689  // comment somewhere.
690  if (llvm::Optional<TemplateDeductionInfo*> Info = isSFINAEContext()) {
691    switch (DiagnosticIDs::getDiagnosticSFINAEResponse(
692              Diags.getCurrentDiagID())) {
693    case DiagnosticIDs::SFINAE_Report:
694      // We'll report the diagnostic below.
695      break;
696
697    case DiagnosticIDs::SFINAE_SubstitutionFailure:
698      // Count this failure so that we know that template argument deduction
699      // has failed.
700      ++NumSFINAEErrors;
701      Diags.setLastDiagnosticIgnored();
702      Diags.Clear();
703      return;
704
705    case DiagnosticIDs::SFINAE_AccessControl: {
706      // Per C++ Core Issue 1170, access control is part of SFINAE.
707      // Additionally, the AccessCheckingSFINAE flag can be used to temporarily
708      // make access control a part of SFINAE for the purposes of checking
709      // type traits.
710      if (!AccessCheckingSFINAE && !getLangOpts().CPlusPlus0x)
711        break;
712
713      SourceLocation Loc = Diags.getCurrentDiagLoc();
714
715      // Suppress this diagnostic.
716      ++NumSFINAEErrors;
717      Diags.setLastDiagnosticIgnored();
718      Diags.Clear();
719
720      // Now the diagnostic state is clear, produce a C++98 compatibility
721      // warning.
722      Diag(Loc, diag::warn_cxx98_compat_sfinae_access_control);
723
724      // The last diagnostic which Sema produced was ignored. Suppress any
725      // notes attached to it.
726      Diags.setLastDiagnosticIgnored();
727      return;
728    }
729
730    case DiagnosticIDs::SFINAE_Suppress:
731      // Make a copy of this suppressed diagnostic and store it with the
732      // template-deduction information;
733      Diagnostic DiagInfo(&Diags);
734
735      if (*Info)
736        (*Info)->addSuppressedDiagnostic(DiagInfo.getLocation(),
737                        PartialDiagnostic(DiagInfo,Context.getDiagAllocator()));
738
739      // Suppress this diagnostic.
740      Diags.setLastDiagnosticIgnored();
741      Diags.Clear();
742      return;
743    }
744  }
745
746  // Set up the context's printing policy based on our current state.
747  Context.setPrintingPolicy(getPrintingPolicy());
748
749  // Emit the diagnostic.
750  if (!Diags.EmitCurrentDiagnostic())
751    return;
752
753  // If this is not a note, and we're in a template instantiation
754  // that is different from the last template instantiation where
755  // we emitted an error, print a template instantiation
756  // backtrace.
757  if (!DiagnosticIDs::isBuiltinNote(DiagID) &&
758      !ActiveTemplateInstantiations.empty() &&
759      ActiveTemplateInstantiations.back()
760        != LastTemplateInstantiationErrorContext) {
761    PrintInstantiationStack();
762    LastTemplateInstantiationErrorContext = ActiveTemplateInstantiations.back();
763  }
764}
765
766Sema::SemaDiagnosticBuilder
767Sema::Diag(SourceLocation Loc, const PartialDiagnostic& PD) {
768  SemaDiagnosticBuilder Builder(Diag(Loc, PD.getDiagID()));
769  PD.Emit(Builder);
770
771  return Builder;
772}
773
774/// \brief Looks through the macro-expansion chain for the given
775/// location, looking for a macro expansion with the given name.
776/// If one is found, returns true and sets the location to that
777/// expansion loc.
778bool Sema::findMacroSpelling(SourceLocation &locref, StringRef name) {
779  SourceLocation loc = locref;
780  if (!loc.isMacroID()) return false;
781
782  // There's no good way right now to look at the intermediate
783  // expansions, so just jump to the expansion location.
784  loc = getSourceManager().getExpansionLoc(loc);
785
786  // If that's written with the name, stop here.
787  SmallVector<char, 16> buffer;
788  if (getPreprocessor().getSpelling(loc, buffer) == name) {
789    locref = loc;
790    return true;
791  }
792  return false;
793}
794
795/// \brief Determines the active Scope associated with the given declaration
796/// context.
797///
798/// This routine maps a declaration context to the active Scope object that
799/// represents that declaration context in the parser. It is typically used
800/// from "scope-less" code (e.g., template instantiation, lazy creation of
801/// declarations) that injects a name for name-lookup purposes and, therefore,
802/// must update the Scope.
803///
804/// \returns The scope corresponding to the given declaraion context, or NULL
805/// if no such scope is open.
806Scope *Sema::getScopeForContext(DeclContext *Ctx) {
807
808  if (!Ctx)
809    return 0;
810
811  Ctx = Ctx->getPrimaryContext();
812  for (Scope *S = getCurScope(); S; S = S->getParent()) {
813    // Ignore scopes that cannot have declarations. This is important for
814    // out-of-line definitions of static class members.
815    if (S->getFlags() & (Scope::DeclScope | Scope::TemplateParamScope))
816      if (DeclContext *Entity = static_cast<DeclContext *> (S->getEntity()))
817        if (Ctx == Entity->getPrimaryContext())
818          return S;
819  }
820
821  return 0;
822}
823
824/// \brief Enter a new function scope
825void Sema::PushFunctionScope() {
826  if (FunctionScopes.size() == 1) {
827    // Use the "top" function scope rather than having to allocate
828    // memory for a new scope.
829    FunctionScopes.back()->Clear();
830    FunctionScopes.push_back(FunctionScopes.back());
831    return;
832  }
833
834  FunctionScopes.push_back(new FunctionScopeInfo(getDiagnostics()));
835}
836
837void Sema::PushBlockScope(Scope *BlockScope, BlockDecl *Block) {
838  FunctionScopes.push_back(new BlockScopeInfo(getDiagnostics(),
839                                              BlockScope, Block));
840}
841
842void Sema::PushLambdaScope(CXXRecordDecl *Lambda,
843                           CXXMethodDecl *CallOperator) {
844  FunctionScopes.push_back(new LambdaScopeInfo(getDiagnostics(), Lambda,
845                                               CallOperator));
846}
847
848void Sema::PopFunctionScopeInfo(const AnalysisBasedWarnings::Policy *WP,
849                                const Decl *D, const BlockExpr *blkExpr) {
850  FunctionScopeInfo *Scope = FunctionScopes.pop_back_val();
851  assert(!FunctionScopes.empty() && "mismatched push/pop!");
852
853  // Issue any analysis-based warnings.
854  if (WP && D)
855    AnalysisWarnings.IssueWarnings(*WP, Scope, D, blkExpr);
856  else {
857    for (SmallVectorImpl<sema::PossiblyUnreachableDiag>::iterator
858         i = Scope->PossiblyUnreachableDiags.begin(),
859         e = Scope->PossiblyUnreachableDiags.end();
860         i != e; ++i) {
861      const sema::PossiblyUnreachableDiag &D = *i;
862      Diag(D.Loc, D.PD);
863    }
864  }
865
866  if (FunctionScopes.back() != Scope) {
867    delete Scope;
868  }
869}
870
871void Sema::PushCompoundScope() {
872  getCurFunction()->CompoundScopes.push_back(CompoundScopeInfo());
873}
874
875void Sema::PopCompoundScope() {
876  FunctionScopeInfo *CurFunction = getCurFunction();
877  assert(!CurFunction->CompoundScopes.empty() && "mismatched push/pop");
878
879  CurFunction->CompoundScopes.pop_back();
880}
881
882/// \brief Determine whether any errors occurred within this function/method/
883/// block.
884bool Sema::hasAnyUnrecoverableErrorsInThisFunction() const {
885  return getCurFunction()->ErrorTrap.hasUnrecoverableErrorOccurred();
886}
887
888BlockScopeInfo *Sema::getCurBlock() {
889  if (FunctionScopes.empty())
890    return 0;
891
892  return dyn_cast<BlockScopeInfo>(FunctionScopes.back());
893}
894
895LambdaScopeInfo *Sema::getCurLambda() {
896  if (FunctionScopes.empty())
897    return 0;
898
899  return dyn_cast<LambdaScopeInfo>(FunctionScopes.back());
900}
901
902// Pin this vtable to this file.
903ExternalSemaSource::~ExternalSemaSource() {}
904
905void ExternalSemaSource::ReadMethodPool(Selector Sel) { }
906
907void ExternalSemaSource::ReadKnownNamespaces(
908                           SmallVectorImpl<NamespaceDecl *> &Namespaces) {
909}
910
911void PrettyDeclStackTraceEntry::print(raw_ostream &OS) const {
912  SourceLocation Loc = this->Loc;
913  if (!Loc.isValid() && TheDecl) Loc = TheDecl->getLocation();
914  if (Loc.isValid()) {
915    Loc.print(OS, S.getSourceManager());
916    OS << ": ";
917  }
918  OS << Message;
919
920  if (TheDecl && isa<NamedDecl>(TheDecl)) {
921    std::string Name = cast<NamedDecl>(TheDecl)->getNameAsString();
922    if (!Name.empty())
923      OS << " '" << Name << '\'';
924  }
925
926  OS << '\n';
927}
928
929/// \brief Figure out if an expression could be turned into a call.
930///
931/// Use this when trying to recover from an error where the programmer may have
932/// written just the name of a function instead of actually calling it.
933///
934/// \param E - The expression to examine.
935/// \param ZeroArgCallReturnTy - If the expression can be turned into a call
936///  with no arguments, this parameter is set to the type returned by such a
937///  call; otherwise, it is set to an empty QualType.
938/// \param OverloadSet - If the expression is an overloaded function
939///  name, this parameter is populated with the decls of the various overloads.
940bool Sema::isExprCallable(const Expr &E, QualType &ZeroArgCallReturnTy,
941                          UnresolvedSetImpl &OverloadSet) {
942  ZeroArgCallReturnTy = QualType();
943  OverloadSet.clear();
944
945  if (E.getType() == Context.OverloadTy) {
946    OverloadExpr::FindResult FR = OverloadExpr::find(const_cast<Expr*>(&E));
947    const OverloadExpr *Overloads = FR.Expression;
948
949    for (OverloadExpr::decls_iterator it = Overloads->decls_begin(),
950         DeclsEnd = Overloads->decls_end(); it != DeclsEnd; ++it) {
951      OverloadSet.addDecl(*it);
952
953      // Check whether the function is a non-template which takes no
954      // arguments.
955      if (const FunctionDecl *OverloadDecl
956            = dyn_cast<FunctionDecl>((*it)->getUnderlyingDecl())) {
957        if (OverloadDecl->getMinRequiredArguments() == 0)
958          ZeroArgCallReturnTy = OverloadDecl->getResultType();
959      }
960    }
961
962    // Ignore overloads that are pointer-to-member constants.
963    if (FR.HasFormOfMemberPointer)
964      return false;
965
966    return true;
967  }
968
969  if (const DeclRefExpr *DeclRef = dyn_cast<DeclRefExpr>(E.IgnoreParens())) {
970    if (const FunctionDecl *Fun = dyn_cast<FunctionDecl>(DeclRef->getDecl())) {
971      if (Fun->getMinRequiredArguments() == 0)
972        ZeroArgCallReturnTy = Fun->getResultType();
973      return true;
974    }
975  }
976
977  // We don't have an expression that's convenient to get a FunctionDecl from,
978  // but we can at least check if the type is "function of 0 arguments".
979  QualType ExprTy = E.getType();
980  const FunctionType *FunTy = NULL;
981  QualType PointeeTy = ExprTy->getPointeeType();
982  if (!PointeeTy.isNull())
983    FunTy = PointeeTy->getAs<FunctionType>();
984  if (!FunTy)
985    FunTy = ExprTy->getAs<FunctionType>();
986  if (!FunTy && ExprTy == Context.BoundMemberTy) {
987    // Look for the bound-member type.  If it's still overloaded, give up,
988    // although we probably should have fallen into the OverloadExpr case above
989    // if we actually have an overloaded bound member.
990    QualType BoundMemberTy = Expr::findBoundMemberType(&E);
991    if (!BoundMemberTy.isNull())
992      FunTy = BoundMemberTy->castAs<FunctionType>();
993  }
994
995  if (const FunctionProtoType *FPT =
996      dyn_cast_or_null<FunctionProtoType>(FunTy)) {
997    if (FPT->getNumArgs() == 0)
998      ZeroArgCallReturnTy = FunTy->getResultType();
999    return true;
1000  }
1001  return false;
1002}
1003
1004/// \brief Give notes for a set of overloads.
1005///
1006/// A companion to isExprCallable. In cases when the name that the programmer
1007/// wrote was an overloaded function, we may be able to make some guesses about
1008/// plausible overloads based on their return types; such guesses can be handed
1009/// off to this method to be emitted as notes.
1010///
1011/// \param Overloads - The overloads to note.
1012/// \param FinalNoteLoc - If we've suppressed printing some overloads due to
1013///  -fshow-overloads=best, this is the location to attach to the note about too
1014///  many candidates. Typically this will be the location of the original
1015///  ill-formed expression.
1016static void noteOverloads(Sema &S, const UnresolvedSetImpl &Overloads,
1017                          const SourceLocation FinalNoteLoc) {
1018  int ShownOverloads = 0;
1019  int SuppressedOverloads = 0;
1020  for (UnresolvedSetImpl::iterator It = Overloads.begin(),
1021       DeclsEnd = Overloads.end(); It != DeclsEnd; ++It) {
1022    // FIXME: Magic number for max shown overloads stolen from
1023    // OverloadCandidateSet::NoteCandidates.
1024    if (ShownOverloads >= 4 &&
1025        S.Diags.getShowOverloads() == DiagnosticsEngine::Ovl_Best) {
1026      ++SuppressedOverloads;
1027      continue;
1028    }
1029
1030    NamedDecl *Fn = (*It)->getUnderlyingDecl();
1031    S.Diag(Fn->getLocation(), diag::note_possible_target_of_call);
1032    ++ShownOverloads;
1033  }
1034
1035  if (SuppressedOverloads)
1036    S.Diag(FinalNoteLoc, diag::note_ovl_too_many_candidates)
1037      << SuppressedOverloads;
1038}
1039
1040static void notePlausibleOverloads(Sema &S, SourceLocation Loc,
1041                                   const UnresolvedSetImpl &Overloads,
1042                                   bool (*IsPlausibleResult)(QualType)) {
1043  if (!IsPlausibleResult)
1044    return noteOverloads(S, Overloads, Loc);
1045
1046  UnresolvedSet<2> PlausibleOverloads;
1047  for (OverloadExpr::decls_iterator It = Overloads.begin(),
1048         DeclsEnd = Overloads.end(); It != DeclsEnd; ++It) {
1049    const FunctionDecl *OverloadDecl = cast<FunctionDecl>(*It);
1050    QualType OverloadResultTy = OverloadDecl->getResultType();
1051    if (IsPlausibleResult(OverloadResultTy))
1052      PlausibleOverloads.addDecl(It.getDecl());
1053  }
1054  noteOverloads(S, PlausibleOverloads, Loc);
1055}
1056
1057/// Determine whether the given expression can be called by just
1058/// putting parentheses after it.  Notably, expressions with unary
1059/// operators can't be because the unary operator will start parsing
1060/// outside the call.
1061static bool IsCallableWithAppend(Expr *E) {
1062  E = E->IgnoreImplicit();
1063  return (!isa<CStyleCastExpr>(E) &&
1064          !isa<UnaryOperator>(E) &&
1065          !isa<BinaryOperator>(E) &&
1066          !isa<CXXOperatorCallExpr>(E));
1067}
1068
1069bool Sema::tryToRecoverWithCall(ExprResult &E, const PartialDiagnostic &PD,
1070                                bool ForceComplain,
1071                                bool (*IsPlausibleResult)(QualType)) {
1072  SourceLocation Loc = E.get()->getExprLoc();
1073  SourceRange Range = E.get()->getSourceRange();
1074
1075  QualType ZeroArgCallTy;
1076  UnresolvedSet<4> Overloads;
1077  if (isExprCallable(*E.get(), ZeroArgCallTy, Overloads) &&
1078      !ZeroArgCallTy.isNull() &&
1079      (!IsPlausibleResult || IsPlausibleResult(ZeroArgCallTy))) {
1080    // At this point, we know E is potentially callable with 0
1081    // arguments and that it returns something of a reasonable type,
1082    // so we can emit a fixit and carry on pretending that E was
1083    // actually a CallExpr.
1084    SourceLocation ParenInsertionLoc =
1085      PP.getLocForEndOfToken(Range.getEnd());
1086    Diag(Loc, PD)
1087      << /*zero-arg*/ 1 << Range
1088      << (IsCallableWithAppend(E.get())
1089          ? FixItHint::CreateInsertion(ParenInsertionLoc, "()")
1090          : FixItHint());
1091    notePlausibleOverloads(*this, Loc, Overloads, IsPlausibleResult);
1092
1093    // FIXME: Try this before emitting the fixit, and suppress diagnostics
1094    // while doing so.
1095    E = ActOnCallExpr(0, E.take(), ParenInsertionLoc,
1096                      MultiExprArg(*this, 0, 0),
1097                      ParenInsertionLoc.getLocWithOffset(1));
1098    return true;
1099  }
1100
1101  if (!ForceComplain) return false;
1102
1103  Diag(Loc, PD) << /*not zero-arg*/ 0 << Range;
1104  notePlausibleOverloads(*this, Loc, Overloads, IsPlausibleResult);
1105  E = ExprError();
1106  return true;
1107}
1108