aboutsummaryrefslogtreecommitdiff
path: root/clang/test/Analysis/Checkers/WebKit/unretained-lambda-captures-weak-arc.mm
blob: a52bc7c9a5572b93aa1d49121301775ea6964292 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// RUN: %clang_analyze_cc1 -analyzer-checker=alpha.webkit.UnretainedLambdaCapturesChecker -fobjc-runtime-has-weak -fobjc-weak -fobjc-arc -verify %s
// expected-no-diagnostics

#include "objc-mock-types.h"

void someFunction();
template <typename Callback> void call(Callback callback) {
  someFunction();
  callback();
}

NSString *provideStr();
SomeObj *provideSomeObj();

void foo() {
  __weak NSString *weakStr = provideStr();
  __weak SomeObj *weakObj = provideSomeObj();
  auto lambda = [weakStr, weakObj]() {
    return [weakStr length] + [weakObj value];
  };
  call(lambda);
}