diff --git a/Makefile b/Makefile index 4aa92c397..11ea82a92 100644 --- a/Makefile +++ b/Makefile @@ -67,7 +67,7 @@ BUILD_SYSTEMS_TESTS += xcodebuild_no_xcpretty objc_getters_setters DIRECT_TESTS += \ objc_frontend objc_errors objc_linters objc_ioslints \ objcpp_frontend objcpp_linters objc_linters-for-test-only objcpp_linters-for-test-only \ - objc_linters-def-folder objc_nullable objc_liveness objc_uninit + objc_linters-def-folder objc_nullable objc_liveness objcpp_liveness objc_uninit ifneq ($(XCPRETTY),no) BUILD_SYSTEMS_TESTS += xcodebuild endif diff --git a/infer/tests/codetoanalyze/objcpp/liveness/ClassMethod.mm b/infer/tests/codetoanalyze/objcpp/liveness/ClassMethod.mm new file mode 100644 index 000000000..ba683c688 --- /dev/null +++ b/infer/tests/codetoanalyze/objcpp/liveness/ClassMethod.mm @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2017-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import + +struct A { + Class ac; + NSObject* a; +}; + +@interface I : NSObject ++ (instancetype)newWithA:(const A&)a; +@end + +@implementation I ++ (instancetype)newWithA:(const A&)a { + return [self alloc]; +} +@end + +id cMehtod() { + NSObject* o = [NSObject new]; + return [I newWithA:{[I class], o}]; +} diff --git a/infer/tests/codetoanalyze/objcpp/liveness/Makefile b/infer/tests/codetoanalyze/objcpp/liveness/Makefile new file mode 100644 index 000000000..d325c2a27 --- /dev/null +++ b/infer/tests/codetoanalyze/objcpp/liveness/Makefile @@ -0,0 +1,17 @@ +# Copyright (c) 2016-present, Facebook, Inc. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree. + +TESTS_DIR = ../../.. + +ANALYZER = checkers +CLANG_OPTIONS = -x objective-c++ -std=c++11 -fobjc-arc -c +INFER_OPTIONS = --liveness-only --debug-exceptions --project-root $(TESTS_DIR) +INFERPRINT_OPTIONS = --issues-tests + +SOURCES = $(wildcard *.mm) + +include $(TESTS_DIR)/clang.make + +infer-out/report.json: $(MAKEFILE_LIST) diff --git a/infer/tests/codetoanalyze/objcpp/liveness/issues.exp b/infer/tests/codetoanalyze/objcpp/liveness/issues.exp new file mode 100644 index 000000000..e69de29bb