includes = ["functional"] definitions = ''' void myFunction(int x) { (void)x; } // Put this function pointer inside a struct since the test framework doesn't // support the syntax required for passing raw function pointers as arguments struct FuncPtrStruct { void (*p)(int); }; ''' [cases] [cases.raw] oid_skip = "function pointers are not handled correctly" # https://github.com/facebookexperimental/object-introspection/issues/22 param_types = ["const FuncPtrStruct&"] setup = "return {{myFunction}};" expect_json = '''[{ "staticSize": 8, "dynamicSize": 0, "members": [{ "typeName": "void (*)(int)", "staticSize": 8, "dynamicSize": 0, "NOT": {"pointer": 0}, "NOT": "members" }] }]''' [cases.raw_chase] # We should never chase function pointers oid_skip = "function pointers are not handled correctly" # https://github.com/facebookexperimental/object-introspection/issues/22 oil_disable = "oil can't chase raw pointers safely" param_types = ["const FuncPtrStruct&"] setup = "return {{myFunction}};" cli_options = ["-fchase-raw-pointers"] expect_json = '''[{ "staticSize": 8, "dynamicSize": 0, "members": [{ "typeName": "void (*)(int)", "staticSize": 8, "dynamicSize": 0, "NOT": {"pointer": 0}, "NOT": "members" }] }]''' [cases.raw_null] oid_skip = "function pointers are not handled correctly" # https://github.com/facebookexperimental/object-introspection/issues/22 param_types = ["const FuncPtrStruct&"] setup = "return {{nullptr}};" expect_json = '''[{ "staticSize": 8, "dynamicSize": 0, "members": [{ "typeName": "void (*)(int)", "staticSize": 8, "dynamicSize": 0, "pointer": 0, "NOT": "members" }] }]''' [cases.std_function] oid_skip = "function pointers are not handled correctly" # https://github.com/facebookexperimental/object-introspection/issues/22 param_types = ["std::function &"] setup = "return myFunction;" expect_json = '''[{ "typeName": "function", "staticSize": 32, "dynamicSize": 0, "NOT": {"pointer": 0}, "NOT": "members" }]''' [cases.std_function_chase] # We should never chase function pointers oid_skip = "function pointers are not handled correctly" # https://github.com/facebookexperimental/object-introspection/issues/22 oil_disable = "oil can't chase raw pointers safely" param_types = ["std::function &"] setup = "return myFunction;" cli_options = ["-fchase-raw-pointers"] expect_json = '''[{ "typeName": "function", "staticSize": 32, "dynamicSize": 0, "NOT": {"pointer": 0}, "NOT": "members" }]''' [cases.std_function_null] oid_skip = "function pointers are not handled correctly" # https://github.com/facebookexperimental/object-introspection/issues/22 param_types = ["std::function &"] setup = "return nullptr;" expect_json = '''[{ "typeName": "function", "staticSize": 32, "dynamicSize": 0, "pointer": 0, "NOT": "members" }]'''