zcov: / lib/AST/TemplateName.cpp


Files: 1 Branches Taken: 56.7% 17 / 30
Generated: 2010-02-10 01:31 Branches Executed: 66.7% 20 / 30
Line Coverage: 58.8% 20 / 34


Programs: 2 Runs 3018


       1                 : //===--- TemplateName.h - C++ Template Name Representation-------*- C++ -*-===//
       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 defines the TemplateName interface and subclasses.
      11                 : //
      12                 : //===----------------------------------------------------------------------===//
      13                 : 
      14                 : #include "clang/AST/TemplateName.h"
      15                 : #include "clang/AST/DeclTemplate.h"
      16                 : #include "clang/AST/NestedNameSpecifier.h"
      17                 : #include "clang/AST/PrettyPrinter.h"
      18                 : #include "clang/Basic/LangOptions.h"
      19                 : #include "llvm/Support/raw_ostream.h"
      20                 : using namespace clang;
      21                 : 
      22            17194: TemplateDecl *TemplateName::getAsTemplateDecl() const {
                    15992: branch 1 taken
                     1202: branch 2 taken
      23            17194:   if (TemplateDecl *Template = Storage.dyn_cast<TemplateDecl *>())
      24            15992:     return Template;
      25                 : 
                     1013: branch 1 taken
                      189: branch 2 taken
      26             1202:   if (QualifiedTemplateName *QTN = getAsQualifiedTemplateName())
      27             1013:     return QTN->getTemplateDecl();
      28                 : 
      29              189:   return 0;
      30                 : }
      31                 : 
      32             8821: bool TemplateName::isDependent() const {
                     8755: branch 1 taken
                       66: branch 2 taken
      33             8821:   if (TemplateDecl *Template = getAsTemplateDecl()) {
      34                 :     return isa<TemplateTemplateParmDecl>(Template) ||
                     8675: branch 1 taken
                       80: branch 2 taken
                      151: branch 5 taken
                     8524: branch 6 taken
      35             8755:       Template->getDeclContext()->isDependentContext();
      36                 :   }
      37                 : 
      38                 :   assert(!getAsOverloadedTemplate() &&
                       66: branch 1 taken
                        0: branch 2 not taken
      39               66:          "overloaded templates shouldn't survive to here");
      40                 : 
      41               66:   return true;
      42                 : }
      43                 : 
      44                 : void
      45                 : TemplateName::print(llvm::raw_ostream &OS, const PrintingPolicy &Policy,
      46               79:                     bool SuppressNNS) const {
                       71: branch 1 taken
                        8: branch 2 taken
      47               79:   if (TemplateDecl *Template = Storage.dyn_cast<TemplateDecl *>())
      48               71:     OS << Template->getNameAsString();
                        8: branch 1 taken
                        0: branch 2 not taken
      49                8:   else if (QualifiedTemplateName *QTN = getAsQualifiedTemplateName()) {
                        3: branch 0 taken
                        5: branch 1 taken
      50                8:     if (!SuppressNNS)
      51                3:       QTN->getQualifier()->print(OS, Policy);
                        0: branch 1 not taken
                        8: branch 2 taken
      52                8:     if (QTN->hasTemplateKeyword())
      53                0:       OS << "template ";
      54                8:     OS << QTN->getDecl()->getNameAsString();
                        0: branch 1 not taken
                        0: branch 2 not taken
      55                0:   } else if (DependentTemplateName *DTN = getAsDependentTemplateName()) {
                        0: branch 0 not taken
                        0: branch 1 not taken
                        0: branch 3 not taken
                        0: branch 4 not taken
                        0: branch 5 not taken
                        0: branch 6 not taken
      56                0:     if (!SuppressNNS && DTN->getQualifier())
      57                0:       DTN->getQualifier()->print(OS, Policy);
      58                0:     OS << "template ";
      59                 :     
                        0: branch 1 not taken
                        0: branch 2 not taken
      60                0:     if (DTN->isIdentifier())
      61                0:       OS << DTN->getIdentifier()->getName();
      62                 :     else
      63                0:       OS << "operator " << getOperatorSpelling(DTN->getOperator());
      64                 :   }
      65               79: }
      66                 : 
      67                0: void TemplateName::dump() const {
      68                0:   LangOptions LO;  // FIXME!
      69                0:   LO.CPlusPlus = true;
      70                0:   LO.Bool = true;
      71                0:   print(llvm::errs(), PrintingPolicy(LO));
      72                0: }

Generated: 2010-02-10 01:31 by zcov