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