[pulse] Adding tests for pulse in Objective-C++ (the C++ part)

Summary: This shows that the current Pulse analyzer works fine in the C++ part of the Objc++ files.

Reviewed By: martintrojer

Differential Revision: D17225683

fbshipit-source-id: faf51c5fa
master
Dulma Churchill 5 years ago committed by Facebook Github Bot
parent 5c58689493
commit 41aa20e2b6

@ -114,6 +114,7 @@ DIRECT_TESTS += \
objcpp_linters-for-test-only \
objcpp_liveness \
objcpp_nullable \
objcpp_pulse \
objcpp_racerd \
objcpp_retain-cycles \

@ -0,0 +1,17 @@
# Copyright (c) Facebook, Inc. and its affiliates.
#
# This source code is licensed under the MIT license found in the
# LICENSE file in the root directory of this source tree.
TESTS_DIR = ../../..
CLANG_OPTIONS = -c $(OBJCPP_CLANG_OPTIONS)
INFER_OPTIONS = --pulse-only --debug-exceptions --project-root $(TESTS_DIR)
INFERPRINT_OPTIONS = --issues-tests
SOURCES = $(wildcard *.mm)
include $(TESTS_DIR)/clang.make
include $(TESTS_DIR)/objc.make
infer-out/report.json: $(MAKEFILE_LIST)

@ -0,0 +1,2 @@
codetoanalyze/objcpp/pulse/use_after_delete.mm, PulseTest::deref_deleted_in_objc_method_bad, 3, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,assigned,memory was invalidated by `delete` here,use-after-lifetime part of the trace starts here,assigned,when calling `Simple::Simple()` here,invalid access occurs here]
codetoanalyze/objcpp/pulse/use_after_delete.mm, deref_deleted_bad, 3, USE_AFTER_DELETE, no_bucket, ERROR, [invalidation part of the trace starts here,assigned,memory was invalidated by `delete` here,use-after-lifetime part of the trace starts here,assigned,when calling `Simple::Simple()` here,invalid access occurs here]

@ -0,0 +1,38 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#include <memory>
#include <string>
#include <vector>
#import <Foundation/NSObject.h>
struct Simple {
int f;
};
@interface PulseTest : NSObject
- (int)deref_deleted_in_objc_method_bad;
@end
@implementation PulseTest
- (int)deref_deleted_in_objc_method_bad {
auto* s = new Simple{1};
delete s;
Simple tmp = *s;
}
@end
void deref_deleted_bad() {
auto* s = new Simple{1};
delete s;
Simple tmp = *s;
}
Loading…
Cancel
Save