Add predicates for instance and class methods

Reviewed By: dulmarod

Differential Revision: D7875528

fbshipit-source-id: dce8360
master
Brandon Kieft 7 years ago committed by Facebook Github Bot
parent 8ce79a0613
commit cb66e4212b

@ -289,6 +289,22 @@ let is_objc_protocol_named an re =
false
let is_objc_class_method_named an name =
match an with
| Ctl_parser_types.Decl (Clang_ast_t.ObjCMethodDecl (_, _, omdi)) ->
declaration_has_name an name && not omdi.omdi_is_instance_method
| _ ->
false
let is_objc_instance_method_named an name =
match an with
| Ctl_parser_types.Decl (Clang_ast_t.ObjCMethodDecl (_, _, omdi)) ->
declaration_has_name an name && omdi.omdi_is_instance_method
| _ ->
false
let is_objc_method_named an name =
match an with
| Ctl_parser_types.Decl (Clang_ast_t.ObjCMethodDecl _) ->
@ -623,14 +639,26 @@ let is_in_method context name =
ALVar.compare_str_with_alexp current_method_name name
let is_in_objc_method context name =
let is_in_objc_class_method context name =
match context.CLintersContext.current_method with
| Some (ObjCMethodDecl _) ->
is_in_method context name
| Some (ObjCMethodDecl (_, _, omdi) as objc_method) ->
declaration_has_name (Decl objc_method) name && not omdi.omdi_is_instance_method
| _ ->
false
let is_in_objc_instance_method context name =
match context.CLintersContext.current_method with
| Some (ObjCMethodDecl (_, _, omdi) as objc_method) ->
declaration_has_name (Decl objc_method) name && omdi.omdi_is_instance_method
| _ ->
false
let is_in_objc_method context name =
is_in_objc_class_method context name || is_in_objc_instance_method context name
let is_in_function context name =
match context.CLintersContext.current_method with
| Some (FunctionDecl _) ->

