Commit 559169d2 authored by Hans Wennborg's avatar Hans Wennborg
Browse files

Merging r324308:

------------------------------------------------------------------------
r324308 | rtrieu | 2018-02-06 03:58:21 +0100 (Tue, 06 Feb 2018) | 4 lines

Fix crash on invalid.

Don't call a method when the pointer is null.

------------------------------------------------------------------------

llvm-svn: 325766
parent cfe9b245
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -14926,7 +14926,8 @@ static void DoMarkVarDeclReferenced(Sema &SemaRef, SourceLocation Loc,
    if (RefersToEnclosingScope) {
      LambdaScopeInfo *const LSI =
          SemaRef.getCurLambda(/*IgnoreNonLambdaCapturingScope=*/true);
      if (LSI && !LSI->CallOperator->Encloses(Var->getDeclContext())) {
      if (LSI && (!LSI->CallOperator ||
                  !LSI->CallOperator->Encloses(Var->getDeclContext()))) {
        // If a variable could potentially be odr-used, defer marking it so
        // until we finish analyzing the full expression for any
        // lvalue-to-rvalue
+15 −0
Original line number Diff line number Diff line
@@ -608,3 +608,18 @@ namespace ConversionOperatorDoesNotHaveDeducedReturnType {
  // This used to crash in return type deduction for the conversion opreator.
  struct A { int n; void f() { +[](decltype(n)) {}; } };
}

namespace TypoCorrection {
template <typename T> struct X {};
// expected-note@-1 {{template parameter is declared here}}

template <typename T>
void Run(const int& points) {
// expected-note@-1 {{'points' declared here}}
  auto outer_lambda = []() {
    auto inner_lambda = [](const X<Points>&) {};
    // expected-error@-1 {{use of undeclared identifier 'Points'; did you mean 'points'?}}
    // expected-error@-2 {{template argument for template type parameter must be a type}}
  };
}
}