Commit dda69b2e authored by Hans Wennborg's avatar Hans Wennborg
Browse files

Merging r308722:

------------------------------------------------------------------------
r308722 | ibiryukov | 2017-07-21 02:24:00 -0700 (Fri, 21 Jul 2017) | 13 lines

Fixed failing assert in code completion.

Summary:
The code was accessing uninstantiated default argument.
This resulted in failing assertion at ParmVarDecl::getDefaultArg().

Reviewers: erikjv, klimek, bkramer, krasimir

Reviewed By: krasimir

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D35682
------------------------------------------------------------------------

llvm-svn: 310395
parent 91d29e79
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
@@ -2401,10 +2401,7 @@ formatBlockPlaceholder(const PrintingPolicy &Policy, const NamedDecl *BlockDecl,
static std::string GetDefaultValueString(const ParmVarDecl *Param,
                                         const SourceManager &SM,
                                         const LangOptions &LangOpts) {
  const Expr *defaultArg = Param->getDefaultArg();
  if (!defaultArg)
    return "";
  const SourceRange SrcRange = defaultArg->getSourceRange();
  const SourceRange SrcRange = Param->getDefaultArgRange();
  CharSourceRange CharSrcRange = CharSourceRange::getTokenRange(SrcRange);
  bool Invalid = CharSrcRange.isInvalid();
  if (Invalid)
+13 −0
Original line number Diff line number Diff line
template <class T>
struct unique_ptr {
  typedef T* pointer;

  void reset(pointer ptr = pointer());
};

void test() {
  unique_ptr<int> x;
  x.
  // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:10:5 %s -o - | FileCheck -check-prefix=CHECK-CC1 %s
  // CHECK-CC1: [#void#]reset({#<#unique_ptr<int>::pointer ptr = pointer()#>#})
}