@ -193,6 +193,18 @@ val is_objc_protocol_named : Ctl_parser_types.ast_node -> ALVar.alexp -> bool
* whose name matches the provided REGEXP
*)
val is_objc_class_method_named : Ctl_parser_types.ast_node -> ALVar.alexp -> bool
(**
* Checks if the current node is an ObjCMethodDecl node whose name
* matches the provided REGEXP and is a class method
*)
val is_objc_instance_method_named : Ctl_parser_types.ast_node -> ALVar.alexp -> bool
(**
* Checks if the current node is an ObjCMethodDecl node whose name
* matches the provided REGEXP and is an instance method
*)
val is_objc_method_named : Ctl_parser_types.ast_node -> ALVar.alexp -> bool
(**
* Checks if the current node is an ObjCMethodDecl node
@ -293,6 +305,18 @@ val is_in_objc_protocol_named : CLintersContext.context -> ALVar.alexp -> bool
* node whose name matches the provided REGEXP
*)
val is_in_objc_class_method : CLintersContext.context -> ALVar.alexp -> bool
(**
* Checks if the current node, or a parent node, is an ObjCMethodDecl node
* whose name matches the provided REGEXP and is a class method
*)
val is_in_objc_instance_method : CLintersContext.context -> ALVar.alexp -> bool
(**
* Checks if the current node, or a parent node, is an ObjCMethodDecl node
* whose name matches the provided REGEXP and is an instance method
*)
val is_in_objc_method : CLintersContext.context -> ALVar.alexp -> bool
(**
* Checks if the current node, or a parent node, is an ObjCMethodDecl node

@ -1016,6 +1016,10 @@ let rec eval_Atomic pred_name_ args an lcxt =
CPredicates.is_in_cxx_method lcxt name
| "is_in_function", [name], _ ->
CPredicates.is_in_function lcxt name
| "is_in_objc_class_method", [name], _ ->
CPredicates.is_in_objc_class_method lcxt name
| "is_in_objc_instance_method", [name], _ ->
CPredicates.is_in_objc_instance_method lcxt name
| "is_in_objc_method", [name], _ ->
CPredicates.is_in_objc_method lcxt name
| "is_in_objc_interface_named", [name], _ ->
@ -1084,6 +1088,10 @@ let rec eval_Atomic pred_name_ args an lcxt =
CPredicates.is_objc_category_on_subclass_of an name
| "is_objc_protocol_named", [name], an ->
CPredicates.is_objc_protocol_named an name
| "is_objc_class_method_named", [name], an ->
CPredicates.is_objc_class_method_named an name
| "is_objc_instance_method_named", [name], an ->
CPredicates.is_objc_instance_method_named an name
| "is_objc_method_named", [name], an ->
CPredicates.is_objc_method_named an name
| "is_objc_method_overriding", [], an ->

@ -14,6 +14,7 @@
@interface MyBaseClass : NSObject<MyBaseClassProtocol>
@property int myBaseClassProperty;
+ (void)myBaseClassClassMethod;
- (void)myBaseClassMethod;
@end
@ -26,7 +27,11 @@
@implementation MyBaseClass
+ (void)myBaseClassClassMethod {
int x = 0;
}
- (void)myBaseClassMethod {
int x = 0;
}
- (void)myBaseClassInterfaceExtensionMethod {
}

@ -696,12 +696,31 @@ DEFINE-CHECKER TEST_IF_IS_PROTOCOL_NAMED = {
};
DEFINE-CHECKER TEST_IF_IS_CLASS_METHOD_NAMED = {
SET report_when =
is_objc_class_method_named("myBaseClassClassMethod");
SET message = "Node is a class method named myBaseClassClassMethod.";
};
DEFINE-CHECKER TEST_IF_IS_INSTANCE_METHOD_NAMED = {
SET report_when =
is_objc_instance_method_named("mySubclassMethod");
SET message = "Node is an instance method named mySubclassMethod.";
};
DEFINE-CHECKER TEST_IF_IS_METHOD_NAMED = {
SET report_when =
is_objc_method_named("mySubclassMethod");
is_objc_method_named("mySubclassMethod") OR
is_objc_method_named("myBaseClassClassMethod");
SET message = "Node is a method named mySubclassMethod.";
SET message = "Node is a method named mySubclassMethod or myBaseClassClassMethod.";
};
@ -722,3 +741,21 @@ DEFINE-CHECKER TEST_IS_METHOD_EXPOSED = {
SET message = "Method %name% is exposed in an interface.";
};
DEFINE-CHECKER TEST_IN_CLASS_METHOD = {
SET report_when =
is_in_objc_class_method("myBaseClassClassMethod");
SET message = "This node is in a class method named myBaseClassClassMethod.";
};
DEFINE-CHECKER TEST_IN_INSTANCE_METHOD = {
SET report_when =
is_in_objc_instance_method("myBaseClassMethod");
SET message = "This node is in an instance method named myBaseClassClassMethod.";
};

@ -9,95 +9,121 @@ codetoanalyze/objc/linters-for-test-only/CallingAMethodWithSelf.m, CallingAMetho
codetoanalyze/objc/linters-for-test-only/CallingAMethodWithSelf.m, CallingAMethodWithSelf_testView, 45, TEST_VAR_TYPE_CHECK, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 7, TEST_IF_IS_PROTOCOL_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 14, TEST_IF_IS_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 21, TEST_IF_IS_CATEGORY_INTERFACE_ON_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 21, TEST_IF_IS_CATEGORY_ON_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 27, TEST_IF_IS_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 27, TEST_IF_IS_IMPLEMENTATION_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 45, TEST_IF_IS_CATEGORY_INTERFACE_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 45, TEST_IF_IS_CATEGORY_INTERFACE_ON_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 45, TEST_IF_IS_CATEGORY_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 45, TEST_IF_IS_CATEGORY_ON_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 51, TEST_IF_IS_CATEGORY_IMPLEMENTATION_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 51, TEST_IF_IS_CATEGORY_IMPLEMENTATION_ON_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 51, TEST_IF_IS_CATEGORY_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 51, TEST_IF_IS_CATEGORY_ON_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 134, TEST_IF_IS_CATEGORY_INTERFACE_ON_SUBCLASS_OF, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 134, TEST_IF_IS_CATEGORY_ON_SUBCLASS_OF, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 140, TEST_IF_IS_CATEGORY_IMPLEMENTATION_ON_SUBCLASS_OF, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 140, TEST_IF_IS_CATEGORY_ON_SUBCLASS_OF, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 22, TEST_IF_IS_CATEGORY_INTERFACE_ON_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 22, TEST_IF_IS_CATEGORY_ON_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 28, TEST_IF_IS_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 28, TEST_IF_IS_IMPLEMENTATION_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 50, TEST_IF_IS_CATEGORY_INTERFACE_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 50, TEST_IF_IS_CATEGORY_INTERFACE_ON_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 50, TEST_IF_IS_CATEGORY_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 50, TEST_IF_IS_CATEGORY_ON_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 56, TEST_IF_IS_CATEGORY_IMPLEMENTATION_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 56, TEST_IF_IS_CATEGORY_IMPLEMENTATION_ON_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 56, TEST_IF_IS_CATEGORY_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 56, TEST_IF_IS_CATEGORY_ON_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 139, TEST_IF_IS_CATEGORY_INTERFACE_ON_SUBCLASS_OF, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 139, TEST_IF_IS_CATEGORY_ON_SUBCLASS_OF, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 145, TEST_IF_IS_CATEGORY_IMPLEMENTATION_ON_SUBCLASS_OF, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, Linters_dummy_method, 145, TEST_IF_IS_CATEGORY_ON_SUBCLASS_OF, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClassProtocol_myBaseClassProtocolOptionalMethod, 11, TEST_IF_METHOD_IS_IN_PROTOCOL_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClassProtocol_myBaseClassProtocolRequiredMethod, 9, TEST_IF_METHOD_IS_IN_PROTOCOL_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 47, TEST_IF_METHOD_IS_IN_CATEGORY_INTERFACE_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 47, TEST_IF_METHOD_IS_IN_CATEGORY_INTERFACE_ON_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 47, TEST_IF_METHOD_IS_IN_CATEGORY_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 47, TEST_IF_METHOD_IS_IN_CATEGORY_ON_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 53, TEST_IF_METHOD_IS_IN_CATEGORY_IMPLEMENATION_ON_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 53, TEST_IF_METHOD_IS_IN_CATEGORY_IMPLEMENTATION_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 53, TEST_IF_METHOD_IS_IN_CATEGORY_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 53, TEST_IF_METHOD_IS_IN_CATEGORY_ON_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 53, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassInterfaceExtensionMethod, 23, TEST_IF_METHOD_IS_IN_CATEGORY_INTERFACE_ON_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassInterfaceExtensionMethod, 23, TEST_IF_METHOD_IS_IN_CATEGORY_ON_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassInterfaceExtensionMethod, 31, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassInterfaceExtensionMethod, 31, TEST_IF_METHOD_IS_IN_IMPLEMENTATION_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassInterfaceExtensionMethod, 31, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 17, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 17, TEST_IF_METHOD_IS_IN_INTERFACE_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 29, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 29, TEST_IF_METHOD_IS_IN_IMPLEMENTATION_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 29, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProperty, 37, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProperty, 37, TEST_IF_METHOD_IS_IN_IMPLEMENTATION_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProperty, 37, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProperty, 37, TEST_RETURN_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolOptionalMethod, 35, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolOptionalMethod, 35, TEST_IF_METHOD_IS_IN_IMPLEMENTATION_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolOptionalMethod, 35, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolOptionalMethod, 35, TEST_IS_OVERRIDING_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolRequiredMethod, 33, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolRequiredMethod, 33, TEST_IF_METHOD_IS_IN_IMPLEMENTATION_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolRequiredMethod, 33, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolRequiredMethod, 33, TEST_IS_OVERRIDING_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_setMyBaseClassProperty, 40, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_setMyBaseClassProperty, 40, TEST_IF_METHOD_IS_IN_IMPLEMENTATION_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_setMyBaseClassProperty, 40, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_setMyBaseClassProperty, 40, TEST_PARAM_TYPE_CHECK2, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassCategoryMethod, 113, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassCategoryMethod, 113, TEST_IS_OVERRIDING_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassInterfaceExtensionMethod, 93, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassInterfaceExtensionMethod, 93, TEST_IS_OVERRIDING_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassMethod, 89, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassMethod, 89, TEST_IS_OVERRIDING_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProperty, 105, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProperty, 105, TEST_IS_OVERRIDING_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProperty, 105, TEST_RETURN_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProtocolOptionalMethod, 101, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProtocolOptionalMethod, 101, TEST_IS_OVERRIDING_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProtocolRequiredMethod, 97, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProtocolRequiredMethod, 97, TEST_IS_OVERRIDING_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassCategoryMethod, 136, TEST_IF_METHOD_IS_IN_CATEGORY_INTERFACE_ON_SUBCLASS_OF, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassCategoryMethod, 136, TEST_IF_METHOD_IS_IN_CATEGORY_ON_SUBCLASS_OF, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassCategoryMethod, 142, TEST_IF_METHOD_IS_IN_CATEGORY_IMPLEMENTATION_ON_SUBCLASS_OF, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassCategoryMethod, 142, TEST_IF_METHOD_IS_IN_CATEGORY_ON_SUBCLASS_OF, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassCategoryMethod, 142, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassMethod, 83, TEST_IF_IS_METHOD_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassMethod, 117, TEST_IF_IS_METHOD_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassMethod, 117, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocol2OptionalMethod, 125, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocol2OptionalMethod, 125, TEST_IS_OVERRIDING_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocol2RequiredMethod, 123, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocol2RequiredMethod, 123, TEST_IS_OVERRIDING_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocolOptionalMethod, 121, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocolOptionalMethod, 121, TEST_IS_OVERRIDING_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocolRequiredMethod, 119, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocolRequiredMethod, 119, TEST_IS_OVERRIDING_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassSubprotocol2OptionalMethod, 129, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassSubprotocol2OptionalMethod, 129, TEST_IS_OVERRIDING_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassSubprotocol2RequiredMethod, 127, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassSubprotocol2RequiredMethod, 127, TEST_IS_OVERRIDING_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_setMyBaseClassProperty, 109, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_setMyBaseClassProperty, 109, TEST_IS_OVERRIDING_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_setMyBaseClassProperty, 109, TEST_PARAM_TYPE_CHECK2, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 52, TEST_IF_METHOD_IS_IN_CATEGORY_INTERFACE_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 52, TEST_IF_METHOD_IS_IN_CATEGORY_INTERFACE_ON_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 52, TEST_IF_METHOD_IS_IN_CATEGORY_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 52, TEST_IF_METHOD_IS_IN_CATEGORY_ON_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 58, TEST_IF_METHOD_IS_IN_CATEGORY_IMPLEMENATION_ON_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 58, TEST_IF_METHOD_IS_IN_CATEGORY_IMPLEMENTATION_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 58, TEST_IF_METHOD_IS_IN_CATEGORY_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 58, TEST_IF_METHOD_IS_IN_CATEGORY_ON_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassCategoryMethod, 58, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 17, TEST_IF_IS_CLASS_METHOD_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 17, TEST_IF_IS_METHOD_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 17, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 17, TEST_IF_METHOD_IS_IN_INTERFACE_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 17, TEST_IN_CLASS_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 30, TEST_IF_IS_CLASS_METHOD_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 30, TEST_IF_IS_METHOD_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 30, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 30, TEST_IF_METHOD_IS_IN_IMPLEMENTATION_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 30, TEST_IN_CLASS_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 30, TEST_IN_CLASS_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 30, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 31, TEST_IN_CLASS_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 31, TEST_IN_CLASS_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassClassMethod, 31, TEST_VAR_TYPE_CHECK, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassInterfaceExtensionMethod, 24, TEST_IF_METHOD_IS_IN_CATEGORY_INTERFACE_ON_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassInterfaceExtensionMethod, 24, TEST_IF_METHOD_IS_IN_CATEGORY_ON_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassInterfaceExtensionMethod, 36, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassInterfaceExtensionMethod, 36, TEST_IF_METHOD_IS_IN_IMPLEMENTATION_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassInterfaceExtensionMethod, 36, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 18, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 18, TEST_IF_METHOD_IS_IN_INTERFACE_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 18, TEST_IN_INSTANCE_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 33, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 33, TEST_IF_METHOD_IS_IN_IMPLEMENTATION_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 33, TEST_IN_INSTANCE_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 33, TEST_IN_INSTANCE_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 33, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 34, TEST_IN_INSTANCE_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 34, TEST_IN_INSTANCE_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassMethod, 34, TEST_VAR_TYPE_CHECK, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProperty, 42, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProperty, 42, TEST_IF_METHOD_IS_IN_IMPLEMENTATION_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProperty, 42, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProperty, 42, TEST_RETURN_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolOptionalMethod, 40, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolOptionalMethod, 40, TEST_IF_METHOD_IS_IN_IMPLEMENTATION_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolOptionalMethod, 40, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolOptionalMethod, 40, TEST_IS_OVERRIDING_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolRequiredMethod, 38, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolRequiredMethod, 38, TEST_IF_METHOD_IS_IN_IMPLEMENTATION_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolRequiredMethod, 38, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_myBaseClassProtocolRequiredMethod, 38, TEST_IS_OVERRIDING_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_setMyBaseClassProperty, 45, TEST_IF_METHOD_IS_IN_CLASS_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_setMyBaseClassProperty, 45, TEST_IF_METHOD_IS_IN_IMPLEMENTATION_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_setMyBaseClassProperty, 45, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MyBaseClass_setMyBaseClassProperty, 45, TEST_PARAM_TYPE_CHECK2, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassCategoryMethod, 118, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassCategoryMethod, 118, TEST_IS_OVERRIDING_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassInterfaceExtensionMethod, 98, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassInterfaceExtensionMethod, 98, TEST_IS_OVERRIDING_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassMethod, 94, TEST_IN_INSTANCE_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassMethod, 94, TEST_IN_INSTANCE_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassMethod, 94, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassMethod, 94, TEST_IS_OVERRIDING_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassMethod, 95, TEST_IN_INSTANCE_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProperty, 110, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProperty, 110, TEST_IS_OVERRIDING_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProperty, 110, TEST_RETURN_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProtocolOptionalMethod, 106, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProtocolOptionalMethod, 106, TEST_IS_OVERRIDING_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProtocolRequiredMethod, 102, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_myBaseClassProtocolRequiredMethod, 102, TEST_IS_OVERRIDING_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassCategoryMethod, 141, TEST_IF_METHOD_IS_IN_CATEGORY_INTERFACE_ON_SUBCLASS_OF, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassCategoryMethod, 141, TEST_IF_METHOD_IS_IN_CATEGORY_ON_SUBCLASS_OF, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassCategoryMethod, 147, TEST_IF_METHOD_IS_IN_CATEGORY_IMPLEMENTATION_ON_SUBCLASS_OF, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassCategoryMethod, 147, TEST_IF_METHOD_IS_IN_CATEGORY_ON_SUBCLASS_OF, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassCategoryMethod, 147, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassMethod, 88, TEST_IF_IS_INSTANCE_METHOD_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassMethod, 88, TEST_IF_IS_METHOD_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassMethod, 122, TEST_IF_IS_INSTANCE_METHOD_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassMethod, 122, TEST_IF_IS_METHOD_NAMED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassMethod, 122, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocol2OptionalMethod, 130, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocol2OptionalMethod, 130, TEST_IS_OVERRIDING_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocol2RequiredMethod, 128, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocol2RequiredMethod, 128, TEST_IS_OVERRIDING_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocolOptionalMethod, 126, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocolOptionalMethod, 126, TEST_IS_OVERRIDING_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocolRequiredMethod, 124, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassProtocolRequiredMethod, 124, TEST_IS_OVERRIDING_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassSubprotocol2OptionalMethod, 134, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassSubprotocol2OptionalMethod, 134, TEST_IS_OVERRIDING_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassSubprotocol2RequiredMethod, 132, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_mySubclassSubprotocol2RequiredMethod, 132, TEST_IS_OVERRIDING_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_setMyBaseClassProperty, 114, TEST_IS_METHOD_EXPOSED, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_setMyBaseClassProperty, 114, TEST_IS_OVERRIDING_METHOD, WARNING, []
codetoanalyze/objc/linters-for-test-only/GenericTestClass.m, MySubclass_setMyBaseClassProperty, 114, TEST_PARAM_TYPE_CHECK2, WARNING, []
codetoanalyze/objc/linters-for-test-only/InContextOfMethodsTest.m, InContextOfMethodsTest_method, 16, TEST_IN_METHOD_CONTEXT, WARNING, []
codetoanalyze/objc/linters-for-test-only/InContextOfMethodsTest.m, InContextOfMethodsTest_method, 16, TEST_VAR_TYPE_CHECK, WARNING, []
codetoanalyze/objc/linters-for-test-only/InContextOfMethodsTest.m, function, 27, TEST_IN_FUNCTION_CONTEXT, WARNING, []

Loading…
Cancel
Save